diff --git a/apps/ftu-ui-small-wc/index.html b/apps/ftu-ui-small-wc/index.html index 12978fbc2..f03fc76fb 100644 --- a/apps/ftu-ui-small-wc/index.html +++ b/apps/ftu-ui-small-wc/index.html @@ -6,7 +6,6 @@ - - + \ No newline at end of file diff --git a/apps/ftu-ui/main.js b/apps/ftu-ui/main.js index bc46c1d38..82789ecbb 100644 --- a/apps/ftu-ui/main.js +++ b/apps/ftu-ui/main.js @@ -1 +1 @@ -(()=>{"use strict";var Go={d:(t,n)=>{for(var e in n)Go.o(n,e)&&!Go.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r:t=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},Pp={};function We(t){return"function"==typeof t}function Np(t){const e=t(i=>{Error.call(i),i.stack=(new Error).stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}Go.r(Pp),Go.d(Pp,{About:()=>aR,Embed:()=>lR,ExploreFTU:()=>jX,Illustration:()=>D0,LandingPage:()=>x0,LandingPageReadMore:()=>HX,Portal:()=>C0,ProductTitle:()=>sR});const Lp=Np(t=>function(e){t(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((i,r)=>`${r+1}) ${i.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e});function eu(t,n){if(t){const e=t.indexOf(n);0<=e&&t.splice(e,1)}}class rt{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(const o of e)o.remove(this);else e.remove(this);const{initialTeardown:i}=this;if(We(i))try{i()}catch(o){n=o instanceof Lp?o.errors:[o]}const{_finalizers:r}=this;if(r){this._finalizers=null;for(const o of r)try{Qw(o)}catch(s){n=n??[],s instanceof Lp?n=[...n,...s.errors]:n.push(s)}}if(n)throw new Lp(n)}}add(n){var e;if(n&&n!==this)if(this.closed)Qw(n);else{if(n instanceof rt){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(n)}}_hasParent(n){const{_parentage:e}=this;return e===n||Array.isArray(e)&&e.includes(n)}_addParent(n){const{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(n),e):e?[e,n]:n}_removeParent(n){const{_parentage:e}=this;e===n?this._parentage=null:Array.isArray(e)&&eu(e,n)}remove(n){const{_finalizers:e}=this;e&&eu(e,n),n instanceof rt&&n._removeParent(this)}}rt.EMPTY=(()=>{const t=new rt;return t.closed=!0,t})();const Kw=rt.EMPTY;function Xw(t){return t instanceof rt||t&&"closed"in t&&We(t.remove)&&We(t.add)&&We(t.unsubscribe)}function Qw(t){We(t)?t():t.unsubscribe()}const Wo={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},tu={setTimeout(t,n,...e){const{delegate:i}=tu;return i?.setTimeout?i.setTimeout(t,n,...e):setTimeout(t,n,...e)},clearTimeout(t){const{delegate:n}=tu;return(n?.clearTimeout||clearTimeout)(t)},delegate:void 0};function Jw(t){tu.setTimeout(()=>{const{onUnhandledError:n}=Wo;if(!n)throw t;n(t)})}function nu(){}const IN=Bp("C",void 0,void 0);function Bp(t,n,e){return{kind:t,value:n,error:e}}let qo=null;function iu(t){if(Wo.useDeprecatedSynchronousErrorHandling){const n=!qo;if(n&&(qo={errorThrown:!1,error:null}),t(),n){const{errorThrown:e,error:i}=qo;if(qo=null,e)throw i}}else t()}class Vp extends rt{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,Xw(n)&&n.add(this)):this.destination=BN}static create(n,e,i){return new Ns(n,e,i)}next(n){this.isStopped?Hp(function RN(t){return Bp("N",t,void 0)}(n),this):this._next(n)}error(n){this.isStopped?Hp(function ON(t){return Bp("E",void 0,t)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?Hp(IN,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const PN=Function.prototype.bind;function jp(t,n){return PN.call(t,n)}class NN{constructor(n){this.partialObserver=n}next(n){const{partialObserver:e}=this;if(e.next)try{e.next(n)}catch(i){ru(i)}}error(n){const{partialObserver:e}=this;if(e.error)try{e.error(n)}catch(i){ru(i)}else ru(n)}complete(){const{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(e){ru(e)}}}class Ns extends Vp{constructor(n,e,i){let r;if(super(),We(n)||!n)r={next:n??void 0,error:e??void 0,complete:i??void 0};else{let o;this&&Wo.useDeprecatedNextContext?(o=Object.create(n),o.unsubscribe=()=>this.unsubscribe(),r={next:n.next&&jp(n.next,o),error:n.error&&jp(n.error,o),complete:n.complete&&jp(n.complete,o)}):r=n}this.destination=new NN(r)}}function ru(t){Wo.useDeprecatedSynchronousErrorHandling?function FN(t){Wo.useDeprecatedSynchronousErrorHandling&&qo&&(qo.errorThrown=!0,qo.error=t)}(t):Jw(t)}function Hp(t,n){const{onStoppedNotification:e}=Wo;e&&tu.setTimeout(()=>e(t,n))}const BN={closed:!0,next:nu,error:function LN(t){throw t},complete:nu},zp="function"==typeof Symbol&&Symbol.observable||"@@observable";function lo(t){return t}function ex(t){return 0===t.length?lo:1===t.length?t[0]:function(e){return t.reduce((i,r)=>r(i),e)}}let xe=(()=>{class t{constructor(e){e&&(this._subscribe=e)}lift(e){const i=new t;return i.source=this,i.operator=e,i}subscribe(e,i,r){const o=function HN(t){return t&&t instanceof Vp||function jN(t){return t&&We(t.next)&&We(t.error)&&We(t.complete)}(t)&&Xw(t)}(e)?e:new Ns(e,i,r);return iu(()=>{const{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(e){try{return this._subscribe(e)}catch(i){e.error(i)}}forEach(e,i){return new(i=tx(i))((r,o)=>{const s=new Ns({next:a=>{try{e(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:r});this.subscribe(s)})}_subscribe(e){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(e)}[zp](){return this}pipe(...e){return ex(e)(this)}toPromise(e){return new(e=tx(e))((i,r)=>{let o;this.subscribe(s=>o=s,s=>r(s),()=>i(o))})}}return t.create=n=>new t(n),t})();function tx(t){var n;return null!==(n=t??Wo.Promise)&&void 0!==n?n:Promise}const zN=Np(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let te=(()=>{class t extends xe{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const i=new nx(this,this);return i.operator=e,i}_throwIfClosed(){if(this.closed)throw new zN}next(e){iu(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(e)}})}error(e){iu(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:i}=this;for(;i.length;)i.shift().error(e)}})}complete(){iu(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:i,isStopped:r,observers:o}=this;return i||r?Kw:(this.currentObservers=null,o.push(e),new rt(()=>{this.currentObservers=null,eu(o,e)}))}_checkFinalizedStatuses(e){const{hasError:i,thrownError:r,isStopped:o}=this;i?e.error(r):o&&e.complete()}asObservable(){const e=new xe;return e.source=this,e}}return t.create=(n,e)=>new nx(n,e),t})();class nx extends te{constructor(n,e){super(),this.destination=n,this.source=e}next(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===i||i.call(e,n)}error(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===i||i.call(e,n)}complete(){var n,e;null===(e=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===e||e.call(n)}_subscribe(n){var e,i;return null!==(i=null===(e=this.source)||void 0===e?void 0:e.subscribe(n))&&void 0!==i?i:Kw}}function ix(t){return We(t?.lift)}function gt(t){return n=>{if(ix(n))return n.lift(function(e){try{return t(e,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function ot(t,n,e,i,r){return new UN(t,n,e,i,r)}class UN extends Vp{constructor(n,e,i,r,o,s){super(n),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=e?function(a){try{e(a)}catch(l){n.error(l)}}:super._next,this._error=r?function(a){try{r(a)}catch(l){n.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:e}=this;super.unsubscribe(),!e&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}}function B(t,n){return gt((e,i)=>{let r=0;e.subscribe(ot(i,o=>{i.next(t.call(n,o,r++))}))})}function U(t,n,e,i){var s,r=arguments.length,o=r<3?n:null===i?i=Object.getOwnPropertyDescriptor(n,e):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,n,e,i);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(o=(r<3?s(o):r>3?s(n,e,o):s(n,e))||o);return r>3&&o&&Object.defineProperty(n,e,o),o}function y(t,n){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,n)}function Yo(t){return this instanceof Yo?(this.v=t,this):new Yo(t)}function qN(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=function sx(t){var n="function"==typeof Symbol&&Symbol.iterator,e=n&&t[n],i=0;if(e)return e.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),e={},i("next"),i("throw"),i("return"),e[Symbol.asyncIterator]=function(){return this},e);function i(o){e[o]=t[o]&&function(s){return new Promise(function(a,l){!function r(o,s,a,l){Promise.resolve(l).then(function(c){o({value:c,done:a})},s)}(a,l,(s=t[o](s)).done,s.value)})}}}const $p=t=>t&&"number"==typeof t.length&&"function"!=typeof t;function ax(t){return We(t?.then)}function lx(t){return We(t[zp])}function cx(t){return Symbol.asyncIterator&&We(t?.[Symbol.asyncIterator])}function dx(t){return new TypeError(`You provided ${null!==t&&"object"==typeof t?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const ux=function ZN(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function hx(t){return We(t?.[ux])}function fx(t){return function WN(t,n,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=e.apply(t,n||[]),o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(h){i[h]&&(r[h]=function(f){return new Promise(function(p,g){o.push([h,f,p,g])>1||a(h,f)})})}function a(h,f){try{!function l(h){h.value instanceof Yo?Promise.resolve(h.value.v).then(c,d):u(o[0][2],h)}(i[h](f))}catch(p){u(o[0][3],p)}}function c(h){a("next",h)}function d(h){a("throw",h)}function u(h,f){h(f),o.shift(),o.length&&a(o[0][0],o[0][1])}}(this,arguments,function*(){const e=t.getReader();try{for(;;){const{value:i,done:r}=yield Yo(e.read());if(r)return yield Yo(void 0);yield yield Yo(i)}}finally{e.releaseLock()}})}function mx(t){return We(t?.getReader)}function Xt(t){if(t instanceof xe)return t;if(null!=t){if(lx(t))return function KN(t){return new xe(n=>{const e=t[zp]();if(We(e.subscribe))return e.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(t);if($p(t))return function XN(t){return new xe(n=>{for(let e=0;e{t.then(e=>{n.closed||(n.next(e),n.complete())},e=>n.error(e)).then(null,Jw)})}(t);if(cx(t))return px(t);if(hx(t))return function JN(t){return new xe(n=>{for(const e of t)if(n.next(e),n.closed)return;n.complete()})}(t);if(mx(t))return function eL(t){return px(fx(t))}(t)}throw dx(t)}function px(t){return new xe(n=>{(function tL(t,n){var e,i,r,o;return function $N(t,n,e,i){return new(e||(e=Promise))(function(o,s){function a(d){try{c(i.next(d))}catch(u){s(u)}}function l(d){try{c(i.throw(d))}catch(u){s(u)}}function c(d){d.done?o(d.value):function r(o){return o instanceof e?o:new e(function(s){s(o)})}(d.value).then(a,l)}c((i=i.apply(t,n||[])).next())})}(this,void 0,void 0,function*(){try{for(e=qN(t);!(i=yield e.next()).done;)if(n.next(i.value),n.closed)return}catch(s){r={error:s}}finally{try{i&&!i.done&&(o=e.return)&&(yield o.call(e))}finally{if(r)throw r.error}}n.complete()})})(t,n).catch(e=>n.error(e))})}function xr(t,n,e,i=0,r=!1){const o=n.schedule(function(){e(),r?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(o),!r)return o}function Ot(t,n,e=1/0){return We(n)?Ot((i,r)=>B((o,s)=>n(i,o,r,s))(Xt(t(i,r))),e):("number"==typeof n&&(e=n),gt((i,r)=>function nL(t,n,e,i,r,o,s,a){const l=[];let c=0,d=0,u=!1;const h=()=>{u&&!l.length&&!c&&n.complete()},f=g=>c{o&&n.next(g),c++;let b=!1;Xt(e(g,d++)).subscribe(ot(n,v=>{r?.(v),o?f(v):n.next(v)},()=>{b=!0},void 0,()=>{if(b)try{for(c--;l.length&&cp(v)):p(v)}h()}catch(v){n.error(v)}}))};return t.subscribe(ot(n,f,()=>{u=!0,h()})),()=>{a?.()}}(i,r,t,e)))}function Ls(t=1/0){return Ot(lo,t)}const xn=new xe(t=>t.complete());function gx(t){return t&&We(t.schedule)}function Gp(t){return t[t.length-1]}function _x(t){return We(Gp(t))?t.pop():void 0}function kl(t){return gx(Gp(t))?t.pop():void 0}function bx(t,n=0){return gt((e,i)=>{e.subscribe(ot(i,r=>xr(i,t,()=>i.next(r),n),()=>xr(i,t,()=>i.complete(),n),r=>xr(i,t,()=>i.error(r),n)))})}function vx(t,n=0){return gt((e,i)=>{i.add(t.schedule(()=>e.subscribe(i),n))})}function yx(t,n){if(!t)throw new Error("Iterable cannot be null");return new xe(e=>{xr(e,n,()=>{const i=t[Symbol.asyncIterator]();xr(e,n,()=>{i.next().then(r=>{r.done?e.complete():e.next(r.value)})},0,!0)})})}function yt(t,n){return n?function dL(t,n){if(null!=t){if(lx(t))return function oL(t,n){return Xt(t).pipe(vx(n),bx(n))}(t,n);if($p(t))return function aL(t,n){return new xe(e=>{let i=0;return n.schedule(function(){i===t.length?e.complete():(e.next(t[i++]),e.closed||this.schedule())})})}(t,n);if(ax(t))return function sL(t,n){return Xt(t).pipe(vx(n),bx(n))}(t,n);if(cx(t))return yx(t,n);if(hx(t))return function lL(t,n){return new xe(e=>{let i;return xr(e,n,()=>{i=t[ux](),xr(e,n,()=>{let r,o;try{({value:r,done:o}=i.next())}catch(s){return void e.error(s)}o?e.complete():e.next(r)},0,!0)}),()=>We(i?.return)&&i.return()})}(t,n);if(mx(t))return function cL(t,n){return yx(fx(t),n)}(t,n)}throw dx(t)}(t,n):Xt(t)}function $n(...t){const n=kl(t),e=function rL(t,n){return"number"==typeof Gp(t)?t.pop():n}(t,1/0),i=t;return i.length?1===i.length?Xt(i[0]):Ls(e)(yt(i,n)):xn}function Ml(t={}){const{connector:n=(()=>new te),resetOnError:e=!0,resetOnComplete:i=!0,resetOnRefCountZero:r=!0}=t;return o=>{let s,a,l,c=0,d=!1,u=!1;const h=()=>{a?.unsubscribe(),a=void 0},f=()=>{h(),s=l=void 0,d=u=!1},p=()=>{const g=s;f(),g?.unsubscribe()};return gt((g,b)=>{c++,!u&&!d&&h();const v=l=l??n();b.add(()=>{c--,0===c&&!u&&!d&&(a=Wp(p,r))}),v.subscribe(b),!s&&c>0&&(s=new Ns({next:w=>v.next(w),error:w=>{u=!0,h(),a=Wp(f,e,w),v.error(w)},complete:()=>{d=!0,h(),a=Wp(f,i),v.complete()}}),Xt(g).subscribe(s))})(o)}}function Wp(t,n,...e){if(!0===n)return void t();if(!1===n)return;const i=new Ns({next:()=>{i.unsubscribe(),t()}});return Xt(n(...e)).subscribe(i)}function lt(t){for(let n in t)if(t[n]===lt)return n;throw Error("Could not find renamed property on target object.")}function qp(t,n){for(const e in n)n.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=n[e])}function ut(t){if("string"==typeof t)return t;if(Array.isArray(t))return"["+t.map(ut).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;const n=t.toString();if(null==n)return""+n;const e=n.indexOf("\n");return-1===e?n:n.substring(0,e)}function Yp(t,n){return null==t||""===t?null===n?"":n:null==n||""===n?t:t+" "+n}const uL=lt({__forward_ref__:lt});function st(t){return t.__forward_ref__=st,t.toString=function(){return ut(this())},t}function ue(t){return Zp(t)?t():t}function Zp(t){return"function"==typeof t&&t.hasOwnProperty(uL)&&t.__forward_ref__===st}function Kp(t){return t&&!!t.\u0275providers}const ou="https://g.co/ng/security#xss";class A extends Error{constructor(n,e){super(su(n,e)),this.code=n}}function su(t,n){return`NG0${Math.abs(t)}${n?": "+n.trim():""}`}function Ce(t){return"string"==typeof t?t:null==t?"":String(t)}function au(t,n){throw new A(-201,!1)}function di(t,n){null==t&&function Je(t,n,e,i){throw new Error(`ASSERTION ERROR: ${t}`+(null==i?"":` [Expected=> ${e} ${i} ${n} <=Actual]`))}(n,t,null,"!=")}function T(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function he(t){return{providers:t.providers||[],imports:t.imports||[]}}function lu(t){return wx(t,cu)||wx(t,Cx)}function wx(t,n){return t.hasOwnProperty(n)?t[n]:null}function xx(t){return t&&(t.hasOwnProperty(Xp)||t.hasOwnProperty(yL))?t[Xp]:null}const cu=lt({\u0275prov:lt}),Xp=lt({\u0275inj:lt}),Cx=lt({ngInjectableDef:lt}),yL=lt({ngInjectorDef:lt});var fe=(()=>((fe=fe||{})[fe.Default=0]="Default",fe[fe.Host=1]="Host",fe[fe.Self=2]="Self",fe[fe.SkipSelf=4]="SkipSelf",fe[fe.Optional=8]="Optional",fe))();let Qp;function ui(t){const n=Qp;return Qp=t,n}function Dx(t,n,e){const i=lu(t);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:e&fe.Optional?null:void 0!==n?n:void au(ut(t))}const ht=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),Tl={},Jp="__NG_DI_FLAG__",du="ngTempTokenPath",xL="ngTokenPath",CL=/\n/gm,DL="\u0275",Ex="__source";let Al;function Bs(t){const n=Al;return Al=t,n}function EL(t,n=fe.Default){if(void 0===Al)throw new A(-203,!1);return null===Al?Dx(t,void 0,n):Al.get(t,n&fe.Optional?null:void 0,n)}function _(t,n=fe.Default){return(function wL(){return Qp}()||EL)(ue(t),n)}function R(t,n=fe.Default){return _(t,uu(n))}function uu(t){return typeof t>"u"||"number"==typeof t?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function eg(t){const n=[];for(let e=0;e(($i=$i||{})[$i.OnPush=0]="OnPush",$i[$i.Default=1]="Default",$i))(),Mi=(()=>{return(t=Mi||(Mi={}))[t.Emulated=0]="Emulated",t[t.None=2]="None",t[t.ShadowDom=3]="ShadowDom",Mi;var t})();const Dr={},Xe=[],hu=lt({\u0275cmp:lt}),tg=lt({\u0275dir:lt}),ng=lt({\u0275pipe:lt}),kx=lt({\u0275mod:lt}),Er=lt({\u0275fac:lt}),Ol=lt({__NG_ELEMENT_ID__:lt});let TL=0;function G(t){return Cr(()=>{const n=Tx(t),e={...n,decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===$i.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&t.dependencies||null,getStandaloneInjector:null,data:t.data||{},encapsulation:t.encapsulation||Mi.Emulated,id:"c"+TL++,styles:t.styles||Xe,_:null,schemas:t.schemas||null,tView:null};Ax(e);const i=t.dependencies;return e.directiveDefs=fu(i,!1),e.pipeDefs=fu(i,!0),e})}function IL(t){return et(t)||fn(t)}function OL(t){return null!==t}function pe(t){return Cr(()=>({type:t.type,bootstrap:t.bootstrap||Xe,declarations:t.declarations||Xe,imports:t.imports||Xe,exports:t.exports||Xe,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function Mx(t,n){if(null==t)return Dr;const e={};for(const i in t)if(t.hasOwnProperty(i)){let r=t[i],o=r;Array.isArray(r)&&(o=r[1],r=r[0]),e[r]=i,n&&(n[r]=o)}return e}function M(t){return Cr(()=>{const n=Tx(t);return Ax(n),n})}function hn(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,standalone:!0===t.standalone,onDestroy:t.type.prototype.ngOnDestroy||null}}function et(t){return t[hu]||null}function fn(t){return t[tg]||null}function Rn(t){return t[ng]||null}function Wn(t,n){const e=t[kx]||null;if(!e&&!0===n)throw new Error(`Type ${ut(t)} does not have '\u0275mod' property.`);return e}function Tx(t){const n={};return{type:t.type,providersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:n,exportAs:t.exportAs||null,standalone:!0===t.standalone,selectors:t.selectors||Xe,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Mx(t.inputs,n),outputs:Mx(t.outputs)}}function Ax(t){t.features?.forEach(n=>n(t))}function fu(t,n){if(!t)return null;const e=n?Rn:IL;return()=>("function"==typeof t?t():t).map(i=>e(i)).filter(OL)}const Sr=0,q=1,Ie=2,St=3,Ti=4,Zo=5,mn=6,js=7,Rt=8,mu=9,pu=10,Pe=11,ig=12,Rl=13,Ix=14,Hs=15,pn=16,Fl=17,zs=18,Gi=19,Pl=20,Ox=21,_t=22,rg=1,Rx=2,gu=7,_u=8,Us=9,Cn=10;function qn(t){return Array.isArray(t)&&"object"==typeof t[rg]}function Ai(t){return Array.isArray(t)&&!0===t[rg]}function og(t){return 0!=(4&t.flags)}function Nl(t){return t.componentOffset>-1}function bu(t){return 1==(1&t.flags)}function Ii(t){return!!t.template}function FL(t){return 0!=(256&t[Ie])}function Ko(t,n){return t.hasOwnProperty(Er)?t[Er]:null}class Nx{constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}isFirstChange(){return this.firstChange}}function at(){return Lx}function Lx(t){return t.type.prototype.ngOnChanges&&(t.setInput=BL),LL}function LL(){const t=Vx(this),n=t?.current;if(n){const e=t.previous;if(e===Dr)t.previous=n;else for(let i in n)e[i]=n[i];t.current=null,this.ngOnChanges(n)}}function BL(t,n,e,i){const r=this.declaredInputs[e],o=Vx(t)||function VL(t,n){return t[Bx]=n}(t,{previous:Dr,current:null}),s=o.current||(o.current={}),a=o.previous,l=a[r];s[r]=new Nx(l&&l.currentValue,n,a===Dr),t[i]=n}at.ngInherit=!0;const Bx="__ngSimpleChanges__";function Vx(t){return t[Bx]||null}const hi=function(t,n,e){};function nn(t){for(;Array.isArray(t);)t=t[Sr];return t}function vu(t,n){return nn(n[t])}function Yn(t,n){return nn(n[t.index])}function zx(t,n){return t.data[n]}function $s(t,n){return t[n]}function Zn(t,n){const e=n[t];return qn(e)?e:e[Sr]}function yu(t){return 64==(64&t[Ie])}function uo(t,n){return null==n?null:t[n]}function Ux(t){t[zs]=0}function ag(t,n){t[Zo]+=n;let e=t,i=t[St];for(;null!==i&&(1===n&&1===e[Zo]||-1===n&&0===e[Zo]);)i[Zo]+=n,e=i,i=i[St]}const De={lFrame:Jx(null),bindingsEnabled:!0};function Gx(){return De.bindingsEnabled}function I(){return De.lFrame.lView}function Ue(){return De.lFrame.tView}function Wi(t){return De.lFrame.contextLView=t,t[Rt]}function qi(t){return De.lFrame.contextLView=null,t}function rn(){let t=Wx();for(;null!==t&&64===t.type;)t=t.parent;return t}function Wx(){return De.lFrame.currentTNode}function Yi(t,n){const e=De.lFrame;e.currentTNode=t,e.isParent=n}function lg(){return De.lFrame.isParent}function cg(){De.lFrame.isParent=!1}function Dn(){const t=De.lFrame;let n=t.bindingRootIndex;return-1===n&&(n=t.bindingRootIndex=t.tView.bindingStartIndex),n}function Gs(){return De.lFrame.bindingIndex++}function Mr(t){const n=De.lFrame,e=n.bindingIndex;return n.bindingIndex=n.bindingIndex+t,e}function QL(t,n){const e=De.lFrame;e.bindingIndex=e.bindingRootIndex=t,dg(n)}function dg(t){De.lFrame.currentDirectiveIndex=t}function Kx(){return De.lFrame.currentQueryIndex}function hg(t){De.lFrame.currentQueryIndex=t}function e2(t){const n=t[q];return 2===n.type?n.declTNode:1===n.type?t[mn]:null}function Xx(t,n,e){if(e&fe.SkipSelf){let r=n,o=t;for(;!(r=r.parent,null!==r||e&fe.Host||(r=e2(o),null===r||(o=o[Hs],10&r.type))););if(null===r)return!1;n=r,t=o}const i=De.lFrame=Qx();return i.currentTNode=n,i.lView=t,!0}function fg(t){const n=Qx(),e=t[q];De.lFrame=n,n.currentTNode=e.firstChild,n.lView=t,n.tView=e,n.contextLView=t,n.bindingIndex=e.bindingStartIndex,n.inI18n=!1}function Qx(){const t=De.lFrame,n=null===t?null:t.child;return null===n?Jx(t):n}function Jx(t){const n={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null,inI18n:!1};return null!==t&&(t.child=n),n}function eC(){const t=De.lFrame;return De.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}const tC=eC;function mg(){const t=eC();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function En(){return De.lFrame.selectedIndex}function Xo(t){De.lFrame.selectedIndex=t}function wt(){const t=De.lFrame;return zx(t.tView,t.selectedIndex)}function wu(t,n){for(let e=n.directiveStart,i=n.directiveEnd;e=i)break}else n[l]<0&&(t[zs]+=65536),(a>11>16&&(3&t[Ie])===n){t[Ie]+=2048,hi(4,a,o);try{o.call(a)}finally{hi(5,a,o)}}}else{hi(4,a,o);try{o.call(a)}finally{hi(5,a,o)}}}const Ws=-1;class Bl{constructor(n,e,i){this.factory=n,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=i}}function _g(t,n,e){let i=0;for(;in){s=o-1;break}}}for(;o>16}(t),i=n;for(;e>0;)i=i[Hs],e--;return i}let bg=!0;function Su(t){const n=bg;return bg=t,n}const cC=255,dC=5;let f2=0;const Zi={};function ku(t,n){const e=uC(t,n);if(-1!==e)return e;const i=n[q];i.firstCreatePass&&(t.injectorIndex=n.length,vg(i.data,t),vg(n,null),vg(i.blueprint,null));const r=yg(t,n),o=t.injectorIndex;if(lC(r)){const s=Du(r),a=Eu(r,n),l=a[q].data;for(let c=0;c<8;c++)n[o+c]=a[s+c]|l[s+c]}return n[o+8]=r,o}function vg(t,n){t.push(0,0,0,0,0,0,0,0,n)}function uC(t,n){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null===n[t.injectorIndex+8]?-1:t.injectorIndex}function yg(t,n){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let e=0,i=null,r=n;for(;null!==r;){if(i=bC(r),null===i)return Ws;if(e++,r=r[Hs],-1!==i.injectorIndex)return i.injectorIndex|e<<16}return Ws}function wg(t,n,e){!function m2(t,n,e){let i;"string"==typeof e?i=e.charCodeAt(0)||0:e.hasOwnProperty(Ol)&&(i=e[Ol]),null==i&&(i=e[Ol]=f2++);const r=i&cC;n.data[t+(r>>dC)]|=1<=0?n&cC:b2:n}(e);if("function"==typeof o){if(!Xx(n,t,i))return i&fe.Host?hC(r,0,i):fC(n,e,i,r);try{const s=o(i);if(null!=s||i&fe.Optional)return s;au()}finally{tC()}}else if("number"==typeof o){let s=null,a=uC(t,n),l=Ws,c=i&fe.Host?n[pn][mn]:null;for((-1===a||i&fe.SkipSelf)&&(l=-1===a?yg(t,n):n[a+8],l!==Ws&&_C(i,!1)?(s=n[q],a=Du(l),n=Eu(l,n)):a=-1);-1!==a;){const d=n[q];if(gC(o,a,d.data)){const u=g2(a,n,e,s,i,c);if(u!==Zi)return u}l=n[a+8],l!==Ws&&_C(i,n[q].data[a+8]===c)&&gC(o,a,n)?(s=d,a=Du(l),n=Eu(l,n)):a=-1}}return r}function g2(t,n,e,i,r,o){const s=n[q],a=s.data[t+8],d=Mu(a,s,e,null==i?Nl(a)&&bg:i!=s&&0!=(3&a.type),r&fe.Host&&o===a);return null!==d?Qo(n,s,d,a):Zi}function Mu(t,n,e,i,r){const o=t.providerIndexes,s=n.data,a=1048575&o,l=t.directiveStart,d=o>>20,h=r?a+d:t.directiveEnd;for(let f=i?a:a+d;f=l&&p.type===e)return f}if(r){const f=s[l];if(f&&Ii(f)&&f.type===e)return l}return null}function Qo(t,n,e,i){let r=t[e];const o=n.data;if(function c2(t){return t instanceof Bl}(r)){const s=r;s.resolving&&function hL(t,n){const e=n?`. Dependency path: ${n.join(" > ")} > ${t}`:"";throw new A(-200,`Circular dependency in DI detected for ${t}${e}`)}(function Qe(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():Ce(t)}(o[e]));const a=Su(s.canSeeViewProviders);s.resolving=!0;const l=s.injectImpl?ui(s.injectImpl):null;Xx(t,i,fe.Default);try{r=t[e]=s.factory(void 0,o,t,i),n.firstCreatePass&&e>=i.directiveStart&&function a2(t,n,e){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:o}=n.type.prototype;if(i){const s=Lx(n);(e.preOrderHooks??(e.preOrderHooks=[])).push(t,s),(e.preOrderCheckHooks??(e.preOrderCheckHooks=[])).push(t,s)}r&&(e.preOrderHooks??(e.preOrderHooks=[])).push(0-t,r),o&&((e.preOrderHooks??(e.preOrderHooks=[])).push(t,o),(e.preOrderCheckHooks??(e.preOrderCheckHooks=[])).push(t,o))}(e,o[e],n)}finally{null!==l&&ui(l),Su(a),s.resolving=!1,tC()}}return r}function gC(t,n,e){return!!(e[n+(t>>dC)]&1<{const n=t.prototype.constructor,e=n[Er]||xg(n),i=Object.prototype;let r=Object.getPrototypeOf(t.prototype).constructor;for(;r&&r!==i;){const o=r[Er]||xg(r);if(o&&o!==e)return o;r=Object.getPrototypeOf(r)}return o=>new o})}function xg(t){return Zp(t)?()=>{const n=xg(ue(t));return n&&n()}:Ko(t)}function bC(t){const n=t[q],e=n.type;return 2===e?n.declTNode:1===e?t[mn]:null}function Tr(t){return function p2(t,n){if("class"===n)return t.classes;if("style"===n)return t.styles;const e=t.attrs;if(e){const i=e.length;let r=0;for(;r{const i=function Cg(t){return function(...e){if(t){const i=t(...e);for(const r in i)this[r]=i[r]}}}(n);function r(...o){if(this instanceof r)return i.apply(this,o),this;const s=new r(...o);return a.annotation=s,a;function a(l,c,d){const u=l.hasOwnProperty(Zs)?l[Zs]:Object.defineProperty(l,Zs,{value:[]})[Zs];for(;u.length<=d;)u.push(null);return(u[d]=u[d]||[]).push(s),l}}return e&&(r.prototype=Object.create(e.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r})}class k{constructor(n,e){this._desc=n,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=T({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function Jo(t,n){t.forEach(e=>Array.isArray(e)?Jo(e,n):n(e))}function yC(t,n,e){n>=t.length?t.push(e):t.splice(n,0,e)}function Tu(t,n){return n>=t.length-1?t.pop():t.splice(n,1)[0]}function zl(t,n){const e=[];for(let i=0;i=0?t[1|i]=e:(i=~i,function C2(t,n,e,i){let r=t.length;if(r==n)t.push(e,i);else if(1===r)t.push(i,t[0]),t[0]=e;else{for(r--,t.push(t[r-1],t[r]);r>n;)t[r]=t[r-2],r--;t[n]=e,t[n+1]=i}}(t,i,n,e)),i}function Eg(t,n){const e=Qs(t,n);if(e>=0)return t[1|e]}function Qs(t,n){return function wC(t,n,e){let i=0,r=t.length>>e;for(;r!==i;){const o=i+(r-i>>1),s=t[o<n?r=o:i=o+1}return~(r<({token:t})),-1),Ar=Il(Xs("Optional"),8),Js=Il(Xs("SkipSelf"),4);var Sn=(()=>((Sn=Sn||{})[Sn.Important=1]="Important",Sn[Sn.DashCase=2]="DashCase",Sn))();const Ag=new Map;let G2=0;const Og="__ngContext__";function gn(t,n){qn(n)?(t[Og]=n[Pl],function q2(t){Ag.set(t[Pl],t)}(n)):t[Og]=n}let Rg;function Fg(t,n){return Rg(t,n)}function Wl(t){const n=t[St];return Ai(n)?n[St]:n}function Pg(t){return HC(t[Rl])}function Ng(t){return HC(t[Ti])}function HC(t){for(;null!==t&&!Ai(t);)t=t[Ti];return t}function ta(t,n,e,i,r){if(null!=i){let o,s=!1;Ai(i)?o=i:qn(i)&&(s=!0,i=i[Sr]);const a=nn(i);0===t&&null!==e?null==r?qC(n,e,a):es(n,e,a,r||null,!0):1===t&&null!==e?es(n,e,a,r||null,!0):2===t?function Ug(t,n,e){const i=Fu(t,n);i&&function fB(t,n,e,i){t.removeChild(n,e,i)}(t,i,n,e)}(n,a,s):3===t&&n.destroyNode(a),null!=o&&function gB(t,n,e,i,r){const o=e[gu];o!==nn(e)&&ta(n,t,i,o,r);for(let a=Cn;a0&&(t[e-1][Ti]=i[Ti]);const o=Tu(t,Cn+n);!function oB(t,n){ql(t,n,n[Pe],2,null,null),n[Sr]=null,n[mn]=null}(i[q],i);const s=o[Gi];null!==s&&s.detachView(o[q]),i[St]=null,i[Ti]=null,i[Ie]&=-65}return i}function $C(t,n){if(!(128&n[Ie])){const e=n[Pe];e.destroyNode&&ql(t,n,e,3,null,null),function lB(t){let n=t[Rl];if(!n)return jg(t[q],t);for(;n;){let e=null;if(qn(n))e=n[Rl];else{const i=n[Cn];i&&(e=i)}if(!e){for(;n&&!n[Ti]&&n!==t;)qn(n)&&jg(n[q],n),n=n[St];null===n&&(n=t),qn(n)&&jg(n[q],n),e=n&&n[Ti]}n=e}}(n)}}function jg(t,n){if(!(128&n[Ie])){n[Ie]&=-65,n[Ie]|=128,function hB(t,n){let e;if(null!=t&&null!=(e=t.destroyHooks))for(let i=0;i=0?i[r=s]():i[r=-s].unsubscribe(),o+=2}else{const s=i[r=e[o+1]];e[o].call(s)}if(null!==i){for(let o=r+1;o-1){const{encapsulation:o}=t.data[i.directiveStart+r];if(o===Mi.None||o===Mi.Emulated)return null}return Yn(i,e)}}(t,n.parent,e)}function es(t,n,e,i,r){t.insertBefore(n,e,i,r)}function qC(t,n,e){t.appendChild(n,e)}function YC(t,n,e,i,r){null!==i?es(t,n,e,i,r):qC(t,n,e)}function Fu(t,n){return t.parentNode(n)}function ZC(t,n,e){return XC(t,n,e)}let Hg,Lu,Wg,Bu,XC=function KC(t,n,e){return 40&t.type?Yn(t,e):null};function Pu(t,n,e,i){const r=GC(t,i,n),o=n[Pe],a=ZC(i.parent||n[mn],i,n);if(null!=r)if(Array.isArray(e))for(let l=0;lt,createScript:t=>t,createScriptURL:t=>t})}catch{}return Lu}()?.createHTML(t)||t}function sD(t){return function qg(){if(void 0===Bu&&(Bu=null,ht.trustedTypes))try{Bu=ht.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Bu}()?.createScriptURL(t)||t}class ts{constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${ou})`}}class CB extends ts{getTypeName(){return"HTML"}}class DB extends ts{getTypeName(){return"Style"}}class EB extends ts{getTypeName(){return"Script"}}class SB extends ts{getTypeName(){return"URL"}}class kB extends ts{getTypeName(){return"ResourceURL"}}function Xn(t){return t instanceof ts?t.changingThisBreaksApplicationSecurity:t}function Ki(t,n){const e=function MB(t){return t instanceof ts&&t.getTypeName()||null}(t);if(null!=e&&e!==n){if("ResourceURL"===e&&"URL"===n)return!0;throw new Error(`Required a safe ${n}, got a ${e} (see ${ou})`)}return e===n}class FB{constructor(n){this.inertDocumentHelper=n}getInertBodyElement(n){n=""+n;try{const e=(new window.DOMParser).parseFromString(na(n),"text/html").body;return null===e?this.inertDocumentHelper.getInertBodyElement(n):(e.removeChild(e.firstChild),e)}catch{return null}}}class PB{constructor(n){this.defaultDoc=n,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(n){const e=this.inertDocument.createElement("template");return e.innerHTML=na(n),e}}const LB=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Vu(t){return(t=String(t)).match(LB)?t:"unsafe:"+t}function Ir(t){const n={};for(const e of t.split(","))n[e]=!0;return n}function Yl(...t){const n={};for(const e of t)for(const i in e)e.hasOwnProperty(i)&&(n[i]=!0);return n}const lD=Ir("area,br,col,hr,img,wbr"),cD=Ir("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),dD=Ir("rp,rt"),Yg=Yl(lD,Yl(cD,Ir("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),Yl(dD,Ir("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),Yl(dD,cD)),Zg=Ir("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),uD=Yl(Zg,Ir("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),Ir("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),BB=Ir("script,style,template");class VB{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(n){let e=n.firstChild,i=!0;for(;e;)if(e.nodeType===Node.ELEMENT_NODE?i=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,i&&e.firstChild)e=e.firstChild;else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let r=this.checkClobberedElement(e,e.nextSibling);if(r){e=r;break}e=this.checkClobberedElement(e,e.parentNode)}return this.buf.join("")}startElement(n){const e=n.nodeName.toLowerCase();if(!Yg.hasOwnProperty(e))return this.sanitizedSomething=!0,!BB.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const i=n.attributes;for(let r=0;r"),!0}endElement(n){const e=n.nodeName.toLowerCase();Yg.hasOwnProperty(e)&&!lD.hasOwnProperty(e)&&(this.buf.push(""))}chars(n){this.buf.push(hD(n))}checkClobberedElement(n,e){if(e&&(n.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error(`Failed to sanitize html because the element is clobbered: ${n.outerHTML}`);return e}}const jB=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,HB=/([^\#-~ |!])/g;function hD(t){return t.replace(/&/g,"&").replace(jB,function(n){return"&#"+(1024*(n.charCodeAt(0)-55296)+(n.charCodeAt(1)-56320)+65536)+";"}).replace(HB,function(n){return"&#"+n.charCodeAt(0)+";"}).replace(//g,">")}let ju;function fD(t,n){let e=null;try{ju=ju||function aD(t){const n=new PB(t);return function NB(){try{return!!(new window.DOMParser).parseFromString(na(""),"text/html")}catch{return!1}}()?new FB(n):n}(t);let i=n?String(n):"";e=ju.getInertBodyElement(i);let r=5,o=i;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,i=o,o=e.innerHTML,e=ju.getInertBodyElement(i)}while(i!==o);return na((new VB).sanitizeChildren(Kg(e)||e))}finally{if(e){const i=Kg(e)||e;for(;i.firstChild;)i.removeChild(i.firstChild)}}}function Kg(t){return"content"in t&&function zB(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}var $e=(()=>(($e=$e||{})[$e.NONE=0]="NONE",$e[$e.HTML=1]="HTML",$e[$e.STYLE=2]="STYLE",$e[$e.SCRIPT=3]="SCRIPT",$e[$e.URL=4]="URL",$e[$e.RESOURCE_URL=5]="RESOURCE_URL",$e))();function Oi(t){const n=Zl();return n?n.sanitize($e.URL,t)||"":Ki(t,"URL")?Xn(t):Vu(Ce(t))}function mD(t){const n=Zl();if(n)return sD(n.sanitize($e.RESOURCE_URL,t)||"");if(Ki(t,"ResourceURL"))return sD(Xn(t));throw new A(904,!1)}function Xg(t,n,e){return function YB(t,n){return"src"===n&&("embed"===t||"frame"===t||"iframe"===t||"media"===t||"script"===t)||"href"===n&&("base"===t||"link"===t)?mD:Oi}(n,e)(t)}function Zl(){const t=I();return t&&t[ig]}const Hu=new k("ENVIRONMENT_INITIALIZER"),Qg=new k("INJECTOR",-1),pD=new k("INJECTOR_DEF_TYPES");class gD{get(n,e=Tl){if(e===Tl){const i=new Error(`NullInjectorError: No provider for ${ut(n)}!`);throw i.name="NullInjectorError",i}return e}}function _D(...t){return{\u0275providers:bD(0,t),\u0275fromNgModule:!0}}function bD(t,...n){const e=[],i=new Set;let r;return Jo(n,o=>{const s=o;Jg(s,e,[],i)&&(r||(r=[]),r.push(s))}),void 0!==r&&vD(r,e),e}function vD(t,n){for(let e=0;e{n.push(o)})}}function Jg(t,n,e,i){if(!(t=ue(t)))return!1;let r=null,o=xx(t);const s=!o&&et(t);if(o||s){if(s&&!s.standalone)return!1;r=t}else{const l=t.ngModule;if(o=xx(l),!o)return!1;r=l}const a=i.has(r);if(s){if(a)return!1;if(i.add(r),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const c of l)Jg(c,n,e,i)}}else{if(!o)return!1;{if(null!=o.imports&&!a){let c;i.add(r);try{Jo(o.imports,d=>{Jg(d,n,e,i)&&(c||(c=[]),c.push(d))})}finally{}void 0!==c&&vD(c,n)}if(!a){const c=Ko(r)||(()=>new r);n.push({provide:r,useFactory:c,deps:Xe},{provide:pD,useValue:r,multi:!0},{provide:Hu,useValue:()=>_(r),multi:!0})}const l=o.providers;null==l||a||e_(l,d=>{n.push(d)})}}return r!==t&&void 0!==t.providers}function e_(t,n){for(let e of t)Kp(e)&&(e=e.\u0275providers),Array.isArray(e)?e_(e,n):n(e)}const KB=lt({provide:String,useValue:lt});function t_(t){return null!==t&&"object"==typeof t&&KB in t}function ns(t){return"function"==typeof t}const n_=new k("Set Injector scope."),zu={},QB={};let i_;function Uu(){return void 0===i_&&(i_=new gD),i_}class Xi{}class xD extends Xi{get destroyed(){return this._destroyed}constructor(n,e,i,r){super(),this.parent=e,this.source=i,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,o_(n,s=>this.processProvider(s)),this.records.set(Qg,ia(void 0,this)),r.has("environment")&&this.records.set(Xi,ia(void 0,this));const o=this.records.get(n_);null!=o&&"string"==typeof o.value&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(pD.multi,Xe,fe.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const n of this._ngOnDestroyHooks)n.ngOnDestroy();for(const n of this._onDestroyHooks)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(n){this._onDestroyHooks.push(n)}runInContext(n){this.assertNotDestroyed();const e=Bs(this),i=ui(void 0);try{return n()}finally{Bs(e),ui(i)}}get(n,e=Tl,i=fe.Default){this.assertNotDestroyed(),i=uu(i);const r=Bs(this),o=ui(void 0);try{if(!(i&fe.SkipSelf)){let a=this.records.get(n);if(void 0===a){const l=function iV(t){return"function"==typeof t||"object"==typeof t&&t instanceof k}(n)&&lu(n);a=l&&this.injectableDefInScope(l)?ia(r_(n),zu):null,this.records.set(n,a)}if(null!=a)return this.hydrate(n,a)}return(i&fe.Self?Uu():this.parent).get(n,e=i&fe.Optional&&e===Tl?null:e)}catch(s){if("NullInjectorError"===s.name){if((s[du]=s[du]||[]).unshift(ut(n)),r)throw s;return function kL(t,n,e,i){const r=t[du];throw n[Ex]&&r.unshift(n[Ex]),t.message=function ML(t,n,e,i=null){t=t&&"\n"===t.charAt(0)&&t.charAt(1)==DL?t.slice(2):t;let r=ut(n);if(Array.isArray(n))r=n.map(ut).join(" -> ");else if("object"==typeof n){let o=[];for(let s in n)if(n.hasOwnProperty(s)){let a=n[s];o.push(s+":"+("string"==typeof a?JSON.stringify(a):ut(a)))}r=`{${o.join(", ")}}`}return`${e}${i?"("+i+")":""}[${r}]: ${t.replace(CL,"\n ")}`}("\n"+t.message,r,e,i),t[xL]=r,t[du]=null,t}(s,n,"R3InjectorError",this.source)}throw s}finally{ui(o),Bs(r)}}resolveInjectorInitializers(){const n=Bs(this),e=ui(void 0);try{const i=this.get(Hu.multi,Xe,fe.Self);for(const r of i)r()}finally{Bs(n),ui(e)}}toString(){const n=[],e=this.records;for(const i of e.keys())n.push(ut(i));return`R3Injector[${n.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new A(205,!1)}processProvider(n){let e=ns(n=ue(n))?n:ue(n&&n.provide);const i=function eV(t){return t_(t)?ia(void 0,t.useValue):ia(CD(t),zu)}(n);if(ns(n)||!0!==n.multi)this.records.get(e);else{let r=this.records.get(e);r||(r=ia(void 0,zu,!0),r.factory=()=>eg(r.multi),this.records.set(e,r)),e=n,r.multi.push(n)}this.records.set(e,i)}hydrate(n,e){return e.value===zu&&(e.value=QB,e.value=e.factory()),"object"==typeof e.value&&e.value&&function nV(t){return null!==t&&"object"==typeof t&&"function"==typeof t.ngOnDestroy}(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}injectableDefInScope(n){if(!n.providedIn)return!1;const e=ue(n.providedIn);return"string"==typeof e?"any"===e||this.scopes.has(e):this.injectorDefTypes.has(e)}}function r_(t){const n=lu(t),e=null!==n?n.factory:Ko(t);if(null!==e)return e;if(t instanceof k)throw new A(204,!1);if(t instanceof Function)return function JB(t){const n=t.length;if(n>0)throw zl(n,"?"),new A(204,!1);const e=function bL(t){const n=t&&(t[cu]||t[Cx]);return n?(function vL(t){if(t.hasOwnProperty("name"))return t.name;(""+t).match(/^function\s*([^\s(]+)/)}(t),n):null}(t);return null!==e?()=>e.factory(t):()=>new t}(t);throw new A(204,!1)}function CD(t,n,e){let i;if(ns(t)){const r=ue(t);return Ko(r)||r_(r)}if(t_(t))i=()=>ue(t.useValue);else if(function wD(t){return!(!t||!t.useFactory)}(t))i=()=>t.useFactory(...eg(t.deps||[]));else if(function yD(t){return!(!t||!t.useExisting)}(t))i=()=>_(ue(t.useExisting));else{const r=ue(t&&(t.useClass||t.provide));if(!function tV(t){return!!t.deps}(t))return Ko(r)||r_(r);i=()=>new r(...eg(t.deps))}return i}function ia(t,n,e=!1){return{factory:t,value:n,multi:e?[]:void 0}}function o_(t,n){for(const e of t)Array.isArray(e)?o_(e,n):e&&Kp(e)?o_(e.\u0275providers,n):n(e)}class rV{}class DD{}class sV{resolveComponentFactory(n){throw function oV(t){const n=Error(`No component factory found for ${ut(t)}. Did you add it to @NgModule.entryComponents?`);return n.ngComponent=t,n}(n)}}let Ri=(()=>{class t{}return t.NULL=new sV,t})();function aV(){return ra(rn(),I())}function ra(t,n){return new H(Yn(t,n))}let H=(()=>{class t{constructor(e){this.nativeElement=e}}return t.__NG_ELEMENT_ID__=aV,t})();function lV(t){return t instanceof H?t.nativeElement:t}class ho{}let mi=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>function cV(){const t=I(),e=Zn(rn().index,t);return(qn(e)?e:t)[Pe]}(),t})(),dV=(()=>{class t{}return t.\u0275prov=T({token:t,providedIn:"root",factory:()=>null}),t})();class fo{constructor(n){this.full=n,this.major=n.split(".")[0],this.minor=n.split(".")[1],this.patch=n.split(".").slice(2).join(".")}}const uV=new fo("15.2.6"),s_={},a_="ngOriginalError";function l_(t){return t[a_]}class Qi{constructor(){this._console=console}handleError(n){const e=this._findOriginalError(n);this._console.error("ERROR",n),e&&this._console.error("ORIGINAL ERROR",e)}_findOriginalError(n){let e=n&&l_(n);for(;e&&l_(e);)e=l_(e);return e||null}}function Or(t){return t instanceof Function?t():t}function kD(t,n,e){let i=t.length;for(;;){const r=t.indexOf(n,e);if(-1===r)return r;if(0===r||t.charCodeAt(r-1)<=32){const o=n.length;if(r+o===i||t.charCodeAt(r+o)<=32)return r}e=r+1}}const MD="ng-template";function xV(t,n,e){let i=0,r=!0;for(;io?"":r[u+1].toLowerCase();const f=8&i?h:null;if(f&&-1!==kD(f,c,0)||2&i&&c!==h){if(Fi(i))return!1;s=!0}}}}else{if(!s&&!Fi(i)&&!Fi(l))return!1;if(s&&Fi(l))continue;s=!1,i=l|1&i}}return Fi(i)||s}function Fi(t){return 0==(1&t)}function EV(t,n,e,i){if(null===n)return-1;let r=0;if(i||!e){let o=!1;for(;r-1)for(e++;e0?'="'+a+'"':"")+"]"}else 8&i?r+="."+s:4&i&&(r+=" "+s);else""!==r&&!Fi(s)&&(n+=ID(o,r),r=""),i=s,o=o||!Fi(i);e++}return""!==r&&(n+=ID(o,r)),n}const Ee={};function D(t){OD(Ue(),I(),En()+t,!1)}function OD(t,n,e,i){if(!i)if(3==(3&n[Ie])){const o=t.preOrderCheckHooks;null!==o&&xu(n,o,e)}else{const o=t.preOrderHooks;null!==o&&Cu(n,o,0,e)}Xo(e)}function ND(t,n=null,e=null,i){const r=LD(t,n,e,i);return r.resolveInjectorInitializers(),r}function LD(t,n=null,e=null,i,r=new Set){const o=[e||Xe,_D(t)];return i=i||("object"==typeof t?void 0:ut(t)),new xD(o,n||Uu(),i||null,r)}let kt=(()=>{class t{static create(e,i){if(Array.isArray(e))return ND({name:""},i,e,"");{const r=e.name??"";return ND({name:r},e.parent,e.providers,r)}}}return t.THROW_IF_NOT_FOUND=Tl,t.NULL=new gD,t.\u0275prov=T({token:t,providedIn:"any",factory:()=>_(Qg)}),t.__NG_ELEMENT_ID__=-1,t})();function m(t,n=fe.Default){const e=I();return null===e?_(t,n):mC(rn(),e,ue(t),n)}function Kl(){throw new Error("invalid")}function $D(t,n){const e=t.contentQueries;if(null!==e)for(let i=0;i_t&&OD(t,n,_t,!1),hi(s?2:0,r),e(i,r)}finally{Xo(o),hi(s?3:1,r)}}function p_(t,n,e){if(og(n)){const r=n.directiveEnd;for(let o=n.directiveStart;o0;){const e=t[--n];if("number"==typeof e&&e<0)return e}return 0})(s)!=a&&s.push(a),s.push(e,i,o)}}(t,n,i,Xl(t,e,r.hostVars,Ee),r)}function Ji(t,n,e,i,r,o){const s=Yn(t,n);!function w_(t,n,e,i,r,o,s){if(null==o)t.removeAttribute(n,r,e);else{const a=null==s?Ce(o):s(o,i||"",r);t.setAttribute(n,r,a,e)}}(n[Pe],s,o,t.value,e,i,r)}function gj(t,n,e,i,r,o){const s=o[n];if(null!==s){const a=i.setInput;for(let l=0;l0&&x_(e)}}function x_(t){for(let i=Pg(t);null!==i;i=Ng(i))for(let r=Cn;r0&&x_(o)}const e=t[q].components;if(null!==e)for(let i=0;i0&&x_(r)}}function wj(t,n){const e=Zn(n,t),i=e[q];(function xj(t,n){for(let e=n.length;e-1&&(Vg(n,i),Tu(e,i))}this._attachedToViewContainer=!1}$C(this._lView[q],this._lView)}onDestroy(n){qD(this._lView[q],this._lView,null,n)}markForCheck(){C_(this._cdRefInjectingView||this._lView)}detach(){this._lView[Ie]&=-65}reattach(){this._lView[Ie]|=64}detectChanges(){Yu(this._lView[q],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new A(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function aB(t,n){ql(t,n,n[Pe],2,null,null)}(this._lView[q],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new A(902,!1);this._appRef=n}}class Cj extends Ql{constructor(n){super(n),this._view=n}detectChanges(){const n=this._view;Yu(n[q],n,n[Rt],!1)}checkNoChanges(){}get context(){return null}}class rE extends Ri{constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){const e=et(n);return new Jl(e,this.ngModule)}}function oE(t){const n=[];for(let e in t)t.hasOwnProperty(e)&&n.push({propName:t[e],templateName:e});return n}class Ej{constructor(n,e){this.injector=n,this.parentInjector=e}get(n,e,i){i=uu(i);const r=this.injector.get(n,s_,i);return r!==s_||e===s_?r:this.parentInjector.get(n,e,i)}}class Jl extends DD{get inputs(){return oE(this.componentDef.inputs)}get outputs(){return oE(this.componentDef.outputs)}constructor(n,e){super(),this.componentDef=n,this.ngModule=e,this.componentType=n.type,this.selector=function IV(t){return t.map(AV).join(",")}(n.selectors),this.ngContentSelectors=n.ngContentSelectors?n.ngContentSelectors:[],this.isBoundToModule=!!e}create(n,e,i,r){let o=(r=r||this.ngModule)instanceof Xi?r:r?.injector;o&&null!==this.componentDef.getStandaloneInjector&&(o=this.componentDef.getStandaloneInjector(o)||o);const s=o?new Ej(n,o):n,a=s.get(ho,null);if(null===a)throw new A(407,!1);const l=s.get(dV,null),c=a.createRenderer(null,this.componentDef),d=this.componentDef.selectors[0][0]||"div",u=i?function tj(t,n,e){return t.selectRootElement(n,e===Mi.ShadowDom)}(c,i,this.componentDef.encapsulation):Bg(c,d,function Dj(t){const n=t.toLowerCase();return"svg"===n?"svg":"math"===n?"math":null}(d)),h=this.componentDef.onPush?288:272,f=b_(0,null,null,1,0,null,null,null,null,null),p=Gu(null,f,null,h,null,null,a,c,l,s,null);let g,b;fg(p);try{const v=this.componentDef;let w,C=null;v.findHostDirectiveDefs?(w=[],C=new Map,v.findHostDirectiveDefs(v,w,C),w.push(v)):w=[v];const F=function kj(t,n){const e=t[q],i=_t;return t[i]=n,aa(e,i,2,"#host",null)}(p,u),ye=function Mj(t,n,e,i,r,o,s,a){const l=r[q];!function Tj(t,n,e,i){for(const r of t)n.mergedAttrs=Vl(n.mergedAttrs,r.hostAttrs);null!==n.mergedAttrs&&(Zu(n,n.mergedAttrs,!0),null!==e&&nD(i,e,n))}(i,t,n,s);const c=o.createRenderer(n,e),d=Gu(r,WD(e),null,e.onPush?32:16,r[t.index],t,o,c,a||null,null,null);return l.firstCreatePass&&y_(l,t,i.length-1),qu(r,d),r[t.index]=d}(F,u,v,w,p,a,c);b=zx(f,_t),u&&function Ij(t,n,e,i){if(i)_g(t,e,["ng-version",uV.full]);else{const{attrs:r,classes:o}=function OV(t){const n=[],e=[];let i=1,r=2;for(;i0&&tD(t,e,o.join(" "))}}(c,v,u,i),void 0!==e&&function Oj(t,n,e){const i=t.projection=[];for(let r=0;r=0;i--){const r=t[i];r.hostVars=n+=r.hostVars,r.hostAttrs=Vl(r.hostAttrs,e=Vl(e,r.hostAttrs))}}(i)}function S_(t){return t===Dr?{}:t===Xe?[]:t}function Pj(t,n){const e=t.viewQuery;t.viewQuery=e?(i,r)=>{n(i,r),e(i,r)}:n}function Nj(t,n){const e=t.contentQueries;t.contentQueries=e?(i,r,o)=>{n(i,r,o),e(i,r,o)}:n}function Lj(t,n){const e=t.hostBindings;t.hostBindings=e?(i,r)=>{n(i,r),e(i,r)}:n}function Xu(t){return!!k_(t)&&(Array.isArray(t)||!(t instanceof Map)&&Symbol.iterator in t)}function k_(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function er(t,n,e){return t[n]=e}function _n(t,n,e){return!Object.is(t[n],e)&&(t[n]=e,!0)}function tt(t,n,e,i){const r=I();return _n(r,Gs(),n)&&(Ue(),Ji(wt(),r,t,n,e,i)),tt}function ca(t,n,e,i){return _n(t,Gs(),e)?n+Ce(e)+i:Ee}function O(t,n,e,i,r,o,s,a){const l=I(),c=Ue(),d=t+_t,u=c.firstCreatePass?function qj(t,n,e,i,r,o,s,a,l){const c=n.consts,d=aa(n,t,4,s||null,uo(c,a));v_(n,e,d,uo(c,l)),wu(n,d);const u=d.tView=b_(2,d,i,r,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,c);return null!==n.queries&&(n.queries.template(n,d),u.queries=n.queries.embeddedTView(d)),d}(d,c,l,n,e,i,r,o,s):c.data[d];Yi(u,!1);const h=l[Pe].createComment("");Pu(c,l,h,u),gn(h,l),qu(l,l[d]=JD(h,l,h,u)),bu(u)&&g_(c,l,u),null!=s&&__(l,u,a)}function Ft(t){return $s(function KL(){return De.lFrame.contextLView}(),_t+t)}function S(t,n,e){const i=I();return _n(i,Gs(),n)&&Qn(Ue(),wt(),i,t,n,i[Pe],e,!1),S}function M_(t,n,e,i,r){const s=r?"class":"style";E_(t,e,n.inputs[s],s,i)}function x(t,n,e,i){const r=I(),o=Ue(),s=_t+t,a=r[Pe],l=o.firstCreatePass?function Zj(t,n,e,i,r,o){const s=n.consts,l=aa(n,t,2,i,uo(s,r));return v_(n,e,l,uo(s,o)),null!==l.attrs&&Zu(l,l.attrs,!1),null!==l.mergedAttrs&&Zu(l,l.mergedAttrs,!0),null!==n.queries&&n.queries.elementStart(n,l),l}(s,o,r,n,e,i):o.data[s],c=r[s]=Bg(a,n,function s2(){return De.lFrame.currentNamespace}()),d=bu(l);return Yi(l,!0),nD(a,c,l),32!=(32&l.flags)&&Pu(o,r,c,l),0===function GL(){return De.lFrame.elementDepthCount}()&&gn(c,r),function WL(){De.lFrame.elementDepthCount++}(),d&&(g_(o,r,l),p_(o,l,r)),null!==i&&__(r,l),x}function E(){let t=rn();lg()?cg():(t=t.parent,Yi(t,!1));const n=t;!function qL(){De.lFrame.elementDepthCount--}();const e=Ue();return e.firstCreatePass&&(wu(e,t),og(t)&&e.queries.elementEnd(t)),null!=n.classesWithoutHost&&function d2(t){return 0!=(8&t.flags)}(n)&&M_(e,n,I(),n.classesWithoutHost,!0),null!=n.stylesWithoutHost&&function u2(t){return 0!=(16&t.flags)}(n)&&M_(e,n,I(),n.stylesWithoutHost,!1),E}function z(t,n,e,i){return x(t,n,e,i),E(),z}function Pn(t,n,e){const i=I(),r=Ue(),o=t+_t,s=r.firstCreatePass?function Kj(t,n,e,i,r){const o=n.consts,s=uo(o,i),a=aa(n,t,8,"ng-container",s);return null!==s&&Zu(a,s,!0),v_(n,e,a,uo(o,r)),null!==n.queries&&n.queries.elementStart(n,a),a}(o,r,i,n,e):r.data[o];Yi(s,!0);const a=i[o]=i[Pe].createComment("");return Pu(r,i,a,s),gn(a,i),bu(s)&&(g_(r,i,s),p_(r,s,i)),null!=e&&__(i,s),Pn}function Nn(){let t=rn();const n=Ue();return lg()?cg():(t=t.parent,Yi(t,!1)),n.firstCreatePass&&(wu(n,t),og(t)&&n.queries.elementEnd(t)),Nn}function Ln(t,n,e){return Pn(t,n,e),Nn(),Ln}function mo(){return I()}function tc(t){return!!t&&"function"==typeof t.then}function vE(t){return!!t&&"function"==typeof t.subscribe}const T_=vE;function re(t,n,e,i){const r=I(),o=Ue(),s=rn();return function wE(t,n,e,i,r,o,s){const a=bu(i),c=t.firstCreatePass&&tE(t),d=n[Rt],u=eE(n);let h=!0;if(3&i.type||s){const g=Yn(i,n),b=s?s(g):g,v=u.length,w=s?F=>s(nn(F[i.index])):i.index;let C=null;if(!s&&a&&(C=function Xj(t,n,e,i){const r=t.cleanup;if(null!=r)for(let o=0;ol?a[l]:null}"string"==typeof s&&(o+=2)}return null}(t,n,r,i.index)),null!==C)(C.__ngLastListenerFn__||C).__ngNextListenerFn__=o,C.__ngLastListenerFn__=o,h=!1;else{o=CE(i,n,d,o,!1);const F=e.listen(b,r,o);u.push(o,F),c&&c.push(r,w,v,v+1)}}else o=CE(i,n,d,o,!1);const f=i.outputs;let p;if(h&&null!==f&&(p=f[r])){const g=p.length;if(g)for(let b=0;b-1?Zn(t.index,n):n);let l=xE(n,e,i,s),c=o.__ngNextListenerFn__;for(;c;)l=xE(n,e,c,s)&&l,c=c.__ngNextListenerFn__;return r&&!1===l&&(s.preventDefault(),s.returnValue=!1),l}}function X(t=1){return function t2(t){return(De.lFrame.contextLView=function n2(t,n){for(;t>0;)n=n[Hs],t--;return n}(t,De.lFrame.contextLView))[Rt]}(t)}function Qj(t,n){let e=null;const i=function SV(t){const n=t.attrs;if(null!=n){const e=n.indexOf(5);if(!(1&e))return n[e+1]}return null}(t);for(let r=0;r>17&32767}function I_(t){return 2|t}function rs(t){return(131068&t)>>2}function O_(t,n){return-131069&t|n<<2}function R_(t){return 1|t}function RE(t,n,e,i,r){const o=t[e+1],s=null===n;let a=i?po(o):rs(o),l=!1;for(;0!==a&&(!1===l||s);){const d=t[a+1];rH(t[a],n)&&(l=!0,t[a+1]=i?R_(d):I_(d)),a=i?po(d):rs(d)}l&&(t[e+1]=i?I_(o):R_(o))}function rH(t,n){return null===t||null==n||(Array.isArray(t)?t[1]:t)===n||!(!Array.isArray(t)||"string"!=typeof n)&&Qs(t,n)>=0}const Gt={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function FE(t){return t.substring(Gt.key,Gt.keyEnd)}function oH(t){return t.substring(Gt.value,Gt.valueEnd)}function PE(t,n){const e=Gt.textEnd;return e===n?-1:(n=Gt.keyEnd=function lH(t,n,e){for(;n32;)n++;return n}(t,Gt.key=n,e),_a(t,n,e))}function NE(t,n){const e=Gt.textEnd;let i=Gt.key=_a(t,n,e);return e===i?-1:(i=Gt.keyEnd=function cH(t,n,e){let i;for(;n=65&&(-33&i)<=90||i>=48&&i<=57);)n++;return n}(t,i,e),i=BE(t,i,e),i=Gt.value=_a(t,i,e),i=Gt.valueEnd=function dH(t,n,e){let i=-1,r=-1,o=-1,s=n,a=s;for(;s32&&(a=s),o=r,r=i,i=-33&l}return a}(t,i,e),BE(t,i,e))}function LE(t){Gt.key=0,Gt.keyEnd=0,Gt.value=0,Gt.valueEnd=0,Gt.textEnd=t.length}function _a(t,n,e){for(;n=0;e=NE(n,e))UE(t,FE(n),oH(n))}function ir(t,n){for(let e=function sH(t){return LE(t),PE(t,_a(t,0,Gt.textEnd))}(n);e>=0;e=PE(n,e))Kn(t,FE(n),!0)}function Pi(t,n,e,i){const r=I(),o=Ue(),s=Mr(2);o.firstUpdatePass&&zE(o,t,s,i),n!==Ee&&_n(r,s,n)&&$E(o,o.data[En()],r,r[Pe],t,r[s+1]=function bH(t,n){return null==t||""===t||("string"==typeof n?t+=n:"object"==typeof t&&(t=ut(Xn(t)))),t}(n,e),i,s)}function Ni(t,n,e,i){const r=Ue(),o=Mr(2);r.firstUpdatePass&&zE(r,null,o,i);const s=I();if(e!==Ee&&_n(s,o,e)){const a=r.data[En()];if(WE(a,i)&&!HE(r,o)){let l=i?a.classesWithoutHost:a.stylesWithoutHost;null!==l&&(e=Yp(l,e||"")),M_(r,a,s,e,i)}else!function _H(t,n,e,i,r,o,s,a){r===Ee&&(r=Xe);let l=0,c=0,d=0=t.expandoStartIndex}function zE(t,n,e,i){const r=t.data;if(null===r[e+1]){const o=r[En()],s=HE(t,e);WE(o,i)&&null===n&&!s&&(n=!1),n=function hH(t,n,e,i){const r=function ug(t){const n=De.lFrame.currentDirectiveIndex;return-1===n?null:t[n]}(t);let o=i?n.residualClasses:n.residualStyles;if(null===r)0===(i?n.classBindings:n.styleBindings)&&(e=nc(e=F_(null,t,n,e,i),n.attrs,i),o=null);else{const s=n.directiveStylingLast;if(-1===s||t[s]!==r)if(e=F_(r,t,n,e,i),null===o){let l=function fH(t,n,e){const i=e?n.classBindings:n.styleBindings;if(0!==rs(i))return t[po(i)]}(t,n,i);void 0!==l&&Array.isArray(l)&&(l=F_(null,t,n,l[1],i),l=nc(l,n.attrs,i),function mH(t,n,e,i){t[po(e?n.classBindings:n.styleBindings)]=i}(t,n,i,l))}else o=function pH(t,n,e){let i;const r=n.directiveEnd;for(let o=1+n.directiveStylingLast;o0)&&(c=!0)):d=e,r)if(0!==l){const h=po(t[a+1]);t[i+1]=Ju(h,a),0!==h&&(t[h+1]=O_(t[h+1],i)),t[a+1]=function eH(t,n){return 131071&t|n<<17}(t[a+1],i)}else t[i+1]=Ju(a,0),0!==a&&(t[a+1]=O_(t[a+1],i)),a=i;else t[i+1]=Ju(l,0),0===a?a=i:t[l+1]=O_(t[l+1],i),l=i;c&&(t[i+1]=I_(t[i+1])),RE(t,d,i,!0),RE(t,d,i,!1),function iH(t,n,e,i,r){const o=r?t.residualClasses:t.residualStyles;null!=o&&"string"==typeof n&&Qs(o,n)>=0&&(e[i+1]=R_(e[i+1]))}(n,d,t,i,o),s=Ju(a,l),o?n.classBindings=s:n.styleBindings=s}(r,o,n,e,s,i)}}function F_(t,n,e,i,r){let o=null;const s=e.directiveEnd;let a=e.directiveStylingLast;for(-1===a?a=e.directiveStart:a++;a0;){const l=t[r],c=Array.isArray(l),d=c?l[1]:l,u=null===d;let h=e[r+1];h===Ee&&(h=u?Xe:void 0);let f=u?Eg(h,i):d===i?h:void 0;if(c&&!eh(f)&&(f=Eg(l,i)),eh(f)&&(a=f,s))return a;const p=t[r+1];r=s?po(p):rs(p)}if(null!==n){let l=o?n.residualClasses:n.residualStyles;null!=l&&(a=Eg(l,i))}return a}function eh(t){return void 0!==t}function WE(t,n){return 0!=(t.flags&(n?8:16))}function N(t,n=""){const e=I(),i=Ue(),r=t+_t,o=i.firstCreatePass?aa(i,r,1,n,null):i.data[r],s=e[r]=function Lg(t,n){return t.createText(n)}(e[Pe],n);Pu(i,e,s,o),Yi(o,!1)}function Qt(t){return nt("",t,""),Qt}function nt(t,n,e){const i=I(),r=ca(i,t,n,e);return r!==Ee&&function Rr(t,n,e){const i=vu(n,t);!function zC(t,n,e){t.setValue(n,e)}(t[Pe],i,e)}(i,En(),r),nt}function tS(t,n,e){!function nr(t){Ni(UE,uH,t,!1)}(ca(I(),t,n,e))}function ba(t,n,e){const i=I();return _n(i,Gs(),n)&&Qn(Ue(),wt(),i,t,n,i[Pe],e,!0),ba}const os=void 0;var LH=["en",[["a","p"],["AM","PM"],os],[["AM","PM"],os,os],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],os,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],os,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",os,"{1} 'at' {0}",os],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function NH(t){const e=Math.floor(Math.abs(t)),i=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===i?1:5}];let va={};function kn(t){const n=function BH(t){return t.toLowerCase().replace(/_/g,"-")}(t);let e=fS(n);if(e)return e;const i=n.split("-")[0];if(e=fS(i),e)return e;if("en"===i)return LH;throw new A(701,!1)}function fS(t){return t in va||(va[t]=ht.ng&&ht.ng.common&&ht.ng.common.locales&&ht.ng.common.locales[t]),va[t]}var $=(()=>(($=$||{})[$.LocaleId=0]="LocaleId",$[$.DayPeriodsFormat=1]="DayPeriodsFormat",$[$.DayPeriodsStandalone=2]="DayPeriodsStandalone",$[$.DaysFormat=3]="DaysFormat",$[$.DaysStandalone=4]="DaysStandalone",$[$.MonthsFormat=5]="MonthsFormat",$[$.MonthsStandalone=6]="MonthsStandalone",$[$.Eras=7]="Eras",$[$.FirstDayOfWeek=8]="FirstDayOfWeek",$[$.WeekendRange=9]="WeekendRange",$[$.DateFormat=10]="DateFormat",$[$.TimeFormat=11]="TimeFormat",$[$.DateTimeFormat=12]="DateTimeFormat",$[$.NumberSymbols=13]="NumberSymbols",$[$.NumberFormats=14]="NumberFormats",$[$.CurrencyCode=15]="CurrencyCode",$[$.CurrencySymbol=16]="CurrencySymbol",$[$.CurrencyName=17]="CurrencyName",$[$.Currencies=18]="Currencies",$[$.Directionality=19]="Directionality",$[$.PluralCase=20]="PluralCase",$[$.ExtraData=21]="ExtraData",$))();const ya="en-US";let mS=ya;function L_(t,n,e,i,r){if(t=ue(t),Array.isArray(t))for(let o=0;o>20;if(ns(t)||!t.multi){const f=new Bl(l,r,m),p=V_(a,n,r?d:d+h,u);-1===p?(wg(ku(c,s),o,a),B_(o,t,n.length),n.push(a),c.directiveStart++,c.directiveEnd++,r&&(c.providerIndexes+=1048576),e.push(f),s.push(f)):(e[p]=f,s[p]=f)}else{const f=V_(a,n,d+h,u),p=V_(a,n,d,d+h),b=p>=0&&e[p];if(r&&!b||!r&&!(f>=0&&e[f])){wg(ku(c,s),o,a);const v=function N3(t,n,e,i,r){const o=new Bl(t,e,m);return o.multi=[],o.index=n,o.componentProviders=0,VS(o,r,i&&!e),o}(r?P3:F3,e.length,r,i,l);!r&&b&&(e[p].providerFactory=v),B_(o,t,n.length,0),n.push(a),c.directiveStart++,c.directiveEnd++,r&&(c.providerIndexes+=1048576),e.push(v),s.push(v)}else B_(o,t,f>-1?f:p,VS(e[r?p:f],l,!r&&i));!r&&i&&b&&e[p].componentProviders++}}}function B_(t,n,e,i){const r=ns(n),o=function XB(t){return!!t.useClass}(n);if(r||o){const l=(o?ue(n.useClass):n).prototype.ngOnDestroy;if(l){const c=t.destroyHooks||(t.destroyHooks=[]);if(!r&&n.multi){const d=c.indexOf(e);-1===d?c.push(e,[i,l]):c[d+1].push(i,l)}else c.push(e,l)}}}function VS(t,n,e){return e&&t.componentProviders++,t.multi.push(n)-1}function V_(t,n,e,i){for(let r=e;r{e.providersResolver=(i,r)=>function R3(t,n,e){const i=Ue();if(i.firstCreatePass){const r=Ii(t);L_(e,i.data,i.blueprint,r,!0),L_(n,i.data,i.blueprint,r,!1)}}(i,r?r(t):t,n)}}class go{}class jS{}class HS extends go{constructor(n,e){super(),this._parent=e,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new rE(this);const i=Wn(n);this._bootstrapComponents=Or(i.bootstrap),this._r3Injector=LD(n,e,[{provide:go,useValue:this},{provide:Ri,useValue:this.componentFactoryResolver}],ut(n),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(n)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class H_ extends jS{constructor(n){super(),this.moduleType=n}create(n){return new HS(this.moduleType,n)}}class B3 extends go{constructor(n,e,i){super(),this.componentFactoryResolver=new rE(this),this.instance=null;const r=new xD([...n,{provide:go,useValue:this},{provide:Ri,useValue:this.componentFactoryResolver}],e||Uu(),i,new Set(["environment"]));this.injector=r,r.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function oh(t,n,e=null){return new B3(t,n,e).injector}let V3=(()=>{class t{constructor(e){this._injector=e,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e.id)){const i=bD(0,e.type),r=i.length>0?oh([i],this._injector,`Standalone[${e.type.name}]`):null;this.cachedInjectors.set(e.id,r)}return this.cachedInjectors.get(e.id)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}}return t.\u0275prov=T({token:t,providedIn:"environment",factory:()=>new t(_(Xi))}),t})();function Be(t){t.getStandaloneInjector=n=>n.get(V3).getOrCreateStandaloneInjector(t)}function U_(t,n,e){const i=Dn()+t,r=I();return r[i]===Ee?er(r,i,e?n.call(e):n()):function ec(t,n){return t[n]}(r,i)}function $_(t,n,e,i){return YS(I(),Dn(),t,n,e,i)}function sh(t,n,e,i,r){return function ZS(t,n,e,i,r,o,s){const a=n+e;return function is(t,n,e,i){const r=_n(t,n,e);return _n(t,n+1,i)||r}(t,a,r,o)?er(t,a+2,s?i.call(s,r,o):i(r,o)):lc(t,a+2)}(I(),Dn(),t,n,e,i,r)}function lc(t,n){const e=t[n];return e===Ee?void 0:e}function YS(t,n,e,i,r,o){const s=n+e;return _n(t,s,r)?er(t,s+1,o?i.call(o,r):i(r)):lc(t,s+1)}function wa(t,n){const e=Ue();let i;const r=t+_t;e.firstCreatePass?(i=function tz(t,n){if(n)for(let e=n.length-1;e>=0;e--){const i=n[e];if(t===i.name)return i}}(n,e.pipeRegistry),e.data[r]=i,i.onDestroy&&(e.destroyHooks??(e.destroyHooks=[])).push(r,i.onDestroy)):i=e.data[r];const o=i.factory||(i.factory=Ko(i.type)),s=ui(m);try{const a=Su(!1),l=o();return Su(a),function Yj(t,n,e,i){e>=t.data.length&&(t.data[e]=null,t.blueprint[e]=null),n[e]=i}(e,I(),r,l),l}finally{ui(s)}}function xa(t,n,e){const i=t+_t,r=I(),o=$s(r,i);return function cc(t,n){return t[q].data[n].pure}(r,i)?YS(r,Dn(),n,o.transform,e,o):o.transform(e)}function G_(t){return n=>{setTimeout(t,void 0,n)}}const ee=class sz extends te{constructor(n=!1){super(),this.__isAsync=n}emit(n){super.next(n)}subscribe(n,e,i){let r=n,o=e||(()=>null),s=i;if(n&&"object"==typeof n){const l=n;r=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=G_(o),r&&(r=G_(r)),s&&(s=G_(s)));const a=super.subscribe({next:r,error:o,complete:s});return n instanceof rt&&n.add(a),a}};function az(){return this._results[Symbol.iterator]()}class Ca{get changes(){return this._changes||(this._changes=new ee)}constructor(n=!1){this._emitDistinctChangesOnly=n,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const e=Ca.prototype;e[Symbol.iterator]||(e[Symbol.iterator]=az)}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,e){return this._results.reduce(n,e)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,e){const i=this;i.dirty=!1;const r=function fi(t){return t.flat(Number.POSITIVE_INFINITY)}(n);(this._changesDetected=!function w2(t,n,e){if(t.length!==n.length)return!1;for(let i=0;i{class t{}return t.__NG_ELEMENT_ID__=dz,t})();const lz=bt,cz=class extends lz{constructor(n,e,i){super(),this._declarationLView=n,this._declarationTContainer=e,this.elementRef=i}createEmbeddedView(n,e){const i=this._declarationTContainer.tView,r=Gu(this._declarationLView,i,n,16,null,i.declTNode,null,null,null,null,e||null);r[Fl]=this._declarationLView[this._declarationTContainer.index];const s=this._declarationLView[Gi];return null!==s&&(r[Gi]=s.createEmbeddedView(i)),m_(i,r,n),new Ql(r)}};function dz(){return ah(rn(),I())}function ah(t,n){return 4&t.type?new cz(n,t,ra(t,n)):null}let it=(()=>{class t{}return t.__NG_ELEMENT_ID__=uz,t})();function uz(){return tk(rn(),I())}const hz=it,JS=class extends hz{constructor(n,e,i){super(),this._lContainer=n,this._hostTNode=e,this._hostLView=i}get element(){return ra(this._hostTNode,this._hostLView)}get injector(){return new qs(this._hostTNode,this._hostLView)}get parentInjector(){const n=yg(this._hostTNode,this._hostLView);if(lC(n)){const e=Eu(n,this._hostLView),i=Du(n);return new qs(e[q].data[i+8],e)}return new qs(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const e=ek(this._lContainer);return null!==e&&e[n]||null}get length(){return this._lContainer.length-Cn}createEmbeddedView(n,e,i){let r,o;"number"==typeof i?r=i:null!=i&&(r=i.index,o=i.injector);const s=n.createEmbeddedView(e||{},o);return this.insert(s,r),s}createComponent(n,e,i,r,o){const s=n&&!function Hl(t){return"function"==typeof t}(n);let a;if(s)a=e;else{const u=e||{};a=u.index,i=u.injector,r=u.projectableNodes,o=u.environmentInjector||u.ngModuleRef}const l=s?n:new Jl(et(n)),c=i||this.parentInjector;if(!o&&null==l.ngModule){const h=(s?c:this.parentInjector).get(Xi,null);h&&(o=h)}const d=l.create(c,r,void 0,o);return this.insert(d.hostView,a),d}insert(n,e){const i=n._lView,r=i[q];if(function $L(t){return Ai(t[St])}(i)){const d=this.indexOf(n);if(-1!==d)this.detach(d);else{const u=i[St],h=new JS(u,u[mn],u[St]);h.detach(h.indexOf(n))}}const o=this._adjustIndex(e),s=this._lContainer;!function cB(t,n,e,i){const r=Cn+i,o=e.length;i>0&&(e[r-1][Ti]=n),i0)i.push(s[a/2]);else{const c=o[a+1],d=n[-l];for(let u=Cn;u{class t{constructor(e){this.appInits=e,this.resolve=ch,this.reject=ch,this.initialized=!1,this.done=!1,this.donePromise=new Promise((i,r)=>{this.resolve=i,this.reject=r})}runInitializers(){if(this.initialized)return;const e=[],i=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let r=0;r{o.subscribe({complete:a,error:l})});e.push(s)}}Promise.all(e).then(()=>{i()}).catch(r=>{this.reject(r)}),0===e.length&&i(),this.initialized=!0}}return t.\u0275fac=function(e){return new(e||t)(_(Sa,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const uc=new k("AppId",{providedIn:"root",factory:function Dk(){return`${ib()}${ib()}${ib()}`}});function ib(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const Ek=new k("Platform Initializer"),ss=new k("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),Jt=new k("AnimationModuleType");let Bz=(()=>{class t{log(e){console.log(e)}warn(e){console.warn(e)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"platform"}),t})();const rr=new k("LocaleId",{providedIn:"root",factory:()=>R(rr,fe.Optional|fe.SkipSelf)||function Vz(){return typeof $localize<"u"&&$localize.locale||ya}()});class Hz{constructor(n,e){this.ngModuleFactory=n,this.componentFactories=e}}let Sk=(()=>{class t{compileModuleSync(e){return new H_(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const i=this.compileModuleSync(e),o=Or(Wn(e).declarations).reduce((s,a)=>{const l=et(a);return l&&s.push(new Jl(l)),s},[]);return new Hz(i,o)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const $z=(()=>Promise.resolve(0))();function rb(t){typeof Zone>"u"?$z.then(()=>{t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}class Y{constructor({enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:e=!1,shouldCoalesceRunChangeDetection:i=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ee(!1),this.onMicrotaskEmpty=new ee(!1),this.onStable=new ee(!1),this.onError=new ee(!1),typeof Zone>"u")throw new A(908,!1);Zone.assertZonePatched();const r=this;r._nesting=0,r._outer=r._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!i&&e,r.shouldCoalesceRunChangeDetection=i,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=function Gz(){let t=ht.requestAnimationFrame,n=ht.cancelAnimationFrame;if(typeof Zone<"u"&&t&&n){const e=t[Zone.__symbol__("OriginalDelegate")];e&&(t=e);const i=n[Zone.__symbol__("OriginalDelegate")];i&&(n=i)}return{nativeRequestAnimationFrame:t,nativeCancelAnimationFrame:n}}().nativeRequestAnimationFrame,function Yz(t){const n=()=>{!function qz(t){t.isCheckStableRunning||-1!==t.lastRequestAnimationFrameId||(t.lastRequestAnimationFrameId=t.nativeRequestAnimationFrame.call(ht,()=>{t.fakeTopEventTask||(t.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{t.lastRequestAnimationFrameId=-1,sb(t),t.isCheckStableRunning=!0,ob(t),t.isCheckStableRunning=!1},void 0,()=>{},()=>{})),t.fakeTopEventTask.invoke()}),sb(t))}(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(e,i,r,o,s,a)=>{try{return Tk(t),e.invokeTask(r,o,s,a)}finally{(t.shouldCoalesceEventChangeDetection&&"eventTask"===o.type||t.shouldCoalesceRunChangeDetection)&&n(),Ak(t)}},onInvoke:(e,i,r,o,s,a,l)=>{try{return Tk(t),e.invoke(r,o,s,a,l)}finally{t.shouldCoalesceRunChangeDetection&&n(),Ak(t)}},onHasTask:(e,i,r,o)=>{e.hasTask(r,o),i===r&&("microTask"==o.change?(t._hasPendingMicrotasks=o.microTask,sb(t),ob(t)):"macroTask"==o.change&&(t.hasPendingMacrotasks=o.macroTask))},onHandleError:(e,i,r,o)=>(e.handleError(r,o),t.runOutsideAngular(()=>t.onError.emit(o)),!1)})}(r)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!Y.isInAngularZone())throw new A(909,!1)}static assertNotInAngularZone(){if(Y.isInAngularZone())throw new A(909,!1)}run(n,e,i){return this._inner.run(n,e,i)}runTask(n,e,i,r){const o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+r,n,Wz,ch,ch);try{return o.runTask(s,e,i)}finally{o.cancelTask(s)}}runGuarded(n,e,i){return this._inner.runGuarded(n,e,i)}runOutsideAngular(n){return this._outer.run(n)}}const Wz={};function ob(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function sb(t){t.hasPendingMicrotasks=!!(t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&-1!==t.lastRequestAnimationFrameId)}function Tk(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function Ak(t){t._nesting--,ob(t)}class Zz{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new ee,this.onMicrotaskEmpty=new ee,this.onStable=new ee,this.onError=new ee}run(n,e,i){return n.apply(e,i)}runGuarded(n,e,i){return n.apply(e,i)}runOutsideAngular(n){return n()}runTask(n,e,i,r){return n.apply(e,i)}}const Ik=new k(""),uh=new k("");let cb,ab=(()=>{class t{constructor(e,i,r){this._ngZone=e,this.registry=i,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,cb||(function Kz(t){cb=t}(r),r.addToWindow(i)),this._watchAngularEvents(),e.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Y.assertNotInAngularZone(),rb(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())rb(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb(this._didWork)}this._didWork=!1});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(e)||(clearTimeout(i.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,i,r){let o=-1;i&&i>0&&(o=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==o),e(this._didWork,this.getPendingTasks())},i)),this._callbacks.push({doneCb:e,timeoutId:o,updateCb:r})}whenStable(e,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,i,r),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,i,r){return[]}}return t.\u0275fac=function(e){return new(e||t)(_(Y),_(lb),_(uh))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),lb=(()=>{class t{constructor(){this._applications=new Map}registerApplication(e,i){this._applications.set(e,i)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,i=!0){return cb?.findTestabilityInTree(this,e,i)??null}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"platform"}),t})();const Fr=!1;let _o=null;const Ok=new k("AllowMultipleToken"),db=new k("PlatformDestroyListeners"),hh=new k("appBootstrapListener");class Rk{constructor(n,e){this.name=n,this.token=e}}function Pk(t,n,e=[]){const i=`Platform: ${n}`,r=new k(i);return(o=[])=>{let s=ub();if(!s||s.injector.get(Ok,!1)){const a=[...e,...o,{provide:r,useValue:!0}];t?t(a):function Jz(t){if(_o&&!_o.get(Ok,!1))throw new A(400,!1);_o=t;const n=t.get(Lk);(function Fk(t){const n=t.get(Ek,null);n&&n.forEach(e=>e())})(t)}(function Nk(t=[],n){return kt.create({name:n,providers:[{provide:n_,useValue:"platform"},{provide:db,useValue:new Set([()=>_o=null])},...t]})}(a,i))}return function tU(t){const n=ub();if(!n)throw new A(401,!1);return n}()}}function ub(){return _o?.get(Lk)??null}let Lk=(()=>{class t{constructor(e){this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(e,i){const r=function Vk(t,n){let e;return e="noop"===t?new Zz:("zone.js"===t?void 0:t)||new Y(n),e}(i?.ngZone,function Bk(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!t||!t.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!t||!t.ngZoneRunCoalescing)||!1}}(i)),o=[{provide:Y,useValue:r}];return r.run(()=>{const s=kt.create({providers:o,parent:this.injector,name:e.moduleType.name}),a=e.create(s),l=a.injector.get(Qi,null);if(!l)throw new A(402,!1);return r.runOutsideAngular(()=>{const c=r.onError.subscribe({next:d=>{l.handleError(d)}});a.onDestroy(()=>{fh(this._modules,a),c.unsubscribe()})}),function jk(t,n,e){try{const i=e();return tc(i)?i.catch(r=>{throw n.runOutsideAngular(()=>t.handleError(r)),r}):i}catch(i){throw n.runOutsideAngular(()=>t.handleError(i)),i}}(l,r,()=>{const c=a.injector.get(dh);return c.runInitializers(),c.donePromise.then(()=>(function pS(t){di(t,"Expected localeId to be defined"),"string"==typeof t&&(mS=t.toLowerCase().replace(/_/g,"-"))}(a.injector.get(rr,ya)||ya),this._moduleDoBootstrap(a),a))})})}bootstrapModule(e,i=[]){const r=Hk({},i);return function Xz(t,n,e){const i=new H_(e);return Promise.resolve(i)}(0,0,e).then(o=>this.bootstrapModuleFactory(o,r))}_moduleDoBootstrap(e){const i=e.injector.get(as);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(r=>i.bootstrap(r));else{if(!e.instance.ngDoBootstrap)throw new A(-403,!1);e.instance.ngDoBootstrap(i)}this._modules.push(e)}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new A(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const e=this._injector.get(db,null);e&&(e.forEach(i=>i()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return t.\u0275fac=function(e){return new(e||t)(_(kt))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"platform"}),t})();function Hk(t,n){return Array.isArray(n)?n.reduce(Hk,t):{...t,...n}}let as=(()=>{class t{get destroyed(){return this._destroyed}get injector(){return this._injector}constructor(e,i,r){this._zone=e,this._injector=i,this._exceptionHandler=r,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const o=new xe(a=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{a.next(this._stable),a.complete()})}),s=new xe(a=>{let l;this._zone.runOutsideAngular(()=>{l=this._zone.onStable.subscribe(()=>{Y.assertNotInAngularZone(),rb(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,a.next(!0))})})});const c=this._zone.onUnstable.subscribe(()=>{Y.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{a.next(!1)}))});return()=>{l.unsubscribe(),c.unsubscribe()}});this.isStable=$n(o,s.pipe(Ml()))}bootstrap(e,i){const r=e instanceof DD;if(!this._injector.get(dh).done){!r&&function Vs(t){const n=et(t)||fn(t)||Rn(t);return null!==n&&n.standalone}(e);throw new A(405,Fr)}let s;s=r?e:this._injector.get(Ri).resolveComponentFactory(e),this.componentTypes.push(s.componentType);const a=function Qz(t){return t.isBoundToModule}(s)?void 0:this._injector.get(go),c=s.create(kt.NULL,[],i||s.selector,a),d=c.location.nativeElement,u=c.injector.get(Ik,null);return u?.registerApplication(d),c.onDestroy(()=>{this.detachView(c.hostView),fh(this.components,c),u?.unregisterApplication(d)}),this._loadComponent(c),c}tick(){if(this._runningTick)throw new A(101,!1);try{this._runningTick=!0;for(let e of this._views)e.detectChanges()}catch(e){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(e))}finally{this._runningTick=!1}}attachView(e){const i=e;this._views.push(i),i.attachToAppRef(this)}detachView(e){const i=e;fh(this._views,i),i.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView),this.tick(),this.components.push(e);const i=this._injector.get(hh,[]);i.push(...this._bootstrapListeners),i.forEach(r=>r(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>fh(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new A(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return t.\u0275fac=function(e){return new(e||t)(_(Y),_(Xi),_(Qi))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function fh(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}let en=(()=>{class t{}return t.__NG_ELEMENT_ID__=iU,t})();function iU(t){return function rU(t,n,e){if(Nl(t)&&!e){const i=Zn(t.index,n);return new Ql(i,i)}return 47&t.type?new Ql(n[pn],n):null}(rn(),I(),16==(16&t))}class Wk{constructor(){}supports(n){return Xu(n)}create(n){return new dU(n)}}const cU=(t,n)=>n;class dU{constructor(n){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=n||cU}forEachItem(n){let e;for(e=this._itHead;null!==e;e=e._next)n(e)}forEachOperation(n){let e=this._itHead,i=this._removalsHead,r=0,o=null;for(;e||i;){const s=!i||e&&e.currentIndex{s=this._trackByFn(r,a),null!==e&&Object.is(e.trackById,s)?(i&&(e=this._verifyReinsertion(e,a,s,r)),Object.is(e.item,a)||this._addIdentityChange(e,a)):(e=this._mismatch(e,a,s,r),i=!0),e=e._next,r++}),this.length=r;return this._truncate(e),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,e,i,r){let o;return null===n?o=this._itTail:(o=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._reinsertAfter(n,o,r)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,r))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._moveAfter(n,o,r)):n=this._addAfter(new uU(e,i),o,r),n}_verifyReinsertion(n,e,i,r){let o=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==o?n=this._reinsertAfter(o,n._prev,r):n.currentIndex!=r&&(n.currentIndex=r,this._addToMoves(n,r)),n}_truncate(n){for(;null!==n;){const e=n._next;this._addToRemovals(this._unlink(n)),n=e}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(n,e,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const r=n._prevRemoved,o=n._nextRemoved;return null===r?this._removalsHead=o:r._nextRemoved=o,null===o?this._removalsTail=r:o._prevRemoved=r,this._insertAfter(n,e,i),this._addToMoves(n,i),n}_moveAfter(n,e,i){return this._unlink(n),this._insertAfter(n,e,i),this._addToMoves(n,i),n}_addAfter(n,e,i){return this._insertAfter(n,e,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,e,i){const r=null===e?this._itHead:e._next;return n._next=r,n._prev=e,null===r?this._itTail=n:r._prev=n,null===e?this._itHead=n:e._next=n,null===this._linkedRecords&&(this._linkedRecords=new qk),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const e=n._prev,i=n._next;return null===e?this._itHead=i:e._next=i,null===i?this._itTail=e:i._prev=e,n}_addToMoves(n,e){return n.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new qk),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,e){return n.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class uU{constructor(n,e){this.item=n,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class hU{constructor(){this._head=null,this._tail=null}add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,e){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===e||e<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const e=n._prevDup,i=n._nextDup;return null===e?this._head=i:e._nextDup=i,null===i?this._tail=e:i._prevDup=e,null===this._head}}class qk{constructor(){this.map=new Map}put(n){const e=n.trackById;let i=this.map.get(e);i||(i=new hU,this.map.set(e,i)),i.add(n)}get(n,e){const r=this.map.get(n);return r?r.get(n,e):null}remove(n){const e=n.trackById;return this.map.get(e).remove(n)&&this.map.delete(e),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function Yk(t,n,e){const i=t.previousIndex;if(null===i)return i;let r=0;return e&&i{if(e&&e.key===r)this._maybeAddToChanges(e,i),this._appendAfter=e,e=e._next;else{const o=this._getOrCreateRecordForKey(r,i);e=this._insertBeforeOrAppend(e,o)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let i=e;null!==i;i=i._nextRemoved)i===this._mapHead&&(this._mapHead=null),this._records.delete(i.key),i._nextRemoved=i._next,i.previousValue=i.currentValue,i.currentValue=null,i._prev=null,i._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(n,e){if(n){const i=n._prev;return e._next=n,e._prev=i,n._prev=e,i&&(i._next=e),n===this._mapHead&&(this._mapHead=e),this._appendAfter=n,n}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(n,e){if(this._records.has(n)){const r=this._records.get(n);this._maybeAddToChanges(r,e);const o=r._prev,s=r._next;return o&&(o._next=s),s&&(s._prev=o),r._next=null,r._prev=null,r}const i=new mU(n);return this._records.set(n,i),i.currentValue=e,this._addToAdditions(i),i}_reset(){if(this.isDirty){let n;for(this._previousMapHead=this._mapHead,n=this._previousMapHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._changesHead;null!==n;n=n._nextChanged)n.previousValue=n.currentValue;for(n=this._additionsHead;null!=n;n=n._nextAdded)n.previousValue=n.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(n,e){Object.is(e,n.currentValue)||(n.previousValue=n.currentValue,n.currentValue=e,this._addToChanges(n))}_addToAdditions(n){null===this._additionsHead?this._additionsHead=this._additionsTail=n:(this._additionsTail._nextAdded=n,this._additionsTail=n)}_addToChanges(n){null===this._changesHead?this._changesHead=this._changesTail=n:(this._changesTail._nextChanged=n,this._changesTail=n)}_forEach(n,e){n instanceof Map?n.forEach(e):Object.keys(n).forEach(i=>e(n[i],i))}}class mU{constructor(n){this.key=n,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function Kk(){return new gi([new Wk])}let gi=(()=>{class t{constructor(e){this.factories=e}static create(e,i){if(null!=i){const r=i.factories.slice();e=e.concat(r)}return new t(e)}static extend(e){return{provide:t,useFactory:i=>t.create(e,i||Kk()),deps:[[t,new Js,new Ar]]}}find(e){const i=this.factories.find(r=>r.supports(e));if(null!=i)return i;throw new A(901,!1)}}return t.\u0275prov=T({token:t,providedIn:"root",factory:Kk}),t})();function Xk(){return new hc([new Zk])}let hc=(()=>{class t{constructor(e){this.factories=e}static create(e,i){if(i){const r=i.factories.slice();e=e.concat(r)}return new t(e)}static extend(e){return{provide:t,useFactory:i=>t.create(e,i||Xk()),deps:[[t,new Js,new Ar]]}}find(e){const i=this.factories.find(r=>r.supports(e));if(i)return i;throw new A(901,!1)}}return t.\u0275prov=T({token:t,providedIn:"root",factory:Xk}),t})();const _U=Pk(null,"core",[]);let bU=(()=>{class t{constructor(e){}}return t.\u0275fac=function(e){return new(e||t)(_(as))},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})(),gb=null;function Pr(){return gb}class wU{}const ge=new k("DocumentToken");let _h=(()=>{class t{historyGo(e){throw new Error("Not implemented")}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return function xU(){return _(Qk)}()},providedIn:"platform"}),t})();const CU=new k("Location Initialized");let Qk=(()=>{class t extends _h{constructor(e){super(),this._doc=e,this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Pr().getBaseHref(this._doc)}onPopState(e){const i=Pr().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",e,!1),()=>i.removeEventListener("popstate",e)}onHashChange(e){const i=Pr().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",e,!1),()=>i.removeEventListener("hashchange",e)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(e){this._location.pathname=e}pushState(e,i,r){Jk()?this._history.pushState(e,i,r):this._location.hash=r}replaceState(e,i,r){Jk()?this._history.replaceState(e,i,r):this._location.hash=r}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:function(){return function DU(){return new Qk(_(ge))}()},providedIn:"platform"}),t})();function Jk(){return!!window.history.pushState}function _b(t,n){if(0==t.length)return n;if(0==n.length)return t;let e=0;return t.endsWith("/")&&e++,n.startsWith("/")&&e++,2==e?t+n.substring(1):1==e?t+n:t+"/"+n}function eM(t){const n=t.match(/#|\?|$/),e=n&&n.index||t.length;return t.slice(0,e-("/"===t[e-1]?1:0))+t.slice(e)}function Nr(t){return t&&"?"!==t[0]?"?"+t:t}let bo=(()=>{class t{historyGo(e){throw new Error("Not implemented")}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return R(tM)},providedIn:"root"}),t})();const bb=new k("appBaseHref");let tM=(()=>{class t extends bo{constructor(e,i){super(),this._platformLocation=e,this._removeListenerFns=[],this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??R(ge).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return _b(this._baseHref,e)}path(e=!1){const i=this._platformLocation.pathname+Nr(this._platformLocation.search),r=this._platformLocation.hash;return r&&e?`${i}${r}`:i}pushState(e,i,r,o){const s=this.prepareExternalUrl(r+Nr(o));this._platformLocation.pushState(e,i,s)}replaceState(e,i,r,o){const s=this.prepareExternalUrl(r+Nr(o));this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}}return t.\u0275fac=function(e){return new(e||t)(_(_h),_(bb,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),EU=(()=>{class t extends bo{constructor(e,i){super(),this._platformLocation=e,this._baseHref="",this._removeListenerFns=[],null!=i&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){let i=this._platformLocation.hash;return null==i&&(i="#"),i.length>0?i.substring(1):i}prepareExternalUrl(e){const i=_b(this._baseHref,e);return i.length>0?"#"+i:i}pushState(e,i,r,o){let s=this.prepareExternalUrl(r+Nr(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(e,i,s)}replaceState(e,i,r,o){let s=this.prepareExternalUrl(r+Nr(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}}return t.\u0275fac=function(e){return new(e||t)(_(_h),_(bb,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),fc=(()=>{class t{constructor(e){this._subject=new ee,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=e;const i=this._locationStrategy.getBaseHref();this._basePath=function MU(t){if(new RegExp("^(https?:)?//").test(t)){const[,e]=t.split(/\/\/[^\/]+/);return e}return t}(eM(nM(i))),this._locationStrategy.onPopState(r=>{this._subject.emit({url:this.path(!0),pop:!0,state:r.state,type:r.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,i=""){return this.path()==this.normalize(e+Nr(i))}normalize(e){return t.stripTrailingSlash(function kU(t,n){if(!t||!n.startsWith(t))return n;const e=n.substring(t.length);return""===e||["/",";","?","#"].includes(e[0])?e:n}(this._basePath,nM(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,i="",r=null){this._locationStrategy.pushState(r,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Nr(i)),r)}replaceState(e,i="",r=null){this._locationStrategy.replaceState(r,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Nr(i)),r)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)})),()=>{const i=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(i,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",i){this._urlChangeListeners.forEach(r=>r(e,i))}subscribe(e,i,r){return this._subject.subscribe({next:e,error:i,complete:r})}}return t.normalizeQueryParams=Nr,t.joinWithSlash=_b,t.stripTrailingSlash=eM,t.\u0275fac=function(e){return new(e||t)(_(bo))},t.\u0275prov=T({token:t,factory:function(){return function SU(){return new fc(_(bo))}()},providedIn:"root"}),t})();function nM(t){return t.replace(/\/index.html$/,"")}var Bn=(()=>((Bn=Bn||{})[Bn.Decimal=0]="Decimal",Bn[Bn.Percent=1]="Percent",Bn[Bn.Currency=2]="Currency",Bn[Bn.Scientific=3]="Scientific",Bn))(),de=(()=>((de=de||{})[de.Decimal=0]="Decimal",de[de.Group=1]="Group",de[de.List=2]="List",de[de.PercentSign=3]="PercentSign",de[de.PlusSign=4]="PlusSign",de[de.MinusSign=5]="MinusSign",de[de.Exponential=6]="Exponential",de[de.SuperscriptingExponent=7]="SuperscriptingExponent",de[de.PerMille=8]="PerMille",de[de.Infinity=9]="Infinity",de[de.NaN=10]="NaN",de[de.TimeSeparator=11]="TimeSeparator",de[de.CurrencyDecimal=12]="CurrencyDecimal",de[de.CurrencyGroup=13]="CurrencyGroup",de))();function _i(t,n){const e=kn(t),i=e[$.NumberSymbols][n];if(typeof i>"u"){if(n===de.CurrencyDecimal)return e[$.NumberSymbols][de.Decimal];if(n===de.CurrencyGroup)return e[$.NumberSymbols][de.Group]}return i}const e$=/^(\d+)?\.((\d+)(-(\d+))?)?$/,lM=22,Sh=".",pc="0",t$=";",n$=",",Cb="#";function Sb(t){const n=parseInt(t);if(isNaN(n))throw new Error("Invalid integer literal when parsing "+t);return n}function uM(t,n){n=encodeURIComponent(n);for(const e of t.split(";")){const i=e.indexOf("="),[r,o]=-1==i?[e,""]:[e.slice(0,i),e.slice(i+1)];if(r.trim()===n)return decodeURIComponent(o)}return null}const Mb=/\s+/,hM=[];let fM=(()=>{class t{constructor(e,i,r,o){this._iterableDiffers=e,this._keyValueDiffers=i,this._ngEl=r,this._renderer=o,this.initialClasses=hM,this.stateMap=new Map}set klass(e){this.initialClasses=null!=e?e.trim().split(Mb):hM}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(Mb):e}ngDoCheck(){for(const i of this.initialClasses)this._updateState(i,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const i of e)this._updateState(i,!0);else if(null!=e)for(const i of Object.keys(e))this._updateState(i,Boolean(e[i]));this._applyStateDiff()}_updateState(e,i){const r=this.stateMap.get(e);void 0!==r?(r.enabled!==i&&(r.changed=!0,r.enabled=i),r.touched=!0):this.stateMap.set(e,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const i=e[0],r=e[1];r.changed?(this._toggleClass(i,r.enabled),r.changed=!1):r.touched||(r.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),r.touched=!1}}_toggleClass(e,i){(e=e.trim()).length>0&&e.split(Mb).forEach(r=>{i?this._renderer.addClass(this._ngEl.nativeElement,r):this._renderer.removeClass(this._ngEl.nativeElement,r)})}}return t.\u0275fac=function(e){return new(e||t)(m(gi),m(hc),m(H),m(mi))},t.\u0275dir=M({type:t,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"},standalone:!0}),t})();class h${constructor(n,e,i,r){this.$implicit=n,this.ngForOf=e,this.index=i,this.count=r}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let cs=(()=>{class t{set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}constructor(e,i,r){this._viewContainer=e,this._template=i,this._differs=r,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const i=this._viewContainer;e.forEachOperation((r,o,s)=>{if(null==r.previousIndex)i.createEmbeddedView(this._template,new h$(r.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===o?void 0:o);else if(null!==o){const a=i.get(o);i.move(a,s),gM(a,r)}});for(let r=0,o=i.length;r{gM(i.get(r.currentIndex),r)})}static ngTemplateContextGuard(e,i){return!0}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(bt),m(gi))},t.\u0275dir=M({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0}),t})();function gM(t,n){t.context.$implicit=n.item}let Vn=(()=>{class t{constructor(e,i){this._viewContainer=e,this._context=new m$,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=i}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){_M("ngIfThen",e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){_M("ngIfElse",e),this._elseTemplateRef=e,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(e,i){return!0}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(bt))},t.\u0275dir=M({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),t})();class m${constructor(){this.$implicit=null,this.ngIf=null}}function _M(t,n){if(n&&!n.createEmbeddedView)throw new Error(`${t} must be a TemplateRef, but received '${ut(n)}'.`)}class Tb{constructor(n,e){this._viewContainerRef=n,this._templateRef=e,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(n){n&&!this._created?this.create():!n&&this._created&&this.destroy()}}let kh=(()=>{class t{constructor(){this._defaultViews=[],this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(e){this._ngSwitch=e,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(e){this._defaultViews.push(e)}_matchCase(e){const i=e==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||i,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),i}_updateDefaultCases(e){if(this._defaultViews.length>0&&e!==this._defaultUsed){this._defaultUsed=e;for(const i of this._defaultViews)i.enforceState(e)}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0}),t})(),bM=(()=>{class t{constructor(e,i,r){this.ngSwitch=r,r._addCase(),this._view=new Tb(e,i)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(bt),m(kh,9))},t.\u0275dir=M({type:t,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0}),t})(),Mh=(()=>{class t{constructor(e){this._viewContainerRef=e,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(e){if(e.ngTemplateOutlet||e.ngTemplateOutletInjector){const i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),this.ngTemplateOutlet){const{ngTemplateOutlet:r,ngTemplateOutletContext:o,ngTemplateOutletInjector:s}=this;this._viewRef=i.createEmbeddedView(r,o,s?{injector:s}:void 0)}else this._viewRef=null}else this._viewRef&&e.ngTemplateOutletContext&&this.ngTemplateOutletContext&&(this._viewRef.context=this.ngTemplateOutletContext)}}return t.\u0275fac=function(e){return new(e||t)(m(it))},t.\u0275dir=M({type:t,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[at]}),t})();function Vi(t,n){return new A(2100,!1)}class b${createSubscription(n,e){return n.subscribe({next:e,error:i=>{throw i}})}dispose(n){n.unsubscribe()}}class v${createSubscription(n,e){return n.then(e,i=>{throw i})}dispose(n){}}const y$=new v$,w$=new b$;let Ab=(()=>{class t{constructor(e){this._latestValue=null,this._subscription=null,this._obj=null,this._strategy=null,this._ref=e}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(e){return this._obj?e!==this._obj?(this._dispose(),this.transform(e)):this._latestValue:(e&&this._subscribe(e),this._latestValue)}_subscribe(e){this._obj=e,this._strategy=this._selectStrategy(e),this._subscription=this._strategy.createSubscription(e,i=>this._updateLatestValue(e,i))}_selectStrategy(e){if(tc(e))return y$;if(vE(e))return w$;throw Vi()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(e,i){e===this._obj&&(this._latestValue=i,this._ref.markForCheck())}}return t.\u0275fac=function(e){return new(e||t)(m(en,16))},t.\u0275pipe=hn({name:"async",type:t,pure:!1,standalone:!0}),t})(),wM=(()=>{class t{constructor(e){this._locale=e}transform(e,i,r){if(!function Ib(t){return!(null==t||""===t||t!=t)}(e))return null;r=r||this._locale;try{return function s$(t,n,e){return function Db(t,n,e,i,r,o,s=!1){let a="",l=!1;if(isFinite(t)){let c=function l$(t){let i,r,o,s,a,n=Math.abs(t)+"",e=0;for((r=n.indexOf(Sh))>-1&&(n=n.replace(Sh,"")),(o=n.search(/e/i))>0?(r<0&&(r=o),r+=+n.slice(o+1),n=n.substring(0,o)):r<0&&(r=n.length),o=0;n.charAt(o)===pc;o++);if(o===(a=n.length))i=[0],r=1;else{for(a--;n.charAt(a)===pc;)a--;for(r-=o,i=[],s=0;o<=a;o++,s++)i[s]=Number(n.charAt(o))}return r>lM&&(i=i.splice(0,lM-1),e=r-1,r=1),{digits:i,exponent:e,integerLen:r}}(t);s&&(c=function a$(t){if(0===t.digits[0])return t;const n=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===n?t.digits.push(0,0):1===n&&t.digits.push(0),t.integerLen+=2),t}(c));let d=n.minInt,u=n.minFrac,h=n.maxFrac;if(o){const w=o.match(e$);if(null===w)throw new Error(`${o} is not a valid digit info`);const C=w[1],F=w[3],ye=w[5];null!=C&&(d=Sb(C)),null!=F&&(u=Sb(F)),null!=ye?h=Sb(ye):null!=F&&u>h&&(h=u)}!function c$(t,n,e){if(n>e)throw new Error(`The minimum number of digits after fraction (${n}) is higher than the maximum (${e}).`);let i=t.digits,r=i.length-t.integerLen;const o=Math.min(Math.max(n,r),e);let s=o+t.integerLen,a=i[s];if(s>0){i.splice(Math.max(t.integerLen,s));for(let u=s;u=5)if(s-1<0){for(let u=0;u>s;u--)i.unshift(0),t.integerLen++;i.unshift(1),t.integerLen++}else i[s-1]++;for(;r=c?p.pop():l=!1),h>=10?1:0},0);d&&(i.unshift(d),t.integerLen++)}(c,u,h);let f=c.digits,p=c.integerLen;const g=c.exponent;let b=[];for(l=f.every(w=>!w);p0?b=f.splice(p,f.length):(b=f,f=[0]);const v=[];for(f.length>=n.lgSize&&v.unshift(f.splice(-n.lgSize,f.length).join(""));f.length>n.gSize;)v.unshift(f.splice(-n.gSize,f.length).join(""));f.length&&v.unshift(f.join("")),a=v.join(_i(e,i)),b.length&&(a+=_i(e,r)+b.join("")),g&&(a+=_i(e,de.Exponential)+"+"+g)}else a=_i(e,de.Infinity);return a=t<0&&!l?n.negPre+a+n.negSuf:n.posPre+a+n.posSuf,a}(t,function Eb(t,n="-"){const e={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},i=t.split(t$),r=i[0],o=i[1],s=-1!==r.indexOf(Sh)?r.split(Sh):[r.substring(0,r.lastIndexOf(pc)+1),r.substring(r.lastIndexOf(pc)+1)],a=s[0],l=s[1]||"";e.posPre=a.substring(0,a.indexOf(Cb));for(let d=0;d{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})();const xM="browser",B$="server";function or(t){return t===xM}function gc(t){return t===B$}let H$=(()=>{class t{}return t.\u0275prov=T({token:t,providedIn:"root",factory:()=>new z$(_(ge),window)}),t})();class z${constructor(n,e){this.document=n,this.window=e,this.offset=()=>[0,0]}setOffset(n){this.offset=Array.isArray(n)?()=>n:n}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(n){this.supportsScrolling()&&this.window.scrollTo(n[0],n[1])}scrollToAnchor(n){if(!this.supportsScrolling())return;const e=function U$(t,n){const e=t.getElementById(n)||t.getElementsByName(n)[0];if(e)return e;if("function"==typeof t.createTreeWalker&&t.body&&(t.body.createShadowRoot||t.body.attachShadow)){const i=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT);let r=i.currentNode;for(;r;){const o=r.shadowRoot;if(o){const s=o.getElementById(n)||o.querySelector(`[name="${n}"]`);if(s)return s}r=i.nextNode()}}return null}(this.document,n);e&&(this.scrollToElement(e),e.focus())}setHistoryScrollRestoration(n){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=n)}}scrollToElement(n){const e=n.getBoundingClientRect(),i=e.left+this.window.pageXOffset,r=e.top+this.window.pageYOffset,o=this.offset();this.window.scrollTo(i-o[0],r-o[1])}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const n=CM(this.window.history)||CM(Object.getPrototypeOf(this.window.history));return!(!n||!n.writable&&!n.set)}catch{return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch{return!1}}}function CM(t){return Object.getOwnPropertyDescriptor(t,"scrollRestoration")}class DM{}class _4 extends wU{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class Pb extends _4{static makeCurrent(){!function yU(t){gb||(gb=t)}(new Pb)}onAndCancel(n,e,i){return n.addEventListener(e,i,!1),()=>{n.removeEventListener(e,i,!1)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.parentNode&&n.parentNode.removeChild(n)}createElement(n,e){return(e=e||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,e){return"window"===e?window:"document"===e?n:"body"===e?n.body:null}getBaseHref(n){const e=function b4(){return bc=bc||document.querySelector("base"),bc?bc.getAttribute("href"):null}();return null==e?null:function v4(t){Ih=Ih||document.createElement("a"),Ih.setAttribute("href",t);const n=Ih.pathname;return"/"===n.charAt(0)?n:`/${n}`}(e)}resetBaseElement(){bc=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return uM(document.cookie,n)}}let Ih,bc=null;const TM=new k("TRANSITION_ID"),w4=[{provide:Sa,useFactory:function y4(t,n,e){return()=>{e.get(dh).donePromise.then(()=>{const i=Pr(),r=n.querySelectorAll(`style[ng-transition="${t}"]`);for(let o=0;o{class t{build(){return new XMLHttpRequest}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const Oh=new k("EventManagerPlugins");let Rh=(()=>{class t{constructor(e,i){this._zone=i,this._eventNameToPlugin=new Map,e.forEach(r=>{r.manager=this}),this._plugins=e.slice().reverse()}addEventListener(e,i,r){return this._findPluginFor(i).addEventListener(e,i,r)}addGlobalEventListener(e,i,r){return this._findPluginFor(i).addGlobalEventListener(e,i,r)}getZone(){return this._zone}_findPluginFor(e){const i=this._eventNameToPlugin.get(e);if(i)return i;const r=this._plugins;for(let o=0;o{class t{constructor(){this.usageCount=new Map}addStyles(e){for(const i of e)1===this.changeUsageCount(i,1)&&this.onStyleAdded(i)}removeStyles(e){for(const i of e)0===this.changeUsageCount(i,-1)&&this.onStyleRemoved(i)}onStyleRemoved(e){}onStyleAdded(e){}getAllStyles(){return this.usageCount.keys()}changeUsageCount(e,i){const r=this.usageCount;let o=r.get(e)??0;return o+=i,o>0?r.set(e,o):r.delete(e),o}ngOnDestroy(){for(const e of this.getAllStyles())this.onStyleRemoved(e);this.usageCount.clear()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),vc=(()=>{class t extends IM{constructor(e){super(),this.doc=e,this.styleRef=new Map,this.hostNodes=new Set,this.resetHostNodes()}onStyleAdded(e){for(const i of this.hostNodes)this.addStyleToHost(i,e)}onStyleRemoved(e){const i=this.styleRef;i.get(e)?.forEach(o=>o.remove()),i.delete(e)}ngOnDestroy(){super.ngOnDestroy(),this.styleRef.clear(),this.resetHostNodes()}addHost(e){this.hostNodes.add(e);for(const i of this.getAllStyles())this.addStyleToHost(e,i)}removeHost(e){this.hostNodes.delete(e)}addStyleToHost(e,i){const r=this.doc.createElement("style");r.textContent=i,e.appendChild(r);const o=this.styleRef.get(i);o?o.push(r):this.styleRef.set(i,[r])}resetHostNodes(){const e=this.hostNodes;e.clear(),e.add(this.doc.head)}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const Nb={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Lb=/%COMP%/g,FM=new k("RemoveStylesOnCompDestory",{providedIn:"root",factory:()=>!1});function PM(t,n){return n.flat(100).map(e=>e.replace(Lb,t))}function NM(t){return n=>{if("__ngUnwrap__"===n)return t;!1===t(n)&&(n.preventDefault(),n.returnValue=!1)}}let Fh=(()=>{class t{constructor(e,i,r,o){this.eventManager=e,this.sharedStylesHost=i,this.appId=r,this.removeStylesOnCompDestory=o,this.rendererByCompId=new Map,this.defaultRenderer=new Bb(e)}createRenderer(e,i){if(!e||!i)return this.defaultRenderer;const r=this.getOrCreateRenderer(e,i);return r instanceof VM?r.applyToHost(e):r instanceof Vb&&r.applyStyles(),r}getOrCreateRenderer(e,i){const r=this.rendererByCompId;let o=r.get(i.id);if(!o){const s=this.eventManager,a=this.sharedStylesHost,l=this.removeStylesOnCompDestory;switch(i.encapsulation){case Mi.Emulated:o=new VM(s,a,i,this.appId,l);break;case Mi.ShadowDom:return new A4(s,a,e,i);default:o=new Vb(s,a,i,l)}o.onDestroy=()=>r.delete(i.id),r.set(i.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}begin(){}end(){}}return t.\u0275fac=function(e){return new(e||t)(_(Rh),_(vc),_(uc),_(FM))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();class Bb{constructor(n){this.eventManager=n,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(n,e){return e?document.createElementNS(Nb[e]||e,n):document.createElement(n)}createComment(n){return document.createComment(n)}createText(n){return document.createTextNode(n)}appendChild(n,e){(BM(n)?n.content:n).appendChild(e)}insertBefore(n,e,i){n&&(BM(n)?n.content:n).insertBefore(e,i)}removeChild(n,e){n&&n.removeChild(e)}selectRootElement(n,e){let i="string"==typeof n?document.querySelector(n):n;if(!i)throw new Error(`The selector "${n}" did not match any elements`);return e||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,i,r){if(r){e=r+":"+e;const o=Nb[r];o?n.setAttributeNS(o,e,i):n.setAttribute(e,i)}else n.setAttribute(e,i)}removeAttribute(n,e,i){if(i){const r=Nb[i];r?n.removeAttributeNS(r,e):n.removeAttribute(`${i}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,i,r){r&(Sn.DashCase|Sn.Important)?n.style.setProperty(e,i,r&Sn.Important?"important":""):n.style[e]=i}removeStyle(n,e,i){i&Sn.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,i){n[e]=i}setValue(n,e){n.nodeValue=e}listen(n,e,i){return"string"==typeof n?this.eventManager.addGlobalEventListener(n,e,NM(i)):this.eventManager.addEventListener(n,e,NM(i))}}function BM(t){return"TEMPLATE"===t.tagName&&void 0!==t.content}class A4 extends Bb{constructor(n,e,i,r){super(n),this.sharedStylesHost=e,this.hostEl=i,this.shadowRoot=i.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const o=PM(r.id,r.styles);for(const s of o){const a=document.createElement("style");a.textContent=s,this.shadowRoot.appendChild(a)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,i){return super.insertBefore(this.nodeOrShadowRoot(n),e,i)}removeChild(n,e){return super.removeChild(this.nodeOrShadowRoot(n),e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class Vb extends Bb{constructor(n,e,i,r,o=i.id){super(n),this.sharedStylesHost=e,this.removeStylesOnCompDestory=r,this.rendererUsageCount=0,this.styles=PM(o,i.styles)}applyStyles(){this.sharedStylesHost.addStyles(this.styles),this.rendererUsageCount++}destroy(){this.removeStylesOnCompDestory&&(this.sharedStylesHost.removeStyles(this.styles),this.rendererUsageCount--,0===this.rendererUsageCount&&this.onDestroy?.())}}class VM extends Vb{constructor(n,e,i,r,o){const s=r+"-"+i.id;super(n,e,i,o,s),this.contentAttr=function k4(t){return"_ngcontent-%COMP%".replace(Lb,t)}(s),this.hostAttr=function M4(t){return"_nghost-%COMP%".replace(Lb,t)}(s)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){const i=super.createElement(n,e);return super.setAttribute(i,this.contentAttr,""),i}}let I4=(()=>{class t extends AM{constructor(e){super(e)}supports(e){return!0}addEventListener(e,i,r){return e.addEventListener(i,r,!1),()=>this.removeEventListener(e,i,r)}removeEventListener(e,i,r){return e.removeEventListener(i,r)}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const jM=["alt","control","meta","shift"],O4={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},R4={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};let F4=(()=>{class t extends AM{constructor(e){super(e)}supports(e){return null!=t.parseEventName(e)}addEventListener(e,i,r){const o=t.parseEventName(i),s=t.eventCallback(o.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Pr().onAndCancel(e,o.domEventName,s))}static parseEventName(e){const i=e.toLowerCase().split("."),r=i.shift();if(0===i.length||"keydown"!==r&&"keyup"!==r)return null;const o=t._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),jM.forEach(c=>{const d=i.indexOf(c);d>-1&&(i.splice(d,1),s+=c+".")}),s+=o,0!=i.length||0===o.length)return null;const l={};return l.domEventName=r,l.fullKey=s,l}static matchEventFullKeyCode(e,i){let r=O4[e.key]||e.key,o="";return i.indexOf("code.")>-1&&(r=e.code,o="code."),!(null==r||!r)&&(r=r.toLowerCase()," "===r?r="space":"."===r&&(r="dot"),jM.forEach(s=>{s!==r&&(0,R4[s])(e)&&(o+=s+".")}),o+=r,o===i)}static eventCallback(e,i,r){return o=>{t.matchEventFullKeyCode(o,e)&&r.runGuarded(()=>i(o))}}static _normalizeKey(e){return"esc"===e?"escape":e}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const zM=[{provide:ss,useValue:xM},{provide:Ek,useValue:function P4(){Pb.makeCurrent()},multi:!0},{provide:ge,useFactory:function L4(){return function xB(t){Wg=t}(document),document},deps:[]}],B4=Pk(_U,"browser",zM),UM=new k(""),$M=[{provide:uh,useClass:class x4{addToWindow(n){ht.getAngularTestability=(i,r=!0)=>{const o=n.findTestabilityInTree(i,r);if(null==o)throw new Error("Could not find testability for element.");return o},ht.getAllAngularTestabilities=()=>n.getAllTestabilities(),ht.getAllAngularRootElements=()=>n.getAllRootElements(),ht.frameworkStabilizers||(ht.frameworkStabilizers=[]),ht.frameworkStabilizers.push(i=>{const r=ht.getAllAngularTestabilities();let o=r.length,s=!1;const a=function(l){s=s||l,o--,0==o&&i(s)};r.forEach(function(l){l.whenStable(a)})})}findTestabilityInTree(n,e,i){return null==e?null:n.getTestability(e)??(i?Pr().isShadowRoot(e)?this.findTestabilityInTree(n,e.host,!0):this.findTestabilityInTree(n,e.parentElement,!0):null)}},deps:[]},{provide:Ik,useClass:ab,deps:[Y,lb,uh]},{provide:ab,useClass:ab,deps:[Y,lb,uh]}],GM=[{provide:n_,useValue:"root"},{provide:Qi,useFactory:function N4(){return new Qi},deps:[]},{provide:Oh,useClass:I4,multi:!0,deps:[ge,Y,ss]},{provide:Oh,useClass:F4,multi:!0,deps:[ge]},{provide:Fh,useClass:Fh,deps:[Rh,vc,uc,FM]},{provide:ho,useExisting:Fh},{provide:IM,useExisting:vc},{provide:vc,useClass:vc,deps:[ge]},{provide:Rh,useClass:Rh,deps:[Oh,Y]},{provide:DM,useClass:C4,deps:[]},[]];let WM=(()=>{class t{constructor(e){}static withServerTransition(e){return{ngModule:t,providers:[{provide:uc,useValue:e.appId},{provide:TM,useExisting:uc},w4]}}}return t.\u0275fac=function(e){return new(e||t)(_(UM,12))},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:[...GM,...$M],imports:[Re,bU]}),t})(),qM=(()=>{class t{constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:function(e){let i=null;return i=e?new e:function j4(){return new qM(_(ge))}(),i},providedIn:"root"}),t})();typeof window<"u"&&window;let Ma=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(e){let i=null;return i=e?new(e||t):_(KM),i},providedIn:"root"}),t})(),KM=(()=>{class t extends Ma{constructor(e){super(),this._doc=e}sanitize(e,i){if(null==i)return null;switch(e){case $e.NONE:return i;case $e.HTML:return Ki(i,"HTML")?Xn(i):fD(this._doc,String(i)).toString();case $e.STYLE:return Ki(i,"Style")?Xn(i):i;case $e.SCRIPT:if(Ki(i,"Script"))return Xn(i);throw new Error("unsafe value used in a script context");case $e.URL:return Ki(i,"URL")?Xn(i):Vu(String(i));case $e.RESOURCE_URL:if(Ki(i,"ResourceURL"))return Xn(i);throw new Error(`unsafe value used in a resource URL context (see ${ou})`);default:throw new Error(`Unexpected SecurityContext ${e} (see ${ou})`)}}bypassSecurityTrustHtml(e){return function TB(t){return new CB(t)}(e)}bypassSecurityTrustStyle(e){return function AB(t){return new DB(t)}(e)}bypassSecurityTrustScript(e){return function IB(t){return new EB(t)}(e)}bypassSecurityTrustUrl(e){return function OB(t){return new SB(t)}(e)}bypassSecurityTrustResourceUrl(e){return function RB(t){return new kB(t)}(e)}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:function(e){let i=null;return i=e?new e:function G4(t){return new KM(t.get(ge))}(_(kt)),i},providedIn:"root"}),t})();function j(...t){return yt(t,kl(t))}function yo(t,n){return We(n)?Ot(t,n,1):Ot(t,1)}function mt(t,n){return gt((e,i)=>{let r=0;e.subscribe(ot(i,o=>t.call(n,o,r++)&&i.next(o)))})}class Ph{}class Nh{}class Br{constructor(n){this.normalizedNames=new Map,this.lazyUpdate=null,n?this.lazyInit="string"==typeof n?()=>{this.headers=new Map,n.split("\n").forEach(e=>{const i=e.indexOf(":");if(i>0){const r=e.slice(0,i),o=r.toLowerCase(),s=e.slice(i+1).trim();this.maybeSetNormalizedName(r,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:()=>{this.headers=new Map,Object.keys(n).forEach(e=>{let i=n[e];const r=e.toLowerCase();"string"==typeof i&&(i=[i]),i.length>0&&(this.headers.set(r,i),this.maybeSetNormalizedName(e,r))})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const e=this.headers.get(n.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,e){return this.clone({name:n,value:e,op:"a"})}set(n,e){return this.clone({name:n,value:e,op:"s"})}delete(n,e){return this.clone({name:n,value:e,op:"d"})}maybeSetNormalizedName(n,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,n)}init(){this.lazyInit&&(this.lazyInit instanceof Br?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(e=>{this.headers.set(e,n.headers.get(e)),this.normalizedNames.set(e,n.normalizedNames.get(e))})}clone(n){const e=new Br;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof Br?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([n]),e}applyUpdate(n){const e=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,e);const r=("a"===n.op?this.headers.get(e):void 0)||[];r.push(...i),this.headers.set(e,r);break;case"d":const o=n.value;if(o){let s=this.headers.get(e);if(!s)return;s=s.filter(a=>-1===o.indexOf(a)),0===s.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,s)}else this.headers.delete(e),this.normalizedNames.delete(e)}}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>n(this.normalizedNames.get(e),this.headers.get(e)))}}class W4{encodeKey(n){return XM(n)}encodeValue(n){return XM(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const Y4=/%(\d[a-f0-9])/gi,Z4={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function XM(t){return encodeURIComponent(t).replace(Y4,(n,e)=>Z4[e]??n)}function Lh(t){return`${t}`}class wo{constructor(n={}){if(this.updates=null,this.cloneFrom=null,this.encoder=n.encoder||new W4,n.fromString){if(n.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function q4(t,n){const e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(r=>{const o=r.indexOf("="),[s,a]=-1==o?[n.decodeKey(r),""]:[n.decodeKey(r.slice(0,o)),n.decodeValue(r.slice(o+1))],l=e.get(s)||[];l.push(a),e.set(s,l)}),e}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(e=>{const i=n.fromObject[e],r=Array.isArray(i)?i.map(Lh):[Lh(i)];this.map.set(e,r)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const e=this.map.get(n);return e?e[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,e){return this.clone({param:n,value:e,op:"a"})}appendAll(n){const e=[];return Object.keys(n).forEach(i=>{const r=n[i];Array.isArray(r)?r.forEach(o=>{e.push({param:i,value:o,op:"a"})}):e.push({param:i,value:r,op:"a"})}),this.clone(e)}set(n,e){return this.clone({param:n,value:e,op:"s"})}delete(n,e){return this.clone({param:n,value:e,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const e=this.encoder.encodeKey(n);return this.map.get(n).map(i=>e+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const e=new wo({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(n),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const e=("a"===n.op?this.map.get(n.param):void 0)||[];e.push(Lh(n.value)),this.map.set(n.param,e);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const r=i.indexOf(Lh(n.value));-1!==r&&i.splice(r,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}}class K4{constructor(){this.map=new Map}set(n,e){return this.map.set(n,e),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}}function QM(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function JM(t){return typeof Blob<"u"&&t instanceof Blob}function eT(t){return typeof FormData<"u"&&t instanceof FormData}class yc{constructor(n,e,i,r){let o;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=n.toUpperCase(),function X4(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||r?(this.body=void 0!==i?i:null,o=r):o=i,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params)),this.headers||(this.headers=new Br),this.context||(this.context=new K4),this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=e;else{const a=e.indexOf("?");this.urlWithParams=e+(-1===a?"?":au.set(h,n.setHeaders[h]),l)),n.setParams&&(c=Object.keys(n.setParams).reduce((u,h)=>u.set(h,n.setParams[h]),c)),new yc(e,i,o,{params:c,headers:l,context:d,reportProgress:a,responseType:r,withCredentials:s})}}var Ht=(()=>((Ht=Ht||{})[Ht.Sent=0]="Sent",Ht[Ht.UploadProgress=1]="UploadProgress",Ht[Ht.ResponseHeader=2]="ResponseHeader",Ht[Ht.DownloadProgress=3]="DownloadProgress",Ht[Ht.Response=4]="Response",Ht[Ht.User=5]="User",Ht))();class zb{constructor(n,e=200,i="OK"){this.headers=n.headers||new Br,this.status=void 0!==n.status?n.status:e,this.statusText=n.statusText||i,this.url=n.url||null,this.ok=this.status>=200&&this.status<300}}class Ub extends zb{constructor(n={}){super(n),this.type=Ht.ResponseHeader}clone(n={}){return new Ub({headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class Bh extends zb{constructor(n={}){super(n),this.type=Ht.Response,this.body=void 0!==n.body?n.body:null}clone(n={}){return new Bh({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class tT extends zb{constructor(n){super(n,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${n.url||"(unknown url)"}`:`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}}function $b(t,n){return{body:n,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}let vi=(()=>{class t{constructor(e){this.handler=e}request(e,i,r={}){let o;if(e instanceof yc)o=e;else{let l,c;l=r.headers instanceof Br?r.headers:new Br(r.headers),r.params&&(c=r.params instanceof wo?r.params:new wo({fromObject:r.params})),o=new yc(e,i,void 0!==r.body?r.body:null,{headers:l,context:r.context,params:c,reportProgress:r.reportProgress,responseType:r.responseType||"json",withCredentials:r.withCredentials})}const s=j(o).pipe(yo(l=>this.handler.handle(l)));if(e instanceof yc||"events"===r.observe)return s;const a=s.pipe(mt(l=>l instanceof Bh));switch(r.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return a.pipe(B(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return l.body}));case"blob":return a.pipe(B(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new Error("Response is not a Blob.");return l.body}));case"text":return a.pipe(B(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new Error("Response is not a string.");return l.body}));default:return a.pipe(B(l=>l.body))}case"response":return a;default:throw new Error(`Unreachable: unhandled observe type ${r.observe}}`)}}delete(e,i={}){return this.request("DELETE",e,i)}get(e,i={}){return this.request("GET",e,i)}head(e,i={}){return this.request("HEAD",e,i)}jsonp(e,i){return this.request("JSONP",e,{params:(new wo).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,i={}){return this.request("OPTIONS",e,i)}patch(e,i,r={}){return this.request("PATCH",e,$b(r,i))}post(e,i,r={}){return this.request("POST",e,$b(r,i))}put(e,i,r={}){return this.request("PUT",e,$b(r,i))}}return t.\u0275fac=function(e){return new(e||t)(_(Ph))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function nT(t,n){return n(t)}function J4(t,n){return(e,i)=>n.intercept(e,{handle:r=>t(r,i)})}const t5=new k("HTTP_INTERCEPTORS"),wc=new k("HTTP_INTERCEPTOR_FNS");function n5(){let t=null;return(n,e)=>(null===t&&(t=(R(t5,{optional:!0})??[]).reduceRight(J4,nT)),t(n,e))}let iT=(()=>{class t extends Ph{constructor(e,i){super(),this.backend=e,this.injector=i,this.chain=null}handle(e){if(null===this.chain){const i=Array.from(new Set(this.injector.get(wc)));this.chain=i.reduceRight((r,o)=>function e5(t,n,e){return(i,r)=>e.runInContext(()=>n(i,o=>t(o,r)))}(r,o,this.injector),nT)}return this.chain(e,i=>this.backend.handle(i))}}return t.\u0275fac=function(e){return new(e||t)(_(Nh),_(Xi))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const a5=/^\)\]\}',?\n/;let oT=(()=>{class t{constructor(e){this.xhrFactory=e}handle(e){if("JSONP"===e.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new xe(i=>{const r=this.xhrFactory.build();if(r.open(e.method,e.urlWithParams),e.withCredentials&&(r.withCredentials=!0),e.headers.forEach((f,p)=>r.setRequestHeader(f,p.join(","))),e.headers.has("Accept")||r.setRequestHeader("Accept","application/json, text/plain, */*"),!e.headers.has("Content-Type")){const f=e.detectContentTypeHeader();null!==f&&r.setRequestHeader("Content-Type",f)}if(e.responseType){const f=e.responseType.toLowerCase();r.responseType="json"!==f?f:"text"}const o=e.serializeBody();let s=null;const a=()=>{if(null!==s)return s;const f=r.statusText||"OK",p=new Br(r.getAllResponseHeaders()),g=function l5(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(r)||e.url;return s=new Ub({headers:p,status:r.status,statusText:f,url:g}),s},l=()=>{let{headers:f,status:p,statusText:g,url:b}=a(),v=null;204!==p&&(v=typeof r.response>"u"?r.responseText:r.response),0===p&&(p=v?200:0);let w=p>=200&&p<300;if("json"===e.responseType&&"string"==typeof v){const C=v;v=v.replace(a5,"");try{v=""!==v?JSON.parse(v):null}catch(F){v=C,w&&(w=!1,v={error:F,text:v})}}w?(i.next(new Bh({body:v,headers:f,status:p,statusText:g,url:b||void 0})),i.complete()):i.error(new tT({error:v,headers:f,status:p,statusText:g,url:b||void 0}))},c=f=>{const{url:p}=a(),g=new tT({error:f,status:r.status||0,statusText:r.statusText||"Unknown Error",url:p||void 0});i.error(g)};let d=!1;const u=f=>{d||(i.next(a()),d=!0);let p={type:Ht.DownloadProgress,loaded:f.loaded};f.lengthComputable&&(p.total=f.total),"text"===e.responseType&&r.responseText&&(p.partialText=r.responseText),i.next(p)},h=f=>{let p={type:Ht.UploadProgress,loaded:f.loaded};f.lengthComputable&&(p.total=f.total),i.next(p)};return r.addEventListener("load",l),r.addEventListener("error",c),r.addEventListener("timeout",c),r.addEventListener("abort",c),e.reportProgress&&(r.addEventListener("progress",u),null!==o&&r.upload&&r.upload.addEventListener("progress",h)),r.send(o),i.next({type:Ht.Sent}),()=>{r.removeEventListener("error",c),r.removeEventListener("abort",c),r.removeEventListener("load",l),r.removeEventListener("timeout",c),e.reportProgress&&(r.removeEventListener("progress",u),null!==o&&r.upload&&r.upload.removeEventListener("progress",h)),r.readyState!==r.DONE&&r.abort()}})}}return t.\u0275fac=function(e){return new(e||t)(_(DM))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const Gb=new k("XSRF_ENABLED"),sT=new k("XSRF_COOKIE_NAME",{providedIn:"root",factory:()=>"XSRF-TOKEN"}),aT=new k("XSRF_HEADER_NAME",{providedIn:"root",factory:()=>"X-XSRF-TOKEN"});class lT{}let u5=(()=>{class t{constructor(e,i,r){this.doc=e,this.platform=i,this.cookieName=r,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=uM(e,this.cookieName),this.lastCookieString=e),this.lastToken}}return t.\u0275fac=function(e){return new(e||t)(_(ge),_(ss),_(sT))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function h5(t,n){const e=t.url.toLowerCase();if(!R(Gb)||"GET"===t.method||"HEAD"===t.method||e.startsWith("http://")||e.startsWith("https://"))return n(t);const i=R(lT).getToken(),r=R(aT);return null!=i&&!t.headers.has(r)&&(t=t.clone({headers:t.headers.set(r,i)})),n(t)}var Lt=(()=>((Lt=Lt||{})[Lt.Interceptors=0]="Interceptors",Lt[Lt.LegacyInterceptors=1]="LegacyInterceptors",Lt[Lt.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",Lt[Lt.NoXsrfProtection=3]="NoXsrfProtection",Lt[Lt.JsonpSupport=4]="JsonpSupport",Lt[Lt.RequestsMadeViaParent=5]="RequestsMadeViaParent",Lt))();function Ta(t,n){return{\u0275kind:t,\u0275providers:n}}function f5(...t){const n=[vi,oT,iT,{provide:Ph,useExisting:iT},{provide:Nh,useExisting:oT},{provide:wc,useValue:h5,multi:!0},{provide:Gb,useValue:!0},{provide:lT,useClass:u5}];for(const e of t)n.push(...e.\u0275providers);return function ZB(t){return{\u0275providers:t}}(n)}const cT=new k("LEGACY_INTERCEPTOR_FN");let p5=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:[f5(Ta(Lt.LegacyInterceptors,[{provide:cT,useFactory:n5},{provide:wc,useExisting:cT,multi:!0}]))]}),t})();class dT{}class g5{}const Vr="*";function xc(t,n){return{type:7,name:t,definitions:n,options:{}}}function xo(t,n=null){return{type:4,styles:n,timings:t}}function hT(t,n=null){return{type:2,steps:t,options:n}}function on(t){return{type:6,styles:t,offset:null}}function sr(t,n,e){return{type:0,name:t,styles:n,options:e}}function Co(t,n,e=null){return{type:1,expr:t,animation:n,options:e}}function pT(t){Promise.resolve().then(t)}class Cc{constructor(n=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=n+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){pT(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class gT{constructor(n){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=n;let e=0,i=0,r=0;const o=this.players.length;0==o?pT(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++e==o&&this._onFinish()}),s.onDestroy(()=>{++i==o&&this._onDestroy()}),s.onStart(()=>{++r==o&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){const e=n*this.totalTime;this.players.forEach(i=>{const r=i.totalTime?Math.min(1,e/i.totalTime):1;i.setPosition(r)})}getPosition(){const n=this.players.reduce((e,i)=>null===e||i.totalTime>e.totalTime?i:e,null);return null!=n?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}const Wb="!";function _T(t){return new A(3e3,!1)}function X5(){return typeof window<"u"&&typeof window.document<"u"}function qb(){return typeof process<"u"&&"[object process]"==={}.toString.call(process)}function Do(t){switch(t.length){case 0:return new Cc;case 1:return t[0];default:return new gT(t)}}function bT(t,n,e,i,r=new Map,o=new Map){const s=[],a=[];let l=-1,c=null;if(i.forEach(d=>{const u=d.get("offset"),h=u==l,f=h&&c||new Map;d.forEach((p,g)=>{let b=g,v=p;if("offset"!==g)switch(b=n.normalizePropertyName(b,s),v){case Wb:v=r.get(g);break;case Vr:v=o.get(g);break;default:v=n.normalizeStyleValue(g,b,v,s)}f.set(b,v)}),h||a.push(f),c=f,l=u}),s.length)throw function V5(t){return new A(3502,!1)}();return a}function Yb(t,n,e,i){switch(n){case"start":t.onStart(()=>i(e&&Zb(e,"start",t)));break;case"done":t.onDone(()=>i(e&&Zb(e,"done",t)));break;case"destroy":t.onDestroy(()=>i(e&&Zb(e,"destroy",t)))}}function Zb(t,n,e){const o=Kb(t.element,t.triggerName,t.fromState,t.toState,n||t.phaseName,e.totalTime??t.totalTime,!!e.disabled),s=t._data;return null!=s&&(o._data=s),o}function Kb(t,n,e,i,r="",o=0,s){return{element:t,triggerName:n,fromState:e,toState:i,phaseName:r,totalTime:o,disabled:!!s}}function ei(t,n,e){let i=t.get(n);return i||t.set(n,i=e),i}function vT(t){const n=t.indexOf(":");return[t.substring(1,n),t.slice(n+1)]}let Xb=(t,n)=>!1,yT=(t,n,e)=>[],wT=null;function Qb(t){const n=t.parentNode||t.host;return n===wT?null:n}(qb()||typeof Element<"u")&&(X5()?(wT=(()=>document.documentElement)(),Xb=(t,n)=>{for(;n;){if(n===t)return!0;n=Qb(n)}return!1}):Xb=(t,n)=>t.contains(n),yT=(t,n,e)=>{if(e)return Array.from(t.querySelectorAll(n));const i=t.querySelector(n);return i?[i]:[]});let ds=null,xT=!1;const CT=Xb,DT=yT;let ET=(()=>{class t{validateStyleProperty(e){return function J5(t){ds||(ds=function e8(){return typeof document<"u"?document.body:null}()||{},xT=!!ds.style&&"WebkitAppearance"in ds.style);let n=!0;return ds.style&&!function Q5(t){return"ebkit"==t.substring(1,6)}(t)&&(n=t in ds.style,!n&&xT&&(n="Webkit"+t.charAt(0).toUpperCase()+t.slice(1)in ds.style)),n}(e)}matchesElement(e,i){return!1}containsElement(e,i){return CT(e,i)}getParentElement(e){return Qb(e)}query(e,i,r){return DT(e,i,r)}computeStyle(e,i,r){return r||""}animate(e,i,r,o,s,a=[],l){return new Cc(r,o)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Jb=(()=>{class t{}return t.NOOP=new ET,t})();const t8=1e3,ev="ng-enter",Vh="ng-leave",jh="ng-trigger",Hh=".ng-trigger",kT="ng-animating",tv=".ng-animating";function jr(t){if("number"==typeof t)return t;const n=t.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:nv(parseFloat(n[1]),n[2])}function nv(t,n){return"s"===n?t*t8:t}function zh(t,n,e){return t.hasOwnProperty("duration")?t:function i8(t,n,e){let r,o=0,s="";if("string"==typeof t){const a=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===a)return n.push(_T()),{duration:0,delay:0,easing:""};r=nv(parseFloat(a[1]),a[2]);const l=a[3];null!=l&&(o=nv(parseFloat(l),a[4]));const c=a[5];c&&(s=c)}else r=t;if(!e){let a=!1,l=n.length;r<0&&(n.push(function _5(){return new A(3100,!1)}()),a=!0),o<0&&(n.push(function b5(){return new A(3101,!1)}()),a=!0),a&&n.splice(l,0,_T())}return{duration:r,delay:o,easing:s}}(t,n,e)}function Dc(t,n={}){return Object.keys(t).forEach(e=>{n[e]=t[e]}),n}function MT(t){const n=new Map;return Object.keys(t).forEach(e=>{n.set(e,t[e])}),n}function Eo(t,n=new Map,e){if(e)for(let[i,r]of e)n.set(i,r);for(let[i,r]of t)n.set(i,r);return n}function AT(t,n,e){return e?n+":"+e+";":""}function IT(t){let n="";for(let e=0;e{const o=rv(r);e&&!e.has(r)&&e.set(r,t.style[o]),t.style[o]=i}),qb()&&IT(t))}function us(t,n){t.style&&(n.forEach((e,i)=>{const r=rv(i);t.style[r]=""}),qb()&&IT(t))}function Ec(t){return Array.isArray(t)?1==t.length?t[0]:hT(t):t}const iv=new RegExp("{{\\s*(.+?)\\s*}}","g");function OT(t){let n=[];if("string"==typeof t){let e;for(;e=iv.exec(t);)n.push(e[1]);iv.lastIndex=0}return n}function Sc(t,n,e){const i=t.toString(),r=i.replace(iv,(o,s)=>{let a=n[s];return null==a&&(e.push(function y5(t){return new A(3003,!1)}()),a=""),a.toString()});return r==i?t:r}function Uh(t){const n=[];let e=t.next();for(;!e.done;)n.push(e.value),e=t.next();return n}const s8=/-+([a-z0-9])/g;function rv(t){return t.replace(s8,(...n)=>n[1].toUpperCase())}function a8(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function ti(t,n,e){switch(n.type){case 7:return t.visitTrigger(n,e);case 0:return t.visitState(n,e);case 1:return t.visitTransition(n,e);case 2:return t.visitSequence(n,e);case 3:return t.visitGroup(n,e);case 4:return t.visitAnimate(n,e);case 5:return t.visitKeyframes(n,e);case 6:return t.visitStyle(n,e);case 8:return t.visitReference(n,e);case 9:return t.visitAnimateChild(n,e);case 10:return t.visitAnimateRef(n,e);case 11:return t.visitQuery(n,e);case 12:return t.visitStagger(n,e);default:throw function w5(t){return new A(3004,!1)}()}}function RT(t,n){return window.getComputedStyle(t)[n]}const Wh="*";function f8(t,n){const e=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(i=>function m8(t,n,e){if(":"==t[0]){const l=function p8(t,n){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,i)=>parseFloat(i)>parseFloat(e);case":decrement":return(e,i)=>parseFloat(i) *"}}(t,e);if("function"==typeof l)return void n.push(l);t=l}const i=t.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==i||i.length<4)return e.push(function F5(t){return new A(3015,!1)}()),n;const r=i[1],o=i[2],s=i[3];n.push(FT(r,s));"<"==o[0]&&!(r==Wh&&s==Wh)&&n.push(FT(s,r))}(i,e,n)):e.push(t),e}const qh=new Set(["true","1"]),Yh=new Set(["false","0"]);function FT(t,n){const e=qh.has(t)||Yh.has(t),i=qh.has(n)||Yh.has(n);return(r,o)=>{let s=t==Wh||t==r,a=n==Wh||n==o;return!s&&e&&"boolean"==typeof r&&(s=r?qh.has(t):Yh.has(t)),!a&&i&&"boolean"==typeof o&&(a=o?qh.has(n):Yh.has(n)),s&&a}}const g8=new RegExp("s*:selfs*,?","g");function ov(t,n,e,i){return new _8(t).build(n,e,i)}class _8{constructor(n){this._driver=n}build(n,e,i){const r=new y8(e);return this._resetContextStyleTimingState(r),ti(this,Ec(n),r)}_resetContextStyleTimingState(n){n.currentQuerySelector="",n.collectedStyles=new Map,n.collectedStyles.set("",new Map),n.currentTime=0}visitTrigger(n,e){let i=e.queryCount=0,r=e.depCount=0;const o=[],s=[];return"@"==n.name.charAt(0)&&e.errors.push(function C5(){return new A(3006,!1)}()),n.definitions.forEach(a=>{if(this._resetContextStyleTimingState(e),0==a.type){const l=a,c=l.name;c.toString().split(/\s*,\s*/).forEach(d=>{l.name=d,o.push(this.visitState(l,e))}),l.name=c}else if(1==a.type){const l=this.visitTransition(a,e);i+=l.queryCount,r+=l.depCount,s.push(l)}else e.errors.push(function D5(){return new A(3007,!1)}())}),{type:7,name:n.name,states:o,transitions:s,queryCount:i,depCount:r,options:null}}visitState(n,e){const i=this.visitStyle(n.styles,e),r=n.options&&n.options.params||null;if(i.containsDynamicStyles){const o=new Set,s=r||{};i.styles.forEach(a=>{a instanceof Map&&a.forEach(l=>{OT(l).forEach(c=>{s.hasOwnProperty(c)||o.add(c)})})}),o.size&&(Uh(o.values()),e.errors.push(function E5(t,n){return new A(3008,!1)}()))}return{type:0,name:n.name,style:i,options:r?{params:r}:null}}visitTransition(n,e){e.queryCount=0,e.depCount=0;const i=ti(this,Ec(n.animation),e);return{type:1,matchers:f8(n.expr,e.errors),animation:i,queryCount:e.queryCount,depCount:e.depCount,options:hs(n.options)}}visitSequence(n,e){return{type:2,steps:n.steps.map(i=>ti(this,i,e)),options:hs(n.options)}}visitGroup(n,e){const i=e.currentTime;let r=0;const o=n.steps.map(s=>{e.currentTime=i;const a=ti(this,s,e);return r=Math.max(r,e.currentTime),a});return e.currentTime=r,{type:3,steps:o,options:hs(n.options)}}visitAnimate(n,e){const i=function x8(t,n){if(t.hasOwnProperty("duration"))return t;if("number"==typeof t)return sv(zh(t,n).duration,0,"");const e=t;if(e.split(/\s+/).some(o=>"{"==o.charAt(0)&&"{"==o.charAt(1))){const o=sv(0,0,"");return o.dynamic=!0,o.strValue=e,o}const r=zh(e,n);return sv(r.duration,r.delay,r.easing)}(n.timings,e.errors);e.currentAnimateTimings=i;let r,o=n.styles?n.styles:on({});if(5==o.type)r=this.visitKeyframes(o,e);else{let s=n.styles,a=!1;if(!s){a=!0;const c={};i.easing&&(c.easing=i.easing),s=on(c)}e.currentTime+=i.duration+i.delay;const l=this.visitStyle(s,e);l.isEmptyStep=a,r=l}return e.currentAnimateTimings=null,{type:4,timings:i,style:r,options:null}}visitStyle(n,e){const i=this._makeStyleAst(n,e);return this._validateStyleAst(i,e),i}_makeStyleAst(n,e){const i=[],r=Array.isArray(n.styles)?n.styles:[n.styles];for(let a of r)"string"==typeof a?a===Vr?i.push(a):e.errors.push(new A(3002,!1)):i.push(MT(a));let o=!1,s=null;return i.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!o))for(let l of a.values())if(l.toString().indexOf("{{")>=0){o=!0;break}}),{type:6,styles:i,easing:s,offset:n.offset,containsDynamicStyles:o,options:null}}_validateStyleAst(n,e){const i=e.currentAnimateTimings;let r=e.currentTime,o=e.currentTime;i&&o>0&&(o-=i.duration+i.delay),n.styles.forEach(s=>{"string"!=typeof s&&s.forEach((a,l)=>{const c=e.collectedStyles.get(e.currentQuerySelector),d=c.get(l);let u=!0;d&&(o!=r&&o>=d.startTime&&r<=d.endTime&&(e.errors.push(function k5(t,n,e,i,r){return new A(3010,!1)}()),u=!1),o=d.startTime),u&&c.set(l,{startTime:o,endTime:r}),e.options&&function o8(t,n,e){const i=n.params||{},r=OT(t);r.length&&r.forEach(o=>{i.hasOwnProperty(o)||e.push(function v5(t){return new A(3001,!1)}())})}(a,e.options,e.errors)})})}visitKeyframes(n,e){const i={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(function M5(){return new A(3011,!1)}()),i;let o=0;const s=[];let a=!1,l=!1,c=0;const d=n.steps.map(v=>{const w=this._makeStyleAst(v,e);let C=null!=w.offset?w.offset:function w8(t){if("string"==typeof t)return null;let n=null;if(Array.isArray(t))t.forEach(e=>{if(e instanceof Map&&e.has("offset")){const i=e;n=parseFloat(i.get("offset")),i.delete("offset")}});else if(t instanceof Map&&t.has("offset")){const e=t;n=parseFloat(e.get("offset")),e.delete("offset")}return n}(w.styles),F=0;return null!=C&&(o++,F=w.offset=C),l=l||F<0||F>1,a=a||F0&&o{const C=h>0?w==f?1:h*w:s[w],F=C*b;e.currentTime=p+g.delay+F,g.duration=F,this._validateStyleAst(v,e),v.offset=C,i.styles.push(v)}),i}visitReference(n,e){return{type:8,animation:ti(this,Ec(n.animation),e),options:hs(n.options)}}visitAnimateChild(n,e){return e.depCount++,{type:9,options:hs(n.options)}}visitAnimateRef(n,e){return{type:10,animation:this.visitReference(n.animation,e),options:hs(n.options)}}visitQuery(n,e){const i=e.currentQuerySelector,r=n.options||{};e.queryCount++,e.currentQuery=n;const[o,s]=function b8(t){const n=!!t.split(/\s*,\s*/).find(e=>":self"==e);return n&&(t=t.replace(g8,"")),t=t.replace(/@\*/g,Hh).replace(/@\w+/g,e=>Hh+"-"+e.slice(1)).replace(/:animating/g,tv),[t,n]}(n.selector);e.currentQuerySelector=i.length?i+" "+o:o,ei(e.collectedStyles,e.currentQuerySelector,new Map);const a=ti(this,Ec(n.animation),e);return e.currentQuery=null,e.currentQuerySelector=i,{type:11,selector:o,limit:r.limit||0,optional:!!r.optional,includeSelf:s,animation:a,originalSelector:n.selector,options:hs(n.options)}}visitStagger(n,e){e.currentQuery||e.errors.push(function O5(){return new A(3013,!1)}());const i="full"===n.timings?{duration:0,delay:0,easing:"full"}:zh(n.timings,e.errors,!0);return{type:12,animation:ti(this,Ec(n.animation),e),timings:i,options:null}}}class y8{constructor(n){this.errors=n,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}}function hs(t){return t?(t=Dc(t)).params&&(t.params=function v8(t){return t?Dc(t):null}(t.params)):t={},t}function sv(t,n,e){return{duration:t,delay:n,easing:e}}function av(t,n,e,i,r,o,s=null,a=!1){return{type:1,element:t,keyframes:n,preStyleProps:e,postStyleProps:i,duration:r,delay:o,totalTime:r+o,easing:s,subTimeline:a}}class Zh{constructor(){this._map=new Map}get(n){return this._map.get(n)||[]}append(n,e){let i=this._map.get(n);i||this._map.set(n,i=[]),i.push(...e)}has(n){return this._map.has(n)}clear(){this._map.clear()}}const E8=new RegExp(":enter","g"),k8=new RegExp(":leave","g");function lv(t,n,e,i,r,o=new Map,s=new Map,a,l,c=[]){return(new M8).buildKeyframes(t,n,e,i,r,o,s,a,l,c)}class M8{buildKeyframes(n,e,i,r,o,s,a,l,c,d=[]){c=c||new Zh;const u=new cv(n,e,c,r,o,d,[]);u.options=l;const h=l.delay?jr(l.delay):0;u.currentTimeline.delayNextStep(h),u.currentTimeline.setStyles([s],null,u.errors,l),ti(this,i,u);const f=u.timelines.filter(p=>p.containsAnimation());if(f.length&&a.size){let p;for(let g=f.length-1;g>=0;g--){const b=f[g];if(b.element===e){p=b;break}}p&&!p.allowOnlyTimelineStyles()&&p.setStyles([a],null,u.errors,l)}return f.length?f.map(p=>p.buildKeyframes()):[av(e,[],[],[],0,h,"",!1)]}visitTrigger(n,e){}visitState(n,e){}visitTransition(n,e){}visitAnimateChild(n,e){const i=e.subInstructions.get(e.element);if(i){const r=e.createSubContext(n.options),o=e.currentTimeline.currentTime,s=this._visitSubInstructions(i,r,r.options);o!=s&&e.transformIntoNewTimeline(s)}e.previousNode=n}visitAnimateRef(n,e){const i=e.createSubContext(n.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],e,i),this.visitReference(n.animation,i),e.transformIntoNewTimeline(i.currentTimeline.currentTime),e.previousNode=n}_applyAnimationRefDelays(n,e,i){for(const r of n){const o=r?.delay;if(o){const s="number"==typeof o?o:jr(Sc(o,r?.params??{},e.errors));i.delayNextStep(s)}}}_visitSubInstructions(n,e,i){let o=e.currentTimeline.currentTime;const s=null!=i.duration?jr(i.duration):null,a=null!=i.delay?jr(i.delay):null;return 0!==s&&n.forEach(l=>{const c=e.appendInstructionToTimeline(l,s,a);o=Math.max(o,c.duration+c.delay)}),o}visitReference(n,e){e.updateOptions(n.options,!0),ti(this,n.animation,e),e.previousNode=n}visitSequence(n,e){const i=e.subContextCount;let r=e;const o=n.options;if(o&&(o.params||o.delay)&&(r=e.createSubContext(o),r.transformIntoNewTimeline(),null!=o.delay)){6==r.previousNode.type&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=Kh);const s=jr(o.delay);r.delayNextStep(s)}n.steps.length&&(n.steps.forEach(s=>ti(this,s,r)),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>i&&r.transformIntoNewTimeline()),e.previousNode=n}visitGroup(n,e){const i=[];let r=e.currentTimeline.currentTime;const o=n.options&&n.options.delay?jr(n.options.delay):0;n.steps.forEach(s=>{const a=e.createSubContext(n.options);o&&a.delayNextStep(o),ti(this,s,a),r=Math.max(r,a.currentTimeline.currentTime),i.push(a.currentTimeline)}),i.forEach(s=>e.currentTimeline.mergeTimelineCollectedStyles(s)),e.transformIntoNewTimeline(r),e.previousNode=n}_visitTiming(n,e){if(n.dynamic){const i=n.strValue;return zh(e.params?Sc(i,e.params,e.errors):i,e.errors)}return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,e){const i=e.currentAnimateTimings=this._visitTiming(n.timings,e),r=e.currentTimeline;i.delay&&(e.incrementTime(i.delay),r.snapshotCurrentStyles());const o=n.style;5==o.type?this.visitKeyframes(o,e):(e.incrementTime(i.duration),this.visitStyle(o,e),r.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=n}visitStyle(n,e){const i=e.currentTimeline,r=e.currentAnimateTimings;!r&&i.hasCurrentStyleProperties()&&i.forwardFrame();const o=r&&r.easing||n.easing;n.isEmptyStep?i.applyEmptyStep(o):i.setStyles(n.styles,o,e.errors,e.options),e.previousNode=n}visitKeyframes(n,e){const i=e.currentAnimateTimings,r=e.currentTimeline.duration,o=i.duration,a=e.createSubContext().currentTimeline;a.easing=i.easing,n.styles.forEach(l=>{a.forwardTime((l.offset||0)*o),a.setStyles(l.styles,l.easing,e.errors,e.options),a.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(a),e.transformIntoNewTimeline(r+o),e.previousNode=n}visitQuery(n,e){const i=e.currentTimeline.currentTime,r=n.options||{},o=r.delay?jr(r.delay):0;o&&(6===e.previousNode.type||0==i&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=Kh);let s=i;const a=e.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!r.optional,e.errors);e.currentQueryTotal=a.length;let l=null;a.forEach((c,d)=>{e.currentQueryIndex=d;const u=e.createSubContext(n.options,c);o&&u.delayNextStep(o),c===e.element&&(l=u.currentTimeline),ti(this,n.animation,u),u.currentTimeline.applyStylesToKeyframe(),s=Math.max(s,u.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(s),l&&(e.currentTimeline.mergeTimelineCollectedStyles(l),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=n}visitStagger(n,e){const i=e.parentContext,r=e.currentTimeline,o=n.timings,s=Math.abs(o.duration),a=s*(e.currentQueryTotal-1);let l=s*e.currentQueryIndex;switch(o.duration<0?"reverse":o.easing){case"reverse":l=a-l;break;case"full":l=i.currentStaggerTime}const d=e.currentTimeline;l&&d.delayNextStep(l);const u=d.currentTime;ti(this,n.animation,e),e.previousNode=n,i.currentStaggerTime=r.currentTime-u+(r.startTime-i.currentTimeline.startTime)}}const Kh={};class cv{constructor(n,e,i,r,o,s,a,l){this._driver=n,this.element=e,this.subInstructions=i,this._enterClassName=r,this._leaveClassName=o,this.errors=s,this.timelines=a,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Kh,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=l||new Xh(this._driver,e,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,e){if(!n)return;const i=n;let r=this.options;null!=i.duration&&(r.duration=jr(i.duration)),null!=i.delay&&(r.delay=jr(i.delay));const o=i.params;if(o){let s=r.params;s||(s=this.options.params={}),Object.keys(o).forEach(a=>{(!e||!s.hasOwnProperty(a))&&(s[a]=Sc(o[a],s,this.errors))})}}_copyOptions(){const n={};if(this.options){const e=this.options.params;if(e){const i=n.params={};Object.keys(e).forEach(r=>{i[r]=e[r]})}}return n}createSubContext(n=null,e,i){const r=e||this.element,o=new cv(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,i||0));return o.previousNode=this.previousNode,o.currentAnimateTimings=this.currentAnimateTimings,o.options=this._copyOptions(),o.updateOptions(n),o.currentQueryIndex=this.currentQueryIndex,o.currentQueryTotal=this.currentQueryTotal,o.parentContext=this,this.subContextCount++,o}transformIntoNewTimeline(n){return this.previousNode=Kh,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,e,i){const r={duration:e??n.duration,delay:this.currentTimeline.currentTime+(i??0)+n.delay,easing:""},o=new T8(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,r,n.stretchStartingKeyframe);return this.timelines.push(o),r}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,e,i,r,o,s){let a=[];if(r&&a.push(this.element),n.length>0){n=(n=n.replace(E8,"."+this._enterClassName)).replace(k8,"."+this._leaveClassName);let c=this._driver.query(this.element,n,1!=i);0!==i&&(c=i<0?c.slice(c.length+i,c.length):c.slice(0,i)),a.push(...c)}return!o&&0==a.length&&s.push(function R5(t){return new A(3014,!1)}()),a}}class Xh{constructor(n,e,i,r){this._driver=n,this.element=e,this.startTime=i,this._elementTimelineStylesLookup=r,this.duration=0,this.easing=null,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+n),e&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,e){return this.applyStylesToKeyframe(),new Xh(this._driver,n,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,e){this._localTimelineStyles.set(n,e),this._globalTimelineStyles.set(n,e),this._styleSummary.set(n,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[e,i]of this._globalTimelineStyles)this._backFill.set(e,i||Vr),this._currentKeyframe.set(e,Vr);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,e,i,r){e&&this._previousKeyframe.set("easing",e);const o=r&&r.params||{},s=function A8(t,n){const e=new Map;let i;return t.forEach(r=>{if("*"===r){i=i||n.keys();for(let o of i)e.set(o,Vr)}else Eo(r,e)}),e}(n,this._globalTimelineStyles);for(let[a,l]of s){const c=Sc(l,o,i);this._pendingStyles.set(a,c),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??Vr),this._updateStyle(a,c)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((n,e)=>{this._currentKeyframe.set(e,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,n)}))}snapshotCurrentStyles(){for(let[n,e]of this._localTimelineStyles)this._pendingStyles.set(n,e),this._updateStyle(n,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const n=[];for(let e in this._currentKeyframe)n.push(e);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((e,i)=>{const r=this._styleSummary.get(i);(!r||e.time>r.time)&&this._updateStyle(i,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const n=new Set,e=new Set,i=1===this._keyframes.size&&0===this.duration;let r=[];this._keyframes.forEach((a,l)=>{const c=Eo(a,new Map,this._backFill);c.forEach((d,u)=>{d===Wb?n.add(u):d===Vr&&e.add(u)}),i||c.set("offset",l/this.duration),r.push(c)});const o=n.size?Uh(n.values()):[],s=e.size?Uh(e.values()):[];if(i){const a=r[0],l=new Map(a);a.set("offset",0),l.set("offset",1),r=[a,l]}return av(this.element,r,o,s,this.duration,this.startTime,this.easing,!1)}}class T8 extends Xh{constructor(n,e,i,r,o,s,a=!1){super(n,e,s.delay),this.keyframes=i,this.preStyleProps=r,this.postStyleProps=o,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:e,duration:i,easing:r}=this.timings;if(this._stretchStartingKeyframe&&e){const o=[],s=i+e,a=e/s,l=Eo(n[0]);l.set("offset",0),o.push(l);const c=Eo(n[0]);c.set("offset",LT(a)),o.push(c);const d=n.length-1;for(let u=1;u<=d;u++){let h=Eo(n[u]);const f=h.get("offset");h.set("offset",LT((e+f*i)/s)),o.push(h)}i=s,e=0,r="",n=o}return av(this.element,n,this.preStyleProps,this.postStyleProps,i,e,r,!0)}}function LT(t,n=3){const e=Math.pow(10,n-1);return Math.round(t*e)/e}class dv{}const I8=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class O8 extends dv{normalizePropertyName(n,e){return rv(n)}normalizeStyleValue(n,e,i,r){let o="";const s=i.toString().trim();if(I8.has(e)&&0!==i&&"0"!==i)if("number"==typeof i)o="px";else{const a=i.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&0==a[1].length&&r.push(function x5(t,n){return new A(3005,!1)}())}return s+o}}function BT(t,n,e,i,r,o,s,a,l,c,d,u,h){return{type:0,element:t,triggerName:n,isRemovalTransition:r,fromState:e,fromStyles:o,toState:i,toStyles:s,timelines:a,queriedElements:l,preStyleProps:c,postStyleProps:d,totalTime:u,errors:h}}const uv={};class VT{constructor(n,e,i){this._triggerName=n,this.ast=e,this._stateStyles=i}match(n,e,i,r){return function R8(t,n,e,i,r){return t.some(o=>o(n,e,i,r))}(this.ast.matchers,n,e,i,r)}buildStyles(n,e,i){let r=this._stateStyles.get("*");return void 0!==n&&(r=this._stateStyles.get(n?.toString())||r),r?r.buildStyles(e,i):new Map}build(n,e,i,r,o,s,a,l,c,d){const u=[],h=this.ast.options&&this.ast.options.params||uv,p=this.buildStyles(i,a&&a.params||uv,u),g=l&&l.params||uv,b=this.buildStyles(r,g,u),v=new Set,w=new Map,C=new Map,F="void"===r,ye={params:F8(g,h),delay:this.ast.options?.delay},Te=d?[]:lv(n,e,this.ast.animation,o,s,p,b,ye,c,u);let It=0;if(Te.forEach(so=>{It=Math.max(so.duration+so.delay,It)}),u.length)return BT(e,this._triggerName,i,r,F,p,b,[],[],w,C,It,u);Te.forEach(so=>{const ao=so.element,kN=ei(w,ao,new Set);so.preStyleProps.forEach(Fs=>kN.add(Fs));const Jd=ei(C,ao,new Set);so.postStyleProps.forEach(Fs=>Jd.add(Fs)),ao!==e&&v.add(ao)});const Si=Uh(v.values());return BT(e,this._triggerName,i,r,F,p,b,Te,Si,w,C,It)}}function F8(t,n){const e=Dc(n);for(const i in t)t.hasOwnProperty(i)&&null!=t[i]&&(e[i]=t[i]);return e}class P8{constructor(n,e,i){this.styles=n,this.defaultParams=e,this.normalizer=i}buildStyles(n,e){const i=new Map,r=Dc(this.defaultParams);return Object.keys(n).forEach(o=>{const s=n[o];null!==s&&(r[o]=s)}),this.styles.styles.forEach(o=>{"string"!=typeof o&&o.forEach((s,a)=>{s&&(s=Sc(s,r,e));const l=this.normalizer.normalizePropertyName(a,e);s=this.normalizer.normalizeStyleValue(a,l,s,e),i.set(a,s)})}),i}}class L8{constructor(n,e,i){this.name=n,this.ast=e,this._normalizer=i,this.transitionFactories=[],this.states=new Map,e.states.forEach(r=>{this.states.set(r.name,new P8(r.style,r.options&&r.options.params||{},i))}),jT(this.states,"true","1"),jT(this.states,"false","0"),e.transitions.forEach(r=>{this.transitionFactories.push(new VT(n,r,this.states))}),this.fallbackTransition=function B8(t,n,e){return new VT(t,{type:1,animation:{type:2,steps:[],options:null},matchers:[(s,a)=>!0],options:null,queryCount:0,depCount:0},n)}(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,e,i,r){return this.transitionFactories.find(s=>s.match(n,e,i,r))||null}matchStyles(n,e,i){return this.fallbackTransition.buildStyles(n,e,i)}}function jT(t,n,e){t.has(n)?t.has(e)||t.set(e,t.get(n)):t.has(e)&&t.set(n,t.get(e))}const V8=new Zh;class j8{constructor(n,e,i){this.bodyNode=n,this._driver=e,this._normalizer=i,this._animations=new Map,this._playersById=new Map,this.players=[]}register(n,e){const i=[],r=[],o=ov(this._driver,e,i,r);if(i.length)throw function j5(t){return new A(3503,!1)}();this._animations.set(n,o)}_buildPlayer(n,e,i){const r=n.element,o=bT(0,this._normalizer,0,n.keyframes,e,i);return this._driver.animate(r,o,n.duration,n.delay,n.easing,[],!0)}create(n,e,i={}){const r=[],o=this._animations.get(n);let s;const a=new Map;if(o?(s=lv(this._driver,e,o,ev,Vh,new Map,new Map,i,V8,r),s.forEach(d=>{const u=ei(a,d.element,new Map);d.postStyleProps.forEach(h=>u.set(h,null))})):(r.push(function H5(){return new A(3300,!1)}()),s=[]),r.length)throw function z5(t){return new A(3504,!1)}();a.forEach((d,u)=>{d.forEach((h,f)=>{d.set(f,this._driver.computeStyle(u,f,Vr))})});const c=Do(s.map(d=>{const u=a.get(d.element);return this._buildPlayer(d,new Map,u)}));return this._playersById.set(n,c),c.onDestroy(()=>this.destroy(n)),this.players.push(c),c}destroy(n){const e=this._getPlayer(n);e.destroy(),this._playersById.delete(n);const i=this.players.indexOf(e);i>=0&&this.players.splice(i,1)}_getPlayer(n){const e=this._playersById.get(n);if(!e)throw function U5(t){return new A(3301,!1)}();return e}listen(n,e,i,r){const o=Kb(e,"","","");return Yb(this._getPlayer(n),i,o,r),()=>{}}command(n,e,i,r){if("register"==i)return void this.register(n,r[0]);if("create"==i)return void this.create(n,e,r[0]||{});const o=this._getPlayer(n);switch(i){case"play":o.play();break;case"pause":o.pause();break;case"reset":o.reset();break;case"restart":o.restart();break;case"finish":o.finish();break;case"init":o.init();break;case"setPosition":o.setPosition(parseFloat(r[0]));break;case"destroy":this.destroy(n)}}}const HT="ng-animate-queued",hv="ng-animate-disabled",G8=[],zT={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},W8={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},yi="__ng_removed";class fv{get params(){return this.options.params}constructor(n,e=""){this.namespaceId=e;const i=n&&n.hasOwnProperty("value");if(this.value=function K8(t){return t??null}(i?n.value:n),i){const o=Dc(n);delete o.value,this.options=o}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){const e=n.params;if(e){const i=this.options.params;Object.keys(e).forEach(r=>{null==i[r]&&(i[r]=e[r])})}}}const kc="void",mv=new fv(kc);class q8{constructor(n,e,i){this.id=n,this.hostElement=e,this._engine=i,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+n,wi(e,this._hostClassName)}listen(n,e,i,r){if(!this._triggers.has(e))throw function $5(t,n){return new A(3302,!1)}();if(null==i||0==i.length)throw function G5(t){return new A(3303,!1)}();if(!function X8(t){return"start"==t||"done"==t}(i))throw function W5(t,n){return new A(3400,!1)}();const o=ei(this._elementListeners,n,[]),s={name:e,phase:i,callback:r};o.push(s);const a=ei(this._engine.statesByElement,n,new Map);return a.has(e)||(wi(n,jh),wi(n,jh+"-"+e),a.set(e,mv)),()=>{this._engine.afterFlush(()=>{const l=o.indexOf(s);l>=0&&o.splice(l,1),this._triggers.has(e)||a.delete(e)})}}register(n,e){return!this._triggers.has(n)&&(this._triggers.set(n,e),!0)}_getTrigger(n){const e=this._triggers.get(n);if(!e)throw function q5(t){return new A(3401,!1)}();return e}trigger(n,e,i,r=!0){const o=this._getTrigger(e),s=new pv(this.id,e,n);let a=this._engine.statesByElement.get(n);a||(wi(n,jh),wi(n,jh+"-"+e),this._engine.statesByElement.set(n,a=new Map));let l=a.get(e);const c=new fv(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&l&&c.absorbOptions(l.options),a.set(e,c),l||(l=mv),c.value!==kc&&l.value===c.value){if(!function e6(t,n){const e=Object.keys(t),i=Object.keys(n);if(e.length!=i.length)return!1;for(let r=0;r{us(n,b),ar(n,v)})}return}const h=ei(this._engine.playersByElement,n,[]);h.forEach(g=>{g.namespaceId==this.id&&g.triggerName==e&&g.queued&&g.destroy()});let f=o.matchTransition(l.value,c.value,n,c.params),p=!1;if(!f){if(!r)return;f=o.fallbackTransition,p=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:e,transition:f,fromState:l,toState:c,player:s,isFallbackTransition:p}),p||(wi(n,HT),s.onStart(()=>{Aa(n,HT)})),s.onDone(()=>{let g=this.players.indexOf(s);g>=0&&this.players.splice(g,1);const b=this._engine.playersByElement.get(n);if(b){let v=b.indexOf(s);v>=0&&b.splice(v,1)}}),this.players.push(s),h.push(s),s}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(e=>e.delete(n)),this._elementListeners.forEach((e,i)=>{this._elementListeners.set(i,e.filter(r=>r.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);const e=this._engine.playersByElement.get(n);e&&(e.forEach(i=>i.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,e){const i=this._engine.driver.query(n,Hh,!0);i.forEach(r=>{if(r[yi])return;const o=this._engine.fetchNamespacesByElement(r);o.size?o.forEach(s=>s.triggerLeaveAnimation(r,e,!1,!0)):this.clearElementCache(r)}),this._engine.afterFlushAnimationsDone(()=>i.forEach(r=>this.clearElementCache(r)))}triggerLeaveAnimation(n,e,i,r){const o=this._engine.statesByElement.get(n),s=new Map;if(o){const a=[];if(o.forEach((l,c)=>{if(s.set(c,l.value),this._triggers.has(c)){const d=this.trigger(n,c,kc,r);d&&a.push(d)}}),a.length)return this._engine.markElementAsRemoved(this.id,n,!0,e,s),i&&Do(a).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){const e=this._elementListeners.get(n),i=this._engine.statesByElement.get(n);if(e&&i){const r=new Set;e.forEach(o=>{const s=o.name;if(r.has(s))return;r.add(s);const l=this._triggers.get(s).fallbackTransition,c=i.get(s)||mv,d=new fv(kc),u=new pv(this.id,s,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:s,transition:l,fromState:c,toState:d,player:u,isFallbackTransition:!0})})}}removeNode(n,e){const i=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,e),this.triggerLeaveAnimation(n,e,!0))return;let r=!1;if(i.totalAnimations){const o=i.players.length?i.playersByQueriedElement.get(n):[];if(o&&o.length)r=!0;else{let s=n;for(;s=s.parentNode;)if(i.statesByElement.get(s)){r=!0;break}}}if(this.prepareLeaveAnimationListeners(n),r)i.markElementAsRemoved(this.id,n,!1,e);else{const o=n[yi];(!o||o===zT)&&(i.afterFlush(()=>this.clearElementCache(n)),i.destroyInnerAnimations(n),i._onRemovalComplete(n,e))}}insertNode(n,e){wi(n,this._hostClassName)}drainQueuedTransitions(n){const e=[];return this._queue.forEach(i=>{const r=i.player;if(r.destroyed)return;const o=i.element,s=this._elementListeners.get(o);s&&s.forEach(a=>{if(a.name==i.triggerName){const l=Kb(o,i.triggerName,i.fromState.value,i.toState.value);l._data=n,Yb(i.player,a.phase,l,a.callback)}}),r.markedForDestroy?this._engine.afterFlush(()=>{r.destroy()}):e.push(i)}),this._queue=[],e.sort((i,r)=>{const o=i.transition.ast.depCount,s=r.transition.ast.depCount;return 0==o||0==s?o-s:this._engine.driver.containsElement(i.element,r.element)?1:-1})}destroy(n){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}elementContainsData(n){let e=!1;return this._elementListeners.has(n)&&(e=!0),e=!!this._queue.find(i=>i.element===n)||e,e}}class Y8{_onRemovalComplete(n,e){this.onRemovalComplete(n,e)}constructor(n,e,i){this.bodyNode=n,this.driver=e,this._normalizer=i,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(r,o)=>{}}get queuedPlayers(){const n=[];return this._namespaceList.forEach(e=>{e.players.forEach(i=>{i.queued&&n.push(i)})}),n}createNamespace(n,e){const i=new q8(n,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(i,e):(this.newHostElements.set(e,i),this.collectEnterElement(e)),this._namespaceLookup[n]=i}_balanceNamespaceList(n,e){const i=this._namespaceList,r=this.namespacesByHostElement;if(i.length-1>=0){let s=!1,a=this.driver.getParentElement(e);for(;a;){const l=r.get(a);if(l){const c=i.indexOf(l);i.splice(c+1,0,n),s=!0;break}a=this.driver.getParentElement(a)}s||i.unshift(n)}else i.push(n);return r.set(e,n),n}register(n,e){let i=this._namespaceLookup[n];return i||(i=this.createNamespace(n,e)),i}registerTrigger(n,e,i){let r=this._namespaceLookup[n];r&&r.register(e,i)&&this.totalAnimations++}destroy(n,e){if(!n)return;const i=this._fetchNamespace(n);this.afterFlush(()=>{this.namespacesByHostElement.delete(i.hostElement),delete this._namespaceLookup[n];const r=this._namespaceList.indexOf(i);r>=0&&this._namespaceList.splice(r,1)}),this.afterFlushAnimationsDone(()=>i.destroy(e))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){const e=new Set,i=this.statesByElement.get(n);if(i)for(let r of i.values())if(r.namespaceId){const o=this._fetchNamespace(r.namespaceId);o&&e.add(o)}return e}trigger(n,e,i,r){if(Qh(e)){const o=this._fetchNamespace(n);if(o)return o.trigger(e,i,r),!0}return!1}insertNode(n,e,i,r){if(!Qh(e))return;const o=e[yi];if(o&&o.setForRemoval){o.setForRemoval=!1,o.setForMove=!0;const s=this.collectedLeaveElements.indexOf(e);s>=0&&this.collectedLeaveElements.splice(s,1)}if(n){const s=this._fetchNamespace(n);s&&s.insertNode(e,i)}r&&this.collectEnterElement(e)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,e){e?this.disabledNodes.has(n)||(this.disabledNodes.add(n),wi(n,hv)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),Aa(n,hv))}removeNode(n,e,i,r){if(Qh(e)){const o=n?this._fetchNamespace(n):null;if(o?o.removeNode(e,r):this.markElementAsRemoved(n,e,!1,r),i){const s=this.namespacesByHostElement.get(e);s&&s.id!==n&&s.removeNode(e,r)}}else this._onRemovalComplete(e,r)}markElementAsRemoved(n,e,i,r,o){this.collectedLeaveElements.push(e),e[yi]={namespaceId:n,setForRemoval:r,hasAnimation:i,removedBeforeQueried:!1,previousTriggersValues:o}}listen(n,e,i,r,o){return Qh(e)?this._fetchNamespace(n).listen(e,i,r,o):()=>{}}_buildInstruction(n,e,i,r,o){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,i,r,n.fromState.options,n.toState.options,e,o)}destroyInnerAnimations(n){let e=this.driver.query(n,Hh,!0);e.forEach(i=>this.destroyActiveAnimationsForElement(i)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(n,tv,!0),e.forEach(i=>this.finishActiveQueriedAnimationOnElement(i)))}destroyActiveAnimationsForElement(n){const e=this.playersByElement.get(n);e&&e.forEach(i=>{i.queued?i.markedForDestroy=!0:i.destroy()})}finishActiveQueriedAnimationOnElement(n){const e=this.playersByQueriedElement.get(n);e&&e.forEach(i=>i.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return Do(this.players).onDone(()=>n());n()})}processLeaveNode(n){const e=n[yi];if(e&&e.setForRemoval){if(n[yi]=zT,e.namespaceId){this.destroyInnerAnimations(n);const i=this._fetchNamespace(e.namespaceId);i&&i.clearElementCache(n)}this._onRemovalComplete(n,e.setForRemoval)}n.classList?.contains(hv)&&this.markElementAsDisabled(n,!1),this.driver.query(n,".ng-animate-disabled",!0).forEach(i=>{this.markElementAsDisabled(i,!1)})}flush(n=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((i,r)=>this._balanceNamespaceList(i,r)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let i=0;ii()),this._flushFns=[],this._whenQuietFns.length){const i=this._whenQuietFns;this._whenQuietFns=[],e.length?Do(e).onDone(()=>{i.forEach(r=>r())}):i.forEach(r=>r())}}reportError(n){throw function Y5(t){return new A(3402,!1)}()}_flushAnimations(n,e){const i=new Zh,r=[],o=new Map,s=[],a=new Map,l=new Map,c=new Map,d=new Set;this.disabledNodes.forEach(ne=>{d.add(ne);const ae=this.driver.query(ne,".ng-animate-queued",!0);for(let ve=0;ve{const ve=ev+g++;p.set(ae,ve),ne.forEach(qe=>wi(qe,ve))});const b=[],v=new Set,w=new Set;for(let ne=0;nev.add(qe)):w.add(ae))}const C=new Map,F=GT(h,Array.from(v));F.forEach((ne,ae)=>{const ve=Vh+g++;C.set(ae,ve),ne.forEach(qe=>wi(qe,ve))}),n.push(()=>{f.forEach((ne,ae)=>{const ve=p.get(ae);ne.forEach(qe=>Aa(qe,ve))}),F.forEach((ne,ae)=>{const ve=C.get(ae);ne.forEach(qe=>Aa(qe,ve))}),b.forEach(ne=>{this.processLeaveNode(ne)})});const ye=[],Te=[];for(let ne=this._namespaceList.length-1;ne>=0;ne--)this._namespaceList[ne].drainQueuedTransitions(e).forEach(ve=>{const qe=ve.player,tn=ve.element;if(ye.push(qe),this.collectedEnterElements.length){const wn=tn[yi];if(wn&&wn.setForMove){if(wn.previousTriggersValues&&wn.previousTriggersValues.has(ve.triggerName)){const Ps=wn.previousTriggersValues.get(ve.triggerName),ki=this.statesByElement.get(ve.element);if(ki&&ki.has(ve.triggerName)){const Fp=ki.get(ve.triggerName);Fp.value=Ps,ki.set(ve.triggerName,Fp)}}return void qe.destroy()}}const wr=!u||!this.driver.containsElement(u,tn),ci=C.get(tn),$o=p.get(tn),Et=this._buildInstruction(ve,i,$o,ci,wr);if(Et.errors&&Et.errors.length)return void Te.push(Et);if(wr)return qe.onStart(()=>us(tn,Et.fromStyles)),qe.onDestroy(()=>ar(tn,Et.toStyles)),void r.push(qe);if(ve.isFallbackTransition)return qe.onStart(()=>us(tn,Et.fromStyles)),qe.onDestroy(()=>ar(tn,Et.toStyles)),void r.push(qe);const AN=[];Et.timelines.forEach(wn=>{wn.stretchStartingKeyframe=!0,this.disabledNodes.has(wn.element)||AN.push(wn)}),Et.timelines=AN,i.append(tn,Et.timelines),s.push({instruction:Et,player:qe,element:tn}),Et.queriedElements.forEach(wn=>ei(a,wn,[]).push(qe)),Et.preStyleProps.forEach((wn,Ps)=>{if(wn.size){let ki=l.get(Ps);ki||l.set(Ps,ki=new Set),wn.forEach((Fp,Zw)=>ki.add(Zw))}}),Et.postStyleProps.forEach((wn,Ps)=>{let ki=c.get(Ps);ki||c.set(Ps,ki=new Set),wn.forEach((Fp,Zw)=>ki.add(Zw))})});if(Te.length){const ne=[];Te.forEach(ae=>{ne.push(function Z5(t,n){return new A(3505,!1)}())}),ye.forEach(ae=>ae.destroy()),this.reportError(ne)}const It=new Map,Si=new Map;s.forEach(ne=>{const ae=ne.element;i.has(ae)&&(Si.set(ae,ae),this._beforeAnimationBuild(ne.player.namespaceId,ne.instruction,It))}),r.forEach(ne=>{const ae=ne.element;this._getPreviousPlayers(ae,!1,ne.namespaceId,ne.triggerName,null).forEach(qe=>{ei(It,ae,[]).push(qe),qe.destroy()})});const so=b.filter(ne=>qT(ne,l,c)),ao=new Map;$T(ao,this.driver,w,c,Vr).forEach(ne=>{qT(ne,l,c)&&so.push(ne)});const Jd=new Map;f.forEach((ne,ae)=>{$T(Jd,this.driver,new Set(ne),l,Wb)}),so.forEach(ne=>{const ae=ao.get(ne),ve=Jd.get(ne);ao.set(ne,new Map([...Array.from(ae?.entries()??[]),...Array.from(ve?.entries()??[])]))});const Fs=[],MN=[],TN={};s.forEach(ne=>{const{element:ae,player:ve,instruction:qe}=ne;if(i.has(ae)){if(d.has(ae))return ve.onDestroy(()=>ar(ae,qe.toStyles)),ve.disabled=!0,ve.overrideTotalTime(qe.totalTime),void r.push(ve);let tn=TN;if(Si.size>1){let ci=ae;const $o=[];for(;ci=ci.parentNode;){const Et=Si.get(ci);if(Et){tn=Et;break}$o.push(ci)}$o.forEach(Et=>Si.set(Et,tn))}const wr=this._buildAnimation(ve.namespaceId,qe,It,o,Jd,ao);if(ve.setRealPlayer(wr),tn===TN)Fs.push(ve);else{const ci=this.playersByElement.get(tn);ci&&ci.length&&(ve.parentPlayer=Do(ci)),r.push(ve)}}else us(ae,qe.fromStyles),ve.onDestroy(()=>ar(ae,qe.toStyles)),MN.push(ve),d.has(ae)&&r.push(ve)}),MN.forEach(ne=>{const ae=o.get(ne.element);if(ae&&ae.length){const ve=Do(ae);ne.setRealPlayer(ve)}}),r.forEach(ne=>{ne.parentPlayer?ne.syncPlayerEvents(ne.parentPlayer):ne.destroy()});for(let ne=0;ne!wr.destroyed);tn.length?Q8(this,ae,tn):this.processLeaveNode(ae)}return b.length=0,Fs.forEach(ne=>{this.players.push(ne),ne.onDone(()=>{ne.destroy();const ae=this.players.indexOf(ne);this.players.splice(ae,1)}),ne.play()}),Fs}elementContainsData(n,e){let i=!1;const r=e[yi];return r&&r.setForRemoval&&(i=!0),this.playersByElement.has(e)&&(i=!0),this.playersByQueriedElement.has(e)&&(i=!0),this.statesByElement.has(e)&&(i=!0),this._fetchNamespace(n).elementContainsData(e)||i}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,e,i,r,o){let s=[];if(e){const a=this.playersByQueriedElement.get(n);a&&(s=a)}else{const a=this.playersByElement.get(n);if(a){const l=!o||o==kc;a.forEach(c=>{c.queued||!l&&c.triggerName!=r||s.push(c)})}}return(i||r)&&(s=s.filter(a=>!(i&&i!=a.namespaceId||r&&r!=a.triggerName))),s}_beforeAnimationBuild(n,e,i){const o=e.element,s=e.isRemovalTransition?void 0:n,a=e.isRemovalTransition?void 0:e.triggerName;for(const l of e.timelines){const c=l.element,d=c!==o,u=ei(i,c,[]);this._getPreviousPlayers(c,d,s,a,e.toState).forEach(f=>{const p=f.getRealPlayer();p.beforeDestroy&&p.beforeDestroy(),f.destroy(),u.push(f)})}us(o,e.fromStyles)}_buildAnimation(n,e,i,r,o,s){const a=e.triggerName,l=e.element,c=[],d=new Set,u=new Set,h=e.timelines.map(p=>{const g=p.element;d.add(g);const b=g[yi];if(b&&b.removedBeforeQueried)return new Cc(p.duration,p.delay);const v=g!==l,w=function J8(t){const n=[];return WT(t,n),n}((i.get(g)||G8).map(It=>It.getRealPlayer())).filter(It=>!!It.element&&It.element===g),C=o.get(g),F=s.get(g),ye=bT(0,this._normalizer,0,p.keyframes,C,F),Te=this._buildPlayer(p,ye,w);if(p.subTimeline&&r&&u.add(g),v){const It=new pv(n,a,g);It.setRealPlayer(Te),c.push(It)}return Te});c.forEach(p=>{ei(this.playersByQueriedElement,p.element,[]).push(p),p.onDone(()=>function Z8(t,n,e){let i=t.get(n);if(i){if(i.length){const r=i.indexOf(e);i.splice(r,1)}0==i.length&&t.delete(n)}return i}(this.playersByQueriedElement,p.element,p))}),d.forEach(p=>wi(p,kT));const f=Do(h);return f.onDestroy(()=>{d.forEach(p=>Aa(p,kT)),ar(l,e.toStyles)}),u.forEach(p=>{ei(r,p,[]).push(f)}),f}_buildPlayer(n,e,i){return e.length>0?this.driver.animate(n.element,e,n.duration,n.delay,n.easing,i):new Cc(n.duration,n.delay)}}class pv{constructor(n,e,i){this.namespaceId=n,this.triggerName=e,this.element=i,this._player=new Cc,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.parentPlayer=null,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((e,i)=>{e.forEach(r=>Yb(n,i,void 0,r))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){const e=this._player;e.triggerCallback&&n.onStart(()=>e.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,e){ei(this._queuedCallbacks,n,[]).push(e)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){const e=this._player;e.triggerCallback&&e.triggerCallback(n)}}function Qh(t){return t&&1===t.nodeType}function UT(t,n){const e=t.style.display;return t.style.display=n??"none",e}function $T(t,n,e,i,r){const o=[];e.forEach(l=>o.push(UT(l)));const s=[];i.forEach((l,c)=>{const d=new Map;l.forEach(u=>{const h=n.computeStyle(c,u,r);d.set(u,h),(!h||0==h.length)&&(c[yi]=W8,s.push(c))}),t.set(c,d)});let a=0;return e.forEach(l=>UT(l,o[a++])),s}function GT(t,n){const e=new Map;if(t.forEach(a=>e.set(a,[])),0==n.length)return e;const i=1,r=new Set(n),o=new Map;function s(a){if(!a)return i;let l=o.get(a);if(l)return l;const c=a.parentNode;return l=e.has(c)?c:r.has(c)?i:s(c),o.set(a,l),l}return n.forEach(a=>{const l=s(a);l!==i&&e.get(l).push(a)}),e}function wi(t,n){t.classList?.add(n)}function Aa(t,n){t.classList?.remove(n)}function Q8(t,n,e){Do(e).onDone(()=>t.processLeaveNode(n))}function WT(t,n){for(let e=0;er.add(o)):n.set(t,i),e.delete(t),!0}class Jh{constructor(n,e,i){this.bodyNode=n,this._driver=e,this._normalizer=i,this._triggerCache={},this.onRemovalComplete=(r,o)=>{},this._transitionEngine=new Y8(n,e,i),this._timelineEngine=new j8(n,e,i),this._transitionEngine.onRemovalComplete=(r,o)=>this.onRemovalComplete(r,o)}registerTrigger(n,e,i,r,o){const s=n+"-"+r;let a=this._triggerCache[s];if(!a){const l=[],c=[],d=ov(this._driver,o,l,c);if(l.length)throw function B5(t,n){return new A(3404,!1)}();a=function N8(t,n,e){return new L8(t,n,e)}(r,d,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(e,r,a)}register(n,e){this._transitionEngine.register(n,e)}destroy(n,e){this._transitionEngine.destroy(n,e)}onInsert(n,e,i,r){this._transitionEngine.insertNode(n,e,i,r)}onRemove(n,e,i,r){this._transitionEngine.removeNode(n,e,r||!1,i)}disableAnimations(n,e){this._transitionEngine.markElementAsDisabled(n,e)}process(n,e,i,r){if("@"==i.charAt(0)){const[o,s]=vT(i);this._timelineEngine.command(o,e,s,r)}else this._transitionEngine.trigger(n,e,i,r)}listen(n,e,i,r,o){if("@"==i.charAt(0)){const[s,a]=vT(i);return this._timelineEngine.listen(s,e,a,o)}return this._transitionEngine.listen(n,e,i,r,o)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}let n6=(()=>{class t{constructor(e,i,r){this._element=e,this._startStyles=i,this._endStyles=r,this._state=0;let o=t.initialStylesByElement.get(e);o||t.initialStylesByElement.set(e,o=new Map),this._initialStyles=o}start(){this._state<1&&(this._startStyles&&ar(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(ar(this._element,this._initialStyles),this._endStyles&&(ar(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(us(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(us(this._element,this._endStyles),this._endStyles=null),ar(this._element,this._initialStyles),this._state=3)}}return t.initialStylesByElement=new WeakMap,t})();function gv(t){let n=null;return t.forEach((e,i)=>{(function i6(t){return"display"===t||"position"===t})(i)&&(n=n||new Map,n.set(i,e))}),n}class YT{constructor(n,e,i,r){this.element=n,this.keyframes=e,this.options=i,this._specialStyles=r,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const n=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,n,this.options),this._finalKeyframe=n.length?n[n.length-1]:new Map,this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(n){const e=[];return n.forEach(i=>{e.push(Object.fromEntries(i))}),e}_triggerWebAnimation(n,e,i){return n.animate(this._convertKeyframesToObject(e),i)}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(n=>n()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=n*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((i,r)=>{"offset"!==r&&n.set(r,this._finished?i:RT(this.element,r))}),this.currentSnapshot=n}triggerCallback(n){const e="start"===n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class r6{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}matchesElement(n,e){return!1}containsElement(n,e){return CT(n,e)}getParentElement(n){return Qb(n)}query(n,e,i){return DT(n,e,i)}computeStyle(n,e,i){return window.getComputedStyle(n)[e]}animate(n,e,i,r,o,s=[]){const l={duration:i,delay:r,fill:0==r?"both":"forwards"};o&&(l.easing=o);const c=new Map,d=s.filter(f=>f instanceof YT);(function l8(t,n){return 0===t||0===n})(i,r)&&d.forEach(f=>{f.currentSnapshot.forEach((p,g)=>c.set(g,p))});let u=function r8(t){return t.length?t[0]instanceof Map?t:t.map(n=>MT(n)):[]}(e).map(f=>Eo(f));u=function c8(t,n,e){if(e.size&&n.length){let i=n[0],r=[];if(e.forEach((o,s)=>{i.has(s)||r.push(s),i.set(s,o)}),r.length)for(let o=1;os.set(a,RT(t,a)))}}return n}(n,u,c);const h=function t6(t,n){let e=null,i=null;return Array.isArray(n)&&n.length?(e=gv(n[0]),n.length>1&&(i=gv(n[n.length-1]))):n instanceof Map&&(e=gv(n)),e||i?new n6(t,e,i):null}(n,u);return new YT(n,u,l,h)}}let o6=(()=>{class t extends dT{constructor(e,i){super(),this._nextAnimationId=0,this._renderer=e.createRenderer(i.body,{id:"0",encapsulation:Mi.None,styles:[],data:{animation:[]}})}build(e){const i=this._nextAnimationId.toString();this._nextAnimationId++;const r=Array.isArray(e)?hT(e):e;return ZT(this._renderer,null,i,"register",[r]),new s6(i,this._renderer)}}return t.\u0275fac=function(e){return new(e||t)(_(ho),_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();class s6 extends g5{constructor(n,e){super(),this._id=n,this._renderer=e}create(n,e){return new a6(this._id,n,e||{},this._renderer)}}class a6{constructor(n,e,i,r){this.id=n,this.element=e,this._renderer=r,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",i)}_listen(n,e){return this._renderer.listen(this.element,`@@${this.id}:${n}`,e)}_command(n,...e){return ZT(this._renderer,this.element,this.id,n,e)}onDone(n){this._listen("done",n)}onStart(n){this._listen("start",n)}onDestroy(n){this._listen("destroy",n)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset"),this._started=!1}setPosition(n){this._command("setPosition",n)}getPosition(){return this._renderer.engine.players[+this.id]?.getPosition()??0}}function ZT(t,n,e,i,r){return t.setProperty(n,`@@${e}:${i}`,r)}const KT="@.disabled";let l6=(()=>{class t{constructor(e,i,r){this.delegate=e,this.engine=i,this._zone=r,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),i.onRemovalComplete=(o,s)=>{const a=s?.parentNode(o);a&&s.removeChild(a,o)}}createRenderer(e,i){const o=this.delegate.createRenderer(e,i);if(!(e&&i&&i.data&&i.data.animation)){let d=this._rendererCache.get(o);return d||(d=new XT("",o,this.engine,()=>this._rendererCache.delete(o)),this._rendererCache.set(o,d)),d}const s=i.id,a=i.id+"-"+this._currentId;this._currentId++,this.engine.register(a,e);const l=d=>{Array.isArray(d)?d.forEach(l):this.engine.registerTrigger(s,a,e,d.name,d)};return i.data.animation.forEach(l),new c6(this,a,o,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(e,i,r){e>=0&&ei(r)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(o=>{const[s,a]=o;s(a)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([i,r]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}return t.\u0275fac=function(e){return new(e||t)(_(ho),_(Jh),_(Y))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();class XT{constructor(n,e,i,r){this.namespaceId=n,this.delegate=e,this.engine=i,this._onDestroy=r,this.destroyNode=this.delegate.destroyNode?o=>e.destroyNode(o):null}get data(){return this.delegate.data}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy(),this._onDestroy?.()}createElement(n,e){return this.delegate.createElement(n,e)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,e){this.delegate.appendChild(n,e),this.engine.onInsert(this.namespaceId,e,n,!1)}insertBefore(n,e,i,r=!0){this.delegate.insertBefore(n,e,i),this.engine.onInsert(this.namespaceId,e,n,r)}removeChild(n,e,i){this.engine.onRemove(this.namespaceId,e,this.delegate,i)}selectRootElement(n,e){return this.delegate.selectRootElement(n,e)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,e,i,r){this.delegate.setAttribute(n,e,i,r)}removeAttribute(n,e,i){this.delegate.removeAttribute(n,e,i)}addClass(n,e){this.delegate.addClass(n,e)}removeClass(n,e){this.delegate.removeClass(n,e)}setStyle(n,e,i,r){this.delegate.setStyle(n,e,i,r)}removeStyle(n,e,i){this.delegate.removeStyle(n,e,i)}setProperty(n,e,i){"@"==e.charAt(0)&&e==KT?this.disableAnimations(n,!!i):this.delegate.setProperty(n,e,i)}setValue(n,e){this.delegate.setValue(n,e)}listen(n,e,i){return this.delegate.listen(n,e,i)}disableAnimations(n,e){this.engine.disableAnimations(n,e)}}class c6 extends XT{constructor(n,e,i,r,o){super(e,i,r,o),this.factory=n,this.namespaceId=e}setProperty(n,e,i){"@"==e.charAt(0)?"."==e.charAt(1)&&e==KT?this.disableAnimations(n,i=void 0===i||!!i):this.engine.process(this.namespaceId,n,e.slice(1),i):this.delegate.setProperty(n,e,i)}listen(n,e,i){if("@"==e.charAt(0)){const r=function d6(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(n);let o=e.slice(1),s="";return"@"!=o.charAt(0)&&([o,s]=function u6(t){const n=t.indexOf(".");return[t.substring(0,n),t.slice(n+1)]}(o)),this.engine.listen(this.namespaceId,r,o,s,a=>{this.factory.scheduleListenerCallback(a._data||-1,i,a)})}return this.delegate.listen(n,e,i)}}let h6=(()=>{class t extends Jh{constructor(e,i,r,o){super(e.body,i,r)}ngOnDestroy(){this.flush()}}return t.\u0275fac=function(e){return new(e||t)(_(ge),_(Jb),_(dv),_(as))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const QT=[{provide:dT,useClass:o6},{provide:dv,useFactory:function f6(){return new O8}},{provide:Jh,useClass:h6},{provide:ho,useFactory:function m6(t,n,e){return new l6(t,n,e)},deps:[Fh,Jh,Y]}],_v=[{provide:Jb,useFactory:()=>new r6},{provide:Jt,useValue:"BrowserAnimations"},...QT],JT=[{provide:Jb,useClass:ET},{provide:Jt,useValue:"NoopAnimations"},...QT];let p6=(()=>{class t{static withConfig(e){return{ngModule:t,providers:e.disableAnimations?JT:_v}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:_v,imports:[WM]}),t})();const bv={now:()=>(bv.delegate||Date).now(),delegate:void 0};class tf extends te{constructor(n=1/0,e=1/0,i=bv){super(),this._bufferSize=n,this._windowTime=e,this._timestampProvider=i,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=e===1/0,this._bufferSize=Math.max(1,n),this._windowTime=Math.max(1,e)}next(n){const{isStopped:e,_buffer:i,_infiniteTimeWindow:r,_timestampProvider:o,_windowTime:s}=this;e||(i.push(n),!r&&i.push(o.now()+s)),this._trimBuffer(),super.next(n)}_subscribe(n){this._throwIfClosed(),this._trimBuffer();const e=this._innerSubscribe(n),{_infiniteTimeWindow:i,_buffer:r}=this,o=r.slice();for(let s=0;s{class t{constructor(){this.bootstrap$=new tf(1)}get appBootstrapped$(){return this.bootstrap$.asObservable()}bootstrap(){this.bootstrap$.next(!0),this.bootstrap$.complete()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function g6(t,n){return t===n}function yv(t,n=g6){let e=null,i=null;function r(){return function _6(t,n,e){if(null===n||null===e||n.length!==e.length)return!1;const i=n.length;for(let r=0;r{class t{static set(e){this.value=e}static pop(){const e=this.value;return this.value={},e}}return t.value={},t})();const v6=new k("\u0275NGXS_STATE_FACTORY"),y6=new k("\u0275NGXS_STATE_CONTEXT_FACTORY");class Tt extends te{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const e=super._subscribe(n);return!e.closed&&n.next(this._value),e}getValue(){const{hasError:n,thrownError:e,_value:i}=this;if(n)throw e;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}}const{isArray:w6}=Array,{getPrototypeOf:x6,prototype:C6,keys:D6}=Object;function eA(t){if(1===t.length){const n=t[0];if(w6(n))return{args:n,keys:null};if(function E6(t){return t&&"object"==typeof t&&x6(t)===C6}(n)){const e=D6(n);return{args:e.map(i=>n[i]),keys:e}}}return{args:t,keys:null}}const{isArray:S6}=Array;function nf(t){return B(n=>function k6(t,n){return S6(n)?t(...n):t(n)}(t,n))}function tA(t,n){return t.reduce((e,i,r)=>(e[i]=n[r],e),{})}function Mc(...t){const n=_x(t),{args:e,keys:i}=eA(t),r=new xe(o=>{const{length:s}=e;if(!s)return void o.complete();const a=new Array(s);let l=s,c=s;for(let d=0;d{u||(u=!0,c--),a[d]=h},()=>l--,void 0,()=>{(!l||!u)&&(c||o.next(i?tA(i,a):a),o.complete())}))}});return n?r.pipe(nf(n)):r}function lr(t,n){const e=We(t)?t:()=>t,i=r=>r.error(e());return new xe(n?r=>n.schedule(i,0,r):i)}function Tc(t){return!!t&&(t instanceof xe||We(t.lift)&&We(t.subscribe))}function Ia(t,n,e){let i,r=!1;return t&&"object"==typeof t?({bufferSize:i=1/0,windowTime:n=1/0,refCount:r=!1,scheduler:e}=t):i=t??1/0,Ml({connector:()=>new tf(i,n,e),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:r})}function qt(t){return t<=0?()=>xn:gt((n,e)=>{let i=0;n.subscribe(ot(e,r=>{++i<=t&&(e.next(r),t<=i&&e.complete())}))})}function nA(t,n){return n?e=>e.pipe(nA((i,r)=>Xt(t(i,r)).pipe(B((o,s)=>n(i,o,r,s))))):gt((e,i)=>{let r=0,o=null,s=!1;e.subscribe(ot(i,a=>{o||(o=ot(i,void 0,()=>{o=null,s&&i.complete()}),Xt(t(a,r++)).subscribe(o))},()=>{s=!0,!o&&i.complete()}))})}function Oa(t){return gt((n,e)=>{let i=!1;n.subscribe(ot(e,r=>{i=!0,e.next(r)},()=>{i||e.next(t),e.complete()}))})}function ni(t){return gt((n,e)=>{let o,i=null,r=!1;i=n.subscribe(ot(e,void 0,void 0,s=>{o=Xt(t(s,ni(t)(n))),i?(i.unsubscribe(),i=null,o.subscribe(e)):r=!0})),r&&(i.unsubscribe(),i=null,o.subscribe(e))})}function ze(t){return gt((n,e)=>{Xt(t).subscribe(ot(e,()=>e.complete(),nu)),!e.closed&&n.subscribe(e)})}function rf(t,n=lo){return t=t??M6,gt((e,i)=>{let r,o=!0;e.subscribe(ot(i,s=>{const a=n(s);(o||!t(r,a))&&(o=!1,r=a,i.next(s))}))})}function M6(t,n){return t===n}function Ze(t,n,e){const i=We(t)||n||e?{next:t,error:n,complete:e}:t;return i?gt((r,o)=>{var s;null===(s=i.subscribe)||void 0===s||s.call(i);let a=!0;r.subscribe(ot(o,l=>{var c;null===(c=i.next)||void 0===c||c.call(i,l),o.next(l)},()=>{var l;a=!1,null===(l=i.complete)||void 0===l||l.call(i),o.complete()},l=>{var c;a=!1,null===(c=i.error)||void 0===c||c.call(i,l),o.error(l)},()=>{var l,c;a&&(null===(l=i.unsubscribe)||void 0===l||l.call(i)),null===(c=i.finalize)||void 0===c||c.call(i)}))}):lo}function sf(...t){return function T6(){return Ls(1)}()(yt(t,kl(t)))}function cr(...t){const n=kl(t);return gt((e,i)=>{(n?sf(t,e,n):sf(t,e)).subscribe(i)})}let iA=(()=>{class t{constructor(e,i){this._ngZone=e,this._platformId=i}enter(e){return gc(this._platformId)?this.runInsideAngular(e):this.runOutsideAngular(e)}leave(e){return this.runInsideAngular(e)}runInsideAngular(e){return Y.isInAngularZone()?e():this._ngZone.run(e)}runOutsideAngular(e){return Y.isInAngularZone()?this._ngZone.runOutsideAngular(e):e()}}return t.\u0275fac=function(e){return new(e||t)(_(Y),_(ss))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const rA=new k("ROOT_STATE_TOKEN"),oA=new k("FEATURE_STATE_TOKEN"),xv=new k("NGXS_PLUGINS"),Hr="NGXS_META",sA="NGXS_OPTIONS_META",Cv="NGXS_SELECTOR_META";let Ra=(()=>{class t{constructor(){this.defaultsState={},this.selectorOptions={injectContainerState:!0,suppressErrors:!0},this.compatibility={strictContentSecurityPolicy:!1},this.executionStrategy=iA}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();class B6{constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}}let V6=(()=>{class t{enter(e){return e()}leave(e){return e()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const aA=new k("USER_PROVIDED_NGXS_EXECUTION_STRATEGY"),j6=new k("NGXS_EXECUTION_STRATEGY",{providedIn:"root",factory:()=>{const t=R(Qg),n=t.get(aA);return t.get(n||(typeof ht.Zone<"u"?iA:V6))}});function Dv(t){if(!t.hasOwnProperty(Hr)){const n={name:null,actions:{},defaults:{},path:null,makeRootSelector:e=>e.getStateGetter(n.name),children:[]};Object.defineProperty(t,Hr,{value:n})}return fs(t)}function fs(t){return t[Hr]}function af(t){return t[Cv]}function So(t){return t.constructor&&t.constructor.type?t.constructor.type:t.type}const cA=(t,n,e)=>{t=Object.assign({},t);const i=n.split("."),r=i.length-1;return i.reduce((o,s,a)=>(o[s]=a===r?e:Array.isArray(o[s])?o[s].slice():Object.assign({},o[s]),o&&o[s]),t),t},Sv=(t,n)=>n.split(".").reduce((e,i)=>e&&e[i],t),kv=t=>t&&"object"==typeof t&&!Array.isArray(t),Mv=(t,...n)=>{if(!n.length)return t;const e=n.shift();if(kv(t)&&kv(e))for(const i in e)kv(e[i])?(t[i]||Object.assign(t,{[i]:{}}),Mv(t[i],e[i])):Object.assign(t,{[i]:e[i]});return Mv(t,...n)};function Y6(...t){return function Fa(t,n,e=X6){const i=function Q6(t){return t.reduce((n,e)=>(n[So(e)]=!0,n),{})}(t),r=n&&function J6(t){return t.reduce((n,e)=>(n[e]=!0,n),{})}(n);return function(o){return o.pipe(function Z6(t,n){return mt(e=>{const i=So(e.action);return t[i]&&(!n||n[e.status])})}(i,r),e())}}(t,["DISPATCHED"])}function X6(){return B(t=>t.action)}function Ac(t){return n=>new xe(e=>n.subscribe({next(i){t.leave(()=>e.next(i))},error(i){t.leave(()=>e.error(i))},complete(){t.leave(()=>e.complete())}}))}let lf=(()=>{class t{constructor(e){this._executionStrategy=e}enter(e){return this._executionStrategy.enter(e)}leave(e){return this._executionStrategy.leave(e)}}return t.\u0275fac=function(e){return new(e||t)(_(j6))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function dA(t){const n=[];let e=!1;return function(...r){if(e)n.unshift(r);else{for(e=!0,t(...r);n.length>0;){const o=n.pop();o&&t(...o)}e=!1}}}class eG extends te{constructor(){super(...arguments),this.next=dA(n=>super.next(n))}}class tG extends Tt{constructor(){super(...arguments),this.next=dA(n=>super.next(n))}}let cf=(()=>{class t extends eG{ngOnDestroy(){this.complete()}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),nG=(()=>{class t extends xe{constructor(e,i){const r=e.pipe(Ac(i),Ml());super(o=>{const s=r.subscribe({next:a=>o.next(a),error:a=>o.error(a),complete:()=>o.complete()});o.add(s)})}}return t.\u0275fac=function(e){return new(e||t)(_(cf),_(lf))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const uA=t=>(...n)=>t.shift()(...n,(...i)=>uA(t)(...i));let hA=(()=>{class t{constructor(e){this._injector=e,this._errorHandler=null}reportErrorSafely(e){null===this._errorHandler&&(this._errorHandler=this._injector.get(Qi));try{this._errorHandler.handleError(e)}catch{}}}return t.\u0275fac=function(e){return new(e||t)(_(kt))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),df=(()=>{class t extends tG{constructor(){super({})}ngOnDestroy(){this.complete()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Tv=(()=>{class t{constructor(e,i){this._parentManager=e,this._pluginHandlers=i,this.plugins=[],this.registerHandlers()}get rootPlugins(){return this._parentManager&&this._parentManager.plugins||this.plugins}registerHandlers(){const e=this.getPluginHandlers();this.rootPlugins.push(...e)}getPluginHandlers(){return(this._pluginHandlers||[]).map(i=>i.handle?i.handle.bind(i):i)}}return t.\u0275fac=function(e){return new(e||t)(_(t,12),_(xv,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Av=(()=>{class t extends te{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),fA=(()=>{class t{constructor(e,i,r,o,s,a){this._actions=e,this._actionResults=i,this._pluginManager=r,this._stateStream=o,this._ngxsExecutionStrategy=s,this._internalErrorReporter=a}dispatch(e){return this._ngxsExecutionStrategy.enter(()=>this.dispatchByEvents(e)).pipe(function iG(t,n){return e=>{let i=!1;return e.subscribe({error:r=>{n.enter(()=>Promise.resolve().then(()=>{i||n.leave(()=>t.reportErrorSafely(r))}))}}),new xe(r=>(i=!0,e.pipe(Ac(n)).subscribe(r)))}}(this._internalErrorReporter,this._ngxsExecutionStrategy))}dispatchByEvents(e){return Array.isArray(e)?0===e.length?j(this._stateStream.getValue()):Mc(e.map(i=>this.dispatchSingle(i))):this.dispatchSingle(e)}dispatchSingle(e){const i=this._stateStream.getValue();return uA([...this._pluginManager.plugins,(o,s)=>{o!==i&&this._stateStream.next(o);const a=this.getActionResultStream(s);return a.subscribe(l=>this._actions.next(l)),this._actions.next({action:s,status:"DISPATCHED"}),this.createDispatchObservable(a)}])(i,e).pipe(Ia())}getActionResultStream(e){return this._actionResults.pipe(mt(i=>i.action===e&&"DISPATCHED"!==i.status),qt(1),Ia())}createDispatchObservable(e){return e.pipe(nA(i=>{switch(i.status){case"SUCCESSFUL":return j(this._stateStream.getValue());case"ERRORED":return lr(i.error);default:return xn}})).pipe(Ia())}}return t.\u0275fac=function(e){return new(e||t)(_(cf),_(Av),_(Tv),_(df),_(lf),_(hA))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Pa=(()=>{class t{constructor(e,i,r){this._stateStream=e,this._dispatcher=i,this._config=r}getRootStateOperations(){return{getState:()=>this._stateStream.getValue(),setState:i=>this._stateStream.next(i),dispatch:i=>this._dispatcher.dispatch(i)}}setStateToTheCurrentWithNew(e){const i=this.getRootStateOperations(),r=i.getState();i.setState(Object.assign(Object.assign({},r),e.defaults))}}return t.\u0275fac=function(e){return new(e||t)(_(df),_(fA),_(Ra))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),uf=(()=>{class t{constructor(e){this._internalStateOperations=e}createStateContext(e){const i=this._internalStateOperations.getRootStateOperations();function r(l){return Sv(l,e.path)}function o(l,c){const d=cA(l,e.path,c);return i.setState(d),d}function s(l,c){return o(l,c(r(l)))}return{getState:()=>r(i.getState()),patchState(l){const c=i.getState(),d=function rG(t){return n=>{const e=Object.assign({},n);for(const i in t)e[i]=t[i];return e}}(l);return s(c,d)},setState(l){const c=i.getState();return function a(l){return"function"==typeof l}(l)?s(c,l):o(c,l)},dispatch:l=>i.dispatch(l)}}}return t.\u0275fac=function(e){return new(e||t)(_(Pa))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();new RegExp("^[a-zA-Z0-9_]+$");class pA{static get type(){return"@@INIT"}}class gA{constructor(n){this.addedStates=n}static get type(){return"@@UPDATE_STATE"}}new k("NGXS_DEVELOPMENT_OPTIONS",{providedIn:"root",factory:()=>({warnOnUnhandledActions:!0})});let Na=(()=>{class t{constructor(e,i,r,o,s,a,l){this._injector=e,this._config=i,this._parentFactory=r,this._actions=o,this._actionResults=s,this._stateContextFactory=a,this._initialState=l,this._actionsSubscription=null,this._states=[],this._statesByName={},this._statePaths={},this.getRuntimeSelectorContext=yv(()=>{const c=this;function d(h){const f=c.statePaths[h];return f?function lA(t,n){return n&&n.compatibility&&n.compatibility.strictContentSecurityPolicy?function H6(t){const n=t.slice();return e=>n.reduce((i,r)=>i&&i[r],e)}(t):function z6(t){const n=t;let e="store."+n[0],i=0;const r=n.length;let o=e;for(;++i(f||(f=d(h)),f?f(...p):void 0))},getSelectorOptions:h=>Object.assign(Object.assign({},c._config.selectorOptions),h||{})}})}get states(){return this._parentFactory?this._parentFactory.states:this._states}get statesByName(){return this._parentFactory?this._parentFactory.statesByName:this._statesByName}get statePaths(){return this._parentFactory?this._parentFactory.statePaths:this._statePaths}static cloneDefaults(e){let i={};return i=Array.isArray(e)?e.slice():function q6(t){return"object"==typeof t&&null!==t||"function"==typeof t}(e)?Object.assign({},e):void 0===e?{}:e,i}ngOnDestroy(){this._actionsSubscription.unsubscribe()}add(e){const{newStates:i}=this.addToStatesMap(e);if(!i.length)return[];const r=function U6(t){const n=e=>t.find(r=>r===e)[Hr].name;return t.reduce((e,i)=>{const{name:r,children:o}=i[Hr];return e[r]=(o||[]).map(n),e},{})}(i),o=function W6(t){const n=[],e={},i=(r,o=[])=>{Array.isArray(o)||(o=[]),o.push(r),e[r]=!0,t[r].forEach(s=>{e[s]||i(s,o.slice(0))}),n.indexOf(r)<0&&n.push(r)};return Object.keys(t).forEach(r=>i(r)),n.reverse()}(r),s=function G6(t,n={}){const e=(i,r)=>{for(const o in i)if(i.hasOwnProperty(o)&&i[o].indexOf(r)>=0){const s=e(i,o);return null!==s?`${s}.${o}`:o}return null};for(const i in t)if(t.hasOwnProperty(i)){const r=e(t,i);n[i]=r?`${r}.${i}`:i}return n}(r),a=function $6(t){return t.reduce((n,e)=>(n[e[Hr].name]=e,n),{})}(i),l=[];for(const c of o){const d=a[c],u=s[c],h=d[Hr];this.addRuntimeInfoToMeta(h,u);const f={name:c,path:u,isInitialised:!1,actions:h.actions,instance:this._injector.get(d),defaults:t.cloneDefaults(h.defaults)};this.hasBeenMountedAndBootstrapped(c,u)||l.push(f),this.states.push(f)}return l}addAndReturnDefaults(e){const r=this.add(e||[]);return{defaults:r.reduce((s,a)=>cA(s,a.path,a.defaults),{}),states:r}}connectActionHandlers(){if(null!==this._actionsSubscription)return;const e=new te;this._actionsSubscription=this._actions.pipe(mt(i=>"DISPATCHED"===i.status),Ot(i=>{e.next(i);const r=i.action;return this.invokeActions(e,r).pipe(B(()=>({action:r,status:"SUCCESSFUL"})),Oa({action:r,status:"CANCELED"}),ni(o=>j({action:r,status:"ERRORED",error:o})))})).subscribe(i=>this._actionResults.next(i))}invokeActions(e,i){const r=So(i),o=[];let s=!1;for(const a of this.states){const l=a.actions[r];if(l)for(const c of l){const d=this._stateContextFactory.createStateContext(a);try{let u=a.instance[c.fn](d,i);u instanceof Promise&&(u=yt(u)),Tc(u)?(u=u.pipe(Ot(h=>h instanceof Promise?yt(h):Tc(h)?h:j(h)),Oa({})),c.options.cancelUncompleted&&(u=u.pipe(ze(e.pipe(Y6(i)))))):u=j({}).pipe(Ia()),o.push(u)}catch(u){o.push(lr(u))}s=!0}}return o.length||o.push(j({})),Mc(o)}addToStatesMap(e){const i=[],r=this.statesByName;for(const o of e){const s=fs(o).name;!r[s]&&(i.push(o),r[s]=o)}return{newStates:i}}addRuntimeInfoToMeta(e,i){this.statePaths[e.name]=i,e.path=i}hasBeenMountedAndBootstrapped(e,i){const r=void 0!==Sv(this._initialState,i);return this.statesByName[e]&&r}}return t.\u0275fac=function(e){return new(e||t)(_(kt),_(Ra),_(t,12),_(cf),_(Av),_(uf),_(wv,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function _A(t){const n=af(t)||fs(t);return n&&n.makeRootSelector||(()=>t)}let ms=(()=>{class t{constructor(e,i,r,o,s,a){this._stateStream=e,this._internalStateOperations=i,this._config=r,this._internalExecutionStrategy=o,this._stateFactory=s,this._selectableStateStream=this._stateStream.pipe(Ac(this._internalExecutionStrategy),Ia({bufferSize:1,refCount:!0})),this.initStateStream(a)}dispatch(e){return this._internalStateOperations.getRootStateOperations().dispatch(e)}select(e){const i=this.getStoreBoundSelectorFn(e);return this._selectableStateStream.pipe(B(i),ni(r=>{const{suppressErrors:o}=this._config.selectorOptions;return r instanceof TypeError&&o?j(void 0):lr(r)}),rf(),Ac(this._internalExecutionStrategy))}selectOnce(e){return this.select(e).pipe(qt(1))}selectSnapshot(e){return this.getStoreBoundSelectorFn(e)(this._stateStream.getValue())}subscribe(e){return this._selectableStateStream.pipe(Ac(this._internalExecutionStrategy)).subscribe(e)}snapshot(){return this._internalStateOperations.getRootStateOperations().getState()}reset(e){return this._internalStateOperations.getRootStateOperations().setState(e)}getStoreBoundSelectorFn(e){return _A(e)(this._stateFactory.getRuntimeSelectorContext())}initStateStream(e){const i=this._stateStream.value;if(!i||0===Object.keys(i).length){const s=Object.keys(this._config.defaultsState).length>0?Object.assign(Object.assign({},this._config.defaultsState),e):e;this._stateStream.next(s)}}}return t.\u0275fac=function(e){return new(e||t)(_(df),_(Pa),_(Ra),_(lf),_(Na),_(wv,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Iv=(()=>{class t{constructor(e,i,r,o,s){this._store=e,this._internalErrorReporter=i,this._internalStateOperations=r,this._stateContextFactory=o,this._bootstrapper=s,this._destroy$=new te}ngOnDestroy(){this._destroy$.next()}ngxsBootstrap(e,i){this._internalStateOperations.getRootStateOperations().dispatch(e).pipe(mt(()=>!!i),Ze(()=>this._invokeInitOnStates(i.states)),Ot(()=>this._bootstrapper.appBootstrapped$),mt(r=>!!r),ni(r=>(this._internalErrorReporter.reportErrorSafely(r),xn)),ze(this._destroy$)).subscribe(()=>this._invokeBootstrapOnStates(i.states))}_invokeInitOnStates(e){for(const i of e){const r=i.instance;r.ngxsOnChanges&&this._store.select(o=>Sv(o,i.path)).pipe(cr(void 0),gt((t,n)=>{let e,i=!1;t.subscribe(ot(n,r=>{const o=e;e=r,i&&n.next([o,r]),i=!0}))}),ze(this._destroy$)).subscribe(([o,s])=>{const a=new B6(o,s,!i.isInitialised);r.ngxsOnChanges(a)}),r.ngxsOnInit&&r.ngxsOnInit(this._getStateContext(i)),i.isInitialised=!0}}_invokeBootstrapOnStates(e){for(const i of e){const r=i.instance;r.ngxsAfterBootstrap&&r.ngxsAfterBootstrap(this._getStateContext(i))}}_getStateContext(e){return this._stateContextFactory.createStateContext(e)}}return t.\u0275fac=function(e){return new(e||t)(_(ms),_(hA),_(Pa),_(uf),_(vv))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Ic=(()=>{class t{constructor(e,i){t.store=e,t.config=i}ngOnDestroy(){t.store=null,t.config=null}}return t.store=null,t.config=null,t.\u0275fac=function(e){return new(e||t)(_(ms),_(Ra))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),uG=(()=>{class t{constructor(e,i,r,o,s=[],a){const l=e.addAndReturnDefaults(s);i.setStateToTheCurrentWithNew(l),e.connectActionHandlers(),a.ngxsBootstrap(new pA,l)}}return t.\u0275fac=function(e){return new(e||t)(_(Na),_(Pa),_(ms),_(Ic),_(rA,8),_(Iv))},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})(),hG=(()=>{class t{constructor(e,i,r,o=[],s){const a=t.flattenStates(o),l=r.addAndReturnDefaults(a);l.states.length&&(i.setStateToTheCurrentWithNew(l),s.ngxsBootstrap(new gA(l.defaults),l))}static flattenStates(e=[]){return e.reduce((i,r)=>i.concat(r),[])}}return t.\u0275fac=function(e){return new(e||t)(_(ms),_(Pa),_(Na),_(oA,8),_(Iv))},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})();class sn{static forRoot(n=[],e={}){return{ngModule:uG,providers:[Na,uf,nG,cf,vv,Iv,fA,Av,Pa,lf,ms,df,Ic,Tv,...n,...sn.ngxsTokenProviders(n,e)]}}static forFeature(n=[]){return{ngModule:hG,providers:[Na,Tv,...n,{provide:oA,multi:!0,useValue:n}]}}static ngxsTokenProviders(n,e){return[{provide:aA,useValue:e.executionStrategy},{provide:rA,useValue:n},{provide:sn.ROOT_OPTIONS,useValue:e},{provide:Ra,useFactory:sn.ngxsConfigFactory,deps:[sn.ROOT_OPTIONS]},{provide:hh,useFactory:sn.appBootstrapListenerFactory,multi:!0,deps:[vv]},{provide:wv,useFactory:sn.getInitialState},{provide:y6,useExisting:uf},{provide:v6,useExisting:Na}]}static ngxsConfigFactory(n){return Mv(new Ra,n)}static appBootstrapListenerFactory(n){return()=>n.bootstrap()}static getInitialState(){return b6.pop()}}function He(t,n){return(e,i)=>{const r=Dv(e.constructor);Array.isArray(t)||(t=[t]);for(const o of t){const s=o.type;r.actions[s]||(r.actions[s]=[]),r.actions[s].push({fn:i,options:n||{},type:s})}}}function xi(t){return i=>{const r=i,o=Dv(r),s=Object.getPrototypeOf(r),a=function n(i){return Object.assign(Object.assign({},i[sA]||{}),t)}(s);(function e(i){const{meta:r,inheritedStateClass:o,optionsWithInheritance:s}=i,{children:a,defaults:l,name:c}=s,d="string"==typeof c?c:c&&c.getName()||null;if(o.hasOwnProperty(Hr)){const u=o[Hr]||{};r.actions=Object.assign(Object.assign({},r.actions),u.actions)}r.children=a,r.defaults=l,r.name=d})({meta:o,inheritedStateClass:s,optionsWithInheritance:a}),r[sA]=a}}sn.ROOT_OPTIONS=new k("ROOT_OPTIONS"),sn.\u0275fac=function(n){return new(n||sn)},sn.\u0275mod=pe({type:sn}),sn.\u0275inj=he({});const bA="NGXS_SELECTOR_OPTIONS_META",hf={getOptions:t=>t&&t[bA]||{},defineOptions:(t,n)=>{t&&(t[bA]=n)}};function _G(t,n){const e=function Ev(t){return t.hasOwnProperty(Cv)||Object.defineProperty(t,Cv,{value:{makeRootSelector:null,originalFn:null,containerClass:null,selectorName:null,getSelectorOptions:()=>({})}}),af(t)}(t);e.originalFn=t;let i=()=>({});n&&(e.containerClass=n.containerClass,e.selectorName=n.selectorName||null,i=n.getSelectorOptions||i);const r=Object.assign({},e);return e.getSelectorOptions=()=>function bG(t,n){return Object.assign(Object.assign(Object.assign(Object.assign({},hf.getOptions(t.containerClass)||{}),hf.getOptions(t.originalFn)||{}),t.getSelectorOptions()||{}),n)}(r,i()),e}function Oc(t,n,e){const i=function lG(t,n){const e=n&&n.containerClass,r=yv(function(...s){const a=t.apply(e,s);return a instanceof Function?yv.apply(null,[a]):a});return Object.setPrototypeOf(r,t),r}(n,e),r=_G(n,e);return r.makeRootSelector=function aG(t,n,e){return i=>{const{argumentSelectorFunctions:r,selectorOptions:o}=function cG(t,n,e=[]){const i=n.getSelectorOptions(),r=t.getSelectorOptions(i),s=function dG(t=[],n,e){const i=[];return e&&(0===t.length||n.injectContainerState)&&fs(e)&&i.push(e),t&&i.push(...t),i}(e,r,n.containerClass).map(a=>_A(a)(t));return{selectorOptions:r,argumentSelectorFunctions:s}}(i,t,n);return function(a){const l=r.map(c=>c(a));try{return e(...l)}catch(c){if(c instanceof TypeError&&o.suppressErrors)return;throw c}}}}(r,t,i),i}function Ct(t){return(n,e,i)=>{i||(i=Object.getOwnPropertyDescriptor(n,e));const r=i?.value,o=Oc(t,r,{containerClass:n,selectorName:e.toString(),getSelectorOptions:()=>({})}),s={configurable:!0,get:()=>o};return s.originalFn=r,s}}function vA(t,n,e,i,r,o,s){try{var a=t[o](s),l=a.value}catch(c){return void e(c)}a.done?n(l):Promise.resolve(l).then(i,r)}function Ci(t){return function(){var n=this,e=arguments;return new Promise(function(i,r){var o=t.apply(n,e);function s(l){vA(o,i,r,s,a,"next",l)}function a(l){vA(o,i,r,s,a,"throw",l)}s(void 0)})}}const Rc=Np(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function La(...t){const n=kl(t),e=_x(t),{args:i,keys:r}=eA(t);if(0===i.length)return yt([],n);const o=new xe(function yG(t,n,e=lo){return i=>{yA(n,()=>{const{length:r}=t,o=new Array(r);let s=r,a=r;for(let l=0;l{const c=yt(t[l],n);let d=!1;c.subscribe(ot(i,u=>{o[l]=u,d||(d=!0,a--),a||i.next(e(o.slice()))},()=>{--s||i.complete()}))},i)},i)}}(i,n,r?s=>tA(r,s):lo));return e?o.pipe(nf(e)):o}function yA(t,n,e){t?xr(e,t,n):n()}function mf(t){return new xe(n=>{Xt(t()).subscribe(n)})}function Rv(){return gt((t,n)=>{let e=null;t._refCount++;const i=ot(n,void 0,void 0,void 0,()=>{if(!t||t._refCount<=0||0<--t._refCount)return void(e=null);const r=t._connection,o=e;e=null,r&&(!o||r===o)&&r.unsubscribe(),n.unsubscribe()});t.subscribe(i),i.closed||(e=t.connect())})}class Fv extends xe{constructor(n,e){super(),this.source=n,this.subjectFactory=e,this._subject=null,this._refCount=0,this._connection=null,ix(n)&&(this.lift=n.lift)}_subscribe(n){return this.getSubject().subscribe(n)}getSubject(){const n=this._subject;return(!n||n.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:n}=this;this._subject=this._connection=null,n?.unsubscribe()}connect(){let n=this._connection;if(!n){n=this._connection=new rt;const e=this.getSubject();n.add(this.source.subscribe(ot(e,void 0,()=>{this._teardown(),e.complete()},i=>{this._teardown(),e.error(i)},()=>this._teardown()))),n.closed&&(this._connection=null,n=rt.EMPTY)}return n}refCount(){return Rv()(this)}}function jn(t,n){return gt((e,i)=>{let r=null,o=0,s=!1;const a=()=>s&&!r&&i.complete();e.subscribe(ot(i,l=>{r?.unsubscribe();let c=0;const d=o++;Xt(t(l,d)).subscribe(r=ot(i,u=>i.next(n?n(l,u,d,c++):u),()=>{r=null,a()}))},()=>{s=!0,a()}))})}function wA(t=wG){return gt((n,e)=>{let i=!1;n.subscribe(ot(e,r=>{i=!0,e.next(r)},()=>i?e.complete():e.error(t())))})}function wG(){return new Rc}function zr(t,n){const e=arguments.length>=2;return i=>i.pipe(t?mt((r,o)=>t(r,o,i)):lo,qt(1),e?Oa(n):wA(()=>new Rc))}function xA(t,n){return gt(function xG(t,n,e,i,r){return(o,s)=>{let a=e,l=n,c=0;o.subscribe(ot(s,d=>{const u=c++;l=a?t(l,d,u):(a=!0,d),i&&s.next(l)},r&&(()=>{a&&s.next(l),s.complete()})))}}(t,n,arguments.length>=2,!0))}function Pv(t){return t<=0?()=>xn:gt((n,e)=>{let i=[];n.subscribe(ot(e,r=>{i.push(r),t{for(const r of i)e.next(r);e.complete()},void 0,()=>{i=null}))})}function CA(t,n){const e=arguments.length>=2;return i=>i.pipe(t?mt((r,o)=>t(r,o,i)):lo,Pv(1),e?Oa(n):wA(()=>new Rc))}function DA(t,n=!1){return gt((e,i)=>{let r=0;e.subscribe(ot(i,o=>{const s=t(o,r++);(s||n)&&i.next(o),!s&&i.complete()}))})}function EA(t){return B(()=>t)}function pf(t){return gt((n,e)=>{try{n.subscribe(e)}finally{e.add(t)}})}const Me="primary",Fc=Symbol("RouteTitle");class CG{constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function Ba(t){return new CG(t)}function DG(t,n,e){const i=e.path.split("/");if(i.length>t.length||"full"===e.pathMatch&&(n.hasChildren()||i.lengthi[o]===r)}return t===n}function kA(t){return Array.prototype.concat.apply([],t)}function MA(t){return t.length>0?t[t.length-1]:null}function an(t,n){for(const e in t)t.hasOwnProperty(e)&&n(t[e],e)}function ko(t){return T_(t)?t:tc(t)?yt(Promise.resolve(t)):j(t)}const gf=!1,SG={exact:function IA(t,n,e){if(!ps(t.segments,n.segments)||!_f(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(const i in n.children)if(!t.children[i]||!IA(t.children[i],n.children[i],e))return!1;return!0},subset:OA},TA={exact:function kG(t,n){return dr(t,n)},subset:function MG(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>SA(t[e],n[e]))},ignored:()=>!0};function AA(t,n,e){return SG[e.paths](t.root,n.root,e.matrixParams)&&TA[e.queryParams](t.queryParams,n.queryParams)&&!("exact"===e.fragment&&t.fragment!==n.fragment)}function OA(t,n,e){return RA(t,n,n.segments,e)}function RA(t,n,e,i){if(t.segments.length>e.length){const r=t.segments.slice(0,e.length);return!(!ps(r,e)||n.hasChildren()||!_f(r,e,i))}if(t.segments.length===e.length){if(!ps(t.segments,e)||!_f(t.segments,e,i))return!1;for(const r in n.children)if(!t.children[r]||!OA(t.children[r],n.children[r],i))return!1;return!0}{const r=e.slice(0,t.segments.length),o=e.slice(t.segments.length);return!!(ps(t.segments,r)&&_f(t.segments,r,i)&&t.children[Me])&&RA(t.children[Me],n,o,i)}}function _f(t,n,e){return n.every((i,r)=>TA[e](t[r].parameters,i.parameters))}class Mo{constructor(n=new Ne([],{}),e={},i=null){this.root=n,this.queryParams=e,this.fragment=i}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Ba(this.queryParams)),this._queryParamMap}toString(){return IG.serialize(this)}}class Ne{constructor(n,e){this.segments=n,this.children=e,this.parent=null,an(e,(i,r)=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return bf(this)}}class Pc{constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=Ba(this.parameters)),this._parameterMap}toString(){return NA(this)}}function ps(t,n){return t.length===n.length&&t.every((e,i)=>e.path===n[i].path)}let Nc=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return new Nv},providedIn:"root"}),t})();class Nv{parse(n){const e=new jG(n);return new Mo(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){const e=`/${Lc(n.root,!0)}`,i=function FG(t){const n=Object.keys(t).map(e=>{const i=t[e];return Array.isArray(i)?i.map(r=>`${vf(e)}=${vf(r)}`).join("&"):`${vf(e)}=${vf(i)}`}).filter(e=>!!e);return n.length?`?${n.join("&")}`:""}(n.queryParams);return`${e}${i}${"string"==typeof n.fragment?`#${function OG(t){return encodeURI(t)}(n.fragment)}`:""}`}}const IG=new Nv;function bf(t){return t.segments.map(n=>NA(n)).join("/")}function Lc(t,n){if(!t.hasChildren())return bf(t);if(n){const e=t.children[Me]?Lc(t.children[Me],!1):"",i=[];return an(t.children,(r,o)=>{o!==Me&&i.push(`${o}:${Lc(r,!1)}`)}),i.length>0?`${e}(${i.join("//")})`:e}{const e=function AG(t,n){let e=[];return an(t.children,(i,r)=>{r===Me&&(e=e.concat(n(i,r)))}),an(t.children,(i,r)=>{r!==Me&&(e=e.concat(n(i,r)))}),e}(t,(i,r)=>r===Me?[Lc(t.children[Me],!1)]:[`${r}:${Lc(i,!1)}`]);return 1===Object.keys(t.children).length&&null!=t.children[Me]?`${bf(t)}/${e[0]}`:`${bf(t)}/(${e.join("//")})`}}function FA(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function vf(t){return FA(t).replace(/%3B/gi,";")}function Lv(t){return FA(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function yf(t){return decodeURIComponent(t)}function PA(t){return yf(t.replace(/\+/g,"%20"))}function NA(t){return`${Lv(t.path)}${function RG(t){return Object.keys(t).map(n=>`;${Lv(n)}=${Lv(t[n])}`).join("")}(t.parameters)}`}const PG=/^[^\/()?;=#]+/;function wf(t){const n=t.match(PG);return n?n[0]:""}const NG=/^[^=?&#]+/,BG=/^[^&#]+/;class jG{constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Ne([],{}):new Ne([],this.parseChildren())}parseQueryParams(){const n={};if(this.consumeOptional("?"))do{this.parseQueryParam(n)}while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1)),(n.length>0||Object.keys(e).length>0)&&(i[Me]=new Ne(n,e)),i}parseSegment(){const n=wf(this.remaining);if(""===n&&this.peekStartsWith(";"))throw new A(4009,gf);return this.capture(n),new Pc(yf(n),this.parseMatrixParams())}parseMatrixParams(){const n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){const e=wf(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const r=wf(this.remaining);r&&(i=r,this.capture(i))}n[yf(e)]=yf(i)}parseQueryParam(n){const e=function LG(t){const n=t.match(NG);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const s=function VG(t){const n=t.match(BG);return n?n[0]:""}(this.remaining);s&&(i=s,this.capture(i))}const r=PA(e),o=PA(i);if(n.hasOwnProperty(r)){let s=n[r];Array.isArray(s)||(s=[s],n[r]=s),s.push(o)}else n[r]=o}parseParens(n){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const i=wf(this.remaining),r=this.remaining[i.length];if("/"!==r&&")"!==r&&";"!==r)throw new A(4010,gf);let o;i.indexOf(":")>-1?(o=i.slice(0,i.indexOf(":")),this.capture(o),this.capture(":")):n&&(o=Me);const s=this.parseChildren();e[o]=1===Object.keys(s).length?s[Me]:new Ne([],s),this.consumeOptional("//")}return e}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return!!this.peekStartsWith(n)&&(this.remaining=this.remaining.substring(n.length),!0)}capture(n){if(!this.consumeOptional(n))throw new A(4011,gf)}}function Bv(t){return t.segments.length>0?new Ne([],{[Me]:t}):t}function xf(t){const n={};for(const i of Object.keys(t.children)){const o=xf(t.children[i]);(o.segments.length>0||o.hasChildren())&&(n[i]=o)}return function HG(t){if(1===t.numberOfChildren&&t.children[Me]){const n=t.children[Me];return new Ne(t.segments.concat(n.segments),n.children)}return t}(new Ne(t.segments,n))}function gs(t){return t instanceof Mo}const Vv=!1;function zG(t,n,e,i,r){if(0===e.length)return Va(n.root,n.root,n.root,i,r);const o=function HA(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new jA(!0,0,t);let n=0,e=!1;const i=t.reduce((r,o,s)=>{if("object"==typeof o&&null!=o){if(o.outlets){const a={};return an(o.outlets,(l,c)=>{a[c]="string"==typeof l?l.split("/"):l}),[...r,{outlets:a}]}if(o.segmentPath)return[...r,o.segmentPath]}return"string"!=typeof o?[...r,o]:0===s?(o.split("/").forEach((a,l)=>{0==l&&"."===a||(0==l&&""===a?e=!0:".."===a?n++:""!=a&&r.push(a))}),r):[...r,o]},[]);return new jA(e,n,i)}(e);return o.toRoot()?Va(n.root,n.root,new Ne([],{}),i,r):function s(l){const c=function $G(t,n,e,i){if(t.isAbsolute)return new ja(n.root,!0,0);if(-1===i)return new ja(e,e===n.root,0);return function zA(t,n,e){let i=t,r=n,o=e;for(;o>r;){if(o-=r,i=i.parent,!i)throw new A(4005,Vv&&"Invalid number of '../'");r=i.segments.length}return new ja(i,!1,r-o)}(e,i+(Bc(t.commands[0])?0:1),t.numberOfDoubleDots)}(o,n,t.snapshot?._urlSegment,l),d=c.processChildren?Ha(c.segmentGroup,c.index,o.commands):jv(c.segmentGroup,c.index,o.commands);return Va(n.root,c.segmentGroup,d,i,r)}(t.snapshot?._lastPathIndex)}function Bc(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function Vc(t){return"object"==typeof t&&null!=t&&t.outlets}function Va(t,n,e,i,r){let s,o={};i&&an(i,(l,c)=>{o[c]=Array.isArray(l)?l.map(d=>`${d}`):`${l}`}),s=t===n?e:VA(t,n,e);const a=Bv(xf(s));return new Mo(a,o,r)}function VA(t,n,e){const i={};return an(t.children,(r,o)=>{i[o]=r===n?e:VA(r,n,e)}),new Ne(t.segments,i)}class jA{constructor(n,e,i){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=i,n&&i.length>0&&Bc(i[0]))throw new A(4003,Vv&&"Root segment cannot have matrix parameters");const r=i.find(Vc);if(r&&r!==MA(i))throw new A(4004,Vv&&"{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class ja{constructor(n,e,i){this.segmentGroup=n,this.processChildren=e,this.index=i}}function jv(t,n,e){if(t||(t=new Ne([],{})),0===t.segments.length&&t.hasChildren())return Ha(t,n,e);const i=function WG(t,n,e){let i=0,r=n;const o={match:!1,pathIndex:0,commandIndex:0};for(;r=e.length)return o;const s=t.segments[r],a=e[i];if(Vc(a))break;const l=`${a}`,c=i0&&void 0===l)break;if(l&&c&&"object"==typeof c&&void 0===c.outlets){if(!$A(l,c,s))return o;i+=2}else{if(!$A(l,{},s))return o;i++}r++}return{match:!0,pathIndex:r,commandIndex:i}}(t,n,e),r=e.slice(i.commandIndex);if(i.match&&i.pathIndex{"string"==typeof o&&(o=[o]),null!==o&&(r[s]=jv(t.children[s],n,o))}),an(t.children,(o,s)=>{void 0===i[s]&&(r[s]=o)}),new Ne(t.segments,r)}}function Hv(t,n,e){const i=t.segments.slice(0,n);let r=0;for(;r{"string"==typeof e&&(e=[e]),null!==e&&(n[i]=Hv(new Ne([],{}),0,e))}),n}function UA(t){const n={};return an(t,(e,i)=>n[i]=`${e}`),n}function $A(t,n,e){return t==e.path&&dr(n,e.parameters)}const jc="imperative";class ur{constructor(n,e){this.id=n,this.url=e}}class zv extends ur{constructor(n,e,i="imperative",r=null){super(n,e),this.type=0,this.navigationTrigger=i,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class To extends ur{constructor(n,e,i){super(n,e),this.urlAfterRedirects=i,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Cf extends ur{constructor(n,e,i,r){super(n,e),this.reason=i,this.code=r,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Df extends ur{constructor(n,e,i,r){super(n,e),this.reason=i,this.code=r,this.type=16}}class Uv extends ur{constructor(n,e,i,r){super(n,e),this.error=i,this.target=r,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class YG extends ur{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ZG extends ur{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class KG extends ur{constructor(n,e,i,r,o){super(n,e),this.urlAfterRedirects=i,this.state=r,this.shouldActivate=o,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class XG extends ur{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class QG extends ur{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class JG{constructor(n){this.route=n,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class eW{constructor(n){this.route=n,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class tW{constructor(n){this.snapshot=n,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class nW{constructor(n){this.snapshot=n,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class iW{constructor(n){this.snapshot=n,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class rW{constructor(n){this.snapshot=n,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class GA{constructor(n,e,i){this.routerEvent=n,this.position=e,this.anchor=i,this.type=15}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}let aW=(()=>{class t{createUrlTree(e,i,r,o,s,a){return zG(e||i.root,r,o,s,a)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),cW=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(n){return aW.\u0275fac(n)},providedIn:"root"}),t})();class WA{constructor(n){this._root=n}get root(){return this._root.value}parent(n){const e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){const e=$v(n,this._root);return e?e.children.map(i=>i.value):[]}firstChild(n){const e=$v(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){const e=Gv(n,this._root);return e.length<2?[]:e[e.length-2].children.map(r=>r.value).filter(r=>r!==n)}pathFromRoot(n){return Gv(n,this._root).map(e=>e.value)}}function $v(t,n){if(t===n.value)return n;for(const e of n.children){const i=$v(t,e);if(i)return i}return null}function Gv(t,n){if(t===n.value)return[n];for(const e of n.children){const i=Gv(t,e);if(i.length)return i.unshift(n),i}return[]}class Ur{constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}}function za(t){const n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}class qA extends WA{constructor(n,e){super(n),this.snapshot=e,Wv(this,n)}toString(){return this.snapshot.toString()}}function YA(t,n){const e=function dW(t,n){const s=new Ef([],{},{},"",{},Me,n,null,t.root,-1,{});return new KA("",new Ur(s,[]))}(t,n),i=new Tt([new Pc("",{})]),r=new Tt({}),o=new Tt({}),s=new Tt({}),a=new Tt(""),l=new Ao(i,r,s,a,o,Me,n,e.root);return l.snapshot=e.root,new qA(new Ur(l,[]),e)}class Ao{constructor(n,e,i,r,o,s,a,l){this.url=n,this.params=e,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.title=this.data?.pipe(B(c=>c[Fc]))??j(void 0),this._futureSnapshot=l}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(B(n=>Ba(n)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(B(n=>Ba(n)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function ZA(t,n="emptyOnly"){const e=t.pathFromRoot;let i=0;if("always"!==n)for(i=e.length-1;i>=1;){const r=e[i],o=e[i-1];if(r.routeConfig&&""===r.routeConfig.path)i--;else{if(o.component)break;i--}}return function uW(t){return t.reduce((n,e)=>({params:{...n.params,...e.params},data:{...n.data,...e.data},resolve:{...e.data,...n.resolve,...e.routeConfig?.data,...e._resolvedData}}),{params:{},data:{},resolve:{}})}(e.slice(i))}class Ef{get title(){return this.data?.[Fc]}constructor(n,e,i,r,o,s,a,l,c,d,u){this.url=n,this.params=e,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.routeConfig=l,this._urlSegment=c,this._lastPathIndex=d,this._resolve=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=Ba(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Ba(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(i=>i.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class KA extends WA{constructor(n,e){super(e),this.url=n,Wv(this,e)}toString(){return XA(this._root)}}function Wv(t,n){n.value._routerState=t,n.children.forEach(e=>Wv(t,e))}function XA(t){const n=t.children.length>0?` { ${t.children.map(XA).join(", ")} } `:"";return`${t.value}${n}`}function qv(t){if(t.snapshot){const n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,dr(n.queryParams,e.queryParams)||t.queryParams.next(e.queryParams),n.fragment!==e.fragment&&t.fragment.next(e.fragment),dr(n.params,e.params)||t.params.next(e.params),function EG(t,n){if(t.length!==n.length)return!1;for(let e=0;edr(e.parameters,n[i].parameters))}(t.url,n.url);return e&&!(!t.parent!=!n.parent)&&(!t.parent||Yv(t.parent,n.parent))}function Hc(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){const i=e.value;i._futureSnapshot=n.value;const r=function fW(t,n,e){return n.children.map(i=>{for(const r of e.children)if(t.shouldReuseRoute(i.value,r.value.snapshot))return Hc(t,i,r);return Hc(t,i)})}(t,n,e);return new Ur(i,r)}{if(t.shouldAttach(n.value)){const o=t.retrieve(n.value);if(null!==o){const s=o.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Hc(t,a)),s}}const i=function mW(t){return new Ao(new Tt(t.url),new Tt(t.params),new Tt(t.queryParams),new Tt(t.fragment),new Tt(t.data),t.outlet,t.component,t)}(n.value),r=n.children.map(o=>Hc(t,o));return new Ur(i,r)}}const Zv="ngNavigationCancelingError";function QA(t,n){const{redirectTo:e,navigationBehaviorOptions:i}=gs(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,r=JA(!1,0,n);return r.url=e,r.navigationBehaviorOptions=i,r}function JA(t,n,e){const i=new Error("NavigationCancelingError: "+(t||""));return i[Zv]=!0,i.cancellationCode=n,e&&(i.url=e),i}function e1(t){return t1(t)&&gs(t.url)}function t1(t){return t&&t[Zv]}class pW{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new zc,this.attachRef=null}}let zc=(()=>{class t{constructor(){this.contexts=new Map}onChildOutletCreated(e,i){const r=this.getOrCreateContext(e);r.outlet=i,this.contexts.set(e,r)}onChildOutletDestroyed(e){const i=this.getContext(e);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let i=this.getContext(e);return i||(i=new pW,this.contexts.set(e,i)),i}getContext(e){return this.contexts.get(e)||null}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const Sf=!1;let Kv=(()=>{class t{constructor(){this.activated=null,this._activatedRoute=null,this.name=Me,this.activateEvents=new ee,this.deactivateEvents=new ee,this.attachEvents=new ee,this.detachEvents=new ee,this.parentContexts=R(zc),this.location=R(it),this.changeDetector=R(en),this.environmentInjector=R(Xi)}ngOnChanges(e){if(e.name){const{firstChange:i,previousValue:r}=e.name;if(i)return;this.isTrackedInParentContexts(r)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(r)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new A(4012,Sf);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new A(4012,Sf);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new A(4012,Sf);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,i){this.activated=e,this._activatedRoute=i,this.location.insert(e.hostView),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,i){if(this.isActivated)throw new A(4013,Sf);this._activatedRoute=e;const r=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,l=new gW(e,a,r.injector);if(i&&function _W(t){return!!t.resolveComponentFactory}(i)){const c=i.resolveComponentFactory(s);this.activated=r.createComponent(c,r.length,l)}else this.activated=r.createComponent(s,{index:r.length,injector:l,environmentInjector:i??this.environmentInjector});this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[at]}),t})();class gW{constructor(n,e,i){this.route=n,this.childContexts=e,this.parent=i}get(n,e){return n===Ao?this.route:n===zc?this.childContexts:this.parent.get(n,e)}}let Xv=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=G({type:t,selectors:[["ng-component"]],standalone:!0,features:[Be],decls:1,vars:0,template:function(e,i){1&e&&z(0,"router-outlet")},dependencies:[Kv],encapsulation:2}),t})();function n1(t,n){return t.providers&&!t._injector&&(t._injector=oh(t.providers,n,`Route: ${t.path}`)),t._injector??n}function Jv(t){const n=t.children&&t.children.map(Jv),e=n?{...t,children:n}:{...t};return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==Me&&(e.component=Xv),e}function Di(t){return t.outlet||Me}function r1(t,n){const e=t.filter(i=>Di(i)===n);return e.push(...t.filter(i=>Di(i)!==n)),e}function Uc(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let n=t.parent;n;n=n.parent){const e=n.routeConfig;if(e?._loadedInjector)return e._loadedInjector;if(e?._injector)return e._injector}return null}class xW{constructor(n,e,i,r){this.routeReuseStrategy=n,this.futureState=e,this.currState=i,this.forwardEvent=r}activate(n){const e=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,i,n),qv(this.futureState.root),this.activateChildRoutes(e,i,n)}deactivateChildRoutes(n,e,i){const r=za(e);n.children.forEach(o=>{const s=o.value.outlet;this.deactivateRoutes(o,r[s],i),delete r[s]}),an(r,(o,s)=>{this.deactivateRouteAndItsChildren(o,i)})}deactivateRoutes(n,e,i){const r=n.value,o=e?e.value:null;if(r===o)if(r.component){const s=i.getContext(r.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,i);else o&&this.deactivateRouteAndItsChildren(e,i)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){const i=e.getContext(n.value.outlet),r=i&&n.value.component?i.children:e,o=za(n);for(const s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);if(i&&i.outlet){const s=i.outlet.detach(),a=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){const i=e.getContext(n.value.outlet),r=i&&n.value.component?i.children:e,o=za(n);for(const s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);i&&(i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated()),i.attachRef=null,i.resolver=null,i.route=null)}activateChildRoutes(n,e,i){const r=za(e);n.children.forEach(o=>{this.activateRoutes(o,r[o.value.outlet],i),this.forwardEvent(new rW(o.value.snapshot))}),n.children.length&&this.forwardEvent(new nW(n.value.snapshot))}activateRoutes(n,e,i){const r=n.value,o=e?e.value:null;if(qv(r),r===o)if(r.component){const s=i.getOrCreateContext(r.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,i);else if(r.component){const s=i.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){const a=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),qv(a.route.value),this.activateChildRoutes(n,null,s.children)}else{const a=Uc(r.snapshot),l=a?.get(Ri)??null;s.attachRef=null,s.route=r,s.resolver=l,s.injector=a,s.outlet&&s.outlet.activateWith(r,s.injector),this.activateChildRoutes(n,null,s.children)}}else this.activateChildRoutes(n,null,i)}}class o1{constructor(n){this.path=n,this.route=this.path[this.path.length-1]}}class kf{constructor(n,e){this.component=n,this.route=e}}function CW(t,n,e){const i=t._root;return $c(i,n?n._root:null,e,[i.value])}function Ua(t,n){const e=Symbol(),i=n.get(t,e);return i===e?"function"!=typeof t||function _L(t){return null!==lu(t)}(t)?n.get(t):t:i}function $c(t,n,e,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=za(n);return t.children.forEach(s=>{(function EW(t,n,e,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){const l=function SW(t,n,e){if("function"==typeof e)return e(t,n);switch(e){case"pathParamsChange":return!ps(t.url,n.url);case"pathParamsOrQueryParamsChange":return!ps(t.url,n.url)||!dr(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Yv(t,n)||!dr(t.queryParams,n.queryParams);default:return!Yv(t,n)}}(s,o,o.routeConfig.runGuardsAndResolvers);l?r.canActivateChecks.push(new o1(i)):(o.data=s.data,o._resolvedData=s._resolvedData),$c(t,n,o.component?a?a.children:null:e,i,r),l&&a&&a.outlet&&a.outlet.isActivated&&r.canDeactivateChecks.push(new kf(a.outlet.component,s))}else s&&Gc(n,a,r),r.canActivateChecks.push(new o1(i)),$c(t,null,o.component?a?a.children:null:e,i,r)})(s,o[s.value.outlet],e,i.concat([s.value]),r),delete o[s.value.outlet]}),an(o,(s,a)=>Gc(s,e.getContext(a),r)),r}function Gc(t,n,e){const i=za(t),r=t.value;an(i,(o,s)=>{Gc(o,r.component?n?n.children.getContext(s):null:n,e)}),e.canDeactivateChecks.push(new kf(r.component&&n&&n.outlet&&n.outlet.isActivated?n.outlet.component:null,r))}function Wc(t){return"function"==typeof t}function ey(t){return t instanceof Rc||"EmptyError"===t?.name}const Mf=Symbol("INITIAL_VALUE");function $a(){return jn(t=>La(t.map(n=>n.pipe(qt(1),cr(Mf)))).pipe(B(n=>{for(const e of n)if(!0!==e){if(e===Mf)return Mf;if(!1===e||e instanceof Mo)return e}return!0}),mt(n=>n!==Mf),qt(1)))}function s1(t){return function VN(...t){return ex(t)}(Ze(n=>{if(gs(n))throw QA(0,n)}),B(n=>!0===n))}const ty={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function a1(t,n,e,i,r){const o=ny(t,n,e);return o.matched?function UW(t,n,e,i){const r=n.canMatch;return r&&0!==r.length?j(r.map(s=>{const a=Ua(s,t);return ko(function OW(t){return t&&Wc(t.canMatch)}(a)?a.canMatch(n,e):t.runInContext(()=>a(n,e)))})).pipe($a(),s1()):j(!0)}(i=n1(n,i),n,e).pipe(B(s=>!0===s?o:{...ty})):j(o)}function ny(t,n,e){if(""===n.path)return"full"===n.pathMatch&&(t.hasChildren()||e.length>0)?{...ty}:{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};const r=(n.matcher||DG)(e,t,n);if(!r)return{...ty};const o={};an(r.posParams,(a,l)=>{o[l]=a.path});const s=r.consumed.length>0?{...o,...r.consumed[r.consumed.length-1].parameters}:o;return{matched:!0,consumedSegments:r.consumed,remainingSegments:e.slice(r.consumed.length),parameters:s,positionalParamSegments:r.posParams??{}}}function Tf(t,n,e,i){if(e.length>0&&function WW(t,n,e){return e.some(i=>Af(t,n,i)&&Di(i)!==Me)}(t,e,i)){const o=new Ne(n,function GW(t,n,e,i){const r={};r[Me]=i,i._sourceSegment=t,i._segmentIndexShift=n.length;for(const o of e)if(""===o.path&&Di(o)!==Me){const s=new Ne([],{});s._sourceSegment=t,s._segmentIndexShift=n.length,r[Di(o)]=s}return r}(t,n,i,new Ne(e,t.children)));return o._sourceSegment=t,o._segmentIndexShift=n.length,{segmentGroup:o,slicedSegments:[]}}if(0===e.length&&function qW(t,n,e){return e.some(i=>Af(t,n,i))}(t,e,i)){const o=new Ne(t.segments,function $W(t,n,e,i,r){const o={};for(const s of i)if(Af(t,e,s)&&!r[Di(s)]){const a=new Ne([],{});a._sourceSegment=t,a._segmentIndexShift=n.length,o[Di(s)]=a}return{...r,...o}}(t,n,e,i,t.children));return o._sourceSegment=t,o._segmentIndexShift=n.length,{segmentGroup:o,slicedSegments:e}}const r=new Ne(t.segments,t.children);return r._sourceSegment=t,r._segmentIndexShift=n.length,{segmentGroup:r,slicedSegments:e}}function Af(t,n,e){return(!(t.hasChildren()||n.length>0)||"full"!==e.pathMatch)&&""===e.path}function l1(t,n,e,i){return!!(Di(t)===i||i!==Me&&Af(n,e,t))&&("**"===t.path||ny(n,t,e).matched)}function c1(t,n,e){return 0===n.length&&!t.children[e]}const If=!1;class Of{constructor(n){this.segmentGroup=n||null}}class d1{constructor(n){this.urlTree=n}}function qc(t){return lr(new Of(t))}function u1(t){return lr(new d1(t))}class XW{constructor(n,e,i,r,o){this.injector=n,this.configLoader=e,this.urlSerializer=i,this.urlTree=r,this.config=o,this.allowRedirects=!0}apply(){const n=Tf(this.urlTree.root,[],[],this.config).segmentGroup,e=new Ne(n.segments,n.children);return this.expandSegmentGroup(this.injector,this.config,e,Me).pipe(B(o=>this.createUrlTree(xf(o),this.urlTree.queryParams,this.urlTree.fragment))).pipe(ni(o=>{if(o instanceof d1)return this.allowRedirects=!1,this.match(o.urlTree);throw o instanceof Of?this.noMatchError(o):o}))}match(n){return this.expandSegmentGroup(this.injector,this.config,n.root,Me).pipe(B(r=>this.createUrlTree(xf(r),n.queryParams,n.fragment))).pipe(ni(r=>{throw r instanceof Of?this.noMatchError(r):r}))}noMatchError(n){return new A(4002,If)}createUrlTree(n,e,i){const r=Bv(n);return new Mo(r,e,i)}expandSegmentGroup(n,e,i,r){return 0===i.segments.length&&i.hasChildren()?this.expandChildren(n,e,i).pipe(B(o=>new Ne([],o))):this.expandSegment(n,i,e,i.segments,r,!0)}expandChildren(n,e,i){const r=[];for(const o of Object.keys(i.children))"primary"===o?r.unshift(o):r.push(o);return yt(r).pipe(yo(o=>{const s=i.children[o],a=r1(e,o);return this.expandSegmentGroup(n,a,s,o).pipe(B(l=>({segment:l,outlet:o})))}),xA((o,s)=>(o[s.outlet]=s.segment,o),{}),CA())}expandSegment(n,e,i,r,o,s){return yt(i).pipe(yo(a=>this.expandSegmentAgainstRoute(n,e,i,a,r,o,s).pipe(ni(c=>{if(c instanceof Of)return j(null);throw c}))),zr(a=>!!a),ni((a,l)=>{if(ey(a))return c1(e,r,o)?j(new Ne([],{})):qc(e);throw a}))}expandSegmentAgainstRoute(n,e,i,r,o,s,a){return l1(r,e,o,s)?void 0===r.redirectTo?this.matchSegmentAgainstRoute(n,e,r,o,s):a&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s):qc(e):qc(e)}expandSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s){return"**"===r.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(n,i,r,s):this.expandRegularSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s)}expandWildCardWithParamsAgainstRouteUsingRedirect(n,e,i,r){const o=this.applyRedirectCommands([],i.redirectTo,{});return i.redirectTo.startsWith("/")?u1(o):this.lineralizeSegments(i,o).pipe(Ot(s=>{const a=new Ne(s,{});return this.expandSegment(n,a,e,s,r,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s){const{matched:a,consumedSegments:l,remainingSegments:c,positionalParamSegments:d}=ny(e,r,o);if(!a)return qc(e);const u=this.applyRedirectCommands(l,r.redirectTo,d);return r.redirectTo.startsWith("/")?u1(u):this.lineralizeSegments(r,u).pipe(Ot(h=>this.expandSegment(n,e,i,h.concat(c),s,!1)))}matchSegmentAgainstRoute(n,e,i,r,o){return"**"===i.path?(n=n1(i,n),i.loadChildren?(i._loadedRoutes?j({routes:i._loadedRoutes,injector:i._loadedInjector}):this.configLoader.loadChildren(n,i)).pipe(B(a=>(i._loadedRoutes=a.routes,i._loadedInjector=a.injector,new Ne(r,{})))):j(new Ne(r,{}))):a1(e,i,r,n).pipe(jn(({matched:s,consumedSegments:a,remainingSegments:l})=>s?this.getChildConfig(n=i._injector??n,i,r).pipe(Ot(d=>{const u=d.injector??n,h=d.routes,{segmentGroup:f,slicedSegments:p}=Tf(e,a,l,h),g=new Ne(f.segments,f.children);if(0===p.length&&g.hasChildren())return this.expandChildren(u,h,g).pipe(B(C=>new Ne(a,C)));if(0===h.length&&0===p.length)return j(new Ne(a,{}));const b=Di(i)===o;return this.expandSegment(u,g,h,p,b?Me:o,!0).pipe(B(w=>new Ne(a.concat(w.segments),w.children)))})):qc(e)))}getChildConfig(n,e,i){return e.children?j({routes:e.children,injector:n}):e.loadChildren?void 0!==e._loadedRoutes?j({routes:e._loadedRoutes,injector:e._loadedInjector}):function zW(t,n,e,i){const r=n.canLoad;return void 0===r||0===r.length?j(!0):j(r.map(s=>{const a=Ua(s,t);return ko(function MW(t){return t&&Wc(t.canLoad)}(a)?a.canLoad(n,e):t.runInContext(()=>a(n,e)))})).pipe($a(),s1())}(n,e,i).pipe(Ot(r=>r?this.configLoader.loadChildren(n,e).pipe(Ze(o=>{e._loadedRoutes=o.routes,e._loadedInjector=o.injector})):function ZW(t){return lr(JA(If,3))}())):j({routes:[],injector:n})}lineralizeSegments(n,e){let i=[],r=e.root;for(;;){if(i=i.concat(r.segments),0===r.numberOfChildren)return j(i);if(r.numberOfChildren>1||!r.children[Me])return n.redirectTo,lr(new A(4e3,If));r=r.children[Me]}}applyRedirectCommands(n,e,i){return this.applyRedirectCreateUrlTree(e,this.urlSerializer.parse(e),n,i)}applyRedirectCreateUrlTree(n,e,i,r){const o=this.createSegmentGroup(n,e.root,i,r);return new Mo(o,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){const i={};return an(n,(r,o)=>{if("string"==typeof r&&r.startsWith(":")){const a=r.substring(1);i[o]=e[a]}else i[o]=r}),i}createSegmentGroup(n,e,i,r){const o=this.createSegments(n,e.segments,i,r);let s={};return an(e.children,(a,l)=>{s[l]=this.createSegmentGroup(n,a,i,r)}),new Ne(o,s)}createSegments(n,e,i,r){return e.map(o=>o.path.startsWith(":")?this.findPosParam(n,o,r):this.findOrReturn(o,i))}findPosParam(n,e,i){const r=i[e.path.substring(1)];if(!r)throw new A(4001,If);return r}findOrReturn(n,e){let i=0;for(const r of e){if(r.path===n.path)return e.splice(i),r;i++}return n}}class JW{}class n9{constructor(n,e,i,r,o,s,a){this.injector=n,this.rootComponentType=e,this.config=i,this.urlTree=r,this.url=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a}recognize(){const n=Tf(this.urlTree.root,[],[],this.config.filter(e=>void 0===e.redirectTo)).segmentGroup;return this.processSegmentGroup(this.injector,this.config,n,Me).pipe(B(e=>{if(null===e)return null;const i=new Ef([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},Me,this.rootComponentType,null,this.urlTree.root,-1,{}),r=new Ur(i,e),o=new KA(this.url,r);return this.inheritParamsAndData(o._root),o}))}inheritParamsAndData(n){const e=n.value,i=ZA(e,this.paramsInheritanceStrategy);e.params=Object.freeze(i.params),e.data=Object.freeze(i.data),n.children.forEach(r=>this.inheritParamsAndData(r))}processSegmentGroup(n,e,i,r){return 0===i.segments.length&&i.hasChildren()?this.processChildren(n,e,i):this.processSegment(n,e,i,i.segments,r)}processChildren(n,e,i){return yt(Object.keys(i.children)).pipe(yo(r=>{const o=i.children[r],s=r1(e,r);return this.processSegmentGroup(n,s,o,r)}),xA((r,o)=>r&&o?(r.push(...o),r):null),DA(r=>null!==r),Oa(null),CA(),B(r=>{if(null===r)return null;const o=f1(r);return function i9(t){t.sort((n,e)=>n.value.outlet===Me?-1:e.value.outlet===Me?1:n.value.outlet.localeCompare(e.value.outlet))}(o),o}))}processSegment(n,e,i,r,o){return yt(e).pipe(yo(s=>this.processSegmentAgainstRoute(s._injector??n,s,i,r,o)),zr(s=>!!s),ni(s=>{if(ey(s))return c1(i,r,o)?j([]):j(null);throw s}))}processSegmentAgainstRoute(n,e,i,r,o){if(e.redirectTo||!l1(e,i,r,o))return j(null);let s;if("**"===e.path){const a=r.length>0?MA(r).parameters:{},l=p1(i)+r.length;s=j({snapshot:new Ef(r,a,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,g1(e),Di(e),e.component??e._loadedComponent??null,e,m1(i),l,_1(e)),consumedSegments:[],remainingSegments:[]})}else s=a1(i,e,r,n).pipe(B(({matched:a,consumedSegments:l,remainingSegments:c,parameters:d})=>{if(!a)return null;const u=p1(i)+l.length;return{snapshot:new Ef(l,d,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,g1(e),Di(e),e.component??e._loadedComponent??null,e,m1(i),u,_1(e)),consumedSegments:l,remainingSegments:c}}));return s.pipe(jn(a=>{if(null===a)return j(null);const{snapshot:l,consumedSegments:c,remainingSegments:d}=a;n=e._injector??n;const u=e._loadedInjector??n,h=function r9(t){return t.children?t.children:t.loadChildren?t._loadedRoutes:[]}(e),{segmentGroup:f,slicedSegments:p}=Tf(i,c,d,h.filter(b=>void 0===b.redirectTo));if(0===p.length&&f.hasChildren())return this.processChildren(u,h,f).pipe(B(b=>null===b?null:[new Ur(l,b)]));if(0===h.length&&0===p.length)return j([new Ur(l,[])]);const g=Di(e)===o;return this.processSegment(u,h,f,p,g?Me:o).pipe(B(b=>null===b?null:[new Ur(l,b)]))}))}}function o9(t){const n=t.value.routeConfig;return n&&""===n.path&&void 0===n.redirectTo}function f1(t){const n=[],e=new Set;for(const i of t){if(!o9(i)){n.push(i);continue}const r=n.find(o=>i.value.routeConfig===o.value.routeConfig);void 0!==r?(r.children.push(...i.children),e.add(r)):n.push(i)}for(const i of e){const r=f1(i.children);n.push(new Ur(i.value,r))}return n.filter(i=>!e.has(i))}function m1(t){let n=t;for(;n._sourceSegment;)n=n._sourceSegment;return n}function p1(t){let n=t,e=n._segmentIndexShift??0;for(;n._sourceSegment;)n=n._sourceSegment,e+=n._segmentIndexShift??0;return e-1}function g1(t){return t.data||{}}function _1(t){return t.resolve||{}}function b1(t){return"string"==typeof t.title||null===t.title}function iy(t){return jn(n=>{const e=t(n);return e?yt(e).pipe(B(()=>n)):j(n)})}const Ga=new k("ROUTES");let ry=(()=>{class t{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=R(Sk)}loadComponent(e){if(this.componentLoaders.get(e))return this.componentLoaders.get(e);if(e._loadedComponent)return j(e._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(e);const i=ko(e.loadComponent()).pipe(B(y1),Ze(o=>{this.onLoadEndListener&&this.onLoadEndListener(e),e._loadedComponent=o}),pf(()=>{this.componentLoaders.delete(e)})),r=new Fv(i,()=>new te).pipe(Rv());return this.componentLoaders.set(e,r),r}loadChildren(e,i){if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return j({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);const o=this.loadModuleFactoryOrRoutes(i.loadChildren).pipe(B(a=>{this.onLoadEndListener&&this.onLoadEndListener(i);let l,c,d=!1;Array.isArray(a)?c=a:(l=a.create(e).injector,c=kA(l.get(Ga,[],fe.Self|fe.Optional)));return{routes:c.map(Jv),injector:l}}),pf(()=>{this.childrenLoaders.delete(i)})),s=new Fv(o,()=>new te).pipe(Rv());return this.childrenLoaders.set(i,s),s}loadModuleFactoryOrRoutes(e){return ko(e()).pipe(B(y1),Ot(i=>i instanceof jS||Array.isArray(i)?j(i):yt(this.compiler.compileModuleAsync(i))))}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function y1(t){return function f9(t){return t&&"object"==typeof t&&"default"in t}(t)?t.default:t}let Ff=(()=>{class t{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.lastSuccessfulNavigation=null,this.events=new te,this.configLoader=R(ry),this.environmentInjector=R(Xi),this.urlSerializer=R(Nc),this.rootContexts=R(zc),this.navigationId=0,this.afterPreactivation=()=>j(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=r=>this.events.next(new eW(r)),this.configLoader.onLoadStartListener=r=>this.events.next(new JG(r))}complete(){this.transitions?.complete()}handleNavigationRequest(e){const i=++this.navigationId;this.transitions?.next({...this.transitions.value,...e,id:i})}setupNavigations(e){return this.transitions=new Tt({id:0,targetPageId:0,currentUrlTree:e.currentUrlTree,currentRawUrl:e.currentUrlTree,extractedUrl:e.urlHandlingStrategy.extract(e.currentUrlTree),urlAfterRedirects:e.urlHandlingStrategy.extract(e.currentUrlTree),rawUrl:e.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:jc,restoredState:null,currentSnapshot:e.routerState.snapshot,targetSnapshot:null,currentRouterState:e.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(mt(i=>0!==i.id),B(i=>({...i,extractedUrl:e.urlHandlingStrategy.extract(i.rawUrl)})),jn(i=>{let r=!1,o=!1;return j(i).pipe(Ze(s=>{this.currentNavigation={id:s.id,initialUrl:s.rawUrl,extractedUrl:s.extractedUrl,trigger:s.source,extras:s.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}}),jn(s=>{const a=e.browserUrlTree.toString(),l=!e.navigated||s.extractedUrl.toString()!==a||a!==e.currentUrlTree.toString();if(!l&&"reload"!==(s.extras.onSameUrlNavigation??e.onSameUrlNavigation)){const d="";return this.events.next(new Df(s.id,e.serializeUrl(i.rawUrl),d,0)),e.rawUrlTree=s.rawUrl,s.resolve(null),xn}if(e.urlHandlingStrategy.shouldProcessUrl(s.rawUrl))return w1(s.source)&&(e.browserUrlTree=s.extractedUrl),j(s).pipe(jn(d=>{const u=this.transitions?.getValue();return this.events.next(new zv(d.id,this.urlSerializer.serialize(d.extractedUrl),d.source,d.restoredState)),u!==this.transitions?.getValue()?xn:Promise.resolve(d)}),function QW(t,n,e,i){return jn(r=>function KW(t,n,e,i,r){return new XW(t,n,e,i,r).apply()}(t,n,e,r.extractedUrl,i).pipe(B(o=>({...r,urlAfterRedirects:o}))))}(this.environmentInjector,this.configLoader,this.urlSerializer,e.config),Ze(d=>{this.currentNavigation={...this.currentNavigation,finalUrl:d.urlAfterRedirects},i.urlAfterRedirects=d.urlAfterRedirects}),function a9(t,n,e,i,r){return Ot(o=>function t9(t,n,e,i,r,o,s="emptyOnly"){return new n9(t,n,e,i,r,s,o).recognize().pipe(jn(a=>null===a?function e9(t){return new xe(n=>n.error(t))}(new JW):j(a)))}(t,n,e,o.urlAfterRedirects,i.serialize(o.urlAfterRedirects),i,r).pipe(B(s=>({...o,targetSnapshot:s}))))}(this.environmentInjector,this.rootComponentType,e.config,this.urlSerializer,e.paramsInheritanceStrategy),Ze(d=>{if(i.targetSnapshot=d.targetSnapshot,"eager"===e.urlUpdateStrategy){if(!d.extras.skipLocationChange){const h=e.urlHandlingStrategy.merge(d.urlAfterRedirects,d.rawUrl);e.setBrowserUrl(h,d)}e.browserUrlTree=d.urlAfterRedirects}const u=new YG(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(u)}));if(l&&e.urlHandlingStrategy.shouldProcessUrl(e.rawUrlTree)){const{id:d,extractedUrl:u,source:h,restoredState:f,extras:p}=s,g=new zv(d,this.urlSerializer.serialize(u),h,f);this.events.next(g);const b=YA(u,this.rootComponentType).snapshot;return j(i={...s,targetSnapshot:b,urlAfterRedirects:u,extras:{...p,skipLocationChange:!1,replaceUrl:!1}})}{const d="";return this.events.next(new Df(s.id,e.serializeUrl(i.extractedUrl),d,1)),e.rawUrlTree=s.rawUrl,s.resolve(null),xn}}),Ze(s=>{const a=new ZG(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(a)}),B(s=>i={...s,guards:CW(s.targetSnapshot,s.currentSnapshot,this.rootContexts)}),function FW(t,n){return Ot(e=>{const{targetSnapshot:i,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:s}}=e;return 0===s.length&&0===o.length?j({...e,guardsResult:!0}):function PW(t,n,e,i){return yt(t).pipe(Ot(r=>function HW(t,n,e,i,r){const o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;return o&&0!==o.length?j(o.map(a=>{const l=Uc(n)??r,c=Ua(a,l);return ko(function IW(t){return t&&Wc(t.canDeactivate)}(c)?c.canDeactivate(t,n,e,i):l.runInContext(()=>c(t,n,e,i))).pipe(zr())})).pipe($a()):j(!0)}(r.component,r.route,e,n,i)),zr(r=>!0!==r,!0))}(s,i,r,t).pipe(Ot(a=>a&&function kW(t){return"boolean"==typeof t}(a)?function NW(t,n,e,i){return yt(n).pipe(yo(r=>sf(function BW(t,n){return null!==t&&n&&n(new tW(t)),j(!0)}(r.route.parent,i),function LW(t,n){return null!==t&&n&&n(new iW(t)),j(!0)}(r.route,i),function jW(t,n,e){const i=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(s=>function DW(t){const n=t.routeConfig?t.routeConfig.canActivateChild:null;return n&&0!==n.length?{node:t,guards:n}:null}(s)).filter(s=>null!==s).map(s=>mf(()=>j(s.guards.map(l=>{const c=Uc(s.node)??e,d=Ua(l,c);return ko(function AW(t){return t&&Wc(t.canActivateChild)}(d)?d.canActivateChild(i,t):c.runInContext(()=>d(i,t))).pipe(zr())})).pipe($a())));return j(o).pipe($a())}(t,r.path,e),function VW(t,n,e){const i=n.routeConfig?n.routeConfig.canActivate:null;if(!i||0===i.length)return j(!0);const r=i.map(o=>mf(()=>{const s=Uc(n)??e,a=Ua(o,s);return ko(function TW(t){return t&&Wc(t.canActivate)}(a)?a.canActivate(n,t):s.runInContext(()=>a(n,t))).pipe(zr())}));return j(r).pipe($a())}(t,r.route,e))),zr(r=>!0!==r,!0))}(i,o,t,n):j(a)),B(a=>({...e,guardsResult:a})))})}(this.environmentInjector,s=>this.events.next(s)),Ze(s=>{if(i.guardsResult=s.guardsResult,gs(s.guardsResult))throw QA(0,s.guardsResult);const a=new KG(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot,!!s.guardsResult);this.events.next(a)}),mt(s=>!!s.guardsResult||(e.restoreHistory(s),this.cancelNavigationTransition(s,"",3),!1)),iy(s=>{if(s.guards.canActivateChecks.length)return j(s).pipe(Ze(a=>{const l=new XG(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(l)}),jn(a=>{let l=!1;return j(a).pipe(function l9(t,n){return Ot(e=>{const{targetSnapshot:i,guards:{canActivateChecks:r}}=e;if(!r.length)return j(e);let o=0;return yt(r).pipe(yo(s=>function c9(t,n,e,i){const r=t.routeConfig,o=t._resolve;return void 0!==r?.title&&!b1(r)&&(o[Fc]=r.title),function d9(t,n,e,i){const r=function u9(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}(t);if(0===r.length)return j({});const o={};return yt(r).pipe(Ot(s=>function h9(t,n,e,i){const r=Uc(n)??i,o=Ua(t,r);return ko(o.resolve?o.resolve(n,e):r.runInContext(()=>o(n,e)))}(t[s],n,e,i).pipe(zr(),Ze(a=>{o[s]=a}))),Pv(1),EA(o),ni(s=>ey(s)?xn:lr(s)))}(o,t,n,i).pipe(B(s=>(t._resolvedData=s,t.data=ZA(t,e).resolve,r&&b1(r)&&(t.data[Fc]=r.title),null)))}(s.route,i,t,n)),Ze(()=>o++),Pv(1),Ot(s=>o===r.length?j(e):xn))})}(e.paramsInheritanceStrategy,this.environmentInjector),Ze({next:()=>l=!0,complete:()=>{l||(e.restoreHistory(a),this.cancelNavigationTransition(a,"",2))}}))}),Ze(a=>{const l=new QG(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(l)}))}),iy(s=>{const a=l=>{const c=[];l.routeConfig?.loadComponent&&!l.routeConfig._loadedComponent&&c.push(this.configLoader.loadComponent(l.routeConfig).pipe(Ze(d=>{l.component=d}),B(()=>{})));for(const d of l.children)c.push(...a(d));return c};return La(a(s.targetSnapshot.root)).pipe(Oa(),qt(1))}),iy(()=>this.afterPreactivation()),B(s=>{const a=function hW(t,n,e){const i=Hc(t,n._root,e?e._root:void 0);return new qA(i,n)}(e.routeReuseStrategy,s.targetSnapshot,s.currentRouterState);return i={...s,targetRouterState:a}}),Ze(s=>{e.currentUrlTree=s.urlAfterRedirects,e.rawUrlTree=e.urlHandlingStrategy.merge(s.urlAfterRedirects,s.rawUrl),e.routerState=s.targetRouterState,"deferred"===e.urlUpdateStrategy&&(s.extras.skipLocationChange||e.setBrowserUrl(e.rawUrlTree,s),e.browserUrlTree=s.urlAfterRedirects)}),((t,n,e)=>B(i=>(new xW(n,i.targetRouterState,i.currentRouterState,e).activate(t),i)))(this.rootContexts,e.routeReuseStrategy,s=>this.events.next(s)),qt(1),Ze({next:s=>{r=!0,this.lastSuccessfulNavigation=this.currentNavigation,e.navigated=!0,this.events.next(new To(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(e.currentUrlTree))),e.titleStrategy?.updateTitle(s.targetRouterState.snapshot),s.resolve(!0)},complete:()=>{r=!0}}),pf(()=>{r||o||this.cancelNavigationTransition(i,"",1),this.currentNavigation?.id===i.id&&(this.currentNavigation=null)}),ni(s=>{if(o=!0,t1(s)){e1(s)||(e.navigated=!0,e.restoreHistory(i,!0));const a=new Cf(i.id,this.urlSerializer.serialize(i.extractedUrl),s.message,s.cancellationCode);if(this.events.next(a),e1(s)){const l=e.urlHandlingStrategy.merge(s.url,e.rawUrlTree),c={skipLocationChange:i.extras.skipLocationChange,replaceUrl:"eager"===e.urlUpdateStrategy||w1(i.source)};e.scheduleNavigation(l,jc,null,c,{resolve:i.resolve,reject:i.reject,promise:i.promise})}else i.resolve(!1)}else{e.restoreHistory(i,!0);const a=new Uv(i.id,this.urlSerializer.serialize(i.extractedUrl),s,i.targetSnapshot??void 0);this.events.next(a);try{i.resolve(e.errorHandler(s))}catch(l){i.reject(l)}}return xn}))}))}cancelNavigationTransition(e,i,r){const o=new Cf(e.id,this.urlSerializer.serialize(e.extractedUrl),i,r);this.events.next(o),e.resolve(!1)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function w1(t){return t!==jc}let x1=(()=>{class t{buildTitle(e){let i,r=e.root;for(;void 0!==r;)i=this.getResolvedTitleForRoute(r)??i,r=r.children.find(o=>o.outlet===Me);return i}getResolvedTitleForRoute(e){return e.data[Fc]}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return R(m9)},providedIn:"root"}),t})(),m9=(()=>{class t extends x1{constructor(e){super(),this.title=e}updateTitle(e){const i=this.buildTitle(e);void 0!==i&&this.title.setTitle(i)}}return t.\u0275fac=function(e){return new(e||t)(_(qM))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),p9=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return R(_9)},providedIn:"root"}),t})();class g9{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}}let _9=(()=>{class t extends g9{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const Pf=new k("",{providedIn:"root",factory:()=>({})});let v9=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return R(y9)},providedIn:"root"}),t})(),y9=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,i){return e}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function w9(t){throw t}function x9(t,n,e){return n.parse("/")}const C9={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},D9={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let ln=(()=>{class t{get navigationId(){return this.navigationTransitions.navigationId}get browserPageId(){return this.location.getState()?.\u0275routerPageId}get events(){return this.navigationTransitions.events}constructor(){this.disposed=!1,this.currentPageId=0,this.console=R(Bz),this.isNgZoneEnabled=!1,this.options=R(Pf,{optional:!0})||{},this.errorHandler=this.options.errorHandler||w9,this.malformedUriErrorHandler=this.options.malformedUriErrorHandler||x9,this.navigated=!1,this.lastSuccessfulId=-1,this.urlHandlingStrategy=R(v9),this.routeReuseStrategy=R(p9),this.urlCreationStrategy=R(cW),this.titleStrategy=R(x1),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.config=kA(R(Ga,{optional:!0})??[]),this.navigationTransitions=R(Ff),this.urlSerializer=R(Nc),this.location=R(fc),this.isNgZoneEnabled=R(Y)instanceof Y&&Y.isInAngularZone(),this.resetConfig(this.config),this.currentUrlTree=new Mo,this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=YA(this.currentUrlTree,null),this.navigationTransitions.setupNavigations(this).subscribe(e=>{this.lastSuccessfulId=e.id,this.currentPageId=e.targetPageId},e=>{this.console.warn(`Unhandled Navigation Error: ${e}`)})}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){if(this.setUpLocationChangeListener(),!this.navigationTransitions.hasRequestedNavigation){const e=this.location.getState();this.navigateToSyncWithBrowser(this.location.path(!0),jc,e)}}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(e=>{const i="popstate"===e.type?"popstate":"hashchange";"popstate"===i&&setTimeout(()=>{this.navigateToSyncWithBrowser(e.url,i,e.state)},0)}))}navigateToSyncWithBrowser(e,i,r){const o={replaceUrl:!0},s=r?.navigationId?r:null;if(r){const l={...r};delete l.navigationId,delete l.\u0275routerPageId,0!==Object.keys(l).length&&(o.state=l)}const a=this.parseUrl(e);this.scheduleNavigation(a,i,s,o)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}resetConfig(e){this.config=e.map(Jv),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(e,i={}){const{relativeTo:r,queryParams:o,fragment:s,queryParamsHandling:a,preserveFragment:l}=i,c=l?this.currentUrlTree.fragment:s;let d=null;switch(a){case"merge":d={...this.currentUrlTree.queryParams,...o};break;case"preserve":d=this.currentUrlTree.queryParams;break;default:d=o||null}return null!==d&&(d=this.removeEmptyProps(d)),this.urlCreationStrategy.createUrlTree(r,this.routerState,this.currentUrlTree,e,d,c??null)}navigateByUrl(e,i={skipLocationChange:!1}){const r=gs(e)?e:this.parseUrl(e),o=this.urlHandlingStrategy.merge(r,this.rawUrlTree);return this.scheduleNavigation(o,jc,null,i)}navigate(e,i={skipLocationChange:!1}){return function E9(t){for(let n=0;n{const o=e[r];return null!=o&&(i[r]=o),i},{})}scheduleNavigation(e,i,r,o,s){if(this.disposed)return Promise.resolve(!1);let a,l,c,d;return s?(a=s.resolve,l=s.reject,c=s.promise):c=new Promise((u,h)=>{a=u,l=h}),d="computed"===this.canceledNavigationResolution?r&&r.\u0275routerPageId?r.\u0275routerPageId:o.replaceUrl||o.skipLocationChange?this.browserPageId??0:(this.browserPageId??0)+1:0,this.navigationTransitions.handleNavigationRequest({targetPageId:d,source:i,restoredState:r,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:o,resolve:a,reject:l,promise:c,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),c.catch(u=>Promise.reject(u))}setBrowserUrl(e,i){const r=this.urlSerializer.serialize(e),o={...i.extras.state,...this.generateNgRouterState(i.id,i.targetPageId)};this.location.isCurrentPathEqualTo(r)||i.extras.replaceUrl?this.location.replaceState(r,"",o):this.location.go(r,"",o)}restoreHistory(e,i=!1){if("computed"===this.canceledNavigationResolution){const r=this.currentPageId-e.targetPageId;"popstate"!==e.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==this.getCurrentNavigation()?.finalUrl||0===r?this.currentUrlTree===this.getCurrentNavigation()?.finalUrl&&0===r&&(this.resetState(e),this.browserUrlTree=e.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(r)}else"replace"===this.canceledNavigationResolution&&(i&&this.resetState(e),this.resetUrlToCurrentUrlTree())}resetState(e){this.routerState=e.currentRouterState,this.currentUrlTree=e.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,i){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:i}:{navigationId:e}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();class C1{}let M9=(()=>{class t{constructor(e,i,r,o,s){this.router=e,this.injector=r,this.preloadingStrategy=o,this.loader=s}setUpPreloading(){this.subscription=this.router.events.pipe(mt(e=>e instanceof To),yo(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(e,i){const r=[];for(const o of i){o.providers&&!o._injector&&(o._injector=oh(o.providers,e,`Route: ${o.path}`));const s=o._injector??e,a=o._loadedInjector??s;(o.loadChildren&&!o._loadedRoutes&&void 0===o.canLoad||o.loadComponent&&!o._loadedComponent)&&r.push(this.preloadConfig(s,o)),(o.children||o._loadedRoutes)&&r.push(this.processRoutes(a,o.children??o._loadedRoutes))}return yt(r).pipe(Ls())}preloadConfig(e,i){return this.preloadingStrategy.preload(i,()=>{let r;r=i.loadChildren&&void 0===i.canLoad?this.loader.loadChildren(e,i):j(null);const o=r.pipe(Ot(s=>null===s?j(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,this.processRoutes(s.injector??e,s.routes))));return i.loadComponent&&!i._loadedComponent?yt([o,this.loader.loadComponent(i)]).pipe(Ls()):o})}}return t.\u0275fac=function(e){return new(e||t)(_(ln),_(Sk),_(Xi),_(C1),_(ry))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const ay=new k("");let D1=(()=>{class t{constructor(e,i,r,o,s={}){this.urlSerializer=e,this.transitions=i,this.viewportScroller=r,this.zone=o,this.options=s,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},s.scrollPositionRestoration=s.scrollPositionRestoration||"disabled",s.anchorScrolling=s.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof zv?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof To&&(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof GA&&(e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(e,i){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new GA(e,"popstate"===this.lastSource?this.store[this.restoredId]:null,i))})},0)})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}}return t.\u0275fac=function(e){Kl()},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();var ii=(()=>((ii=ii||{})[ii.COMPLETE=0]="COMPLETE",ii[ii.FAILED=1]="FAILED",ii[ii.REDIRECTING=2]="REDIRECTING",ii))();const Wa=!1;function Io(t,n){return{\u0275kind:t,\u0275providers:n}}const ly=new k("",{providedIn:"root",factory:()=>!1});function S1(){const t=R(kt);return n=>{const e=t.get(as);if(n!==e.components[0])return;const i=t.get(ln),r=t.get(k1);1===t.get(cy)&&i.initialNavigation(),t.get(M1,null,fe.Optional)?.setUpPreloading(),t.get(ay,null,fe.Optional)?.init(),i.resetRootComponentType(e.componentTypes[0]),r.closed||(r.next(),r.complete(),r.unsubscribe())}}const k1=new k(Wa?"bootstrap done indicator":"",{factory:()=>new te}),cy=new k(Wa?"initial navigation":"",{providedIn:"root",factory:()=>1});function R9(){let t=[];return t=Wa?[{provide:Hu,multi:!0,useFactory:()=>{const n=R(ln);return()=>n.events.subscribe(e=>{console.group?.(`Router Event: ${e.constructor.name}`),console.log(function oW(t){if(!("type"in t))return`Unknown Router Event: ${t.constructor.name}`;switch(t.type){case 14:return`ActivationEnd(path: '${t.snapshot.routeConfig?.path||""}')`;case 13:return`ActivationStart(path: '${t.snapshot.routeConfig?.path||""}')`;case 12:return`ChildActivationEnd(path: '${t.snapshot.routeConfig?.path||""}')`;case 11:return`ChildActivationStart(path: '${t.snapshot.routeConfig?.path||""}')`;case 8:return`GuardsCheckEnd(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state}, shouldActivate: ${t.shouldActivate})`;case 7:return`GuardsCheckStart(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state})`;case 2:return`NavigationCancel(id: ${t.id}, url: '${t.url}')`;case 16:return`NavigationSkipped(id: ${t.id}, url: '${t.url}')`;case 1:return`NavigationEnd(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}')`;case 3:return`NavigationError(id: ${t.id}, url: '${t.url}', error: ${t.error})`;case 0:return`NavigationStart(id: ${t.id}, url: '${t.url}')`;case 6:return`ResolveEnd(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state})`;case 5:return`ResolveStart(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state})`;case 10:return`RouteConfigLoadEnd(path: ${t.route.path})`;case 9:return`RouteConfigLoadStart(path: ${t.route.path})`;case 4:return`RoutesRecognized(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state})`;case 15:return`Scroll(anchor: '${t.anchor}', position: '${t.position?`${t.position[0]}, ${t.position[1]}`:null}')`}}(e)),console.log(e),console.groupEnd?.()})}}]:[],Io(1,t)}const M1=new k(Wa?"router preloader":"");function F9(t){return Io(0,[{provide:M1,useExisting:M9},{provide:C1,useExisting:t}])}const Yc=!1,T1=new k(Yc?"router duplicate forRoot guard":"ROUTER_FORROOT_GUARD"),P9=[fc,{provide:Nc,useClass:Nv},ln,zc,{provide:Ao,useFactory:function E1(t){return t.routerState.root},deps:[ln]},ry,Yc?{provide:ly,useValue:!0}:[]];function N9(){return new Rk("Router",ln)}let A1=(()=>{class t{constructor(e){}static forRoot(e,i){return{ngModule:t,providers:[P9,Yc&&i?.enableTracing?R9().\u0275providers:[],{provide:Ga,multi:!0,useValue:e},{provide:T1,useFactory:j9,deps:[[ln,new Ar,new Js]]},{provide:Pf,useValue:i||{}},i?.useHash?{provide:bo,useClass:EU}:{provide:bo,useClass:tM},{provide:ay,useFactory:()=>{const t=R(H$),n=R(Y),e=R(Pf),i=R(Ff),r=R(Nc);return e.scrollOffset&&t.setOffset(e.scrollOffset),new D1(r,i,t,n,e)}},i?.preloadingStrategy?F9(i.preloadingStrategy).\u0275providers:[],{provide:Rk,multi:!0,useFactory:N9},i?.initialNavigation?H9(i):[],[{provide:I1,useFactory:S1},{provide:hh,multi:!0,useExisting:I1}]]}}static forChild(e){return{ngModule:t,providers:[{provide:Ga,multi:!0,useValue:e}]}}}return t.\u0275fac=function(e){return new(e||t)(_(T1,8))},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Xv]}),t})();function j9(t){if(Yc&&t)throw new A(4007,"The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function H9(t){return["disabled"===t.initialNavigation?Io(3,[{provide:Sa,multi:!0,useFactory:()=>{const n=R(ln);return()=>{n.setUpLocationChangeListener()}}},{provide:cy,useValue:2}]).\u0275providers:[],"enabledBlocking"===t.initialNavigation?Io(2,[{provide:cy,useValue:0},{provide:Sa,multi:!0,deps:[kt],useFactory:n=>{const e=n.get(CU,Promise.resolve());return()=>e.then(()=>new Promise(i=>{const r=n.get(ln),o=n.get(k1);(function T9(t,n){t.events.pipe(mt(e=>e instanceof To||e instanceof Cf||e instanceof Uv||e instanceof Df),B(e=>e instanceof To||e instanceof Df?ii.COMPLETE:e instanceof Cf&&(0===e.code||1===e.code)?ii.REDIRECTING:ii.FAILED),mt(e=>e!==ii.REDIRECTING),qt(1)).subscribe(()=>{n()})})(r,()=>{i(!0)}),n.get(Ff).afterPreactivation=()=>(i(!0),o.closed?j(void 0):o),r.initialNavigation()}))}}]).\u0275providers:[]]}const I1=new k(Yc?"Router Initializer":"");function O1(t,n){for(const[e,i]of Object.entries(n??{}))null!=i&&t.set(e,`${i}`)}function U9(t,n,e,i){const r=t.get(ln,null),o=t.get(bo,null),s=t.get(Ma),a=e.relativeTo??t.get(Ao,null),l=i?$e.RESOURCE_URL:$e.URL;if(!r||!o)return;const c=r.createUrlTree(n,{...e,relativeTo:a}),d=o.prepareExternalUrl(r.serializeUrl(c));return s.sanitize(l,d)??void 0}function R1(t,n){const{fragment:e,preserveFragment:i,queryParams:r,queryParamsHandling:o}=n,s=new URL(t);return(void 0!==e||!1===i)&&(s.hash=e??""),""===o?(s.search="",O1(s.searchParams,r)):"preserve"!==o&&O1(s.searchParams,r),s.toString()}function F1(t){return typeof t>"u"||null===t}var Yt={isNothing:F1,isObject:function $9(t){return"object"==typeof t&&null!==t},toArray:function G9(t){return Array.isArray(t)?t:F1(t)?[]:[t]},repeat:function q9(t,n){var i,e="";for(i=0;ia&&(n=i-a+(o=" ... ").length),e-i>a&&(e=i+a-(s=" ...").length),{str:o+t.slice(n,e).replace(/\t/g,"\u2192")+s,pos:i-n+o.length}}function uy(t,n){return Yt.repeat(" ",n-t.length)+t}var nq=function tq(t,n){if(n=Object.create(n||null),!t.buffer)return null;n.maxLength||(n.maxLength=79),"number"!=typeof n.indent&&(n.indent=1),"number"!=typeof n.linesBefore&&(n.linesBefore=3),"number"!=typeof n.linesAfter&&(n.linesAfter=2);for(var o,e=/\r?\n|\r|\0/g,i=[0],r=[],s=-1;o=e.exec(t.buffer);)r.push(o.index),i.push(o.index+o[0].length),t.position<=o.index&&s<0&&(s=i.length-2);s<0&&(s=i.length-1);var l,c,a="",d=Math.min(t.line+n.linesAfter,r.length).toString().length,u=n.maxLength-(n.indent+d+3);for(l=1;l<=n.linesBefore&&!(s-l<0);l++)c=dy(t.buffer,i[s-l],r[s-l],t.position-(i[s]-i[s-l]),u),a=Yt.repeat(" ",n.indent)+uy((t.line-l+1).toString(),d)+" | "+c.str+"\n"+a;for(c=dy(t.buffer,i[s],r[s],t.position,u),a+=Yt.repeat(" ",n.indent)+uy((t.line+1).toString(),d)+" | "+c.str+"\n",a+=Yt.repeat("-",n.indent+d+3+c.pos)+"^\n",l=1;l<=n.linesAfter&&!(s+l>=r.length);l++)c=dy(t.buffer,i[s+l],r[s+l],t.position-(i[s]-i[s+l]),u),a+=Yt.repeat(" ",n.indent)+uy((t.line+l+1).toString(),d)+" | "+c.str+"\n";return a.replace(/\n$/,"")},iq=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],rq=["scalar","sequence","mapping"],cn=function sq(t,n){if(n=n||{},Object.keys(n).forEach(function(e){if(-1===iq.indexOf(e))throw new Tn('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')}),this.options=n,this.tag=t,this.kind=n.kind||null,this.resolve=n.resolve||function(){return!0},this.construct=n.construct||function(e){return e},this.instanceOf=n.instanceOf||null,this.predicate=n.predicate||null,this.represent=n.represent||null,this.representName=n.representName||null,this.defaultStyle=n.defaultStyle||null,this.multi=n.multi||!1,this.styleAliases=function oq(t){var n={};return null!==t&&Object.keys(t).forEach(function(e){t[e].forEach(function(i){n[String(i)]=e})}),n}(n.styleAliases||null),-1===rq.indexOf(this.kind))throw new Tn('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function N1(t,n){var e=[];return t[n].forEach(function(i){var r=e.length;e.forEach(function(o,s){o.tag===i.tag&&o.kind===i.kind&&o.multi===i.multi&&(r=s)}),e[r]=i}),e}function hy(t){return this.extend(t)}hy.prototype.extend=function(n){var e=[],i=[];if(n instanceof cn)i.push(n);else if(Array.isArray(n))i=i.concat(n);else{if(!n||!Array.isArray(n.implicit)&&!Array.isArray(n.explicit))throw new Tn("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");n.implicit&&(e=e.concat(n.implicit)),n.explicit&&(i=i.concat(n.explicit))}e.forEach(function(o){if(!(o instanceof cn))throw new Tn("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(o.loadKind&&"scalar"!==o.loadKind)throw new Tn("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(o.multi)throw new Tn("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),i.forEach(function(o){if(!(o instanceof cn))throw new Tn("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var r=Object.create(hy.prototype);return r.implicit=(this.implicit||[]).concat(e),r.explicit=(this.explicit||[]).concat(i),r.compiledImplicit=N1(r,"implicit"),r.compiledExplicit=N1(r,"explicit"),r.compiledTypeMap=function aq(){var n,e,t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(r){r.multi?(t.multi[r.kind].push(r),t.multi.fallback.push(r)):t[r.kind][r.tag]=t.fallback[r.tag]=r}for(n=0,e=arguments.length;n=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),yq=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),Cq=/^[-+]?[0-9]+e/,G1=new cn("tag:yaml.org,2002:float",{kind:"scalar",resolve:function wq(t){return!(null===t||!yq.test(t)||"_"===t[t.length-1])},construct:function xq(t){var n,e;return e="-"===(n=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(n[0])>=0&&(n=n.slice(1)),".inf"===n?1===e?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===n?NaN:e*parseFloat(n,10)},predicate:function Eq(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||Yt.isNegativeZero(t))},represent:function Dq(t,n){var e;if(isNaN(t))switch(n){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(n){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(n){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Yt.isNegativeZero(t))return"-0.0";return e=t.toString(10),Cq.test(e)?e.replace("e",".e"):e},defaultStyle:"lowercase"}),q1=H1.extend({implicit:[z1,U1,$1,G1]}),Y1=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Z1=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),K1=new cn("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function Sq(t){return null!==t&&(null!==Y1.exec(t)||null!==Z1.exec(t))},construct:function kq(t){var n,e,i,r,o,s,a,h,l=0,c=null;if(null===(n=Y1.exec(t))&&(n=Z1.exec(t)),null===n)throw new Error("Date resolve error");if(e=+n[1],i=+n[2]-1,r=+n[3],!n[4])return new Date(Date.UTC(e,i,r));if(o=+n[4],s=+n[5],a=+n[6],n[7]){for(l=n[7].slice(0,3);l.length<3;)l+="0";l=+l}return n[9]&&(c=6e4*(60*+n[10]+ +(n[11]||0)),"-"===n[9]&&(c=-c)),h=new Date(Date.UTC(e,i,r,o,s,a,l)),c&&h.setTime(h.getTime()-c),h},instanceOf:Date,represent:function Mq(t){return t.toISOString()}}),X1=new cn("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function Tq(t){return"<<"===t||null===t}}),fy="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",Q1=new cn("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function Aq(t){if(null===t)return!1;var n,e,i=0,r=t.length,o=fy;for(e=0;e64)){if(n<0)return!1;i+=6}return i%8==0},construct:function Iq(t){var n,e,i=t.replace(/[\r\n=]/g,""),r=i.length,o=fy,s=0,a=[];for(n=0;n>16&255),a.push(s>>8&255),a.push(255&s)),s=s<<6|o.indexOf(i.charAt(n));return 0==(e=r%4*6)?(a.push(s>>16&255),a.push(s>>8&255),a.push(255&s)):18===e?(a.push(s>>10&255),a.push(s>>2&255)):12===e&&a.push(s>>4&255),new Uint8Array(a)},predicate:function Rq(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function Oq(t){var i,r,n="",e=0,o=t.length,s=fy;for(i=0;i>18&63],n+=s[e>>12&63],n+=s[e>>6&63],n+=s[63&e]),e=(e<<8)+t[i];return 0==(r=o%3)?(n+=s[e>>18&63],n+=s[e>>12&63],n+=s[e>>6&63],n+=s[63&e]):2===r?(n+=s[e>>10&63],n+=s[e>>4&63],n+=s[e<<2&63],n+=s[64]):1===r&&(n+=s[e>>2&63],n+=s[e<<4&63],n+=s[64],n+=s[64]),n}}),Fq=Object.prototype.hasOwnProperty,Pq=Object.prototype.toString,J1=new cn("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function Nq(t){if(null===t)return!0;var e,i,r,o,s,n=[],a=t;for(e=0,i=a.length;e>10),56320+(t-65536&1023))}for(var cI=new Array(256),dI=new Array(256),Ya=0;Ya<256;Ya++)cI[Ya]=lI(Ya)?1:0,dI[Ya]=lI(Ya);function Qq(t,n){this.input=t,this.filename=n.filename||null,this.schema=n.schema||my,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function uI(t,n){var e={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return e.snippet=nq(e),new Tn(n,e)}function oe(t,n){throw uI(t,n)}function Bf(t,n){t.onWarning&&t.onWarning.call(null,uI(t,n))}var hI={YAML:function(n,e,i){var r,o,s;null!==n.version&&oe(n,"duplication of %YAML directive"),1!==i.length&&oe(n,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(i[0]))&&oe(n,"ill-formed argument of the YAML directive"),o=parseInt(r[1],10),s=parseInt(r[2],10),1!==o&&oe(n,"unacceptable YAML version of the document"),n.version=i[0],n.checkLineBreaks=s<2,1!==s&&2!==s&&Bf(n,"unsupported YAML version of the document")},TAG:function(n,e,i){var r,o;2!==i.length&&oe(n,"TAG directive accepts exactly two arguments"),o=i[1],oI.test(r=i[0])||oe(n,"ill-formed tag handle (first argument) of the TAG directive"),Oo.call(n.tagMap,r)&&oe(n,'there is a previously declared suffix for "'+r+'" tag handle'),sI.test(o)||oe(n,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch{oe(n,"tag prefix is malformed: "+o)}n.tagMap[r]=o}};function Ro(t,n,e,i){var r,o,s,a;if(n1&&(t.result+=Yt.repeat("\n",n-1))}function mI(t,n){var e,l,i=t.tag,r=t.anchor,o=[],a=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),l=t.input.charCodeAt(t.position);0!==l&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,oe(t,"tab characters must not be used in indentation")),45===l&&Hn(t.input.charCodeAt(t.position+1)));)if(a=!0,t.position++,zt(t,!0,-1)&&t.lineIndent<=n)o.push(null),l=t.input.charCodeAt(t.position);else if(e=t.line,Ka(t,n,iI,!1,!0),o.push(t.result),zt(t,!0,-1),l=t.input.charCodeAt(t.position),(t.line===e||t.lineIndent>n)&&0!==l)oe(t,"bad indentation of a sequence entry");else if(t.lineIndentn?l=1:t.lineIndent===n?l=0:t.lineIndentn?l=1:t.lineIndent===n?l=0:t.lineIndentn)&&(b&&(s=t.line,a=t.lineStart,l=t.position),Ka(t,n,Lf,!0,r)&&(b?p=t.result:g=t.result),b||(Za(t,u,h,f,p,g,s,a,l),f=p=g=null),zt(t,!0,-1),w=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>n)&&0!==w)oe(t,"bad indentation of a mapping entry");else if(t.lineIndent=0))break;0===d?oe(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?oe(t,"repeat of an indentation width identifier"):(a=n+d-1,s=!0)}if(_s(u)){do{u=t.input.charCodeAt(++t.position)}while(_s(u));if(35===u)do{u=t.input.charCodeAt(++t.position)}while(!hr(u)&&0!==u)}for(;0!==u;){for(gy(t),t.lineIndent=0,u=t.input.charCodeAt(t.position);(!s||t.lineIndenta&&(a=t.lineIndent),hr(u))l++;else{if(t.lineIndent0){for(r=s,o=0;r>0;r--)(s=Yq(a=t.input.charCodeAt(++t.position)))>=0?o=(o<<4)+s:oe(t,"expected hexadecimal character");t.result+=Xq(o),t.position++}else oe(t,"unknown escape sequence");e=i=t.position}else hr(a)?(Ro(t,e,i,!0),_y(t,zt(t,!1,n)),e=i=t.position):t.position===t.lineStart&&Vf(t)?oe(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}oe(t,"unexpected end of the stream within a double quoted scalar")}(t,g)?d=!0:function a7(t){var n,e,i;if(42!==(i=t.input.charCodeAt(t.position)))return!1;for(i=t.input.charCodeAt(++t.position),n=t.position;0!==i&&!Hn(i)&&!qa(i);)i=t.input.charCodeAt(++t.position);return t.position===n&&oe(t,"name of an alias node must contain at least one character"),e=t.input.slice(n,t.position),Oo.call(t.anchorMap,e)||oe(t,'unidentified alias "'+e+'"'),t.result=t.anchorMap[e],zt(t,!0,-1),!0}(t)?(d=!0,(null!==t.tag||null!==t.anchor)&&oe(t,"alias node should not have any properties")):function Jq(t,n,e){var r,o,s,a,l,c,d,f,u=t.kind,h=t.result;if(Hn(f=t.input.charCodeAt(t.position))||qa(f)||35===f||38===f||42===f||33===f||124===f||62===f||39===f||34===f||37===f||64===f||96===f||(63===f||45===f)&&(Hn(r=t.input.charCodeAt(t.position+1))||e&&qa(r)))return!1;for(t.kind="scalar",t.result="",o=s=t.position,a=!1;0!==f;){if(58===f){if(Hn(r=t.input.charCodeAt(t.position+1))||e&&qa(r))break}else if(35===f){if(Hn(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&Vf(t)||e&&qa(f))break;if(hr(f)){if(l=t.line,c=t.lineStart,d=t.lineIndent,zt(t,!1,-1),t.lineIndent>=n){a=!0,f=t.input.charCodeAt(t.position);continue}t.position=s,t.line=l,t.lineStart=c,t.lineIndent=d;break}}a&&(Ro(t,o,s,!1),_y(t,t.line-l),o=s=t.position,a=!1),_s(f)||(s=t.position+1),f=t.input.charCodeAt(++t.position)}return Ro(t,o,s,!1),!!t.result||(t.kind=u,t.result=h,!1)}(t,g,Nf===e)&&(d=!0,null===t.tag&&(t.tag="?")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===l&&(d=a&&mI(t,b))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&oe(t,'unacceptable node kind for ! tag; it should be "scalar", not "'+t.kind+'"'),u=0,h=t.implicitTypes.length;u"),null!==t.result&&p.kind!==t.kind&&oe(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+p.kind+'", not "'+t.kind+'"'),p.resolve(t.result,t.tag)?(t.result=p.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):oe(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||d}function l7(t){var e,i,r,s,n=t.position,o=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(s=t.input.charCodeAt(t.position))&&(zt(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==s));){for(o=!0,s=t.input.charCodeAt(++t.position),e=t.position;0!==s&&!Hn(s);)s=t.input.charCodeAt(++t.position);for(r=[],(i=t.input.slice(e,t.position)).length<1&&oe(t,"directive name must not be less than one character in length");0!==s;){for(;_s(s);)s=t.input.charCodeAt(++t.position);if(35===s){do{s=t.input.charCodeAt(++t.position)}while(0!==s&&!hr(s));break}if(hr(s))break;for(e=t.position;0!==s&&!Hn(s);)s=t.input.charCodeAt(++t.position);r.push(t.input.slice(e,t.position))}0!==s&&gy(t),Oo.call(hI,i)?hI[i](t,i,r):Bf(t,'unknown document directive "'+i+'"')}zt(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,zt(t,!0,-1)):o&&oe(t,"directives end mark is expected"),Ka(t,t.lineIndent-1,Lf,!1,!0),zt(t,!0,-1),t.checkLineBreaks&&Wq.test(t.input.slice(n,t.position))&&Bf(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Vf(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,zt(t,!0,-1)):t.positioned(`[${t}] ${n}`)}function ed(t){var n;return function cY(t){(function lY(t){if(NI.has(t))throw new Error(`Action type '${t}' is not unique`)})(t),NI.add(t)}(t),(n=class{constructor(){this.type=t}}).type=t,n}const td=Fo("LinkRegistry");class Dy extends(td("Add")){constructor(n,e){super(),this.id=n,this.entry=e}}class nd extends(td("Add Many")){constructor(n){super(),this.entries=n}}class Ey extends(td("Add from Yaml")){constructor(n){super(),this.yaml=n}}class Uf extends(td("Load from Yaml")){constructor(n){super(),this.url=n}}class Qa extends(td("Navigate")){constructor(n,e={}){super(),this.id=n,this.extras=e}}var Ke,t;(t=Ke||(Ke={})).assertEqual=r=>r,t.assertIs=function n(r){},t.assertNever=function e(r){throw new Error},t.arrayToEnum=r=>{const o={};for(const s of r)o[s]=s;return o},t.getValidEnumValues=r=>{const o=t.objectKeys(r).filter(a=>"number"!=typeof r[r[a]]),s={};for(const a of o)s[a]=r[a];return t.objectValues(s)},t.objectValues=r=>t.objectKeys(r).map(function(o){return r[o]}),t.objectKeys="function"==typeof Object.keys?r=>Object.keys(r):r=>{const o=[];for(const s in r)Object.prototype.hasOwnProperty.call(r,s)&&o.push(s);return o},t.find=(r,o)=>{for(const s of r)if(o(s))return s},t.isInteger="function"==typeof Number.isInteger?r=>Number.isInteger(r):r=>"number"==typeof r&&isFinite(r)&&Math.floor(r)===r,t.joinValues=function i(r,o=" | "){return r.map(s=>"string"==typeof s?`'${s}'`:s).join(o)},t.jsonStringifyReplacer=(r,o)=>"bigint"==typeof o?o.toString():o;var $f=(()=>(function(t){t.mergeShapes=(n,e)=>({...n,...e})}($f||($f={})),$f))();const W=Ke.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Po=t=>{switch(typeof t){case"undefined":return W.undefined;case"string":return W.string;case"number":return isNaN(t)?W.nan:W.number;case"boolean":return W.boolean;case"function":return W.function;case"bigint":return W.bigint;case"symbol":return W.symbol;case"object":return Array.isArray(t)?W.array:null===t?W.null:t.then&&"function"==typeof t.then&&t.catch&&"function"==typeof t.catch?W.promise:typeof Map<"u"&&t instanceof Map?W.map:typeof Set<"u"&&t instanceof Set?W.set:typeof Date<"u"&&t instanceof Date?W.date:W.object;default:return W.unknown}},L=Ke.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);let Gr=(()=>{class t extends Error{constructor(e){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const i=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,i):this.__proto__=i,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const i=e||function(s){return s.message},r={_errors:[]},o=s=>{for(const a of s.issues)if("invalid_union"===a.code)a.unionErrors.map(o);else if("invalid_return_type"===a.code)o(a.returnTypeError);else if("invalid_arguments"===a.code)o(a.argumentsError);else if(0===a.path.length)r._errors.push(i(a));else{let l=r,c=0;for(;ci.message)){const i={},r=[];for(const o of this.issues)o.path.length>0?(i[o.path[0]]=i[o.path[0]]||[],i[o.path[0]].push(e(o))):r.push(e(o));return{formErrors:r,fieldErrors:i}}get formErrors(){return this.flatten()}}return t.create=n=>new t(n),t})();const id=(t,n)=>{let e;switch(t.code){case L.invalid_type:e=t.received===W.undefined?"Required":`Expected ${t.expected}, received ${t.received}`;break;case L.invalid_literal:e=`Invalid literal value, expected ${JSON.stringify(t.expected,Ke.jsonStringifyReplacer)}`;break;case L.unrecognized_keys:e=`Unrecognized key(s) in object: ${Ke.joinValues(t.keys,", ")}`;break;case L.invalid_union:e="Invalid input";break;case L.invalid_union_discriminator:e=`Invalid discriminator value. Expected ${Ke.joinValues(t.options)}`;break;case L.invalid_enum_value:e=`Invalid enum value. Expected ${Ke.joinValues(t.options)}, received '${t.received}'`;break;case L.invalid_arguments:e="Invalid function arguments";break;case L.invalid_return_type:e="Invalid function return type";break;case L.invalid_date:e="Invalid date";break;case L.invalid_string:"object"==typeof t.validation?"includes"in t.validation?(e=`Invalid input: must include "${t.validation.includes}"`,"number"==typeof t.validation.position&&(e=`${e} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?e=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?e=`Invalid input: must end with "${t.validation.endsWith}"`:Ke.assertNever(t.validation):e="regex"!==t.validation?`Invalid ${t.validation}`:"Invalid";break;case L.too_small:e="array"===t.type?`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:"string"===t.type?`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:"number"===t.type?`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:"date"===t.type?`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:"Invalid input";break;case L.too_big:e="array"===t.type?`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:"string"===t.type?`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:"number"===t.type?`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:"bigint"===t.type?`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:"date"===t.type?`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:"Invalid input";break;case L.custom:e="Invalid input";break;case L.invalid_intersection_types:e="Intersection results could not be merged";break;case L.not_multiple_of:e=`Number must be a multiple of ${t.multipleOf}`;break;case L.not_finite:e="Number must be finite";break;default:e=n.defaultError,Ke.assertNever(t)}return{message:e}};let LI=id;function Gf(){return LI}const Wf=t=>{const{data:n,path:e,errorMaps:i,issueData:r}=t,o=[...e,...r.path||[]],s={...r,path:o};let a="";const l=i.filter(c=>!!c).slice().reverse();for(const c of l)a=c(s,{data:n,defaultError:a}).message;return{...r,path:o,message:r.message||a}};function Z(t,n){const e=Wf({issueData:n,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Gf(),id].filter(i=>!!i)});t.common.issues.push(e)}class vn{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(n,e){const i=[];for(const r of e){if("aborted"===r.status)return ke;"dirty"===r.status&&n.dirty(),i.push(r.value)}return{status:n.value,value:i}}static mergeObjectAsync(n,e){return Ci(function*(){const i=[];for(const r of e)i.push({key:yield r.key,value:yield r.value});return vn.mergeObjectSync(n,i)})()}static mergeObjectSync(n,e){const i={};for(const r of e){const{key:o,value:s}=r;if("aborted"===o.status||"aborted"===s.status)return ke;"dirty"===o.status&&n.dirty(),"dirty"===s.status&&n.dirty(),(typeof s.value<"u"||r.alwaysSet)&&(i[o.value]=s.value)}return{status:n.value,value:i}}}const ke=Object.freeze({status:"aborted"}),BI=t=>({status:"dirty",value:t}),An=t=>({status:"valid",value:t}),Sy=t=>"aborted"===t.status,ky=t=>"dirty"===t.status,qf=t=>"valid"===t.status,Yf=t=>typeof Promise<"u"&&t instanceof Promise;var se=(()=>(function(t){t.errToObj=n=>"string"==typeof n?{message:n}:n||{},t.toString=n=>"string"==typeof n?n:n?.message}(se||(se={})),se))();class fr{constructor(n,e,i,r){this._cachedPath=[],this.parent=n,this.data=e,this._path=i,this._key=r}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const VI=(t,n)=>{if(qf(n))return{success:!0,data:n.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const e=new Gr(t.common.issues);return this._error=e,this._error}}};function Fe(t){if(!t)return{};const{errorMap:n,invalid_type_error:e,required_error:i,description:r}=t;if(n&&(e||i))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return n?{errorMap:n,description:r}:{errorMap:(s,a)=>"invalid_type"!==s.code?{message:a.defaultError}:typeof a.data>"u"?{message:i??a.defaultError}:{message:e??a.defaultError},description:r}}class Le{constructor(n){this.spa=this.safeParseAsync,this._def=n,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(n){return Po(n.data)}_getOrReturnCtx(n,e){return e||{common:n.parent.common,data:n.data,parsedType:Po(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}_processInputParams(n){return{status:new vn,ctx:{common:n.parent.common,data:n.data,parsedType:Po(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}}_parseSync(n){const e=this._parse(n);if(Yf(e))throw new Error("Synchronous parse encountered promise.");return e}_parseAsync(n){const e=this._parse(n);return Promise.resolve(e)}parse(n,e){const i=this.safeParse(n,e);if(i.success)return i.data;throw i.error}safeParse(n,e){var i;const r={common:{issues:[],async:null!==(i=e?.async)&&void 0!==i&&i,contextualErrorMap:e?.errorMap},path:e?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Po(n)},o=this._parseSync({data:n,path:r.path,parent:r});return VI(r,o)}parseAsync(n,e){var i=this;return Ci(function*(){const r=yield i.safeParseAsync(n,e);if(r.success)return r.data;throw r.error})()}safeParseAsync(n,e){var i=this;return Ci(function*(){const r={common:{issues:[],contextualErrorMap:e?.errorMap,async:!0},path:e?.path||[],schemaErrorMap:i._def.errorMap,parent:null,data:n,parsedType:Po(n)},o=i._parse({data:n,path:r.path,parent:r}),s=yield Yf(o)?o:Promise.resolve(o);return VI(r,s)})()}refine(n,e){const i=r=>"string"==typeof e||typeof e>"u"?{message:e}:"function"==typeof e?e(r):e;return this._refinement((r,o)=>{const s=n(r),a=()=>o.addIssue({code:L.custom,...i(r)});return typeof Promise<"u"&&s instanceof Promise?s.then(l=>!!l||(a(),!1)):!!s||(a(),!1)})}refinement(n,e){return this._refinement((i,r)=>!!n(i)||(r.addIssue("function"==typeof e?e(i,r):e),!1))}_refinement(n){return new vs({schema:this,typeName:be.ZodEffects,effect:{type:"refinement",refinement:n}})}superRefine(n){return this._refinement(n)}optional(){return ys.create(this,this._def)}nullable(){return ad.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return od.create(this,this._def)}promise(){return em.create(this,this._def)}or(n){return Fy.create([this,n],this._def)}and(n){return Ny.create(this,n,this._def)}transform(n){return new vs({...Fe(this._def),schema:this,typeName:be.ZodEffects,effect:{type:"transform",transform:n}})}default(n){const e="function"==typeof n?n:()=>n;return new jy({...Fe(this._def),innerType:this,defaultValue:e,typeName:be.ZodDefault})}brand(){return new qI({typeName:be.ZodBranded,type:this,...Fe(this._def)})}catch(n){const e="function"==typeof n?n:()=>n;return new GI({...Fe(this._def),innerType:this,catchValue:e,typeName:be.ZodCatch})}describe(n){return new(0,this.constructor)({...this._def,description:n})}pipe(n){return ld.create(this,n)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const fY=/^c[^\s-]{8,}$/i,mY=/^[a-z][a-z0-9]*$/,pY=/[0-9A-HJKMNP-TV-Z]{26}/,gY=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,_Y=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/,bY=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,vY=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,yY=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,wY=t=>t.precision?t.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${t.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${t.precision}}Z$`):0===t.precision?t.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):t.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function xY(t,n){return!(("v4"!==n&&n||!vY.test(t))&&("v6"!==n&&n||!yY.test(t)))}let Zf=(()=>{class t extends Le{constructor(){super(...arguments),this._regex=(e,i,r)=>this.refinement(o=>e.test(o),{validation:i,code:L.invalid_string,...se.errToObj(r)}),this.nonempty=e=>this.min(1,se.errToObj(e)),this.trim=()=>new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==W.string){const s=this._getOrReturnCtx(e);return Z(s,{code:L.invalid_type,expected:W.string,received:s.parsedType}),ke}const r=new vn;let o;for(const s of this._def.checks)if("min"===s.kind)e.data.lengths.value&&(o=this._getOrReturnCtx(e,o),Z(o,{code:L.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if("length"===s.kind){const a=e.data.length>s.value,l=e.data.length"u"?null:e?.precision,offset:null!==(i=e?.offset)&&void 0!==i&&i,...se.errToObj(e?.message)})}regex(e,i){return this._addCheck({kind:"regex",regex:e,...se.errToObj(i)})}includes(e,i){return this._addCheck({kind:"includes",value:e,position:i?.position,...se.errToObj(i?.message)})}startsWith(e,i){return this._addCheck({kind:"startsWith",value:e,...se.errToObj(i)})}endsWith(e,i){return this._addCheck({kind:"endsWith",value:e,...se.errToObj(i)})}min(e,i){return this._addCheck({kind:"min",value:e,...se.errToObj(i)})}max(e,i){return this._addCheck({kind:"max",value:e,...se.errToObj(i)})}length(e,i){return this._addCheck({kind:"length",value:e,...se.errToObj(i)})}get isDatetime(){return!!this._def.checks.find(e=>"datetime"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>"email"===e.kind)}get isURL(){return!!this._def.checks.find(e=>"url"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>"emoji"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>"uuid"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>"cuid"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>"cuid2"===e.kind)}get isULID(){return!!this._def.checks.find(e=>"ulid"===e.kind)}get isIP(){return!!this._def.checks.find(e=>"ip"===e.kind)}get minLength(){let e=null;for(const i of this._def.checks)"min"===i.kind&&(null===e||i.value>e)&&(e=i.value);return e}get maxLength(){let e=null;for(const i of this._def.checks)"max"===i.kind&&(null===e||i.value{var e;return new t({checks:[],typeName:be.ZodString,coerce:null!==(e=n?.coerce)&&void 0!==e&&e,...Fe(n)})},t})();function CY(t,n){const e=(t.toString().split(".")[1]||"").length,i=(n.toString().split(".")[1]||"").length,r=e>i?e:i;return parseInt(t.toFixed(r).replace(".",""))%parseInt(n.toFixed(r).replace(".",""))/Math.pow(10,r)}let My=(()=>{class t extends Le{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==W.number){const s=this._getOrReturnCtx(e);return Z(s,{code:L.invalid_type,expected:W.number,received:s.parsedType}),ke}let r;const o=new vn;for(const s of this._def.checks)"int"===s.kind?Ke.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),Z(r,{code:L.invalid_type,expected:"integer",received:"float",message:s.message}),o.dirty()):"min"===s.kind?(s.inclusive?e.datas.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),Z(r,{code:L.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),o.dirty()):"multipleOf"===s.kind?0!==CY(e.data,s.value)&&(r=this._getOrReturnCtx(e,r),Z(r,{code:L.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):"finite"===s.kind?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),Z(r,{code:L.not_finite,message:s.message}),o.dirty()):Ke.assertNever(s);return{status:o.value,value:e.data}}gte(e,i){return this.setLimit("min",e,!0,se.toString(i))}gt(e,i){return this.setLimit("min",e,!1,se.toString(i))}lte(e,i){return this.setLimit("max",e,!0,se.toString(i))}lt(e,i){return this.setLimit("max",e,!1,se.toString(i))}setLimit(e,i,r,o){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:i,inclusive:r,message:se.toString(o)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:se.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:se.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:se.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:se.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:se.toString(e)})}multipleOf(e,i){return this._addCheck({kind:"multipleOf",value:e,message:se.toString(i)})}finite(e){return this._addCheck({kind:"finite",message:se.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:se.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:se.toString(e)})}get minValue(){let e=null;for(const i of this._def.checks)"min"===i.kind&&(null===e||i.value>e)&&(e=i.value);return e}get maxValue(){let e=null;for(const i of this._def.checks)"max"===i.kind&&(null===e||i.value"int"===e.kind||"multipleOf"===e.kind&&Ke.isInteger(e.value))}get isFinite(){let e=null,i=null;for(const r of this._def.checks){if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;"min"===r.kind?(null===i||r.value>i)&&(i=r.value):"max"===r.kind&&(null===e||r.valuenew t({checks:[],typeName:be.ZodNumber,coerce:n?.coerce||!1,...Fe(n)}),t})(),Ty=(()=>{class t extends Le{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce&&(e.data=BigInt(e.data)),this._getType(e)!==W.bigint){const s=this._getOrReturnCtx(e);return Z(s,{code:L.invalid_type,expected:W.bigint,received:s.parsedType}),ke}let r;const o=new vn;for(const s of this._def.checks)"min"===s.kind?(s.inclusive?e.datas.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),Z(r,{code:L.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),o.dirty()):"multipleOf"===s.kind?e.data%s.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),Z(r,{code:L.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):Ke.assertNever(s);return{status:o.value,value:e.data}}gte(e,i){return this.setLimit("min",e,!0,se.toString(i))}gt(e,i){return this.setLimit("min",e,!1,se.toString(i))}lte(e,i){return this.setLimit("max",e,!0,se.toString(i))}lt(e,i){return this.setLimit("max",e,!1,se.toString(i))}setLimit(e,i,r,o){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:i,inclusive:r,message:se.toString(o)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:se.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:se.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:se.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:se.toString(e)})}multipleOf(e,i){return this._addCheck({kind:"multipleOf",value:e,message:se.toString(i)})}get minValue(){let e=null;for(const i of this._def.checks)"min"===i.kind&&(null===e||i.value>e)&&(e=i.value);return e}get maxValue(){let e=null;for(const i of this._def.checks)"max"===i.kind&&(null===e||i.value{var e;return new t({checks:[],typeName:be.ZodBigInt,coerce:null!==(e=n?.coerce)&&void 0!==e&&e,...Fe(n)})},t})(),Ay=(()=>{class t extends Le{_parse(e){if(this._def.coerce&&(e.data=Boolean(e.data)),this._getType(e)!==W.boolean){const r=this._getOrReturnCtx(e);return Z(r,{code:L.invalid_type,expected:W.boolean,received:r.parsedType}),ke}return An(e.data)}}return t.create=n=>new t({typeName:be.ZodBoolean,coerce:n?.coerce||!1,...Fe(n)}),t})(),Iy=(()=>{class t extends Le{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==W.date){const s=this._getOrReturnCtx(e);return Z(s,{code:L.invalid_type,expected:W.date,received:s.parsedType}),ke}if(isNaN(e.data.getTime()))return Z(this._getOrReturnCtx(e),{code:L.invalid_date}),ke;const r=new vn;let o;for(const s of this._def.checks)"min"===s.kind?e.data.getTime()s.value&&(o=this._getOrReturnCtx(e,o),Z(o,{code:L.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),r.dirty()):Ke.assertNever(s);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,i){return this._addCheck({kind:"min",value:e.getTime(),message:se.toString(i)})}max(e,i){return this._addCheck({kind:"max",value:e.getTime(),message:se.toString(i)})}get minDate(){let e=null;for(const i of this._def.checks)"min"===i.kind&&(null===e||i.value>e)&&(e=i.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(const i of this._def.checks)"max"===i.kind&&(null===e||i.valuenew t({checks:[],coerce:n?.coerce||!1,typeName:be.ZodDate,...Fe(n)}),t})(),jI=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==W.symbol){const r=this._getOrReturnCtx(e);return Z(r,{code:L.invalid_type,expected:W.symbol,received:r.parsedType}),ke}return An(e.data)}}return t.create=n=>new t({typeName:be.ZodSymbol,...Fe(n)}),t})(),Oy=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==W.undefined){const r=this._getOrReturnCtx(e);return Z(r,{code:L.invalid_type,expected:W.undefined,received:r.parsedType}),ke}return An(e.data)}}return t.create=n=>new t({typeName:be.ZodUndefined,...Fe(n)}),t})(),Ry=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==W.null){const r=this._getOrReturnCtx(e);return Z(r,{code:L.invalid_type,expected:W.null,received:r.parsedType}),ke}return An(e.data)}}return t.create=n=>new t({typeName:be.ZodNull,...Fe(n)}),t})(),Kf=(()=>{class t extends Le{constructor(){super(...arguments),this._any=!0}_parse(e){return An(e.data)}}return t.create=n=>new t({typeName:be.ZodAny,...Fe(n)}),t})(),rd=(()=>{class t extends Le{constructor(){super(...arguments),this._unknown=!0}_parse(e){return An(e.data)}}return t.create=n=>new t({typeName:be.ZodUnknown,...Fe(n)}),t})(),bs=(()=>{class t extends Le{_parse(e){const i=this._getOrReturnCtx(e);return Z(i,{code:L.invalid_type,expected:W.never,received:i.parsedType}),ke}}return t.create=n=>new t({typeName:be.ZodNever,...Fe(n)}),t})(),HI=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==W.undefined){const r=this._getOrReturnCtx(e);return Z(r,{code:L.invalid_type,expected:W.void,received:r.parsedType}),ke}return An(e.data)}}return t.create=n=>new t({typeName:be.ZodVoid,...Fe(n)}),t})(),od=(()=>{class t extends Le{_parse(e){const{ctx:i,status:r}=this._processInputParams(e),o=this._def;if(i.parsedType!==W.array)return Z(i,{code:L.invalid_type,expected:W.array,received:i.parsedType}),ke;if(null!==o.exactLength){const a=i.data.length>o.exactLength.value,l=i.data.lengtho.maxLength.value&&(Z(i,{code:L.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),r.dirty()),i.common.async)return Promise.all([...i.data].map((a,l)=>o.type._parseAsync(new fr(i,a,i.path,l)))).then(a=>vn.mergeArray(r,a));const s=[...i.data].map((a,l)=>o.type._parseSync(new fr(i,a,i.path,l)));return vn.mergeArray(r,s)}get element(){return this._def.type}min(e,i){return new t({...this._def,minLength:{value:e,message:se.toString(i)}})}max(e,i){return new t({...this._def,maxLength:{value:e,message:se.toString(i)}})}length(e,i){return new t({...this._def,exactLength:{value:e,message:se.toString(i)}})}nonempty(e){return this.min(1,e)}}return t.create=(n,e)=>new t({type:n,minLength:null,maxLength:null,exactLength:null,typeName:be.ZodArray,...Fe(e)}),t})();function Ja(t){if(t instanceof el){const n={};for(const e in t.shape)n[e]=ys.create(Ja(t.shape[e]));return new el({...t._def,shape:()=>n})}return t instanceof od?new od({...t._def,type:Ja(t.element)}):t instanceof ys?ys.create(Ja(t.unwrap())):t instanceof ad?ad.create(Ja(t.unwrap())):t instanceof tl?tl.create(t.items.map(n=>Ja(n))):t}let el=(()=>{class t extends Le{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;const e=this._def.shape(),i=Ke.objectKeys(e);return this._cached={shape:e,keys:i}}_parse(e){if(this._getType(e)!==W.object){const d=this._getOrReturnCtx(e);return Z(d,{code:L.invalid_type,expected:W.object,received:d.parsedType}),ke}const{status:r,ctx:o}=this._processInputParams(e),{shape:s,keys:a}=this._getCached(),l=[];if(!(this._def.catchall instanceof bs&&"strip"===this._def.unknownKeys))for(const d in o.data)a.includes(d)||l.push(d);const c=[];for(const d of a)c.push({key:{status:"valid",value:d},value:s[d]._parse(new fr(o,o.data[d],o.path,d)),alwaysSet:d in o.data});if(this._def.catchall instanceof bs){const d=this._def.unknownKeys;if("passthrough"===d)for(const u of l)c.push({key:{status:"valid",value:u},value:{status:"valid",value:o.data[u]}});else if("strict"===d)l.length>0&&(Z(o,{code:L.unrecognized_keys,keys:l}),r.dirty());else if("strip"!==d)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const d=this._def.catchall;for(const u of l)c.push({key:{status:"valid",value:u},value:d._parse(new fr(o,o.data[u],o.path,u)),alwaysSet:u in o.data})}return o.common.async?Promise.resolve().then(Ci(function*(){const d=[];for(const u of c){const h=yield u.key;d.push({key:h,value:yield u.value,alwaysSet:u.alwaysSet})}return d})).then(d=>vn.mergeObjectSync(r,d)):vn.mergeObjectSync(r,c)}get shape(){return this._def.shape()}strict(e){return new t({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(i,r)=>{var o,s,a,l;const c=null!==(a=null===(s=(o=this._def).errorMap)||void 0===s?void 0:s.call(o,i,r).message)&&void 0!==a?a:r.defaultError;return"unrecognized_keys"===i.code?{message:null!==(l=se.errToObj(e).message)&&void 0!==l?l:c}:{message:c}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:be.ZodObject})}setKey(e,i){return this.augment({[e]:i})}catchall(e){return new t({...this._def,catchall:e})}pick(e){const i={};return Ke.objectKeys(e).forEach(r=>{e[r]&&this.shape[r]&&(i[r]=this.shape[r])}),new t({...this._def,shape:()=>i})}omit(e){const i={};return Ke.objectKeys(this.shape).forEach(r=>{e[r]||(i[r]=this.shape[r])}),new t({...this._def,shape:()=>i})}deepPartial(){return Ja(this)}partial(e){const i={};return Ke.objectKeys(this.shape).forEach(r=>{const o=this.shape[r];i[r]=e&&!e[r]?o:o.optional()}),new t({...this._def,shape:()=>i})}required(e){const i={};return Ke.objectKeys(this.shape).forEach(r=>{if(e&&!e[r])i[r]=this.shape[r];else{let s=this.shape[r];for(;s instanceof ys;)s=s._def.innerType;i[r]=s}}),new t({...this._def,shape:()=>i})}keyof(){return $I(Ke.objectKeys(this.shape))}}return t.create=(n,e)=>new t({shape:()=>n,unknownKeys:"strip",catchall:bs.create(),typeName:be.ZodObject,...Fe(e)}),t.strictCreate=(n,e)=>new t({shape:()=>n,unknownKeys:"strict",catchall:bs.create(),typeName:be.ZodObject,...Fe(e)}),t.lazycreate=(n,e)=>new t({shape:n,unknownKeys:"strip",catchall:bs.create(),typeName:be.ZodObject,...Fe(e)}),t})(),Fy=(()=>{class t extends Le{_parse(e){const{ctx:i}=this._processInputParams(e),r=this._def.options;if(i.common.async)return Promise.all(r.map(function(){var s=Ci(function*(a){const l={...i,common:{...i.common,issues:[]},parent:null};return{result:yield a._parseAsync({data:i.data,path:i.path,parent:l}),ctx:l}});return function(a){return s.apply(this,arguments)}}())).then(function o(s){for(const l of s)if("valid"===l.result.status)return l.result;for(const l of s)if("dirty"===l.result.status)return i.common.issues.push(...l.ctx.common.issues),l.result;const a=s.map(l=>new Gr(l.ctx.common.issues));return Z(i,{code:L.invalid_union,unionErrors:a}),ke});{let s;const a=[];for(const c of r){const d={...i,common:{...i.common,issues:[]},parent:null},u=c._parseSync({data:i.data,path:i.path,parent:d});if("valid"===u.status)return u;"dirty"===u.status&&!s&&(s={result:u,ctx:d}),d.common.issues.length&&a.push(d.common.issues)}if(s)return i.common.issues.push(...s.ctx.common.issues),s.result;const l=a.map(c=>new Gr(c));return Z(i,{code:L.invalid_union,unionErrors:l}),ke}}get options(){return this._def.options}}return t.create=(n,e)=>new t({options:n,typeName:be.ZodUnion,...Fe(e)}),t})();const Xf=t=>t instanceof Ly?Xf(t.schema):t instanceof vs?Xf(t.innerType()):t instanceof By?[t.value]:t instanceof Jf?t.options:t instanceof Vy?Object.keys(t.enum):t instanceof jy?Xf(t._def.innerType):t instanceof Oy?[void 0]:t instanceof Ry?[null]:null;class Qf extends Le{_parse(n){const{ctx:e}=this._processInputParams(n);if(e.parsedType!==W.object)return Z(e,{code:L.invalid_type,expected:W.object,received:e.parsedType}),ke;const i=this.discriminator,o=this.optionsMap.get(e.data[i]);return o?e.common.async?o._parseAsync({data:e.data,path:e.path,parent:e}):o._parseSync({data:e.data,path:e.path,parent:e}):(Z(e,{code:L.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[i]}),ke)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(n,e,i){const r=new Map;for(const o of e){const s=Xf(o.shape[n]);if(!s)throw new Error(`A discriminator value for key \`${n}\` could not be extracted from all schema options`);for(const a of s){if(r.has(a))throw new Error(`Discriminator property ${String(n)} has duplicate value ${String(a)}`);r.set(a,o)}}return new Qf({typeName:be.ZodDiscriminatedUnion,discriminator:n,options:e,optionsMap:r,...Fe(i)})}}function Py(t,n){const e=Po(t),i=Po(n);if(t===n)return{valid:!0,data:t};if(e===W.object&&i===W.object){const r=Ke.objectKeys(n),o=Ke.objectKeys(t).filter(a=>-1!==r.indexOf(a)),s={...t,...n};for(const a of o){const l=Py(t[a],n[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}if(e===W.array&&i===W.array){if(t.length!==n.length)return{valid:!1};const r=[];for(let o=0;o{class t extends Le{_parse(e){const{status:i,ctx:r}=this._processInputParams(e),o=(s,a)=>{if(Sy(s)||Sy(a))return ke;const l=Py(s.value,a.value);return l.valid?((ky(s)||ky(a))&&i.dirty(),{status:i.value,value:l.data}):(Z(r,{code:L.invalid_intersection_types}),ke)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([s,a])=>o(s,a)):o(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}return t.create=(n,e,i)=>new t({left:n,right:e,typeName:be.ZodIntersection,...Fe(i)}),t})(),tl=(()=>{class t extends Le{_parse(e){const{status:i,ctx:r}=this._processInputParams(e);if(r.parsedType!==W.array)return Z(r,{code:L.invalid_type,expected:W.array,received:r.parsedType}),ke;if(r.data.lengththis._def.items.length&&(Z(r,{code:L.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),i.dirty());const s=[...r.data].map((a,l)=>{const c=this._def.items[l]||this._def.rest;return c?c._parse(new fr(r,a,r.path,l)):null}).filter(a=>!!a);return r.common.async?Promise.all(s).then(a=>vn.mergeArray(i,a)):vn.mergeArray(i,s)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}}return t.create=(n,e)=>{if(!Array.isArray(n))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new t({items:n,typeName:be.ZodTuple,rest:null,...Fe(e)})},t})();class sd extends Le{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){const{status:e,ctx:i}=this._processInputParams(n);if(i.parsedType!==W.object)return Z(i,{code:L.invalid_type,expected:W.object,received:i.parsedType}),ke;const r=[],o=this._def.keyType,s=this._def.valueType;for(const a in i.data)r.push({key:o._parse(new fr(i,a,i.path,a)),value:s._parse(new fr(i,i.data[a],i.path,a))});return i.common.async?vn.mergeObjectAsync(e,r):vn.mergeObjectSync(e,r)}get element(){return this._def.valueType}static create(n,e,i){return new sd(e instanceof Le?{keyType:n,valueType:e,typeName:be.ZodRecord,...Fe(i)}:{keyType:Zf.create(),valueType:n,typeName:be.ZodRecord,...Fe(e)})}}let zI=(()=>{class t extends Le{_parse(e){const{status:i,ctx:r}=this._processInputParams(e);if(r.parsedType!==W.map)return Z(r,{code:L.invalid_type,expected:W.map,received:r.parsedType}),ke;const o=this._def.keyType,s=this._def.valueType,a=[...r.data.entries()].map(([l,c],d)=>({key:o._parse(new fr(r,l,r.path,[d,"key"])),value:s._parse(new fr(r,c,r.path,[d,"value"]))}));if(r.common.async){const l=new Map;return Promise.resolve().then(Ci(function*(){for(const c of a){const d=yield c.key,u=yield c.value;if("aborted"===d.status||"aborted"===u.status)return ke;("dirty"===d.status||"dirty"===u.status)&&i.dirty(),l.set(d.value,u.value)}return{status:i.value,value:l}}))}{const l=new Map;for(const c of a){const d=c.key,u=c.value;if("aborted"===d.status||"aborted"===u.status)return ke;("dirty"===d.status||"dirty"===u.status)&&i.dirty(),l.set(d.value,u.value)}return{status:i.value,value:l}}}}return t.create=(n,e,i)=>new t({valueType:e,keyType:n,typeName:be.ZodMap,...Fe(i)}),t})(),UI=(()=>{class t extends Le{_parse(e){const{status:i,ctx:r}=this._processInputParams(e);if(r.parsedType!==W.set)return Z(r,{code:L.invalid_type,expected:W.set,received:r.parsedType}),ke;const o=this._def;null!==o.minSize&&r.data.sizeo.maxSize.value&&(Z(r,{code:L.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),i.dirty());const s=this._def.valueType;function a(c){const d=new Set;for(const u of c){if("aborted"===u.status)return ke;"dirty"===u.status&&i.dirty(),d.add(u.value)}return{status:i.value,value:d}}const l=[...r.data.values()].map((c,d)=>s._parse(new fr(r,c,r.path,d)));return r.common.async?Promise.all(l).then(c=>a(c)):a(l)}min(e,i){return new t({...this._def,minSize:{value:e,message:se.toString(i)}})}max(e,i){return new t({...this._def,maxSize:{value:e,message:se.toString(i)}})}size(e,i){return this.min(e,i).max(e,i)}nonempty(e){return this.min(1,e)}}return t.create=(n,e)=>new t({valueType:n,minSize:null,maxSize:null,typeName:be.ZodSet,...Fe(e)}),t})();class nl extends Le{constructor(){super(...arguments),this.validate=this.implement}_parse(n){var e=this;const{ctx:i}=this._processInputParams(n);if(i.parsedType!==W.function)return Z(i,{code:L.invalid_type,expected:W.function,received:i.parsedType}),ke;function r(l,c){return Wf({data:l,path:i.path,errorMaps:[i.common.contextualErrorMap,i.schemaErrorMap,Gf(),id].filter(d=>!!d),issueData:{code:L.invalid_arguments,argumentsError:c}})}function o(l,c){return Wf({data:l,path:i.path,errorMaps:[i.common.contextualErrorMap,i.schemaErrorMap,Gf(),id].filter(d=>!!d),issueData:{code:L.invalid_return_type,returnTypeError:c}})}const s={errorMap:i.common.contextualErrorMap},a=i.data;return An(this._def.returns instanceof em?Ci(function*(...l){const c=new Gr([]),d=yield e._def.args.parseAsync(l,s).catch(f=>{throw c.addIssue(r(l,f)),c}),u=yield a(...d);return yield e._def.returns._def.type.parseAsync(u,s).catch(f=>{throw c.addIssue(o(u,f)),c})}):(...l)=>{const c=this._def.args.safeParse(l,s);if(!c.success)throw new Gr([r(l,c.error)]);const d=a(...c.data),u=this._def.returns.safeParse(d,s);if(!u.success)throw new Gr([o(d,u.error)]);return u.data})}parameters(){return this._def.args}returnType(){return this._def.returns}args(...n){return new nl({...this._def,args:tl.create(n).rest(rd.create())})}returns(n){return new nl({...this._def,returns:n})}implement(n){return this.parse(n)}strictImplement(n){return this.parse(n)}static create(n,e,i){return new nl({args:n||tl.create([]).rest(rd.create()),returns:e||rd.create(),typeName:be.ZodFunction,...Fe(i)})}}let Ly=(()=>{class t extends Le{get schema(){return this._def.getter()}_parse(e){const{ctx:i}=this._processInputParams(e);return this._def.getter()._parse({data:i.data,path:i.path,parent:i})}}return t.create=(n,e)=>new t({getter:n,typeName:be.ZodLazy,...Fe(e)}),t})(),By=(()=>{class t extends Le{_parse(e){if(e.data!==this._def.value){const i=this._getOrReturnCtx(e);return Z(i,{received:i.data,code:L.invalid_literal,expected:this._def.value}),ke}return{status:"valid",value:e.data}}get value(){return this._def.value}}return t.create=(n,e)=>new t({value:n,typeName:be.ZodLiteral,...Fe(e)}),t})();function $I(t,n){return new Jf({values:t,typeName:be.ZodEnum,...Fe(n)})}let Jf=(()=>{class t extends Le{_parse(e){if("string"!=typeof e.data){const i=this._getOrReturnCtx(e);return Z(i,{expected:Ke.joinValues(this._def.values),received:i.parsedType,code:L.invalid_type}),ke}if(-1===this._def.values.indexOf(e.data)){const i=this._getOrReturnCtx(e);return Z(i,{received:i.data,code:L.invalid_enum_value,options:this._def.values}),ke}return An(e.data)}get options(){return this._def.values}get enum(){const e={};for(const i of this._def.values)e[i]=i;return e}get Values(){const e={};for(const i of this._def.values)e[i]=i;return e}get Enum(){const e={};for(const i of this._def.values)e[i]=i;return e}extract(e){return t.create(e)}exclude(e){return t.create(this.options.filter(i=>!e.includes(i)))}}return t.create=$I,t})(),Vy=(()=>{class t extends Le{_parse(e){const i=Ke.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==W.string&&r.parsedType!==W.number){const o=Ke.objectValues(i);return Z(r,{expected:Ke.joinValues(o),received:r.parsedType,code:L.invalid_type}),ke}if(-1===i.indexOf(e.data)){const o=Ke.objectValues(i);return Z(r,{received:r.data,code:L.invalid_enum_value,options:o}),ke}return An(e.data)}get enum(){return this._def.values}}return t.create=(n,e)=>new t({values:n,typeName:be.ZodNativeEnum,...Fe(e)}),t})(),em=(()=>{class t extends Le{unwrap(){return this._def.type}_parse(e){const{ctx:i}=this._processInputParams(e);if(i.parsedType!==W.promise&&!1===i.common.async)return Z(i,{code:L.invalid_type,expected:W.promise,received:i.parsedType}),ke;const r=i.parsedType===W.promise?i.data:Promise.resolve(i.data);return An(r.then(o=>this._def.type.parseAsync(o,{path:i.path,errorMap:i.common.contextualErrorMap})))}}return t.create=(n,e)=>new t({type:n,typeName:be.ZodPromise,...Fe(e)}),t})(),vs=(()=>{class t extends Le{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===be.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:i,ctx:r}=this._processInputParams(e),o=this._def.effect||null;if("preprocess"===o.type){const a=o.transform(r.data);return r.common.async?Promise.resolve(a).then(l=>this._def.schema._parseAsync({data:l,path:r.path,parent:r})):this._def.schema._parseSync({data:a,path:r.path,parent:r})}const s={addIssue:a=>{Z(r,a),a.fatal?i.abort():i.dirty()},get path(){return r.path}};if(s.addIssue=s.addIssue.bind(s),"refinement"===o.type){const a=l=>{const c=o.refinement(l,s);if(r.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return l};if(!1===r.common.async){const l=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===l.status?ke:("dirty"===l.status&&i.dirty(),a(l.value),{status:i.value,value:l.value})}return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(l=>"aborted"===l.status?ke:("dirty"===l.status&&i.dirty(),a(l.value).then(()=>({status:i.value,value:l.value}))))}if("transform"===o.type){if(!1===r.common.async){const a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!qf(a))return a;const l=o.transform(a.value,s);if(l instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:i.value,value:l}}return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>qf(a)?Promise.resolve(o.transform(a.value,s)).then(l=>({status:i.value,value:l})):a)}Ke.assertNever(o)}}return t.create=(n,e,i)=>new t({schema:n,typeName:be.ZodEffects,effect:e,...Fe(i)}),t.createWithPreprocess=(n,e,i)=>new t({schema:e,effect:{type:"preprocess",transform:n},typeName:be.ZodEffects,...Fe(i)}),t})(),ys=(()=>{class t extends Le{_parse(e){return this._getType(e)===W.undefined?An(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}return t.create=(n,e)=>new t({innerType:n,typeName:be.ZodOptional,...Fe(e)}),t})(),ad=(()=>{class t extends Le{_parse(e){return this._getType(e)===W.null?An(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}return t.create=(n,e)=>new t({innerType:n,typeName:be.ZodNullable,...Fe(e)}),t})(),jy=(()=>{class t extends Le{_parse(e){const{ctx:i}=this._processInputParams(e);let r=i.data;return i.parsedType===W.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:i.path,parent:i})}removeDefault(){return this._def.innerType}}return t.create=(n,e)=>new t({innerType:n,typeName:be.ZodDefault,defaultValue:"function"==typeof e.default?e.default:()=>e.default,...Fe(e)}),t})(),GI=(()=>{class t extends Le{_parse(e){const{ctx:i}=this._processInputParams(e),r={...i,common:{...i.common,issues:[]}},o=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return Yf(o)?o.then(s=>({status:"valid",value:"valid"===s.status?s.value:this._def.catchValue({get error(){return new Gr(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===o.status?o.value:this._def.catchValue({get error(){return new Gr(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}return t.create=(n,e)=>new t({innerType:n,typeName:be.ZodCatch,catchValue:"function"==typeof e.catch?e.catch:()=>e.catch,...Fe(e)}),t})(),WI=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==W.nan){const r=this._getOrReturnCtx(e);return Z(r,{code:L.invalid_type,expected:W.nan,received:r.parsedType}),ke}return{status:"valid",value:e.data}}}return t.create=n=>new t({typeName:be.ZodNaN,...Fe(n)}),t})();const DY=Symbol("zod_brand");class qI extends Le{_parse(n){const{ctx:e}=this._processInputParams(n);return this._def.type._parse({data:e.data,path:e.path,parent:e})}unwrap(){return this._def.type}}class ld extends Le{_parse(n){var e=this;const{status:i,ctx:r}=this._processInputParams(n);if(r.common.async)return function(){var s=Ci(function*(){const a=yield e._def.in._parseAsync({data:r.data,path:r.path,parent:r});return"aborted"===a.status?ke:"dirty"===a.status?(i.dirty(),BI(a.value)):e._def.out._parseAsync({data:a.value,path:r.path,parent:r})});return function(){return s.apply(this,arguments)}}()();{const o=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===o.status?ke:"dirty"===o.status?(i.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:r.path,parent:r})}}static create(n,e){return new ld({in:n,out:e,typeName:be.ZodPipeline})}}const YI=(t,n={},e)=>t?Kf.create().superRefine((i,r)=>{var o,s;if(!t(i)){const a="function"==typeof n?n(i):"string"==typeof n?{message:n}:n,l=null===(s=null!==(o=a.fatal)&&void 0!==o?o:e)||void 0===s||s;r.addIssue({code:"custom",..."string"==typeof a?{message:a}:a,fatal:l})}}):Kf.create(),EY={object:el.lazycreate};var be=(()=>(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline"}(be||(be={})),be))();const ZI=Zf.create,KI=My.create,XI=Ay.create,QI=vs.create;var V=Object.freeze({__proto__:null,defaultErrorMap:id,setErrorMap:function uY(t){LI=t},getErrorMap:Gf,makeIssue:Wf,EMPTY_PATH:[],addIssueToContext:Z,ParseStatus:vn,INVALID:ke,DIRTY:BI,OK:An,isAborted:Sy,isDirty:ky,isValid:qf,isAsync:Yf,get util(){return Ke},get objectUtil(){return $f},ZodParsedType:W,getParsedType:Po,ZodType:Le,ZodString:Zf,ZodNumber:My,ZodBigInt:Ty,ZodBoolean:Ay,ZodDate:Iy,ZodSymbol:jI,ZodUndefined:Oy,ZodNull:Ry,ZodAny:Kf,ZodUnknown:rd,ZodNever:bs,ZodVoid:HI,ZodArray:od,ZodObject:el,ZodUnion:Fy,ZodDiscriminatedUnion:Qf,ZodIntersection:Ny,ZodTuple:tl,ZodRecord:sd,ZodMap:zI,ZodSet:UI,ZodFunction:nl,ZodLazy:Ly,ZodLiteral:By,ZodEnum:Jf,ZodNativeEnum:Vy,ZodPromise:em,ZodEffects:vs,ZodTransformer:vs,ZodOptional:ys,ZodNullable:ad,ZodDefault:jy,ZodCatch:GI,ZodNaN:WI,BRAND:DY,ZodBranded:qI,ZodPipeline:ld,custom:YI,Schema:Le,ZodSchema:Le,late:EY,get ZodFirstPartyTypeKind(){return be},coerce:{string:t=>Zf.create({...t,coerce:!0}),number:t=>My.create({...t,coerce:!0}),boolean:t=>Ay.create({...t,coerce:!0}),bigint:t=>Ty.create({...t,coerce:!0}),date:t=>Iy.create({...t,coerce:!0})},any:Kf.create,array:od.create,bigint:Ty.create,boolean:XI,date:Iy.create,discriminatedUnion:Qf.create,effect:QI,enum:Jf.create,function:nl.create,instanceof:(t,n={message:`Input not instance of ${t.name}`})=>YI(e=>e instanceof t,n),intersection:Ny.create,lazy:Ly.create,literal:By.create,map:zI.create,nan:WI.create,nativeEnum:Vy.create,never:bs.create,null:Ry.create,nullable:ad.create,number:KI,object:el.create,oboolean:()=>XI().optional(),onumber:()=>KI().optional(),optional:ys.create,ostring:()=>ZI().optional(),pipeline:ld.create,preprocess:vs.createWithPreprocess,promise:em.create,record:sd.create,set:UI.create,strictObject:el.strictCreate,string:ZI,symbol:jI.create,transformer:QI,tuple:tl.create,undefined:Oy.create,union:Fy.create,unknown:rd.create,void:HI.create,NEVER:ke,ZodIssueCode:L,quotelessJson:t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError:Gr}),ri=(()=>(function(t){t.Internal="internal",t.External="external"}(ri||(ri={})),ri))();const iZ=V.object({type:V.literal(ri.External),url:V.string(),rel:V.string().default("noopener"),target:V.string()}).partial({rel:!0,target:!0}),rZ=V.object({type:V.literal(ri.Internal),commands:V.any().array(),extras:V.object({queryParams:V.record(V.any()).nullable(),fragment:V.string(),queryParamsHandling:V.enum(["merge","preserve",""]).nullable(),preserveFragment:V.boolean(),onSameUrlNavigation:V.literal("reload"),skipLocationChange:V.boolean(),replaceUrl:V.boolean()}).partial()}).partial({extras:!0}),JI=V.record(V.string().transform(t=>`LinkId:'${t}'`).brand("LinkId"),V.discriminatedUnion("type",[iZ,rZ]));function ji(t){return JI.keySchema.parse(t)}const Wr=ji("@@__EMPTY__");let eO=(()=>{var t;let n=((t=class{constructor(){this.http=R(vi),this.router=R(ln,{optional:!0}),this.zone=R(Y)}addOne(i,{id:r,entry:o}){this.addMany(i,new nd({[r]:o}))}addMany(i,{entries:r}){i.patchState(r)}addYaml(i,{yaml:r},o){const s=zf(r,{filename:o}),a=JI.parse(s);this.addMany(i,new nd(a))}loadYaml(i,{url:r}){return this.http.get(r,{responseType:"text"}).pipe(B(o=>this.addYaml(i,new Ey(o),r)))}navigate(i,{id:r,extras:o}){var s=this;return Ci(function*(){const a=i.getState()[r];switch(a?.type){case ri.Internal:yield s.navigateToInternal(a,o);break;case ri.External:s.navigateToExternal(a,o);break;default:throw new Error(`Cannot navigate to non-existing link '${r}'`)}})()}navigateToInternal(i,r){var o=this;return Ci(function*(){yield o.zone.run(()=>o.router?.navigate(i.commands,{...i.extras,...r}))})()}navigateToExternal(i,r){const o=R1(i.url,r);window.open(o,i.target,i.rel)}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(Dy),y("design:type",Function),y("design:paramtypes",[Object,Dy]),y("design:returntype",void 0)],n.prototype,"addOne",null),U([He(nd),y("design:type",Function),y("design:paramtypes",[Object,nd]),y("design:returntype",void 0)],n.prototype,"addMany",null),U([He(Ey),y("design:type",Function),y("design:paramtypes",[Object,Ey,String]),y("design:returntype",void 0)],n.prototype,"addYaml",null),U([He(Uf),y("design:type",Function),y("design:paramtypes",[Object,Uf]),y("design:returntype",xe)],n.prototype,"loadYaml",null),U([He(Qa),y("design:type",Function),y("design:paramtypes",[Object,Qa]),y("design:returntype",Promise)],n.prototype,"navigate",null),n=U([xi({name:"linkRegistry",defaults:{}})],n),n})();const cd=Fo("ResourceRegistry");class Hy extends(cd("Add")){constructor(n,e){super(),this.id=n,this.entry=e}}class tm extends(cd("Add Many")){constructor(n){super(),this.entries=n}}class zy extends(cd("Add from Yaml")){constructor(n){super(),this.yaml=n}}class nm extends(cd("Load from Yaml")){constructor(n){super(),this.url=n}}class tO extends(cd("Load Markdown")){constructor(n,e){super(),this.id=n,this.url=e}}const nO=V.string().transform(t=>`ResourceId:'${t}'`).brand("ResourceId");var No=(()=>(function(t){t.Markdown="markdown",t.Text="text",t.Url="url"}(No||(No={})),No))();const il=No,oZ=V.object({type:V.literal(No.Markdown),markdown:V.string()}),sZ=V.object({type:V.literal(No.Text),text:V.string()}),aZ=V.object({type:V.literal(No.Url),url:V.string()}),lZ=V.discriminatedUnion("type",[oZ,sZ,aZ]),cZ=V.string().refine(t=>!function iO(t){return fZ.includes(t)}(t),"Invalid builtin resource format").transform(im),dZ=V.object({type:cZ}).passthrough(),uZ=V.union([lZ,dZ]),hZ=V.record(nO,uZ),Uy="custom:",fZ=Object.values(No);function At(t){return nO.parse(t)}function im(t){return`${Uy}${t}`}function rm(t,n,e){const i=t[n];return void 0===e||i?.type===e?i:void 0}let dd=(()=>{var t;let n=((t=class{constructor(){this.http=R(vi)}addOne(i,{id:r,entry:o}){this.addMany(i,new tm({[r]:o}))}addMany(i,{entries:r}){i.patchState(r)}addYaml(i,{yaml:r},o){const s=zf(r,{filename:o}),a=hZ.parse(s);this.addMany(i,new tm(a))}loadYaml(i,{url:r}){return this.http.get(r,{responseType:"text"}).pipe(B(o=>this.addYaml(i,new zy(o),r)))}loadMarkdown(i,{id:r,url:o}){return this.http.get(o,{responseType:"text"}).pipe(B(s=>new Hy(r,{type:il.Markdown,markdown:s})),B(s=>this.addOne(i,s)))}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(Hy),y("design:type",Function),y("design:paramtypes",[Object,Hy]),y("design:returntype",void 0)],n.prototype,"addOne",null),U([He(tm),y("design:type",Function),y("design:paramtypes",[Object,tm]),y("design:returntype",void 0)],n.prototype,"addMany",null),U([He(zy),y("design:type",Function),y("design:paramtypes",[Object,zy,String]),y("design:returntype",void 0)],n.prototype,"addYaml",null),U([He(nm),y("design:type",Function),y("design:paramtypes",[Object,nm]),y("design:returntype",xe)],n.prototype,"loadYaml",null),U([He(tO),y("design:type",Function),y("design:paramtypes",[Object,tO]),y("design:returntype",xe)],n.prototype,"loadMarkdown",null),n=U([xi({name:"resourceRegistry",defaults:{}})],n),n})();function Zt(t){for(var n=arguments.length,e=Array(n>1?n-1:0),i=1;i3?n.i-4:n.i:Array.isArray(t)?1:sm(t)?2:am(t)?3:0}function Bo(t,n){return 2===Lo(t)?t.has(n):Object.prototype.hasOwnProperty.call(t,n)}function rO(t,n,e){var i=Lo(t);2===i?t.set(n,e):3===i?t.add(e):t[n]=e}function sm(t){return yZ&&t instanceof Map}function am(t){return wZ&&t instanceof Set}function Kt(t){return t.o||t.t}function Gy(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var n=hO(t);delete n[Ae];for(var e=rl(n),i=0;i1&&(t.set=t.add=t.clear=t.delete=mZ),Object.freeze(t),n&&Yr(t,function(e,i){return Wy(i,!0)},!0)),t}function mZ(){Zt(2)}function qy(t){return null==t||"object"!=typeof t||Object.isFrozen(t)}function pr(t){var n=n0[t];return n||Zt(18,t),n}function ud(){return fd}function Zy(t,n){n&&(pr("Patches"),t.u=[],t.s=[],t.v=n)}function lm(t){Ky(t),t.p.forEach(pZ),t.p=null}function Ky(t){t===fd&&(fd=t.l)}function sO(t){return fd={p:[],l:fd,h:t,m:!0,_:0}}function pZ(t){var n=t[Ae];0===n.i||1===n.i?n.j():n.g=!0}function Xy(t,n){n._=n.p.length;var e=n.p[0],i=void 0!==t&&t!==e;return n.h.O||pr("ES5").S(n,t,i),i?(e[Ae].P&&(lm(n),Zt(4)),mr(t)&&(t=cm(n,t),n.l||dm(n,t)),n.u&&pr("Patches").M(e[Ae].t,t,n.u,n.s)):t=cm(n,e,[]),lm(n),n.u&&n.v(n.u,n.s),t!==t0?t:void 0}function cm(t,n,e){if(qy(n))return n;var i=n[Ae];if(!i)return Yr(n,function(a,l){return aO(t,i,n,a,l,e)},!0),n;if(i.A!==t)return n;if(!i.P)return dm(t,i.t,!0),i.t;if(!i.I){i.I=!0,i.A._--;var r=4===i.i||5===i.i?i.o=Gy(i.k):i.o,o=r,s=!1;3===i.i&&(o=new Set(r),r.clear(),s=!0),Yr(o,function(a,l){return aO(t,i,r,a,l,e,s)}),dm(t,r,!1),e&&t.u&&pr("Patches").N(i,e,t.u,t.s)}return i.o}function aO(t,n,e,i,r,o,s){if(qr(r)){var a=cm(t,r,o&&n&&3!==n.i&&!Bo(n.R,i)?o.concat(i):void 0);if(rO(e,i,a),!qr(a))return;t.m=!1}else s&&e.add(r);if(mr(r)&&!qy(r)){if(!t.h.D&&t._<1)return;cm(t,r),n&&n.A.l||dm(t,r)}}function dm(t,n,e){void 0===e&&(e=!1),!t.l&&t.h.D&&t.m&&Wy(n,e)}function Qy(t,n){var e=t[Ae];return(e?Kt(e):t)[n]}function lO(t,n){if(n in t)for(var e=Object.getPrototypeOf(t);e;){var i=Object.getOwnPropertyDescriptor(e,n);if(i)return i;e=Object.getPrototypeOf(e)}}function zn(t){t.P||(t.P=!0,t.l&&zn(t.l))}function Jy(t){t.o||(t.o=Gy(t.t))}function hd(t,n,e){var i=sm(n)?pr("MapSet").F(n,e):am(n)?pr("MapSet").T(n,e):t.O?function(r,o){var s=Array.isArray(r),a={i:s?1:0,A:o?o.A:ud(),P:!1,I:!1,R:{},l:o,t:r,k:null,o:null,j:null,C:!1},l=a,c=pd;s&&(l=[a],c=gd);var d=Proxy.revocable(l,c),u=d.revoke,h=d.proxy;return a.k=h,a.j=u,h}(n,e):pr("ES5").J(n,e);return(e?e.A:ud()).p.push(i),i}function cO(t,n){switch(n){case 2:return new Map(t);case 3:return Array.from(t)}return Gy(t)}var dO,fd,e0=typeof Symbol<"u"&&"symbol"==typeof Symbol("x"),yZ=typeof Map<"u",wZ=typeof Set<"u",uO=typeof Proxy<"u"&&void 0!==Proxy.revocable&&typeof Reflect<"u",t0=e0?Symbol.for("immer-nothing"):((dO={})["immer-nothing"]=!0,dO),md=e0?Symbol.for("immer-draftable"):"__$immer_draftable",Ae=e0?Symbol.for("immer-state"):"__$immer_state",xZ=(typeof Symbol<"u"&&Symbol,""+Object.prototype.constructor),rl=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,hO=Object.getOwnPropertyDescriptors||function(t){var n={};return rl(t).forEach(function(e){n[e]=Object.getOwnPropertyDescriptor(t,e)}),n},n0={},pd={get:function(t,n){if(n===Ae)return t;var r,a,l,e=Kt(t);if(!Bo(e,n))return r=t,(l=lO(e,n))?"value"in l?l.value:null===(a=l.get)||void 0===a?void 0:a.call(r.k):void 0;var i=e[n];return t.I||!mr(i)?i:i===Qy(t.t,n)?(Jy(t),t.o[n]=hd(t.A.h,i,t)):i},has:function(t,n){return n in Kt(t)},ownKeys:function(t){return Reflect.ownKeys(Kt(t))},set:function(t,n,e){var i=lO(Kt(t),n);if(i?.set)return i.set.call(t.k,e),!0;if(!t.P){var r=Qy(Kt(t),n),o=r?.[Ae];if(o&&o.t===e)return t.o[n]=e,t.R[n]=!1,!0;if(function oO(t,n){return t===n?0!==t||1/t==1/n:t!=t&&n!=n}(e,r)&&(void 0!==e||Bo(t.t,n)))return!0;Jy(t),zn(t)}return t.o[n]===e&&(void 0!==e||n in t.o)||Number.isNaN(e)&&Number.isNaN(t.o[n])||(t.o[n]=e,t.R[n]=!0),!0},deleteProperty:function(t,n){return void 0!==Qy(t.t,n)||n in t.t?(t.R[n]=!1,Jy(t),zn(t)):delete t.R[n],t.o&&delete t.o[n],!0},getOwnPropertyDescriptor:function(t,n){var e=Kt(t),i=Reflect.getOwnPropertyDescriptor(e,n);return i&&{writable:!0,configurable:1!==t.i||"length"!==n,enumerable:i.enumerable,value:e[n]}},defineProperty:function(){Zt(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){Zt(12)}},gd={};Yr(pd,function(t,n){gd[t]=function(){return arguments[0]=arguments[0][0],n.apply(this,arguments)}}),gd.deleteProperty=function(t,n){return gd.set.call(this,t,n,void 0)},gd.set=function(t,n,e){return pd.set.call(this,t[0],n,e,t[0])};var CZ=function(){function t(e){var i=this;this.O=uO,this.D=!0,this.produce=function(r,o,s){if("function"==typeof r&&"function"!=typeof o){var a=o;o=r;var l=i;return function(g){var b=this;void 0===g&&(g=a);for(var v=arguments.length,w=Array(v>1?v-1:0),C=1;C1?d-1:0),h=1;h=0;r--){var o=i[r];if(0===o.path.length&&"replace"===o.op){e=o.value;break}}r>-1&&(i=i.slice(r+1));var s=pr("Patches").$;return qr(e)?s(e,i):this.produce(e,function(a){return s(a,i)})},t}(),oi=new CZ,r0=oi.produce;oi.produceWithPatches.bind(oi),oi.setAutoFreeze.bind(oi),oi.setUseProxies.bind(oi),oi.applyPatches.bind(oi),oi.createDraft.bind(oi),oi.finishDraft.bind(oi);const ol=r0;var Zr=(()=>(function(t){t.Local="local",t.Session="session"}(Zr||(Zr={})),Zr))();const o0=Fo("Storage");class s0 extends(o0("Set")){constructor(n,e,i){super(),this.id=n,this.key=e,this.value=i}}class fO extends(o0("Delete")){constructor(n,e){super(),this.id=n,this.key=e}}class mO extends(o0("Clear")){constructor(n){super(),this.id=n}}var ws,_d;let gr=((ws=class{static getStorage(n){switch(n){case Zr.Local:return localStorage;case Zr.Session:return sessionStorage;default:throw new Error(`No such storage '${n}'`)}}set(n,{id:e,key:i,value:r}){_d.getStorage(e).setItem(i,r),this.increaseChangeCount(n,e)}delete(n,{id:e,key:i}){_d.getStorage(e).removeItem(i),this.increaseChangeCount(n,e)}clear(n,{id:e}){_d.getStorage(e).clear(),this.increaseChangeCount(n,e)}increaseChangeCount(n,e){n.setState(r0(i=>{i[e]+=1}))}}).\u0275fac=function(n){return new(n||ws)},ws.\u0275prov=T({token:ws,factory:ws.\u0275fac}),_d=ws);U([He(s0),y("design:type",Function),y("design:paramtypes",[Object,s0]),y("design:returntype",void 0)],gr.prototype,"set",null),U([He(fO),y("design:type",Function),y("design:paramtypes",[Object,fO]),y("design:returntype",void 0)],gr.prototype,"delete",null),U([He(mO),y("design:type",Function),y("design:paramtypes",[Object,mO]),y("design:returntype",void 0)],gr.prototype,"clear",null),gr=_d=U([xi({name:"storage",defaults:{[Zr.Local]:0,[Zr.Session]:0}})],gr);let DZ=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[sn.forFeature([eO,dd,gr])]}),n})();const hm={schedule(t,n){const e=setTimeout(t,n);return()=>clearTimeout(e)},scheduleBeforeRender(t){if(typeof window>"u")return hm.schedule(t,0);if(typeof window.requestAnimationFrame>"u")return hm.schedule(t,16);const n=window.requestAnimationFrame(t);return()=>window.cancelAnimationFrame(n)}};let a0;function RZ(t,n,e){let i=e;return function SZ(t){return!!t&&t.nodeType===Node.ELEMENT_NODE}(t)&&n.some((r,o)=>!("*"===r||!function MZ(t,n){if(!a0){const e=Element.prototype;a0=e.matches||e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector}return t.nodeType===Node.ELEMENT_NODE&&a0.call(t,n)}(t,r)||(i=o,0))),i}class PZ{constructor(n,e){this.componentFactory=e.get(Ri).resolveComponentFactory(n)}create(n){return new NZ(this.componentFactory,n)}}class NZ{constructor(n,e){this.componentFactory=n,this.injector=e,this.eventEmitters=new tf(1),this.events=this.eventEmitters.pipe(jn(i=>$n(...i))),this.componentRef=null,this.viewChangeDetectorRef=null,this.inputChanges=null,this.hasInputChanges=!1,this.implementsOnChanges=!1,this.scheduledChangeDetectionFn=null,this.scheduledDestroyFn=null,this.initialInputValues=new Map,this.unchangedInputs=new Set(this.componentFactory.inputs.map(({propName:i})=>i)),this.ngZone=this.injector.get(Y),this.elementZone=typeof Zone>"u"?null:this.ngZone.run(()=>Zone.current)}connect(n){this.runInZone(()=>{if(null!==this.scheduledDestroyFn)return this.scheduledDestroyFn(),void(this.scheduledDestroyFn=null);null===this.componentRef&&this.initializeComponent(n)})}disconnect(){this.runInZone(()=>{null===this.componentRef||null!==this.scheduledDestroyFn||(this.scheduledDestroyFn=hm.schedule(()=>{null!==this.componentRef&&(this.componentRef.destroy(),this.componentRef=null,this.viewChangeDetectorRef=null)},10))})}getInputValue(n){return this.runInZone(()=>null===this.componentRef?this.initialInputValues.get(n):this.componentRef.instance[n])}setInputValue(n,e){this.runInZone(()=>{null!==this.componentRef?function TZ(t,n){return t===n||t!=t&&n!=n}(e,this.getInputValue(n))&&(void 0!==e||!this.unchangedInputs.has(n))||(this.recordInputChange(n,e),this.unchangedInputs.delete(n),this.hasInputChanges=!0,this.componentRef.instance[n]=e,this.scheduleDetectChanges()):this.initialInputValues.set(n,e)})}initializeComponent(n){const e=kt.create({providers:[],parent:this.injector}),i=function OZ(t,n){const e=t.childNodes,i=n.map(()=>[]);let r=-1;n.some((o,s)=>"*"===o&&(r=s,!0));for(let o=0,s=e.length;o{this.initialInputValues.has(n)&&this.setInputValue(n,this.initialInputValues.get(n))}),this.initialInputValues.clear()}initializeOutputs(n){const e=this.componentFactory.outputs.map(({propName:i,templateName:r})=>n.instance[i].pipe(B(s=>({name:r,value:s}))));this.eventEmitters.next(e)}callNgOnChanges(n){if(!this.implementsOnChanges||null===this.inputChanges)return;const e=this.inputChanges;this.inputChanges=null,n.instance.ngOnChanges(e)}markViewForCheck(n){this.hasInputChanges&&(this.hasInputChanges=!1,n.markForCheck())}scheduleDetectChanges(){this.scheduledChangeDetectionFn||(this.scheduledChangeDetectionFn=hm.scheduleBeforeRender(()=>{this.scheduledChangeDetectionFn=null,this.detectChanges()}))}recordInputChange(n,e){if(!this.implementsOnChanges)return;null===this.inputChanges&&(this.inputChanges={});const i=this.inputChanges[n];if(i)return void(i.currentValue=e);const r=this.unchangedInputs.has(n),o=r?void 0:this.getInputValue(n);this.inputChanges[n]=new Nx(o,e,r)}detectChanges(){null!==this.componentRef&&(this.callNgOnChanges(this.componentRef),this.markViewForCheck(this.viewChangeDetectorRef),this.componentRef.changeDetectorRef.detectChanges())}runInZone(n){return this.elementZone&&Zone.current!==this.elementZone?this.ngZone.run(n):n()}}class LZ extends HTMLElement{constructor(){super(...arguments),this.ngElementEventsSubscription=null}}let VZ=(()=>{var t;class n{constructor(){this.el=R(H).nativeElement}static create(i){return i.createComponent(n,{index:0})}ngAfterViewInit(){this.el.remove()}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-destroy-host"]],standalone:!0,features:[Be],decls:0,vars:0,template:function(i,r){},styles:["[_nghost-%COMP%]{display:none}"]}),n})();class jZ extends tf{constructor(n){super(1),n.onDestroy(()=>{this.next(),this.complete()})}}const pO=new WeakMap;function gO(t){for(const n of t())if(null!=n)return n;throw new Error("Unreachable")}function sl(){const t=function HZ(){return gO(function*(){yield R(H,{optional:!0})?.nativeElement,yield R(it,{optional:!0}),yield R(go)})}();let n=pO.get(t);if(!n){const e=function zZ(){return gO(function*(){const t=R(it,{optional:!0});yield t&&VZ.create(t),yield R(go)})}();n=new jZ(e).asObservable(),pO.set(t,n)}return n}function bd(t,n){return R(ms).select(t).pipe(ze(sl()),function UZ(t){const n=t?.notifyOnChange??!0,e=R(en,{optional:!0});if(n&&e){const i=()=>e.markForCheck();return Ze({next:i,error:i,complete:i})}return i=>i}(n))}const _O={};class $Z{constructor(){this.value=void 0,this.errorValue=_O}get(){if(this.errorValue!==_O)throw this.errorValue;return this.value}next(n){this.value=n}error(n){this.value=void 0,this.errorValue=n}}function Un(t){const n=bd(t,{notifyOnChange:!0}),e=new $Z;return n.subscribe(e),e.get.bind(e)}function ct(t,...n){const e=Un(t);return(...i)=>e()(...n,...i)}let l0,vt=(()=>{class t{static entry(e){return(i,r)=>rm(e,i,r)}static anyEntry(e){return i=>rm(e,i)}static field(e){return(i,r,o,s)=>rm(e,i,r)?.[o]??s}static anyText(e){return i=>{const r=rm(e,i);switch(r?.type){case il.Markdown:return r.markdown;case il.Text:return r.text;default:return""}}}static markdown(e){return i=>e(i,il.Markdown,"markdown","")}static text(e){return i=>e(i,il.Text,"text","")}static url(e){return i=>e(i,il.Url,"url","")}}return U([Ct([dd]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"entry",null),U([Ct([dd]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"anyEntry",null),U([Ct([dd]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"field",null),U([Ct([dd]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"anyText",null),U([Ct([t.field]),y("design:type",Function),y("design:paramtypes",[Function]),y("design:returntype",Function)],t,"markdown",null),U([Ct([t.field]),y("design:type",Function),y("design:paramtypes",[Function]),y("design:returntype",Function)],t,"text",null),U([Ct([t.field]),y("design:type",Function),y("design:paramtypes",[Function]),y("design:returntype",Function)],t,"url",null),t})();try{l0=typeof Intl<"u"&&Intl.v8BreakIterator}catch{l0=!1}let al,pt=(()=>{class t{constructor(e){this._platformId=e,this.isBrowser=this._platformId?or(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!l0)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}}return t.\u0275fac=function(e){return new(e||t)(_(ss))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const bO=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function vO(){if(al)return al;if("object"!=typeof document||!document)return al=new Set(bO),al;let t=document.createElement("input");return al=new Set(bO.filter(n=>(t.setAttribute("type",n),t.type===n))),al}let vd,fm,xs,c0;function ll(t){return function GZ(){if(null==vd&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>vd=!0}))}finally{vd=vd||!1}return vd}()?t:!!t.capture}function yO(){if(null==xs){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return xs=!1,xs;if("scrollBehavior"in document.documentElement.style)xs=!0;else{const t=Element.prototype.scrollTo;xs=!!t&&!/\{\s*\[native code\]\s*\}/.test(t.toString())}}return xs}function yd(){if("object"!=typeof document||!document)return 0;if(null==fm){const t=document.createElement("div"),n=t.style;t.dir="rtl",n.width="1px",n.overflow="auto",n.visibility="hidden",n.pointerEvents="none",n.position="absolute";const e=document.createElement("div"),i=e.style;i.width="2px",i.height="1px",t.appendChild(e),document.body.appendChild(t),fm=0,0===t.scrollLeft&&(t.scrollLeft=1,fm=0===t.scrollLeft?1:2),t.remove()}return fm}function mm(){let t=typeof document<"u"&&document?document.activeElement:null;for(;t&&t.shadowRoot;){const n=t.shadowRoot.activeElement;if(n===t)break;t=n}return t}function Vo(t){return t.composedPath?t.composedPath()[0]:t.target}function d0(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}function cl(t,...n){return n.length?n.some(e=>t[e]):t.altKey||t.shiftKey||t.ctrlKey||t.metaKey}class uK extends rt{constructor(n,e){super()}schedule(n,e=0){return this}}const pm={setInterval(t,n,...e){const{delegate:i}=pm;return i?.setInterval?i.setInterval(t,n,...e):setInterval(t,n,...e)},clearInterval(t){const{delegate:n}=pm;return(n?.clearInterval||clearInterval)(t)},delegate:void 0};class h0 extends uK{constructor(n,e){super(n,e),this.scheduler=n,this.work=e,this.pending=!1}schedule(n,e=0){var i;if(this.closed)return this;this.state=n;const r=this.id,o=this.scheduler;return null!=r&&(this.id=this.recycleAsyncId(o,r,e)),this.pending=!0,this.delay=e,this.id=null!==(i=this.id)&&void 0!==i?i:this.requestAsyncId(o,this.id,e),this}requestAsyncId(n,e,i=0){return pm.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,e,i=0){if(null!=i&&this.delay===i&&!1===this.pending)return e;null!=e&&pm.clearInterval(e)}execute(n,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,e);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,e){let r,i=!1;try{this.work(n)}catch(o){i=!0,r=o||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),r}unsubscribe(){if(!this.closed){const{id:n,scheduler:e}=this,{actions:i}=e;this.work=this.state=this.scheduler=null,this.pending=!1,eu(i,this),null!=n&&(this.id=this.recycleAsyncId(e,n,null)),this.delay=null,super.unsubscribe()}}}class wd{constructor(n,e=wd.now){this.schedulerActionCtor=n,this.now=e}schedule(n,e=0,i){return new this.schedulerActionCtor(this,n).schedule(i,e)}}wd.now=bv.now;class f0 extends wd{constructor(n,e=wd.now){super(n,e),this.actions=[],this._active=!1}flush(n){const{actions:e}=this;if(this._active)return void e.push(n);let i;this._active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=e.shift());if(this._active=!1,i){for(;n=e.shift();)n.unsubscribe();throw i}}}const m0=new f0(h0),hK=m0;function p0(t,n=m0){return gt((e,i)=>{let r=null,o=null,s=null;const a=()=>{if(r){r.unsubscribe(),r=null;const c=o;o=null,i.next(c)}};function l(){const c=s+t,d=n.now();if(d{o=c,s=n.now(),r||(r=n.schedule(l,t),i.add(r))},()=>{a(),i.complete()},void 0,()=>{o=r=null}))})}function gm(t){return mt((n,e)=>t<=e)}function Ve(t){return null!=t&&"false"!=`${t}`}function si(t,n=0){return DO(t)?Number(t):n}function DO(t){return!isNaN(parseFloat(t))&&!isNaN(Number(t))}function _m(t){return Array.isArray(t)?t:[t]}function Ut(t){return null==t?"":"string"==typeof t?t:`${t}px`}function Kr(t){return t instanceof H?t.nativeElement:t}let EO=(()=>{class t{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),fK=(()=>{class t{constructor(e){this._mutationObserverFactory=e,this._observedElements=new Map}ngOnDestroy(){this._observedElements.forEach((e,i)=>this._cleanupObserver(i))}observe(e){const i=Kr(e);return new xe(r=>{const s=this._observeElement(i).subscribe(r);return()=>{s.unsubscribe(),this._unobserveElement(i)}})}_observeElement(e){if(this._observedElements.has(e))this._observedElements.get(e).count++;else{const i=new te,r=this._mutationObserverFactory.create(o=>i.next(o));r&&r.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:r,stream:i,count:1})}return this._observedElements.get(e).stream}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){const{observer:i,stream:r}=this._observedElements.get(e);i&&i.disconnect(),r.complete(),this._observedElements.delete(e)}}}return t.\u0275fac=function(e){return new(e||t)(_(EO))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),bm=(()=>{class t{get disabled(){return this._disabled}set disabled(e){this._disabled=Ve(e),this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(e){this._debounce=si(e),this._subscribe()}constructor(e,i,r){this._contentObserver=e,this._elementRef=i,this._ngZone=r,this.event=new ee,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const e=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular(()=>{this._currentSubscription=(this.debounce?e.pipe(p0(this.debounce)):e).subscribe(this.event)})}_unsubscribe(){this._currentSubscription?.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(m(fK),m(H),m(Y))},t.\u0275dir=M({type:t,selectors:[["","cdkObserveContent",""]],inputs:{disabled:["cdkObserveContentDisabled","disabled"],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]}),t})(),vm=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:[EO]}),t})();const SO=new Set;let dl,mK=(()=>{class t{constructor(e){this._platform=e,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):gK}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&function pK(t){if(!SO.has(t))try{dl||(dl=document.createElement("style"),dl.setAttribute("type","text/css"),document.head.appendChild(dl)),dl.sheet&&(dl.sheet.insertRule(`@media ${t} {body{ }}`,0),SO.add(t))}catch(n){console.error(n)}}(e),this._matchMedia(e)}}return t.\u0275fac=function(e){return new(e||t)(_(pt))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function gK(t){return{matches:"all"===t||""===t,media:t,addListener:()=>{},removeListener:()=>{}}}let _K=(()=>{class t{constructor(e,i){this._mediaMatcher=e,this._zone=i,this._queries=new Map,this._destroySubject=new te}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return kO(_m(e)).some(r=>this._registerQuery(r).mql.matches)}observe(e){let o=La(kO(_m(e)).map(s=>this._registerQuery(s).observable));return o=sf(o.pipe(qt(1)),o.pipe(gm(1),p0(0))),o.pipe(B(s=>{const a={matches:!1,breakpoints:{}};return s.forEach(({matches:l,query:c})=>{a.matches=a.matches||l,a.breakpoints[c]=l}),a}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);const i=this._mediaMatcher.matchMedia(e),o={observable:new xe(s=>{const a=l=>this._zone.run(()=>s.next(l));return i.addListener(a),()=>{i.removeListener(a)}}).pipe(cr(i),B(({matches:s})=>({query:e,matches:s})),ze(this._destroySubject)),mql:i};return this._queries.set(e,o),o}}return t.\u0275fac=function(e){return new(e||t)(_(mK),_(Y))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function kO(t){return t.map(n=>n.split(",")).reduce((n,e)=>n.concat(e)).map(n=>n.trim())}class yK{constructor(n){this._items=n,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new te,this._typeaheadSubscription=rt.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=e=>e.disabled,this._pressedLetters=[],this.tabOut=new te,this.change=new te,n instanceof Ca&&(this._itemChangesSubscription=n.changes.subscribe(e=>{if(this._activeItem){const r=e.toArray().indexOf(this._activeItem);r>-1&&r!==this._activeItemIndex&&(this._activeItemIndex=r)}}))}skipPredicate(n){return this._skipPredicateFn=n,this}withWrap(n=!0){return this._wrap=n,this}withVerticalOrientation(n=!0){return this._vertical=n,this}withHorizontalOrientation(n){return this._horizontal=n,this}withAllowedModifierKeys(n){return this._allowedModifierKeys=n,this}withTypeAhead(n=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe(Ze(e=>this._pressedLetters.push(e)),p0(n),mt(()=>this._pressedLetters.length>0),B(()=>this._pressedLetters.join(""))).subscribe(e=>{const i=this._getItemsArray();for(let r=1;r!n[o]||this._allowedModifierKeys.indexOf(o)>-1);switch(e){case 9:return void this.tabOut.next();case 40:if(this._vertical&&r){this.setNextItemActive();break}return;case 38:if(this._vertical&&r){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&r){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&r){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&r){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&r){this.setLastItemActive();break}return;case 33:if(this._pageUpAndDown.enabled&&r){const o=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(o>0?o:0,1);break}return;case 34:if(this._pageUpAndDown.enabled&&r){const o=this._activeItemIndex+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(o=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))))}this._pressedLetters=[],n.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._items.length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(n){const e=this._getItemsArray(),i="number"==typeof n?n:e.indexOf(n);this._activeItem=e[i]??null,this._activeItemIndex=i}destroy(){this._typeaheadSubscription.unsubscribe(),this._itemChangesSubscription?.unsubscribe(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(n){this._wrap?this._setActiveInWrapMode(n):this._setActiveInDefaultMode(n)}_setActiveInWrapMode(n){const e=this._getItemsArray();for(let i=1;i<=e.length;i++){const r=(this._activeItemIndex+n*i+e.length)%e.length;if(!this._skipPredicateFn(e[r]))return void this.setActiveItem(r)}}_setActiveInDefaultMode(n){this._setActiveItemByIndex(this._activeItemIndex+n,n)}_setActiveItemByIndex(n,e){const i=this._getItemsArray();if(i[n]){for(;this._skipPredicateFn(i[n]);)if(!i[n+=e])return;this.setActiveItem(n)}}_getItemsArray(){return this._items instanceof Ca?this._items.toArray():this._items}}class AO extends yK{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(n){return this._origin=n,this}setActiveItem(n){super.setActiveItem(n),this.activeItem&&this.activeItem.focus(this._origin)}}let ym=(()=>{class t{constructor(e){this._platform=e}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return function xK(t){return!!(t.offsetWidth||t.offsetHeight||"function"==typeof t.getClientRects&&t.getClientRects().length)}(e)&&"visible"===getComputedStyle(e).visibility}isTabbable(e){if(!this._platform.isBrowser)return!1;const i=function wK(t){try{return t.frameElement}catch{return null}}(function AK(t){return t.ownerDocument&&t.ownerDocument.defaultView||window}(e));if(i&&(-1===OO(i)||!this.isVisible(i)))return!1;let r=e.nodeName.toLowerCase(),o=OO(e);return e.hasAttribute("contenteditable")?-1!==o:!("iframe"===r||"object"===r||this._platform.WEBKIT&&this._platform.IOS&&!function MK(t){let n=t.nodeName.toLowerCase(),e="input"===n&&t.type;return"text"===e||"password"===e||"select"===n||"textarea"===n}(e))&&("audio"===r?!!e.hasAttribute("controls")&&-1!==o:"video"===r?-1!==o&&(null!==o||this._platform.FIREFOX||e.hasAttribute("controls")):e.tabIndex>=0)}isFocusable(e,i){return function TK(t){return!function DK(t){return function SK(t){return"input"==t.nodeName.toLowerCase()}(t)&&"hidden"==t.type}(t)&&(function CK(t){let n=t.nodeName.toLowerCase();return"input"===n||"select"===n||"button"===n||"textarea"===n}(t)||function EK(t){return function kK(t){return"a"==t.nodeName.toLowerCase()}(t)&&t.hasAttribute("href")}(t)||t.hasAttribute("contenteditable")||IO(t))}(e)&&!this.isDisabled(e)&&(i?.ignoreVisibility||this.isVisible(e))}}return t.\u0275fac=function(e){return new(e||t)(_(pt))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function IO(t){if(!t.hasAttribute("tabindex")||void 0===t.tabIndex)return!1;let n=t.getAttribute("tabindex");return!(!n||isNaN(parseInt(n,10)))}function OO(t){if(!IO(t))return null;const n=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(n)?-1:n}class IK{get enabled(){return this._enabled}set enabled(n){this._enabled=n,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}constructor(n,e,i,r,o=!1){this._element=n,this._checker=e,this._ngZone=i,this._document=r,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,o||this.attachAnchors()}destroy(){const n=this._startAnchor,e=this._endAnchor;n&&(n.removeEventListener("focus",this.startAnchorListener),n.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(n)))})}focusFirstTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(n)))})}focusLastTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(n)))})}_getRegionBoundary(n){const e=this._element.querySelectorAll(`[cdk-focus-region-${n}], [cdkFocusRegion${n}], [cdk-focus-${n}]`);return"start"==n?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(n){const e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){const i=this._getFirstTabbableElement(e);return i?.focus(n),!!i}return e.focus(n),!0}return this.focusFirstTabbableElement(n)}focusFirstTabbableElement(n){const e=this._getRegionBoundary("start");return e&&e.focus(n),!!e}focusLastTabbableElement(n){const e=this._getRegionBoundary("end");return e&&e.focus(n),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(n){if(this._checker.isFocusable(n)&&this._checker.isTabbable(n))return n;const e=n.children;for(let i=0;i=0;i--){const r=e[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[i]):null;if(r)return r}return null}_createAnchor(){const n=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,n),n.classList.add("cdk-visually-hidden"),n.classList.add("cdk-focus-trap-anchor"),n.setAttribute("aria-hidden","true"),n}_toggleAnchorTabIndex(n,e){n?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(n){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_executeOnStable(n){this._ngZone.isStable?n():this._ngZone.onStable.pipe(qt(1)).subscribe(n)}}let g0=(()=>{class t{constructor(e,i,r){this._checker=e,this._ngZone=i,this._document=r}create(e,i=!1){return new IK(e,this._checker,this._ngZone,this._document,i)}}return t.\u0275fac=function(e){return new(e||t)(_(ym),_(Y),_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function RO(t){return 0===t.buttons||0===t.offsetX&&0===t.offsetY}function FO(t){const n=t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0];return!(!n||-1!==n.identifier||null!=n.radiusX&&1!==n.radiusX||null!=n.radiusY&&1!==n.radiusY)}const OK=new k("cdk-input-modality-detector-options"),RK={ignoreKeys:[18,17,224,91,16]},ul=ll({passive:!0,capture:!0});let FK=(()=>{class t{get mostRecentModality(){return this._modality.value}constructor(e,i,r,o){this._platform=e,this._mostRecentTarget=null,this._modality=new Tt(null),this._lastTouchMs=0,this._onKeydown=s=>{this._options?.ignoreKeys?.some(a=>a===s.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=Vo(s))},this._onMousedown=s=>{Date.now()-this._lastTouchMs<650||(this._modality.next(RO(s)?"keyboard":"mouse"),this._mostRecentTarget=Vo(s))},this._onTouchstart=s=>{FO(s)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=Vo(s))},this._options={...RK,...o},this.modalityDetected=this._modality.pipe(gm(1)),this.modalityChanged=this.modalityDetected.pipe(rf()),e.isBrowser&&i.runOutsideAngular(()=>{r.addEventListener("keydown",this._onKeydown,ul),r.addEventListener("mousedown",this._onMousedown,ul),r.addEventListener("touchstart",this._onTouchstart,ul)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,ul),document.removeEventListener("mousedown",this._onMousedown,ul),document.removeEventListener("touchstart",this._onTouchstart,ul))}}return t.\u0275fac=function(e){return new(e||t)(_(pt),_(Y),_(ge),_(OK,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const NK=new k("cdk-focus-monitor-default-options"),wm=ll({passive:!0,capture:!0});let xd=(()=>{class t{constructor(e,i,r,o,s){this._ngZone=e,this._platform=i,this._inputModalityDetector=r,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new te,this._rootNodeFocusAndBlurListener=a=>{for(let c=Vo(a);c;c=c.parentElement)"focus"===a.type?this._onFocus(a,c):this._onBlur(a,c)},this._document=o,this._detectionMode=s?.detectionMode||0}monitor(e,i=!1){const r=Kr(e);if(!this._platform.isBrowser||1!==r.nodeType)return j(null);const o=function qZ(t){if(function WZ(){if(null==c0){const t=typeof document<"u"?document.head:null;c0=!(!t||!t.createShadowRoot&&!t.attachShadow)}return c0}()){const n=t.getRootNode?t.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}(r)||this._getDocument(),s=this._elementInfo.get(r);if(s)return i&&(s.checkChildren=!0),s.subject;const a={checkChildren:i,subject:new te,rootNode:o};return this._elementInfo.set(r,a),this._registerGlobalListeners(a),a.subject}stopMonitoring(e){const i=Kr(e),r=this._elementInfo.get(i);r&&(r.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(r))}focusVia(e,i,r){const o=Kr(e);o===this._getDocument().activeElement?this._getClosestElementsInfo(o).forEach(([a,l])=>this._originChanged(a,i,l)):(this._setOrigin(i),"function"==typeof o.focus&&o.focus(r))}ngOnDestroy(){this._elementInfo.forEach((e,i)=>this.stopMonitoring(i))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return 1===this._detectionMode||!!e?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(e,i){e.classList.toggle("cdk-focused",!!i),e.classList.toggle("cdk-touch-focused","touch"===i),e.classList.toggle("cdk-keyboard-focused","keyboard"===i),e.classList.toggle("cdk-mouse-focused","mouse"===i),e.classList.toggle("cdk-program-focused","program"===i)}_setOrigin(e,i=!1){this._ngZone.runOutsideAngular(()=>{this._origin=e,this._originFromTouchInteraction="touch"===e&&i,0===this._detectionMode&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(e,i){const r=this._elementInfo.get(i),o=Vo(e);!r||!r.checkChildren&&i!==o||this._originChanged(i,this._getFocusOrigin(o),r)}_onBlur(e,i){const r=this._elementInfo.get(i);!r||r.checkChildren&&e.relatedTarget instanceof Node&&i.contains(e.relatedTarget)||(this._setClasses(i),this._emitOrigin(r,null))}_emitOrigin(e,i){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(i))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;const i=e.rootNode,r=this._rootNodeFocusListenerCount.get(i)||0;r||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,wm),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,wm)}),this._rootNodeFocusListenerCount.set(i,r+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(ze(this._stopInputModalityDetector)).subscribe(o=>{this._setOrigin(o,!0)}))}_removeGlobalListeners(e){const i=e.rootNode;if(this._rootNodeFocusListenerCount.has(i)){const r=this._rootNodeFocusListenerCount.get(i);r>1?this._rootNodeFocusListenerCount.set(i,r-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,wm),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,wm),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,i,r){this._setClasses(e,i),this._emitOrigin(r,i),this._lastFocusOrigin=i}_getClosestElementsInfo(e){const i=[];return this._elementInfo.forEach((r,o)=>{(o===e||r.checkChildren&&o.contains(e))&&i.push([o,r])}),i}_isLastInteractionFromInputLabel(e){const{_mostRecentTarget:i,mostRecentModality:r}=this._inputModalityDetector;if("mouse"!==r||!i||i===e||"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.disabled)return!1;const o=e.labels;if(o)for(let s=0;s{class t{constructor(e,i){this._elementRef=e,this._focusMonitor=i,this._focusOrigin=null,this.cdkFocusChange=new ee}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){const e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,1===e.nodeType&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(i=>{this._focusOrigin=i,this.cdkFocusChange.emit(i)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription&&this._monitorSubscription.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(xd))},t.\u0275dir=M({type:t,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"]}),t})();const NO="cdk-high-contrast-black-on-white",LO="cdk-high-contrast-white-on-black",_0="cdk-high-contrast-active";let BO=(()=>{class t{constructor(e,i){this._platform=e,this._document=i,this._breakpointSubscription=R(_K).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return 0;const e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);const i=this._document.defaultView||window,r=i&&i.getComputedStyle?i.getComputedStyle(e):null,o=(r&&r.backgroundColor||"").replace(/ /g,"");switch(e.remove(),o){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return 2;case"rgb(255,255,255)":case"rgb(255,250,239)":return 1}return 0}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const e=this._document.body.classList;e.remove(_0,NO,LO),this._hasCheckedHighContrastMode=!0;const i=this.getHighContrastMode();1===i?e.add(_0,NO):2===i&&e.add(_0,LO)}}}return t.\u0275fac=function(e){return new(e||t)(_(pt),_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),VO=(()=>{class t{constructor(e){e._applyBodyHighContrastModeCssClasses()}}return t.\u0275fac=function(e){return new(e||t)(_(BO))},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[vm]}),t})();const BK=new k("cdk-dir-doc",{providedIn:"root",factory:function VK(){return R(ge)}}),jK=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let In=(()=>{class t{constructor(e){this.value="ltr",this.change=new ee,e&&(this.value=function HK(t){const n=t?.toLowerCase()||"";return"auto"===n&&typeof navigator<"u"&&navigator?.language?jK.test(navigator.language)?"rtl":"ltr":"rtl"===n?"rtl":"ltr"}((e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}}return t.\u0275fac=function(e){return new(e||t)(_(BK,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),Cd=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})();const UK=new k("mat-sanity-checks",{providedIn:"root",factory:function zK(){return!0}});let Dt=(()=>{class t{constructor(e,i,r){this._sanityChecks=i,this._document=r,this._hasDoneGlobalChecks=!1,e._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(e){return!d0()&&("boolean"==typeof this._sanityChecks?this._sanityChecks:!!this._sanityChecks[e])}}return t.\u0275fac=function(e){return new(e||t)(_(BO),_(UK,8),_(ge))},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Cd,Cd]}),t})();function xm(t){return class extends t{get disabled(){return this._disabled}set disabled(n){this._disabled=Ve(n)}constructor(...n){super(...n),this._disabled=!1}}}function b0(t,n){return class extends t{get color(){return this._color}set color(e){const i=e||this.defaultColor;i!==this._color&&(this._color&&this._elementRef.nativeElement.classList.remove(`mat-${this._color}`),i&&this._elementRef.nativeElement.classList.add(`mat-${i}`),this._color=i)}constructor(...e){super(...e),this.defaultColor=n,this.color=n}}}function zO(t){return class extends t{get disableRipple(){return this._disableRipple}set disableRipple(n){this._disableRipple=Ve(n)}constructor(...n){super(...n),this._disableRipple=!1}}}function $K(t,n=0){return class extends t{get tabIndex(){return this.disabled?-1:this._tabIndex}set tabIndex(e){this._tabIndex=null!=e?si(e):this.defaultTabIndex}constructor(...e){super(...e),this._tabIndex=n,this.defaultTabIndex=n}}}function GK(t){return class extends t{updateErrorState(){const n=this.errorState,o=(this.errorStateMatcher||this._defaultErrorStateMatcher).isErrorState(this.ngControl?this.ngControl.control:null,this._parentFormGroup||this._parentForm);o!==n&&(this.errorState=o,this.stateChanges.next())}constructor(...n){super(...n),this.errorState=!1}}}let qK=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.touched||i&&i.submitted))}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();class YK{constructor(n,e,i,r=!1){this._renderer=n,this.element=e,this.config=i,this._animationForciblyDisabledThroughCss=r,this.state=3}fadeOut(){this._renderer.fadeOutRipple(this)}}const UO=ll({passive:!0,capture:!0});class ZK{constructor(){this._events=new Map,this._delegateEventHandler=n=>{const e=Vo(n);e&&this._events.get(n.type)?.forEach((i,r)=>{(r===e||r.contains(e))&&i.forEach(o=>o.handleEvent(n))})}}addHandler(n,e,i,r){const o=this._events.get(e);if(o){const s=o.get(i);s?s.add(r):o.set(i,new Set([r]))}else this._events.set(e,new Map([[i,new Set([r])]])),n.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,UO)})}removeHandler(n,e,i){const r=this._events.get(n);if(!r)return;const o=r.get(e);o&&(o.delete(i),0===o.size&&r.delete(e),0===r.size&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,UO)))}}const $O={enterDuration:225,exitDuration:150},GO=ll({passive:!0,capture:!0}),WO=["mousedown","touchstart"],qO=["mouseup","mouseleave","touchend","touchcancel"];class hl{constructor(n,e,i,r){this._target=n,this._ngZone=e,this._platform=r,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,r.isBrowser&&(this._containerElement=Kr(i))}fadeInRipple(n,e,i={}){const r=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),o={...$O,...i.animation};i.centered&&(n=r.left+r.width/2,e=r.top+r.height/2);const s=i.radius||function XK(t,n,e){const i=Math.max(Math.abs(t-e.left),Math.abs(t-e.right)),r=Math.max(Math.abs(n-e.top),Math.abs(n-e.bottom));return Math.sqrt(i*i+r*r)}(n,e,r),a=n-r.left,l=e-r.top,c=o.enterDuration,d=document.createElement("div");d.classList.add("mat-ripple-element"),d.style.left=a-s+"px",d.style.top=l-s+"px",d.style.height=2*s+"px",d.style.width=2*s+"px",null!=i.color&&(d.style.backgroundColor=i.color),d.style.transitionDuration=`${c}ms`,this._containerElement.appendChild(d);const u=window.getComputedStyle(d),f=u.transitionDuration,p="none"===u.transitionProperty||"0s"===f||"0s, 0s"===f||0===r.width&&0===r.height,g=new YK(this,d,i,p);d.style.transform="scale3d(1, 1, 1)",g.state=0,i.persistent||(this._mostRecentTransientRipple=g);let b=null;return!p&&(c||o.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const v=()=>this._finishRippleTransition(g),w=()=>this._destroyRipple(g);d.addEventListener("transitionend",v),d.addEventListener("transitioncancel",w),b={onTransitionEnd:v,onTransitionCancel:w}}),this._activeRipples.set(g,b),(p||!c)&&this._finishRippleTransition(g),g}fadeOutRipple(n){if(2===n.state||3===n.state)return;const e=n.element,i={...$O,...n.config.animation};e.style.transitionDuration=`${i.exitDuration}ms`,e.style.opacity="0",n.state=2,(n._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){const e=Kr(n);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,WO.forEach(i=>{hl._eventManager.addHandler(this._ngZone,i,e,this)}))}handleEvent(n){"mousedown"===n.type?this._onMousedown(n):"touchstart"===n.type?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{qO.forEach(e=>{this._triggerElement.addEventListener(e,this,GO)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){0===n.state?this._startFadeOutTransition(n):2===n.state&&this._destroyRipple(n)}_startFadeOutTransition(n){const e=n===this._mostRecentTransientRipple,{persistent:i}=n.config;n.state=1,!i&&(!e||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){const e=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=3,null!==e&&(n.element.removeEventListener("transitionend",e.onTransitionEnd),n.element.removeEventListener("transitioncancel",e.onTransitionCancel)),n.element.remove()}_onMousedown(n){const e=RO(n),i=this._lastTouchStartEvent&&Date.now(){!n.config.persistent&&(1===n.state||n.config.terminateOnPointerUp&&0===n.state)&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const n=this._triggerElement;n&&(WO.forEach(e=>hl._eventManager.removeHandler(e,n,this)),this._pointerUpEventsRegistered&&qO.forEach(e=>n.removeEventListener(e,this,GO)))}}hl._eventManager=new ZK;const Cm=new k("mat-ripple-global-options");let Cs=(()=>{class t{get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}constructor(e,i,r,o,s){this._elementRef=e,this._animationMode=s,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=o||{},this._rippleRenderer=new hl(this,i,e,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,i=0,r){return"number"==typeof e?this._rippleRenderer.fadeInRipple(e,i,{...this.rippleConfig,...r}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...e})}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Y),m(pt),m(Cm,8),m(Jt,8))},t.\u0275dir=M({type:t,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(e,i){2&e&&ce("mat-ripple-unbounded",i.unbounded)},inputs:{color:["matRippleColor","color"],unbounded:["matRippleUnbounded","unbounded"],centered:["matRippleCentered","centered"],radius:["matRippleRadius","radius"],animation:["matRippleAnimation","animation"],disabled:["matRippleDisabled","disabled"],trigger:["matRippleTrigger","trigger"]},exportAs:["matRipple"]}),t})(),Ed=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Dt,Dt]}),t})(),QK=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Dt]}),t})();const YO=["mat-button",""],ZO=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],KO=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],XO=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}",eX=["mat-icon-button",""],tX=["*"],nX=[{selector:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{selector:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{selector:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{selector:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{selector:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{selector:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{selector:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],iX=b0(xm(zO(class{constructor(t){this._elementRef=t}})));let v0=(()=>{class t extends iX{constructor(e,i,r,o){super(e),this._platform=i,this._ngZone=r,this._animationMode=o,this._focusMonitor=R(xd),this._isFab=!1;const s=e.nativeElement.classList;for(const a of nX)this._hasHostAttributes(a.selector)&&a.mdcClasses.forEach(l=>{s.add(l)})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}focus(e="program",i){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,i):this._elementRef.nativeElement.focus(i)}_hasHostAttributes(...e){return e.some(i=>this._elementRef.nativeElement.hasAttribute(i))}_isRippleDisabled(){return this.disableRipple||this.disabled}}return t.\u0275fac=function(e){Kl()},t.\u0275dir=M({type:t,viewQuery:function(e,i){if(1&e&&Ge(Cs,5),2&e){let r;Q(r=J())&&(i.ripple=r.first)}},features:[P]}),t})(),oX=(()=>{class t extends v0{constructor(e,i,r,o){super(e,i,r,o),this._haltDisabledEvents=s=>{this.disabled&&(s.preventDefault(),s.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)})}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}}return t.\u0275fac=function(e){Kl()},t.\u0275dir=M({type:t,features:[P]}),t})(),fl=(()=>{class t extends v0{constructor(e,i,r,o){super(e,i,r,o)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(Y),m(Jt,8))},t.\u0275cmp=G({type:t,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:7,hostBindings:function(e,i){2&e&&(tt("disabled",i.disabled||null),ce("_mat-animation-noopable","NoopAnimations"===i._animationMode)("mat-unthemed",!i.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[P],attrs:YO,ngContentSelectors:KO,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,i){1&e&&(Bt(ZO),z(0,"span",0),Se(1),x(2,"span",1),Se(3,1),E(),Se(4,2),z(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(ce("mdc-button__ripple",!i._isFab)("mdc-fab__ripple",i._isFab),D(6),S("matRippleDisabled",i._isRippleDisabled())("matRippleTrigger",i._elementRef.nativeElement))},dependencies:[Cs],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0}),t})(),QO=(()=>{class t extends oX{constructor(e,i,r,o){super(e,i,r,o)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(Y),m(Jt,8))},t.\u0275cmp=G({type:t,selectors:[["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostVars:9,hostBindings:function(e,i){2&e&&(tt("disabled",i.disabled||null)("tabindex",i.disabled?-1:i.tabIndex)("aria-disabled",i.disabled.toString()),ce("_mat-animation-noopable","NoopAnimations"===i._animationMode)("mat-unthemed",!i.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[P],attrs:YO,ngContentSelectors:KO,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,i){1&e&&(Bt(ZO),z(0,"span",0),Se(1),x(2,"span",1),Se(3,1),E(),Se(4,2),z(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(ce("mdc-button__ripple",!i._isFab)("mdc-fab__ripple",i._isFab),D(6),S("matRippleDisabled",i._isRippleDisabled())("matRippleTrigger",i._elementRef.nativeElement))},dependencies:[Cs],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',XO],encapsulation:2,changeDetection:0}),t})(),Dm=(()=>{class t extends v0{constructor(e,i,r,o){super(e,i,r,o)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(Y),m(Jt,8))},t.\u0275cmp=G({type:t,selectors:[["button","mat-icon-button",""]],hostVars:7,hostBindings:function(e,i){2&e&&(tt("disabled",i.disabled||null),ce("_mat-animation-noopable","NoopAnimations"===i._animationMode)("mat-unthemed",!i.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[P],attrs:eX,ngContentSelectors:tX,decls:5,vars:3,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,i){1&e&&(Bt(),z(0,"span",0),Se(1),z(2,"span",1)(3,"span",2)(4,"span",3)),2&e&&(D(3),S("matRippleDisabled",i._isRippleDisabled())("matRippleCentered",!0)("matRippleTrigger",i._elementRef.nativeElement))},dependencies:[Cs],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',XO],encapsulation:2,changeDetection:0}),t})(),Xr=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Dt,Ed,Dt]}),t})();const aX=["*"];let Em;function Sd(t){return function lX(){if(void 0===Em&&(Em=null,typeof window<"u")){const t=window;void 0!==t.trustedTypes&&(Em=t.trustedTypes.createPolicy("angular#components",{createHTML:n=>n}))}return Em}()?.createHTML(t)||t}function JO(t){return Error(`Unable to find icon with the name "${t}"`)}function eR(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function tR(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class Ds{constructor(n,e,i){this.url=n,this.svgText=e,this.options=i}}let Sm=(()=>{class t{constructor(e,i,r,o){this._httpClient=e,this._sanitizer=i,this._errorHandler=o,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=r}addSvgIcon(e,i,r){return this.addSvgIconInNamespace("",e,i,r)}addSvgIconLiteral(e,i,r){return this.addSvgIconLiteralInNamespace("",e,i,r)}addSvgIconInNamespace(e,i,r,o){return this._addSvgIconConfig(e,i,new Ds(r,null,o))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,i,r,o){const s=this._sanitizer.sanitize($e.HTML,r);if(!s)throw tR(r);const a=Sd(s);return this._addSvgIconConfig(e,i,new Ds("",a,o))}addSvgIconSet(e,i){return this.addSvgIconSetInNamespace("",e,i)}addSvgIconSetLiteral(e,i){return this.addSvgIconSetLiteralInNamespace("",e,i)}addSvgIconSetInNamespace(e,i,r){return this._addSvgIconSetConfig(e,new Ds(i,null,r))}addSvgIconSetLiteralInNamespace(e,i,r){const o=this._sanitizer.sanitize($e.HTML,i);if(!o)throw tR(i);const s=Sd(o);return this._addSvgIconSetConfig(e,new Ds("",s,r))}registerFontClassAlias(e,i=e){return this._fontCssClassesByAlias.set(e,i),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){const i=this._sanitizer.sanitize($e.RESOURCE_URL,e);if(!i)throw eR(e);const r=this._cachedIconsByUrl.get(i);return r?j(km(r)):this._loadSvgIconFromConfig(new Ds(e,null)).pipe(Ze(o=>this._cachedIconsByUrl.set(i,o)),B(o=>km(o)))}getNamedSvgIcon(e,i=""){const r=nR(i,e);let o=this._svgIconConfigs.get(r);if(o)return this._getSvgFromConfig(o);if(o=this._getIconConfigFromResolvers(i,e),o)return this._svgIconConfigs.set(r,o),this._getSvgFromConfig(o);const s=this._iconSetConfigs.get(i);return s?this._getSvgFromIconSetConfigs(e,s):lr(JO(r))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?j(km(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(B(i=>km(i)))}_getSvgFromIconSetConfigs(e,i){const r=this._extractIconWithNameFromAnySet(e,i);return r?j(r):Mc(i.filter(s=>!s.svgText).map(s=>this._loadSvgIconSetFromConfig(s).pipe(ni(a=>{const c=`Loading icon set URL: ${this._sanitizer.sanitize($e.RESOURCE_URL,s.url)} failed: ${a.message}`;return this._errorHandler.handleError(new Error(c)),j(null)})))).pipe(B(()=>{const s=this._extractIconWithNameFromAnySet(e,i);if(!s)throw JO(e);return s}))}_extractIconWithNameFromAnySet(e,i){for(let r=i.length-1;r>=0;r--){const o=i[r];if(o.svgText&&o.svgText.toString().indexOf(e)>-1){const s=this._svgElementFromConfig(o),a=this._extractSvgIconFromSet(s,e,o.options);if(a)return a}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(Ze(i=>e.svgText=i),B(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?j(null):this._fetchIcon(e).pipe(Ze(i=>e.svgText=i))}_extractSvgIconFromSet(e,i,r){const o=e.querySelector(`[id="${i}"]`);if(!o)return null;const s=o.cloneNode(!0);if(s.removeAttribute("id"),"svg"===s.nodeName.toLowerCase())return this._setSvgAttributes(s,r);if("symbol"===s.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(s),r);const a=this._svgElementFromString(Sd(""));return a.appendChild(s),this._setSvgAttributes(a,r)}_svgElementFromString(e){const i=this._document.createElement("DIV");i.innerHTML=e;const r=i.querySelector("svg");if(!r)throw Error(" tag not found");return r}_toSvgElement(e){const i=this._svgElementFromString(Sd("")),r=e.attributes;for(let o=0;oSd(c)),pf(()=>this._inProgressUrlFetches.delete(s)),Ml());return this._inProgressUrlFetches.set(s,l),l}_addSvgIconConfig(e,i,r){return this._svgIconConfigs.set(nR(e,i),r),this}_addSvgIconSetConfig(e,i){const r=this._iconSetConfigs.get(e);return r?r.push(i):this._iconSetConfigs.set(e,[i]),this}_svgElementFromConfig(e){if(!e.svgElement){const i=this._svgElementFromString(e.svgText);this._setSvgAttributes(i,e.options),e.svgElement=i}return e.svgElement}_getIconConfigFromResolvers(e,i){for(let r=0;rn?n.pathname+n.search:""}}}),iR=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],gX=iR.map(t=>`[${t}]`).join(", "),_X=/^url\(['"]?#(.*?)['"]?\)$/;let Qr=(()=>{class t extends hX{get inline(){return this._inline}set inline(e){this._inline=Ve(e)}get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}get fontSet(){return this._fontSet}set fontSet(e){const i=this._cleanupFontValue(e);i!==this._fontSet&&(this._fontSet=i,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(e){const i=this._cleanupFontValue(e);i!==this._fontIcon&&(this._fontIcon=i,this._updateFontIconClasses())}constructor(e,i,r,o,s,a){super(e),this._iconRegistry=i,this._location=o,this._errorHandler=s,this._inline=!1,this._previousFontSetClass=[],this._currentIconFetch=rt.EMPTY,a&&(a.color&&(this.color=this.defaultColor=a.color),a.fontSet&&(this.fontSet=a.fontSet)),r||e.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];const i=e.split(":");switch(i.length){case 1:return["",i[0]];case 2:return i;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const e=this._elementsWithExternalReferences;if(e&&e.size){const i=this._location.getPathname();i!==this._previousPath&&(this._previousPath=i,this._prependPathToReferences(i))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();const i=this._location.getPathname();this._previousPath=i,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(i),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){const e=this._elementRef.nativeElement;let i=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();i--;){const r=e.childNodes[i];(1!==r.nodeType||"svg"===r.nodeName.toLowerCase())&&r.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const e=this._elementRef.nativeElement,i=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(r=>r.length>0);this._previousFontSetClass.forEach(r=>e.classList.remove(r)),i.forEach(r=>e.classList.add(r)),this._previousFontSetClass=i,this.fontIcon!==this._previousFontIconClass&&!i.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return"string"==typeof e?e.trim().split(" ")[0]:e}_prependPathToReferences(e){const i=this._elementsWithExternalReferences;i&&i.forEach((r,o)=>{r.forEach(s=>{o.setAttribute(s.name,`url('${e}#${s.value}')`)})})}_cacheChildrenWithExternalReferences(e){const i=e.querySelectorAll(gX),r=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let o=0;o{const a=i[o],l=a.getAttribute(s),c=l?l.match(_X):null;if(c){let d=r.get(a);d||(d=[],r.set(a,d)),d.push({name:s,value:c[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){const[i,r]=this._splitIconName(e);i&&(this._svgNamespace=i),r&&(this._svgName=r),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(r,i).pipe(qt(1)).subscribe(o=>this._setSvgElement(o),o=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${i}:${r}! ${o.message}`))})}}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Sm),Tr("aria-hidden"),m(mX),m(Qi),m(fX,8))},t.\u0275cmp=G({type:t,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:8,hostBindings:function(e,i){2&e&&(tt("data-mat-icon-type",i._usingFontIcon()?"font":"svg")("data-mat-icon-name",i._svgName||i.fontIcon)("data-mat-icon-namespace",i._svgNamespace||i.fontSet)("fontIcon",i._usingFontIcon()?i.fontIcon:null),ce("mat-icon-inline",i.inline)("mat-icon-no-color","primary"!==i.color&&"accent"!==i.color&&"warn"!==i.color))},inputs:{color:"color",inline:"inline",svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[P],ngContentSelectors:aX,decls:1,vars:0,template:function(e,i){1&e&&(Bt(),Se(0))},styles:[".mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0}),t})(),_r=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Dt,Dt]}),t})();function Mm(t){return t}function rR(t,n){return n.pipe(B(()=>t))}function Tm(t,n){const e=R(ms);return(...i)=>{const r=t(...i),o=e.dispatch(r);return n(r,o)}}function ai(t,...n){return Tm(function oR(t,n){return(...e)=>new t(...n,...e)}(t,n),Mm)}let vX=(()=>{class t{static query(e){return(i,r)=>this.getEntry(e,i,r)}static getEntry(e,i,r){const o=e[i];return void 0===r||o?.type===r?o:void 0}}return U([Ct([eO]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"query",null),t})(),ml=(()=>{var t;class n{constructor(){this.linkId=Wr,this.injector=R(kt),this.tagName=R(H).nativeElement.tagName.toLowerCase(),this.queryLink=ct(vX.query),this.navigate=ai(Qa)}get isAnchorElement(){return["a","area"].includes(this.tagName)}get isResourceUrl(){return["base","link"].includes(this.tagName)}get extras(){const{link:i}=this;return this.mergeExtras(i?.type===ri.Internal?i.extras:void 0,this)}ngOnChanges(){this.updateLink()}onClick(i){const{link:r,linkId:o,isAnchorElement:s}=this;if(!r)return!0;if(s){const{button:a,ctrlKey:l,shiftKey:c,altKey:d,metaKey:u}=i;if(r.type===ri.External||0!==a||l||c||d||u)return!0}return this.navigate(o,this.extras),!s}updateLink(){const i=this.link=this.queryLink(this.linkId);({href:this.href,rel:this.rel,target:this.target}=this.getLinkAttributes(i))}getLinkAttributes(i){const{injector:r,extras:o,isResourceUrl:s}=this;switch(i?.type){case ri.Internal:return{href:U9(r,i.commands,o,s)};case ri.External:return{...i,href:R1(i.url,o)};default:return{}}}mergeExtras(i,r){const o={...i},s=a=>{void 0!==r[a]&&(o[a]=r[a])};return s("queryParams"),s("queryParamsHandling"),s("fragment"),s("preserveFragment"),s("relativeTo"),o}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275dir=M({type:t,selectors:[["","hraLink",""]],hostVars:3,hostBindings:function(i,r){1&i&&re("click",function(s){return r.onClick(s)}),2&i&&tt("href",r.href,Xg)("rel",r.rel)("target",r.target)},inputs:{linkId:["hraLink","linkId"],queryParams:"queryParams",queryParamsHandling:"queryParamsHandling",fragment:"fragment",preserveFragment:"preserveFragment",relativeTo:"relativeTo"},standalone:!0,features:[at]}),n})(),yX=(()=>{var t;class n{constructor(){this.productLogoUrl="",this.productTitle="",this.appTitle="",this.productTitleLink=Wr,this.aboutLink=Wr}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-header"]],inputs:{productLogoUrl:"productLogoUrl",productTitle:"productTitle",appTitle:"appTitle",productTitleLink:"productTitleLink",aboutLink:"aboutLink"},standalone:!0,features:[Be],decls:12,vars:5,consts:[["matRipple","",1,"product",3,"hraLink"],["alt","Prodoct Logo","aria-hidden","true",1,"logo","image",3,"src"],[1,"text"],[1,"app","text"],[1,"filler"],["mat-flat-button","",1,"about",3,"hraLink"],[1,"icon"]],template:function(i,r){1&i&&(x(0,"a",0),z(1,"img",1),x(2,"h1",2),N(3),E()(),x(4,"h1",3),N(5),E(),z(6,"div",4),x(7,"a",5)(8,"mat-icon",6),N(9,"info_outlined"),E(),x(10,"span",2),N(11,"About"),E()()),2&i&&(S("hraLink",r.productTitleLink),D(1),S("src",r.productLogoUrl,Oi),D(2),Qt(r.productTitle),D(2),Qt(r.appTitle),D(2),S("hraLink",r.aboutLink))},dependencies:[Re,Xr,QO,_r,Qr,Ed,Cs,ml],styles:["[_nghost-%COMP%]{display:flex;align-items:center;height:5rem;padding:0 2rem 0 1rem}[_nghost-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}[_nghost-%COMP%] h1[_ngcontent-%COMP%]{margin:0}[_nghost-%COMP%] .product[_ngcontent-%COMP%]{display:flex;align-items:center;text-decoration:none;padding:0 1rem;border-radius:.25rem}[_nghost-%COMP%] .product[_ngcontent-%COMP%]:hover{cursor:pointer}[_nghost-%COMP%] .product[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{margin-left:1rem;font-weight:600;color:var(--palette-accent-A200-rgb)}[_nghost-%COMP%] .app[_ngcontent-%COMP%]{margin-left:.5rem}[_nghost-%COMP%] .about[_ngcontent-%COMP%]{width:9rem;height:3rem}[_nghost-%COMP%] .about[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:1.5rem;height:1.5rem;font-size:1.5rem}@media (max-width: 30rem){[_nghost-%COMP%]{height:4.5rem}[_nghost-%COMP%] .product[_ngcontent-%COMP%] .text[_ngcontent-%COMP%], [_nghost-%COMP%] .about[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}[_nghost-%COMP%] .product[_ngcontent-%COMP%]{height:2.5rem;padding:0 .25rem}[_nghost-%COMP%] .product[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%]{width:1.5rem;height:1.5rem}[_nghost-%COMP%] .app[_ngcontent-%COMP%]{font-size:1rem;line-height:1.5rem}[_nghost-%COMP%] .about[_ngcontent-%COMP%]{min-width:2.5rem;width:2.5rem;height:2.5rem;padding:0}[_nghost-%COMP%] .about[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:0}}@media (max-width: 20rem){[_nghost-%COMP%]{padding:0}}"],changeDetection:0}),n})();const y0=At("ProductTitle"),w0=At("ProductLogoUrl"),wX=At("LandingPageIntroTitle"),xX=At("LandingPageIntroDescription"),CX=At("LandingPageIntroPartners"),DX=At("LandingPageIntroMoreText"),EX=(At("LandingPageIntroReadMore"),At("LandingPageIntroImg")),SX=At("MetricsLogo"),kX=At("MetricsTitle"),MX=At("LandingPageDepthTitle"),TX=At("LandingPageDepthImg"),AX=At("LandingPageDepthDescription"),IX=At("LandingPageDepthMoreText"),OX=At("Metrics"),RX=At("ContactAcknowledgement"),FX=At("AppTitle"),PX=At("GradientLegend"),NX=At("SizeLegend"),LX=At("GradientLegendInfo"),BX=At("SizeLegendInfo"),VX=At("ScreenSizeNoticeContent"),x0=ji("LandingPage"),sR=ji("ProductTitle"),aR=ji("About"),C0=ji("Portal"),D0=ji("Illustration"),lR=ji("Embed"),jX=ji("ExploreFTU"),HX=ji("LandingPageReadMore");let cR=(()=>{var t;class n{constructor(){this.productLogoUrl=ct(vt.url,w0),this.productTitle=ct(vt.anyText,y0),this.appTitle=ct(vt.anyText,FX),this.productTitleLink=sR,this.aboutLink=aR}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-header-behavior"]],standalone:!0,features:[Be],decls:1,vars:5,consts:[[3,"productLogoUrl","productTitle","appTitle","productTitleLink","aboutLink"]],template:function(i,r){1&i&&z(0,"hra-header",0),2&i&&S("productLogoUrl",r.productLogoUrl())("productTitle",r.productTitle())("appTitle",r.appTitle())("productTitleLink",r.productTitleLink)("aboutLink",r.aboutLink)},dependencies:[Re,yX],styles:["[_nghost-%COMP%]{display:block}"],changeDetection:0}),n})();class dR{}function Am(t){return t&&"function"==typeof t.connect&&!(t instanceof Fv)}class uR{applyChanges(n,e,i,r,o){n.forEachOperation((s,a,l)=>{let c,d;if(null==s.previousIndex){const u=i(s,a,l);c=e.createEmbeddedView(u.templateRef,u.context,u.index),d=1}else null==l?(e.remove(a),d=3):(c=e.get(a),e.move(c,l),d=2);o&&o({context:c?.context,operation:d,record:s})})}detach(){}}class E0{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(n=!1,e,i=!0,r){this._multiple=n,this._emitChanges=i,this.compareWith=r,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new te,e&&e.length&&(n?e.forEach(o=>this._markSelected(o)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...n){this._verifyValueAssignment(n),n.forEach(i=>this._markSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...n){this._verifyValueAssignment(n),n.forEach(i=>this._unmarkSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...n){this._verifyValueAssignment(n);const e=this.selected,i=new Set(n);n.forEach(o=>this._markSelected(o)),e.filter(o=>!i.has(o)).forEach(o=>this._unmarkSelected(o));const r=this._hasQueuedChanges();return this._emitChangeEvent(),r}toggle(n){return this.isSelected(n)?this.deselect(n):this.select(n)}clear(n=!0){this._unmarkAll();const e=this._hasQueuedChanges();return n&&this._emitChangeEvent(),e}isSelected(n){return this._selection.has(this._getConcreteValue(n))}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(n){this._multiple&&this.selected&&this._selected.sort(n)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(n){n=this._getConcreteValue(n),this.isSelected(n)||(this._multiple||this._unmarkAll(),this.isSelected(n)||this._selection.add(n),this._emitChanges&&this._selectedToEmit.push(n))}_unmarkSelected(n){n=this._getConcreteValue(n),this.isSelected(n)&&(this._selection.delete(n),this._emitChanges&&this._deselectedToEmit.push(n))}_unmarkAll(){this.isEmpty()||this._selection.forEach(n=>this._unmarkSelected(n))}_verifyValueAssignment(n){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}_getConcreteValue(n){if(this.compareWith){for(let e of this._selection)if(this.compareWith(n,e))return e;return n}return n}}const kd=new k("_ViewRepeater");class zX{constructor(){this.expansionModel=new E0(!0)}toggle(n){this.expansionModel.toggle(this._trackByValue(n))}expand(n){this.expansionModel.select(this._trackByValue(n))}collapse(n){this.expansionModel.deselect(this._trackByValue(n))}isExpanded(n){return this.expansionModel.isSelected(this._trackByValue(n))}toggleDescendants(n){this.expansionModel.isSelected(this._trackByValue(n))?this.collapseDescendants(n):this.expandDescendants(n)}collapseAll(){this.expansionModel.clear()}expandDescendants(n){let e=[n];e.push(...this.getDescendants(n)),this.expansionModel.select(...e.map(i=>this._trackByValue(i)))}collapseDescendants(n){let e=[n];e.push(...this.getDescendants(n)),this.expansionModel.deselect(...e.map(i=>this._trackByValue(i)))}_trackByValue(n){return this.trackBy?this.trackBy(n):n}}class UX extends zX{constructor(n,e,i){super(),this.getLevel=n,this.isExpandable=e,this.options=i,this.options&&(this.trackBy=this.options.trackBy)}getDescendants(n){const i=[];for(let r=this.dataNodes.indexOf(n)+1;rthis._trackByValue(n)))}}const Im=new k("CDK_TREE_NODE_OUTLET_NODE");let Md=(()=>{class t{constructor(e,i){this.viewContainer=e,this._node=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(Im,8))},t.\u0275dir=M({type:t,selectors:[["","cdkTreeNodeOutlet",""]]}),t})();class $X{constructor(n){this.$implicit=n}}let Om=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","cdkTreeNodeDef",""]],inputs:{when:["cdkTreeNodeDefWhen","when"]}}),t})(),Jr=(()=>{class t{get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}constructor(e,i){this._differs=e,this._changeDetectorRef=i,this._onDestroy=new te,this._levels=new Map,this.viewChange=new Tt({start:0,end:Number.MAX_VALUE})}ngOnInit(){this._dataDiffer=this._differs.find([]).create(this.trackBy)}ngOnDestroy(){this._nodeOutlet.viewContainer.clear(),this.viewChange.complete(),this._onDestroy.next(),this._onDestroy.complete(),this._dataSource&&"function"==typeof this._dataSource.disconnect&&this.dataSource.disconnect(this),this._dataSubscription&&(this._dataSubscription.unsubscribe(),this._dataSubscription=null)}ngAfterContentChecked(){const e=this._nodeDefs.filter(i=>!i.when);this._defaultNodeDef=e[0],this.dataSource&&this._nodeDefs&&!this._dataSubscription&&this._observeRenderChanges()}_switchDataSource(e){this._dataSource&&"function"==typeof this._dataSource.disconnect&&this.dataSource.disconnect(this),this._dataSubscription&&(this._dataSubscription.unsubscribe(),this._dataSubscription=null),e||this._nodeOutlet.viewContainer.clear(),this._dataSource=e,this._nodeDefs&&this._observeRenderChanges()}_observeRenderChanges(){let e;Am(this._dataSource)?e=this._dataSource.connect(this):Tc(this._dataSource)?e=this._dataSource:Array.isArray(this._dataSource)&&(e=j(this._dataSource)),e&&(this._dataSubscription=e.pipe(ze(this._onDestroy)).subscribe(i=>this.renderNodeChanges(i)))}renderNodeChanges(e,i=this._dataDiffer,r=this._nodeOutlet.viewContainer,o){const s=i.diff(e);s&&(s.forEachOperation((a,l,c)=>{if(null==a.previousIndex)this.insertNode(e[c],c,r,o);else if(null==c)r.remove(l),this._levels.delete(a.item);else{const d=r.get(l);r.move(d,c)}}),this._changeDetectorRef.detectChanges())}_getNodeDef(e,i){return 1===this._nodeDefs.length?this._nodeDefs.first:this._nodeDefs.find(o=>o.when&&o.when(i,e))||this._defaultNodeDef}insertNode(e,i,r,o){const s=this._getNodeDef(e,i),a=new $X(e);a.level=this.treeControl.getLevel?this.treeControl.getLevel(e):typeof o<"u"&&this._levels.has(o)?this._levels.get(o)+1:0,this._levels.set(e,a.level),(r||this._nodeOutlet.viewContainer).createEmbeddedView(s.template,a,i),br.mostRecentTreeNode&&(br.mostRecentTreeNode.data=e)}}return t.\u0275fac=function(e){return new(e||t)(m(gi),m(en))},t.\u0275cmp=G({type:t,selectors:[["cdk-tree"]],contentQueries:function(e,i,r){if(1&e&&Ye(r,Om,5),2&e){let o;Q(o=J())&&(i._nodeDefs=o)}},viewQuery:function(e,i){if(1&e&&Ge(Md,7),2&e){let r;Q(r=J())&&(i._nodeOutlet=r.first)}},hostAttrs:["role","tree",1,"cdk-tree"],inputs:{dataSource:"dataSource",treeControl:"treeControl",trackBy:"trackBy"},exportAs:["cdkTree"],decls:1,vars:0,consts:[["cdkTreeNodeOutlet",""]],template:function(e,i){1&e&&Ln(0,0)},dependencies:[Md],encapsulation:2}),t})(),br=(()=>{class t{get role(){return"treeitem"}set role(e){this._elementRef.nativeElement.setAttribute("role",e)}get data(){return this._data}set data(e){e!==this._data&&(this._data=e,this._setRoleFromData(),this._dataChanges.next())}get isExpanded(){return this._tree.treeControl.isExpanded(this._data)}get level(){return this._tree.treeControl.getLevel?this._tree.treeControl.getLevel(this._data):this._parentNodeAriaLevel}constructor(e,i){this._elementRef=e,this._tree=i,this._destroyed=new te,this._dataChanges=new te,t.mostRecentTreeNode=this,this.role="treeitem"}ngOnInit(){this._parentNodeAriaLevel=function GX(t){let n=t.parentElement;for(;n&&!WX(n);)n=n.parentElement;return n?n.classList.contains("cdk-nested-tree-node")?si(n.getAttribute("aria-level")):0:-1}(this._elementRef.nativeElement),this._elementRef.nativeElement.setAttribute("aria-level",`${this.level+1}`)}ngOnDestroy(){t.mostRecentTreeNode===this&&(t.mostRecentTreeNode=null),this._dataChanges.complete(),this._destroyed.next(),this._destroyed.complete()}focus(){this._elementRef.nativeElement.focus()}_setRoleFromData(){this.role="treeitem"}}return t.mostRecentTreeNode=null,t.\u0275fac=function(e){return new(e||t)(m(H),m(Jr))},t.\u0275dir=M({type:t,selectors:[["cdk-tree-node"]],hostAttrs:[1,"cdk-tree-node"],hostVars:1,hostBindings:function(e,i){2&e&&tt("aria-expanded",i.isExpanded)},inputs:{role:"role"},exportAs:["cdkTreeNode"]}),t})();function WX(t){const n=t.classList;return!(!n?.contains("cdk-nested-tree-node")&&!n?.contains("cdk-tree"))}const qX=/([A-Za-z%]+)$/;let k0=(()=>{class t{get level(){return this._level}set level(e){this._setLevelInput(e)}get indent(){return this._indent}set indent(e){this._setIndentInput(e)}constructor(e,i,r,o){this._treeNode=e,this._tree=i,this._element=r,this._dir=o,this._destroyed=new te,this.indentUnits="px",this._indent=40,this._setPadding(),o&&o.change.pipe(ze(this._destroyed)).subscribe(()=>this._setPadding(!0)),e._dataChanges.subscribe(()=>this._setPadding())}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}_paddingIndent(){const e=this._treeNode.data&&this._tree.treeControl.getLevel?this._tree.treeControl.getLevel(this._treeNode.data):null,i=null==this._level?e:this._level;return"number"==typeof i?`${i*this._indent}${this.indentUnits}`:null}_setPadding(e=!1){const i=this._paddingIndent();if(i!==this._currentPadding||e){const r=this._element.nativeElement,o=this._dir&&"rtl"===this._dir.value?"paddingRight":"paddingLeft",s="paddingLeft"===o?"paddingRight":"paddingLeft";r.style[o]=i||"",r.style[s]="",this._currentPadding=i}}_setLevelInput(e){this._level=si(e,null),this._setPadding()}_setIndentInput(e){let i=e,r="px";if("string"==typeof e){const o=e.split(qX);i=o[0],r=o[1]||r}this.indentUnits=r,this._indent=si(i),this._setPadding()}}return t.\u0275fac=function(e){return new(e||t)(m(br),m(Jr),m(H),m(In,8))},t.\u0275dir=M({type:t,selectors:[["","cdkTreeNodePadding",""]],inputs:{level:["cdkTreeNodePadding","level"],indent:["cdkTreeNodePaddingIndent","indent"]}}),t})(),M0=(()=>{class t{get recursive(){return this._recursive}set recursive(e){this._recursive=Ve(e)}constructor(e,i){this._tree=e,this._treeNode=i,this._recursive=!1}_toggle(e){this.recursive?this._tree.treeControl.toggleDescendants(this._treeNode.data):this._tree.treeControl.toggle(this._treeNode.data),e.stopPropagation()}}return t.\u0275fac=function(e){return new(e||t)(m(Jr),m(br))},t.\u0275dir=M({type:t,selectors:[["","cdkTreeNodeToggle",""]],hostBindings:function(e,i){1&e&&re("click",function(o){return i._toggle(o)})},inputs:{recursive:["cdkTreeNodeToggleRecursive","recursive"]}}),t})(),YX=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})(),ZX=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})();class T0{attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;null!=n&&(this._attachedHost=null,n.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(n){this._attachedHost=n}}class A0 extends T0{constructor(n,e,i,r,o){super(),this.component=n,this.viewContainerRef=e,this.injector=i,this.componentFactoryResolver=r,this.projectableNodes=o}}class pl extends T0{constructor(n,e,i,r){super(),this.templateRef=n,this.viewContainerRef=e,this.context=i,this.injector=r}get origin(){return this.templateRef.elementRef}attach(n,e=this.context){return this.context=e,super.attach(n)}detach(){return this.context=void 0,super.detach()}}class KX extends T0{constructor(n){super(),this.element=n instanceof H?n.nativeElement:n}}class I0{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(n){return n instanceof A0?(this._attachedPortal=n,this.attachComponentPortal(n)):n instanceof pl?(this._attachedPortal=n,this.attachTemplatePortal(n)):this.attachDomPortal&&n instanceof KX?(this._attachedPortal=n,this.attachDomPortal(n)):void 0}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class XX extends I0{constructor(n,e,i,r,o){super(),this.outletElement=n,this._componentFactoryResolver=e,this._appRef=i,this._defaultInjector=r,this.attachDomPortal=s=>{const a=s.element,l=this._document.createComment("dom-portal");a.parentNode.insertBefore(l,a),this.outletElement.appendChild(a),this._attachedPortal=s,super.setDisposeFn(()=>{l.parentNode&&l.parentNode.replaceChild(a,l)})},this._document=o}attachComponentPortal(n){const i=(n.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(n.component);let r;return n.viewContainerRef?(r=n.viewContainerRef.createComponent(i,n.viewContainerRef.length,n.injector||n.viewContainerRef.injector,n.projectableNodes||void 0),this.setDisposeFn(()=>r.destroy())):(r=i.create(n.injector||this._defaultInjector||kt.NULL),this._appRef.attachView(r.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(r.hostView),r.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(r)),this._attachedPortal=n,r}attachTemplatePortal(n){let e=n.viewContainerRef,i=e.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return i.rootNodes.forEach(r=>this.outletElement.appendChild(r)),i.detectChanges(),this.setDisposeFn(()=>{let r=e.indexOf(i);-1!==r&&e.remove(r)}),this._attachedPortal=n,i}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}}let QX=(()=>{class t extends pl{constructor(e,i){super(e,i)}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(it))},t.\u0275dir=M({type:t,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[P]}),t})(),gl=(()=>{class t extends I0{constructor(e,i,r){super(),this._componentFactoryResolver=e,this._viewContainerRef=i,this._isInitialized=!1,this.attached=new ee,this.attachDomPortal=o=>{const s=o.element,a=this._document.createComment("dom-portal");o.setAttachedHost(this),s.parentNode.insertBefore(a,s),this._getRootNode().appendChild(s),this._attachedPortal=o,super.setDisposeFn(()=>{a.parentNode&&a.parentNode.replaceChild(s,a)})},this._document=r}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);const i=null!=e.viewContainerRef?e.viewContainerRef:this._viewContainerRef,o=(e.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(e.component),s=i.createComponent(o,i.length,e.injector||i.injector,e.projectableNodes||void 0);return i!==this._viewContainerRef&&this._getRootNode().appendChild(s.hostView.rootNodes[0]),super.setDisposeFn(()=>s.destroy()),this._attachedPortal=e,this._attachedRef=s,this.attached.emit(s),s}attachTemplatePortal(e){e.setAttachedHost(this);const i=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=i,this.attached.emit(i),i}_getRootNode(){const e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}}return t.\u0275fac=function(e){return new(e||t)(m(Ri),m(it),m(ge))},t.\u0275dir=M({type:t,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:["cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[P]}),t})(),_l=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})(),JX=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Re,Dt,ZX,_l]}),t})();const eQ=$K(xm(br));let mR=(()=>{class t extends eQ{constructor(e,i,r){super(e,i),this.tabIndex=Number(r)||0}ngOnInit(){super.ngOnInit()}ngOnDestroy(){super.ngOnDestroy()}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Jr),Tr("tabindex"))},t.\u0275dir=M({type:t,selectors:[["mat-tree-node"]],hostAttrs:[1,"mat-tree-node"],inputs:{role:"role",disabled:"disabled",tabIndex:"tabIndex"},exportAs:["matTreeNode"],features:[ie([{provide:br,useExisting:t}]),P]}),t})(),pR=(()=>{class t extends Om{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matTreeNodeDef",""]],inputs:{when:["matTreeNodeDefWhen","when"],data:["matTreeNode","data"]},features:[ie([{provide:Om,useExisting:t}]),P]}),t})(),gR=(()=>{class t extends k0{get level(){return this._level}set level(e){this._setLevelInput(e)}get indent(){return this._indent}set indent(e){this._setIndentInput(e)}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matTreeNodePadding",""]],inputs:{level:["matTreeNodePadding","level"],indent:["matTreeNodePaddingIndent","indent"]},features:[ie([{provide:k0,useExisting:t}]),P]}),t})(),O0=(()=>{class t{constructor(e,i){this.viewContainer=e,this._node=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(Im,8))},t.\u0275dir=M({type:t,selectors:[["","matTreeNodeOutlet",""]],features:[ie([{provide:Md,useExisting:t}])]}),t})(),_R=(()=>{class t extends Jr{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=G({type:t,selectors:[["mat-tree"]],viewQuery:function(e,i){if(1&e&&Ge(O0,7),2&e){let r;Q(r=J())&&(i._nodeOutlet=r.first)}},hostAttrs:["role","tree",1,"mat-tree"],exportAs:["matTree"],features:[ie([{provide:Jr,useExisting:t}]),P],decls:1,vars:0,consts:[["matTreeNodeOutlet",""]],template:function(e,i){1&e&&Ln(0,0)},dependencies:[O0],styles:[".mat-tree{display:block}.mat-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word}.mat-nested-tree-node{border-bottom-width:0}"],encapsulation:2}),t})(),bR=(()=>{class t extends M0{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matTreeNodeToggle",""]],inputs:{recursive:["matTreeNodeToggleRecursive","recursive"]},features:[ie([{provide:M0,useExisting:t}]),P]}),t})(),nQ=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[YX,Dt,Dt]}),t})();class iQ{constructor(n,e,i,r){this.transformFunction=n,this.getLevel=e,this.isExpandable=i,this.getChildren=r}_flattenNode(n,e,i,r){const o=this.transformFunction(n,e);if(i.push(o),this.isExpandable(o)){const s=this.getChildren(n);s&&(Array.isArray(s)?this._flattenChildren(s,e,i,r):s.pipe(qt(1)).subscribe(a=>{this._flattenChildren(a,e,i,r)}))}return i}_flattenChildren(n,e,i,r){n.forEach((o,s)=>{let a=r.slice();a.push(s!=n.length-1),this._flattenNode(o,e+1,i,a)})}flattenNodes(n){let e=[];return n.forEach(i=>this._flattenNode(i,0,e,[])),e}expandFlattenedNodes(n,e){let i=[],r=[];return r[0]=!0,n.forEach(o=>{let s=!0;for(let a=0;a<=this.getLevel(o);a++)s=s&&r[a];s&&i.push(o),this.isExpandable(o)&&(r[this.getLevel(o)+1]=e.isExpanded(o))}),i}}class rQ extends dR{get data(){return this._data.value}set data(n){this._data.next(n),this._flattenedData.next(this._treeFlattener.flattenNodes(this.data)),this._treeControl.dataNodes=this._flattenedData.value}constructor(n,e,i){super(),this._treeControl=n,this._treeFlattener=e,this._flattenedData=new Tt([]),this._expandedData=new Tt([]),this._data=new Tt([]),i&&(this.data=i)}connect(n){return $n(n.viewChange,this._treeControl.expansionModel.changed,this._flattenedData).pipe(B(()=>(this._expandedData.next(this._treeFlattener.expandFlattenedNodes(this._flattenedData.value,this._treeControl)),this._expandedData.value)))}disconnect(){}}function oQ(t,n){if(1&t&&(x(0,"mat-tree-node",4),Ln(1,5),E()),2&t){const e=n.$implicit,i=n.level,r=X(),o=Ft(4);ce("selected",e.data===r.selected)("child",r.hasChild),S("matTreeNodePadding",i),D(1),S("ngTemplateOutlet",o)("ngTemplateOutletContext",e)}}function sQ(t,n){if(1&t&&(x(0,"mat-tree-node",6)(1,"button",7)(2,"mat-icon"),N(3),E()(),Ln(4,5),E()),2&t){const e=n.$implicit,i=X(),r=Ft(4);ce("selected",e.data===i.selected),D(1),tt("aria-label","Toggle "+e.label),D(2),nt(" ",i.control.isExpanded(e)?"keyboard_arrow_up":"chevron_right"," "),D(1),S("ngTemplateOutlet",r)("ngTemplateOutletContext",e)}}const aQ=function(t){return{id:t}};function lQ(t,n){if(1&t){const e=mo();x(0,"a",11),re("click",function(){Wi(e);const r=X().data;return qi(X().selectNode(r))}),N(1),E()}if(2&t){const e=X(),i=e.data,r=e.label;S("hraLink",i.link)("queryParams",$_(3,aQ,i.id)),D(1),nt(" ",r," ")}}function cQ(t,n){if(1&t&&(x(0,"span"),N(1),E()),2&t){const e=X().label;D(1),Qt(e)}}function dQ(t,n){if(1&t&&(x(0,"div",8),O(1,lQ,2,5,"a",9),O(2,cQ,2,1,"ng-template",null,10,Jn),E()),2&t){const e=n.data,i=Ft(3);D(1),S("ngIf",e.link)("ngIfElse",i)}}let uQ=(()=>{var t;class n{constructor(){this.nodes={},this.selected=void 0,this.selectedChange=new ee,this.control=new UX(i=>i.level,i=>i.expandable),this.flattener=new iQ((i,r)=>({label:i.label,expandable:(i.children?.length??0)>0,level:r,data:i}),i=>i.level,i=>i.expandable,i=>i.children?.map(r=>this.nodes[r])),this.dataSource=new rQ(this.control,this.flattener)}ngOnChanges(i){if("nodes"in i&&(this.dataSource.data=this.findRootNodes()),"selected"in i){const r=this.selected?this.dfsFindPath(this.findRootNodes(),this.selected):[];this.expandPath(r)}}hasChild(i,r){return r.expandable}selectNode(i){this.selected!==i&&(this.selected=i,this.selectedChange.emit(this.selected))}resetSelection(){this.selected=void 0,this.control.collapseAll()}findRootNodes(){const{nodes:i}=this,r={...this.nodes};for(const o in i)for(const s of i[o].children??[])delete r[s];return Object.values(r)}expandPath(i){this.control.dataNodes.filter(o=>i.includes(o.data)).forEach(o=>this.control.expand(o))}dfsFindPath(i,r,o=[]){for(const s of i){if(o.push(s),s===r)return o;const a=o.length,l=s.children?.map(c=>this.nodes[c])??[];if(this.dfsFindPath(l,r,o).length>a)return o;o.pop()}return o}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-tissue-tree-list"]],inputs:{nodes:"nodes",selected:"selected"},outputs:{selectedChange:"selectedChange"},standalone:!0,features:[at,Be],decls:5,vars:3,consts:[[1,"tree",3,"dataSource","treeControl"],["matTreeNodePaddingIndent","64","class","row","tabIndex","0",3,"matTreeNodePadding","selected","child",4,"matTreeNodeDef"],["class","row",3,"selected",4,"matTreeNodeDef","matTreeNodeDefWhen"],["label",""],["matTreeNodePaddingIndent","64","tabIndex","0",1,"row",3,"matTreeNodePadding"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"row"],["mat-icon-button","","matTreeNodeToggle","",1,"toggle"],[1,"label-container"],["class","link",3,"hraLink","queryParams","click",4,"ngIf","ngIfElse"],["noLink",""],[1,"link",3,"hraLink","queryParams","click"]],template:function(i,r){1&i&&(x(0,"mat-tree",0),O(1,oQ,2,7,"mat-tree-node",1),O(2,sQ,5,6,"mat-tree-node",2),E(),O(3,dQ,4,2,"ng-template",null,3,Jn)),2&i&&(S("dataSource",r.dataSource)("treeControl",r.control),D(2),S("matTreeNodeDefWhen",r.hasChild))},dependencies:[Re,Vn,Mh,Xr,Dm,nQ,pR,gR,bR,_R,mR,_r,Qr,JX,Ed,ml],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .row[_ngcontent-%COMP%]{min-height:2rem}[_nghost-%COMP%] .row.child[_ngcontent-%COMP%]{padding:5px 0 5px 64px}[_nghost-%COMP%] .row.selected[_ngcontent-%COMP%]{background-color:var(--palette-accent-A100-rgb)}[_nghost-%COMP%] .row[_ngcontent-%COMP%] .toggle[_ngcontent-%COMP%]{width:2rem;height:2rem;padding:.25rem}[_nghost-%COMP%] .row[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{display:flex;align-items:center;height:2rem;padding:0 1rem;border-radius:.25rem}[_nghost-%COMP%] .row[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]{cursor:pointer;text-decoration:none;color:rgba(var(--dark-primary-text))}[_nghost-%COMP%] .row.selected[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]{color:var(--palette-accent-A200-rgb)}"],changeDetection:0}),n})(),Es=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),n})();class vR extends(ed("[TissueLibrary] Load Tissue Data")){}let yR=(()=>{var t;let n=((t=class{constructor(){this.dataService=R(Es)}setActive(i){return this.dataService.getTissueLibrary().pipe(Ze(r=>i.setState(r)))}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(vR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",xe)],n.prototype,"setActive",null),n=U([xi({name:"tissueLibrary"})],n),n})(),R0=(()=>{class t{static tissues(e){return e.nodes}}return U([Ct([yR]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"tissues",null),t})();const F0=Fo("CellSummary");class P0 extends(F0("Load")){constructor(n){super(),this.iri=n}}class wR extends(F0("Compute Aggregates")){}class xR extends(F0("Reset")){}function hQ(t,n){return t.has(n)||t.set(n,t.size+2),t.get(n)}function fQ(t,n){return t.has(n)||t.set(n,["",0]),t.get(n)}function mQ(t,n){if(t.lengthi.id===n)?.label??``}function pQ(t){return t.reduce((n,e)=>n+("object"==typeof e?e.data.count:0),0)}function gQ(t){const{label:n,cells:e,biomarkers:i,summaries:r}=t,o=new Map,s=new Map;for(const l of r){const{biomarker:c,cell:d}=l,u=hQ(o,c),h=fQ(s,d);mQ(h,u),h[u]={color:l.meanExpression,size:l.percentage,data:l}}for(const[l,c]of s.entries())c[0]=CR(e,l,"cell"),c[1]=pQ(c);return{label:n,columns:Array.from(o.keys()).map(l=>CR(i,l,"biomarker")),rows:Array.from(s.values())}}let Rm=(()=>{var t;let n=((t=class{constructor(){this.dataService=R(Es)}load({patchState:i,dispatch:r},{iri:o}){return this.dataService.getCellSummaries(o).pipe(Ze(s=>i({summaries:s,aggregates:[]})),jn(()=>r(new wR)))}computeAggregates({getState:i,patchState:r}){const{summaries:o}=i();r({aggregates:o.map(gQ)})}reset({patchState:i}){i({summaries:[],aggregates:[]})}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(P0,{cancelUncompleted:!0}),y("design:type",Function),y("design:paramtypes",[Object,P0]),y("design:returntype",xe)],n.prototype,"load",null),U([He(wR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"computeAggregates",null),U([He(xR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"reset",null),n=U([xi({name:"cellSummary",defaults:{summaries:[],aggregates:[]}})],n),n})();const Td=Fo("Illustrator");class N0 extends(Td("Load")){constructor(n){super(),this.iri=n}}class Fm extends(Td("Set Selection on Hover")){constructor(n){super(),this.selectedOnHover=n}}class Pm extends(Td("Set Selection on Clicked")){constructor(n){super(),this.selectedOnClick=n}}class _Q extends(Td("Clear Selection")){}class DR extends(Td("Reset")){}let bl=(()=>{var t;let n=((t=class{constructor(){this.dataService=R(Es)}load({patchState:i},{iri:r}){return Mc({url:this.dataService.getIllustrationUrl(r),mapping:this.dataService.getIllustrationMapping(r)}).pipe(Ze(l=>i({...l,selectedOnHover:void 0,selectedOnClick:void 0})))}SetHover({patchState:i},{selectedOnHover:r}){i({selectedOnHover:r})}SetClicked({patchState:i},{selectedOnClick:r}){i({selectedOnClick:r})}clearSelection({patchState:i}){i({selectedOnHover:void 0,selectedOnClick:void 0})}reset({setState:i}){i({mapping:[]})}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(N0,{cancelUncompleted:!0}),y("design:type",Function),y("design:paramtypes",[Object,N0]),y("design:returntype",xe)],n.prototype,"load",null),U([He(Fm),y("design:type",Function),y("design:paramtypes",[Object,Fm]),y("design:returntype",void 0)],n.prototype,"SetHover",null),U([He(Pm),y("design:type",Function),y("design:paramtypes",[Object,Pm]),y("design:returntype",void 0)],n.prototype,"SetClicked",null),U([He(_Q),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"clearSelection",null),U([He(DR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"reset",null),n=U([xi({name:"illustrator",defaults:{mapping:[]}})],n),n})();const ER=Fo("SourceRefs");class L0 extends(ER("Load")){constructor(n){super(),this.iri=n}}class SR extends(ER("Reset")){}let B0=(()=>{var t;let n=((t=class{constructor(){this.dataService=R(Es)}load({setState:i},{iri:r}){return this.dataService.getSourceReferences(r).pipe(Ze(i))}reset({setState:i}){i([])}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(L0),y("design:type",Function),y("design:paramtypes",[Object,L0]),y("design:returntype",xe)],n.prototype,"load",null),U([He(SR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"reset",null),n=U([xi({name:"sourceReferences",defaults:[]})],n),n})();const Nm=Fo("ActiveFtu");class Lm extends(Nm("Load")){constructor(n){super(),this.iri=n}}class V0 extends(Nm("Set Illustration Url")){constructor(n){super(),this.iri=n}}class bQ extends(Nm("Clear")){}class j0 extends(Nm("Reset")){}const Ad=Fo("Download");class Bm extends(Ad("Register Format")){constructor(n){super(),this.format=n}}class H0 extends(Ad("Load")){constructor(n){super(),this.iri=n}}class kR extends(Ad("Add")){constructor(n,e){super(),this.id=n,this.entry=e}}class MR extends(Ad("Clear")){}class Vm extends(Ad("Download")){constructor(n){super(),this.format=n}}const jm=V.string().transform(t=>`DownloadFormatId:'${t}'`).brand("DownloadFormatId"),vQ=V.discriminatedUnion("type",[V.object({type:V.literal("url"),url:V.string()}),V.object({type:V.literal("data"),data:V.string()})]),yQ=V.object({id:jm,label:V.string(),extension:V.string()}).partial({extension:!0});function z0(t){return jm.parse(t)}V.object({formats:V.record(jm,yQ),entries:V.record(jm,vQ)});const wQ=z0("svg"),xQ=z0("png"),CQ={id:wQ,label:"Download SVG",extension:".svg"},DQ={id:xQ,label:"Download PNG",extension:".png"};let U0=(()=>{var t;let n=((t=class{constructor(){this.http=R(vi),this.dataService=R(Es)}ngxsOnInit(i){i.dispatch([new Bm(CQ),new Bm(DQ)])}registerFormat(i,{format:r}){i.setState(ol(o=>{o.formats[r.id]=r}))}load(i,{iri:r}){return this.dataService.getDataFileReferences(r).pipe(Ze(o=>i.setState(ol(s=>{s.entries={};for(const{format:a,url:l}of o)s.entries[z0(a)]={type:"url",url:l}}))))}addEntry(i,{id:r,entry:o}){i.setState(ol(s=>{s.entries[r]=o}))}clearEntries(i){i.setState(ol(r=>{r.entries={}}))}download(i,{format:r}){const{entries:o}=i.getState(),s=o[r];switch(s?.type){case"url":{const a=this.guessFilename(i,r,s.url);return this.downloadRemoteData(s.url).pipe(Ze(l=>this.downloadData(l,a)))}case"data":{const a=this.guessFilename(i,r,"");this.downloadData(new Blob([s.data]),a);break}default:throw new Error("Cannot download file without data")}}guessFilename(i,r,o){const{formats:s}=i.getState(),{extension:a=""}=s[r]??{},d=new URL(o,"https://base.com").pathname.split("/").filter(f=>""!==f),u=d.length>0?d[d.length-1]:"download";return u.includes(".")?u:`${u}${a}`}downloadData(i,r){const o=window.URL.createObjectURL(i),s=document.createElement("a");document.body.appendChild(s),s.download=r,s.href=o,s.click(),s.remove(),window.URL.revokeObjectURL(o)}downloadRemoteData(i){return this.http.get(i,{responseType:"blob"})}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(Bm),y("design:type",Function),y("design:paramtypes",[Object,Bm]),y("design:returntype",void 0)],n.prototype,"registerFormat",null),U([He(H0),y("design:type",Function),y("design:paramtypes",[Object,H0]),y("design:returntype",xe)],n.prototype,"load",null),U([He(kR),y("design:type",Function),y("design:paramtypes",[Object,kR]),y("design:returntype",void 0)],n.prototype,"addEntry",null),U([He(MR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"clearEntries",null),U([He(Vm),y("design:type",Function),y("design:paramtypes",[Object,Vm]),y("design:returntype",Object)],n.prototype,"download",null),n=U([xi({name:"download",defaults:{formats:{},entries:{}}})],n),n})(),$0=(()=>{var t;let n=((t=class{load({getState:i,patchState:r,dispatch:o},{iri:s}){if(i().iri!==s)return o([new P0(s),new N0(s),new H0(s),new L0(s),new V0(s)]).pipe(Ze(()=>r({iri:s})))}setIllustrationUrl({dispatch:i},{iri:r}){const[s]=r.split("/").slice(-1);return i(new Dy(D0,{type:ri.External,url:`https://hubmapconsortium.github.io/ccf-releases/v1.4/docs/2d-ftu/2d-ftu-${s}.html`}))}clear({patchState:i}){i({iri:void 0})}reset({dispatch:i}){return i([new xR,new DR,new SR,new MR])}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(Lm,{cancelUncompleted:!0}),y("design:type",Function),y("design:paramtypes",[Object,Lm]),y("design:returntype",Object)],n.prototype,"load",null),U([He(V0),y("design:type",Function),y("design:paramtypes",[Object,V0]),y("design:returntype",Object)],n.prototype,"setIllustrationUrl",null),U([He([bQ,j0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"clear",null),U([He(j0),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",xe)],n.prototype,"reset",null),n=U([xi({name:"activeFtu",defaults:{},children:[Rm,U0,bl,B0]})],n),n})(),Hm=(()=>{class t{static isActive({iri:e}){return void 0!==e}static iri({iri:e}){return e}}return U([Ct([$0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Boolean)],t,"isActive",null),U([Ct([$0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"iri",null),t})();const EQ=["*",[["",8,"end"]]],SQ=["*",".end"];let zm=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-label-box"]],standalone:!0,features:[Be],ngContentSelectors:SQ,decls:3,vars:0,consts:[[1,"filler"]],template:function(i,r){1&i&&(Bt(EQ),Se(0),z(1,"div",0),Se(2,1))},dependencies:[Re],styles:["[_nghost-%COMP%]{display:flex;align-items:center;padding:.75rem 2rem;background:#f8f9fa}[_nghost-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}"],changeDetection:0}),n})();const kQ=["list"];let TR=(()=>{var t;class n{constructor(){this.tissues=Un(R0.tissues),bd(Hm.iri).subscribe(i=>{this.selected=i&&this.tissues()[i],void 0===i&&this.list?.resetSelection()})}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-tissue-library-behavior"]],viewQuery:function(i,r){if(1&i&&Ge(kQ,7),2&i){let o;Q(o=J())&&(r.list=o.first)}},standalone:!0,features:[Be],decls:4,vars:2,consts:[[1,"label"],[1,"tissue-tree",3,"nodes","selected","selectedChange"],["list",""]],template:function(i,r){1&i&&(x(0,"hra-label-box",0),N(1,"FTU Library"),E(),x(2,"hra-tissue-tree-list",1,2),re("selectedChange",function(s){return r.selected=s}),E()),2&i&&(D(2),S("nodes",r.tissues())("selected",r.selected))},dependencies:[Re,zm,uQ],styles:["[_nghost-%COMP%]{display:block;overflow-y:auto}[_nghost-%COMP%] .label[_ngcontent-%COMP%]{border-bottom:1px solid #e2e7e9;width:100%;height:3.5rem}"],changeDetection:0}),n})(),G0=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),n})(),MQ=(()=>{var t;class n extends G0{sendMessage(i){const r=document.createElement("a");document.body.appendChild(r),r.target="_blank",r.href=`mailto:${i.email}?subject=${i.subject}&body=${i.message}`,r.click(),r.remove()}}return(t=n).\u0275fac=function(){let e;return function(r){return(e||(e=we(t)))(r||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),n})();const AR=V.string().url().brand("URL"),Ss=AR.brand("IRI"),IR=new k("Endpoints"),AQ=new k("Mapping of file formats",{providedIn:"root",factory:()=>({"image/svg+xml":"svg","image/png":"png","application/pdf":"ai"})}),OR=V.object({"@id":Ss}),W0=V.object({"@graph":OR.extend({"@id":Ss,label:V.string(),organ_id:V.string(),organ_label:V.string(),representation_of:V.string(),illustration_files:V.object({file:AR,file_format:V.string()}).array(),mapping:V.object({svg_id:V.string(),label:V.string(),representation_of:V.string()}).array()}).array()}),IQ=V.object({"@graph":OR.extend({"@id":Ss,data_sources:V.object({label:V.string(),description:V.string(),link:V.string()}).array()}).array()}),OQ=V.object({cell_source:Ss}),RQ=V.object({"@graph":OQ.extend({cell_source:Ss,biomarker_type:V.string(),summary:V.object({cell_id:Ss,cell_label:V.string(),gene_id:Ss,gene_label:V.string(),mean_expression:V.number(),count:V.number(),percentage:V.number(),dataset_count:V.number().optional()}).array()}).array()}),FQ=ji("FTU"),q0="https://purl.humanatlas.io/2d-ftu/";function PQ(t){return t.slice(0,1).toUpperCase()+t.slice(1)}let NQ=(()=>{var t;class n extends Es{constructor(){super(...arguments),this.http=R(vi),this.endpoints=R(IR),this.fileFormatMapping=R(AQ),this.cache=new Map}getTissueLibrary(){return this.fetchData(void 0,this.endpoints.illustrations,W0).pipe(B(i=>this.constructTissueLibrary(i["@graph"])))}getIllustrationUrl(i){return this.getDataFileReferences(i).pipe(B(r=>this.findIllustrationUrl(r)))}getIllustrationMapping(i){return this.fetchData(i,this.endpoints.illustrations,W0).pipe(B(r=>this.findGraphItem(r,i).mapping),B(r=>r?this.toIllustrationMapping(r):[]))}getCellSummaries(i){return this.fetchData(i,this.endpoints.summaries,RQ).pipe(B(r=>this.findCellSummaries(r,i)),B(r=>r?this.constructCellSummaries(r):[]))}getDataFileReferences(i){return this.fetchData(i,this.endpoints.illustrations,W0).pipe(B(r=>this.findGraphItem(r,i).illustration_files),B(r=>r?this.toDataFileReferences(r):[]))}getSourceReferences(i){return this.fetchData(i,this.endpoints.datasets,IQ).pipe(B(r=>this.findGraphItem(r,i).data_sources),B(r=>r?this.toSourceReferences(r):[]))}fetchData(i,r,o){const{http:s,cachedIri:a,cache:l}=this;if(void 0!==i&&i!==a&&(this.cachedIri=i,this.cache=new Map),!l.has(r)){const d=s.get(r,{params:{id:i??""},responseType:"json"}).pipe(B(u=>o.parse(u)));l.set(r,function TQ(t,n){const e="object"==typeof n;return new Promise((i,r)=>{const o=new Ns({next:s=>{i(s),o.unsubscribe()},error:r,complete:()=>{e?i(n.defaultValue):r(new Rc)}});t.subscribe(o)})}(d))}return yt(l.get(r))}findGraphItem(i,r){const o=i["@graph"].find(({"@id":s})=>s===r);return void 0===o?(console.error(`Iri not found in data: ${r}`),{}):o}findCellSummaries(i,r){const o=i["@graph"].filter(({cell_source:s})=>s===r);return void 0===o||0==o.length?(console.error(`Cell Summary not found in data: ${r}`),[]):o}findIllustrationUrl(i){const{fileFormatMapping:r}=this,o=r["image/svg+xml"],s=i.find(({format:a})=>a===o);return void 0===s?(console.error("Illustration url not found"),""):s.url}toIllustrationMapping(i){const o=[];for(const{label:s,svg_id:a,representation_of:l}of i)o.push({label:s,id:a,ontologyId:l.slice("http://purl.obolibrary.org/obo/".length)});return o}toDataFileReferences(i){const{fileFormatMapping:r}=this,o=[];for(const{file:s,file_format:a}of i)a in r&&o.push({format:r[a],url:s});return o}toSourceReferences(i){const r=[];for(const{label:o,link:s,description:a}of i)r.push({label:o,link:s,title:a});return r}constructCellSummaries(i){const r=[];return i.forEach(o=>{const s=o.summary.map(c=>({id:c.cell_id,label:c.cell_label})),a=o.summary.map(c=>({id:c.gene_id,label:c.gene_label})),l=o.summary.map(c=>({cell:c.cell_id,biomarker:c.gene_id,count:c.count,percentage:c.percentage,meanExpression:c.mean_expression,dataset_count:c.dataset_count}));r.push({label:`${PQ(o.biomarker_type)} Biomarkers`,cells:s,biomarkers:a,summaries:l}),r.push({label:"Protein Biomarkers",cells:[],biomarkers:[],summaries:[]}),r.push({label:"Lipid Biomarkers",cells:[],biomarkers:[],summaries:[]})}),r}constructTissueLibrary(i){const r={};for(const{"@id":o,label:s,organ_id:a,organ_label:l}of i){const c=q0+a;r[c]??={id:c,label:l.toLowerCase(),parent:q0,children:[]},r[o]={id:o,label:s.toLowerCase(),parent:c,children:[],link:FQ},r[c]?.children.push(o)}return{root:q0,nodes:r}}}return(t=n).\u0275fac=function(){let e;return function(r){return(e||(e=we(t)))(r||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),n})(),LQ=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:[{provide:G0,useExisting:MQ},{provide:Es,useExisting:NQ},{provide:IR,useValue:{illustrations:"assets/TEMP/2d-ftu-illustrations.jsonld",summaries:"assets/TEMP/ftu-cell-summaries.jsonld",datasets:"assets/TEMP/ftu-datasets.jsonld"}}]}),n})();class Um extends(ed("[Contact] Send Message")){constructor(n){super(),this.message=n}}let BQ=(()=>{var t;let n=((t=class{constructor(){this.contact=R(G0)}sendMessage(i,{message:r}){return this.contact.sendMessage(r)}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(Um),y("design:type",Function),y("design:paramtypes",[Object,Um]),y("design:returntype",Object)],n.prototype,"sendMessage",null),n=U([xi({name:"contact"})],n),n})();class $m extends(ed("[Screenmode] Set Screenmode")){constructor(n){super(),this.isFullScreen=n}}class RR extends(ed("[Screenmode] Set Size")){constructor(n){super(),this.size=n}}let Y0=(()=>{var t;let n=((t=class{set({setState:i},{isFullScreen:r}){i(ol(o=>{o.isFullScreen=r}))}SetSize({setState:i},{size:r}){i(ol(o=>{o.size=r}))}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He($m),y("design:type",Function),y("design:paramtypes",[Object,$m]),y("design:returntype",void 0)],n.prototype,"set",null),U([He(RR),y("design:type",Function),y("design:paramtypes",[Object,RR]),y("design:returntype",void 0)],n.prototype,"SetSize",null),n=U([xi({name:"screenmode",defaults:{isFullScreen:!1,size:"large"}})],n),n})();const Z0=new k("ngx-google-analytics-settings",{factory:()=>({trackingCode:"",enableTracing:!1})}),FR=new k("ngx-window",{providedIn:"root",factory:()=>{const{defaultView:t}=R(ge);if(!t)throw new Error("Window is not available");return t}}),jQ=new k("ngx-data-layer",{providedIn:"root",factory:()=>function VQ(t){return t?t.dataLayer=t.dataLayer||[]:null}(R(FR))}),PR=new k("ngx-gtag-fn",{providedIn:"root",factory:()=>function HQ(t,n){return t?t.gtag=t.gtag||function(){n.push(arguments)}:null}(R(FR),R(jQ))});let NR=(()=>{class t{constructor(e,i,r){this.settings=e,this._document=i,this._gtag=r}get document(){return this._document}throw(e){this.settings.enableTracing&&console&&console.error&&console.error(e)}toKeyValue(e){return e.size>0?Array.from(e).reduce((i,[r,o])=>Object.defineProperty(i,r,{value:o,enumerable:!0}),{}):void 0}gtag(...e){try{this._gtag(...e.filter(i=>void 0!==i))}catch(i){this.throw(i)}}event(e,i,r,o,s,a){try{const l=new Map;i&&l.set("event_category",i),r&&l.set("event_label",r),o&&l.set("value",o),void 0!==s&&l.set("interaction",s),a&&Object.entries(a).map(([d,u])=>l.set(d,u));const c=this.toKeyValue(l);c?this.gtag("event",e,c):this.gtag("event",e)}catch(l){this.throw(l)}}pageView(e,i,r,o){try{const s=new Map([["page_path",e]]);i&&s.set("page_title",i),(r||this.document)&&s.set("page_location",r||this.document.location.href),o&&Object.entries(o).map(([a,l])=>s.set(a,l)),this.gtag("config",this.settings.trackingCode,this.toKeyValue(s))}catch(s){this.throw(s)}}appView(e,i,r,o,s){try{const a=new Map([["screen_name",e],["app_name",i]]);r&&a.set("app_id",r),o&&a.set("app_version",o),s&&a.set("app_installer_id",s),this.gtag("event","screen_view",this.toKeyValue(a))}catch(a){this.throw(a)}}set(...e){try{this._gtag("set",...e)}catch(i){this.throw(i)}}exception(e,i){try{const r=new Map;e&&r.set("description",e),i&&r.set("fatal",i),this.toKeyValue(r)?this.gtag("event","exception",this.toKeyValue(r)):this.gtag("event","exception")}catch(r){this.throw(r)}}}return t.\u0275fac=function(e){return new(e||t)(_(Z0),_(ge),_(PR))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const zQ={provide:Sa,multi:!0,useFactory:function UQ(t,n,e){return Ci(function*(){if(!t.trackingCode)return void console.error("Empty tracking code for Google Analytics. Make sure to provide one when initializing NgxGoogleAnalyticsModule.");if(!n)return void console.error("Was not possible create or read gtag() fn. Make sure this module is running on a Browser w/ access to Window interface.");e||console.error("Was not possible to access Document interface. Make sure this module is running on a Browser w/ access do Document interface."),t.uri=t.uri||`https://www.googletagmanager.com/gtag/js?id=${t.trackingCode}`,t.initCommands=t?.initCommands??[],t.initCommands.find(o=>"config"===o.command)||t.initCommands.unshift({command:"config",values:[t.trackingCode]}),t.initCommands.find(o=>"js"===o.command)||t.initCommands.unshift({command:"js",values:[new Date]});for(const o of t.initCommands)n(o.command,...o.values);const i=e.createElement("script");i.async=!0,i.src=t.uri,t.nonce&&i.setAttribute("nonce",t.nonce),e.getElementsByTagName("head")[0].appendChild(i)})},deps:[Z0,PR,ge]};new k("ngx-google-analytics-routing-settings",{factory:()=>({})});let BR=(()=>{class t{static forRoot(e,i=[],r,o,s){return{ngModule:t,providers:[{provide:Z0,useValue:{trackingCode:e,initCommands:i,uri:r,enableTracing:o,nonce:s}},zQ]}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})();const WQ=[Um,Vm,Qa,Lm,Fm,Pm,$m],qQ=["bigint","boolean","number","string"];function VR(t){return null==t||qQ.includes(typeof t)}const YQ=new k("Loggable actions",{providedIn:"root",factory:()=>WQ});let jR=(()=>{var t;class n{constructor(){this.ga=R(NR),this.loggableTypes=new Set(R(YQ).map(So))}handle(i,r,o){return this.logAction(r),o(i,r)}logAction(i){const r=So(i);if(r&&this.loggableTypes.has(r)){const o=JSON.stringify(i,this.serialize);this.ga.event(r,"action_log",o)}}serialize(i,r){return""===i&&"object"==typeof r?{...r,type:void 0}:VR(r)||Array.isArray(r)&&r.every(VR)?r:void 0}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),n})(),ZQ=(()=>{var t;class n{static forRoot(i){const r=_D(BR.forRoot(i.googleAnalyticsToken));return{ngModule:n,providers:[r]}}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:[{provide:xv,useExisting:jR,multi:!0}],imports:[sn.forFeature([$0,Rm,BQ,U0,bl,Y0,B0,yR]),BR]}),n})();function dn(t,n){(function KQ(t){return"string"==typeof t&&-1!==t.indexOf(".")&&1===parseFloat(t)})(t)&&(t="100%");var e=function XQ(t){return"string"==typeof t&&-1!==t.indexOf("%")}(t);return t=360===n?t:Math.min(n,Math.max(0,parseFloat(t))),e&&(t=parseInt(String(t*n),10)/100),Math.abs(t-n)<1e-6?1:t=360===n?(t<0?t%n+n:t%n)/parseFloat(String(n)):t%n/parseFloat(String(n))}function Gm(t){return Math.min(1,Math.max(0,t))}function HR(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function Wm(t){return t<=1?"".concat(100*Number(t),"%"):t}function ks(t){return 1===t.length?"0"+t:String(t)}function zR(t,n,e){t=dn(t,255),n=dn(n,255),e=dn(e,255);var i=Math.max(t,n,e),r=Math.min(t,n,e),o=0,s=0,a=(i+r)/2;if(i===r)s=0,o=0;else{var l=i-r;switch(s=a>.5?l/(2-i-r):l/(i+r),i){case t:o=(n-e)/l+(n1&&(e-=1),e<1/6?t+6*e*(n-t):e<.5?n:e<2/3?t+(n-t)*(2/3-e)*6:t}function UR(t,n,e){t=dn(t,255),n=dn(n,255),e=dn(e,255);var i=Math.max(t,n,e),r=Math.min(t,n,e),o=0,s=i,a=i-r,l=0===i?0:a/i;if(i===r)o=0;else{switch(i){case t:o=(n-e)/a+(n>16,g:(65280&t)>>8,b:255&t}}(n)),this.originalInput=n;var r=function iJ(t){var n={r:0,g:0,b:0},e=1,i=null,r=null,o=null,s=!1,a=!1;return"string"==typeof t&&(t=function sJ(t){if(0===(t=t.trim().toLowerCase()).length)return!1;var n=!1;if(X0[t])t=X0[t],n=!0;else if("transparent"===t)return{r:0,g:0,b:0,a:0,format:"name"};var e=Hi.rgb.exec(t);return e?{r:e[1],g:e[2],b:e[3]}:(e=Hi.rgba.exec(t))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=Hi.hsl.exec(t))?{h:e[1],s:e[2],l:e[3]}:(e=Hi.hsla.exec(t))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=Hi.hsv.exec(t))?{h:e[1],s:e[2],v:e[3]}:(e=Hi.hsva.exec(t))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=Hi.hex8.exec(t))?{r:li(e[1]),g:li(e[2]),b:li(e[3]),a:WR(e[4]),format:n?"name":"hex8"}:(e=Hi.hex6.exec(t))?{r:li(e[1]),g:li(e[2]),b:li(e[3]),format:n?"name":"hex"}:(e=Hi.hex4.exec(t))?{r:li(e[1]+e[1]),g:li(e[2]+e[2]),b:li(e[3]+e[3]),a:WR(e[4]+e[4]),format:n?"name":"hex8"}:!!(e=Hi.hex3.exec(t))&&{r:li(e[1]+e[1]),g:li(e[2]+e[2]),b:li(e[3]+e[3]),format:n?"name":"hex"}}(t)),"object"==typeof t&&(eo(t.r)&&eo(t.g)&&eo(t.b)?(n=function QQ(t,n,e){return{r:255*dn(t,255),g:255*dn(n,255),b:255*dn(e,255)}}(t.r,t.g,t.b),s=!0,a="%"===String(t.r).substr(-1)?"prgb":"rgb"):eo(t.h)&&eo(t.s)&&eo(t.v)?(i=Wm(t.s),r=Wm(t.v),n=function eJ(t,n,e){t=6*dn(t,360),n=dn(n,100),e=dn(e,100);var i=Math.floor(t),r=t-i,o=e*(1-n),s=e*(1-r*n),a=e*(1-(1-r)*n),l=i%6;return{r:255*[e,s,o,o,a,e][l],g:255*[a,e,e,s,o,o][l],b:255*[o,o,a,e,e,s][l]}}(t.h,i,r),s=!0,a="hsv"):eo(t.h)&&eo(t.s)&&eo(t.l)&&(i=Wm(t.s),o=Wm(t.l),n=function JQ(t,n,e){var i,r,o;if(t=dn(t,360),n=dn(n,100),e=dn(e,100),0===n)r=e,o=e,i=e;else{var s=e<.5?e*(1+n):e+n-e*n,a=2*e-s;i=K0(a,s,t+1/3),r=K0(a,s,t),o=K0(a,s,t-1/3)}return{r:255*i,g:255*r,b:255*o}}(t.h,i,o),s=!0,a="hsl"),Object.prototype.hasOwnProperty.call(t,"a")&&(e=t.a)),e=HR(e),{ok:s,format:t.format||a,r:Math.min(255,Math.max(n.r,0)),g:Math.min(255,Math.max(n.g,0)),b:Math.min(255,Math.max(n.b,0)),a:e}}(n);this.originalInput=n,this.r=r.r,this.g=r.g,this.b=r.b,this.a=r.a,this.roundA=Math.round(100*this.a)/100,this.format=null!==(i=e.format)&&void 0!==i?i:r.format,this.gradientType=e.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=r.ok}return t.prototype.isDark=function(){return this.getBrightness()<128},t.prototype.isLight=function(){return!this.isDark()},t.prototype.getBrightness=function(){var n=this.toRgb();return(299*n.r+587*n.g+114*n.b)/1e3},t.prototype.getLuminance=function(){var n=this.toRgb(),o=n.r/255,s=n.g/255,a=n.b/255;return.2126*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))+.7152*(s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4))+.0722*(a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4))},t.prototype.getAlpha=function(){return this.a},t.prototype.setAlpha=function(n){return this.a=HR(n),this.roundA=Math.round(100*this.a)/100,this},t.prototype.isMonochrome=function(){return 0===this.toHsl().s},t.prototype.toHsv=function(){var n=UR(this.r,this.g,this.b);return{h:360*n.h,s:n.s,v:n.v,a:this.a}},t.prototype.toHsvString=function(){var n=UR(this.r,this.g,this.b),e=Math.round(360*n.h),i=Math.round(100*n.s),r=Math.round(100*n.v);return 1===this.a?"hsv(".concat(e,", ").concat(i,"%, ").concat(r,"%)"):"hsva(".concat(e,", ").concat(i,"%, ").concat(r,"%, ").concat(this.roundA,")")},t.prototype.toHsl=function(){var n=zR(this.r,this.g,this.b);return{h:360*n.h,s:n.s,l:n.l,a:this.a}},t.prototype.toHslString=function(){var n=zR(this.r,this.g,this.b),e=Math.round(360*n.h),i=Math.round(100*n.s),r=Math.round(100*n.l);return 1===this.a?"hsl(".concat(e,", ").concat(i,"%, ").concat(r,"%)"):"hsla(".concat(e,", ").concat(i,"%, ").concat(r,"%, ").concat(this.roundA,")")},t.prototype.toHex=function(n){return void 0===n&&(n=!1),$R(this.r,this.g,this.b,n)},t.prototype.toHexString=function(n){return void 0===n&&(n=!1),"#"+this.toHex(n)},t.prototype.toHex8=function(n){return void 0===n&&(n=!1),function tJ(t,n,e,i,r){var o=[ks(Math.round(t).toString(16)),ks(Math.round(n).toString(16)),ks(Math.round(e).toString(16)),ks(GR(i))];return r&&o[0].startsWith(o[0].charAt(1))&&o[1].startsWith(o[1].charAt(1))&&o[2].startsWith(o[2].charAt(1))&&o[3].startsWith(o[3].charAt(1))?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0):o.join("")}(this.r,this.g,this.b,this.a,n)},t.prototype.toHex8String=function(n){return void 0===n&&(n=!1),"#"+this.toHex8(n)},t.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},t.prototype.toRgbString=function(){var n=Math.round(this.r),e=Math.round(this.g),i=Math.round(this.b);return 1===this.a?"rgb(".concat(n,", ").concat(e,", ").concat(i,")"):"rgba(".concat(n,", ").concat(e,", ").concat(i,", ").concat(this.roundA,")")},t.prototype.toPercentageRgb=function(){var n=function(e){return"".concat(Math.round(100*dn(e,255)),"%")};return{r:n(this.r),g:n(this.g),b:n(this.b),a:this.a}},t.prototype.toPercentageRgbString=function(){var n=function(e){return Math.round(100*dn(e,255))};return 1===this.a?"rgb(".concat(n(this.r),"%, ").concat(n(this.g),"%, ").concat(n(this.b),"%)"):"rgba(".concat(n(this.r),"%, ").concat(n(this.g),"%, ").concat(n(this.b),"%, ").concat(this.roundA,")")},t.prototype.toName=function(){if(0===this.a)return"transparent";if(this.a<1)return!1;for(var n="#"+$R(this.r,this.g,this.b,!1),e=0,i=Object.entries(X0);e=0&&(n.startsWith("hex")||"name"===n)?"name"===n&&0===this.a?this.toName():this.toRgbString():("rgb"===n&&(i=this.toRgbString()),"prgb"===n&&(i=this.toPercentageRgbString()),("hex"===n||"hex6"===n)&&(i=this.toHexString()),"hex3"===n&&(i=this.toHexString(!0)),"hex4"===n&&(i=this.toHex8String(!0)),"hex8"===n&&(i=this.toHex8String()),"name"===n&&(i=this.toName()),"hsl"===n&&(i=this.toHslString()),"hsv"===n&&(i=this.toHsvString()),i||this.toHexString())},t.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},t.prototype.clone=function(){return new t(this.toString())},t.prototype.lighten=function(n){void 0===n&&(n=10);var e=this.toHsl();return e.l+=n/100,e.l=Gm(e.l),new t(e)},t.prototype.brighten=function(n){void 0===n&&(n=10);var e=this.toRgb();return e.r=Math.max(0,Math.min(255,e.r-Math.round(-n/100*255))),e.g=Math.max(0,Math.min(255,e.g-Math.round(-n/100*255))),e.b=Math.max(0,Math.min(255,e.b-Math.round(-n/100*255))),new t(e)},t.prototype.darken=function(n){void 0===n&&(n=10);var e=this.toHsl();return e.l-=n/100,e.l=Gm(e.l),new t(e)},t.prototype.tint=function(n){return void 0===n&&(n=10),this.mix("white",n)},t.prototype.shade=function(n){return void 0===n&&(n=10),this.mix("black",n)},t.prototype.desaturate=function(n){void 0===n&&(n=10);var e=this.toHsl();return e.s-=n/100,e.s=Gm(e.s),new t(e)},t.prototype.saturate=function(n){void 0===n&&(n=10);var e=this.toHsl();return e.s+=n/100,e.s=Gm(e.s),new t(e)},t.prototype.greyscale=function(){return this.desaturate(100)},t.prototype.spin=function(n){var e=this.toHsl(),i=(e.h+n)%360;return e.h=i<0?360+i:i,new t(e)},t.prototype.mix=function(n,e){void 0===e&&(e=50);var i=this.toRgb(),r=new t(n).toRgb(),o=e/100;return new t({r:(r.r-i.r)*o+i.r,g:(r.g-i.g)*o+i.g,b:(r.b-i.b)*o+i.b,a:(r.a-i.a)*o+i.a})},t.prototype.analogous=function(n,e){void 0===n&&(n=6),void 0===e&&(e=30);var i=this.toHsl(),r=360/e,o=[this];for(i.h=(i.h-(r*n>>1)+720)%360;--n;)i.h=(i.h+r)%360,o.push(new t(i));return o},t.prototype.complement=function(){var n=this.toHsl();return n.h=(n.h+180)%360,new t(n)},t.prototype.monochromatic=function(n){void 0===n&&(n=6);for(var e=this.toHsv(),i=e.h,r=e.s,o=e.v,s=[],a=1/n;n--;)s.push(new t({h:i,s:r,v:o})),o=(o+a)%1;return s},t.prototype.splitcomplement=function(){var n=this.toHsl(),e=n.h;return[this,new t({h:(e+72)%360,s:n.s,l:n.l}),new t({h:(e+216)%360,s:n.s,l:n.l})]},t.prototype.onBackground=function(n){var e=this.toRgb(),i=new t(n).toRgb();return new t({r:i.r+(e.r-i.r)*e.a,g:i.g+(e.g-i.g)*e.a,b:i.b+(e.b-i.b)*e.a})},t.prototype.triad=function(){return this.polyad(3)},t.prototype.tetrad=function(){return this.polyad(4)},t.prototype.polyad=function(n){for(var e=this.toHsl(),i=e.h,r=[this],o=360/n,s=1;s(function(t){t.Primary="--palette-primary-",t.Accent="--palette-accent-",t.Warn="--palette-warn-"}(Ei||(Ei={})),Ei))(),qm=(()=>(function(t){t.Primary50="--palette-primary-50",t.Primary100="--palette-primary-100",t.Primary200="--palette-primary-200",t.Primary300="--palette-primary-300",t.Primary400="--palette-primary-400",t.Primary500="--palette-primary-500",t.Primary600="--palette-primary-600",t.Primary700="--palette-primary-700",t.Primary800="--palette-primary-800",t.Primary900="--palette-primary-900",t.PrimaryA100="--palette-primary-A100",t.PrimaryA200="--palette-primary-A200",t.PrimaryA400="--palette-primary-A400",t.PrimaryA700="--palette-primary-A700",t.PrimaryContrast50="--palette-primary-contrast-50",t.PrimaryContrast100="--palette-primary-contrast-100",t.PrimaryContrast200="--palette-primary-contrast-200",t.PrimaryContrast300="--palette-primary-contrast-300",t.PrimaryContrast400="--palette-primary-contrast-400",t.PrimaryContrast500="--palette-primary-contrast-500",t.PrimaryContrast600="--palette-primary-contrast-600",t.PrimaryContrast700="--palette-primary-contrast-700",t.PrimaryContrast800="--palette-primary-contrast-800",t.PrimaryContrast900="--palette-primary-contrast-900",t.PrimaryContrastA100="--palette-primary-contrast-A100",t.PrimaryContrastA200="--palette-primary-contrast-A200",t.PrimaryContrastA400="--palette-primary-contrast-A400",t.PrimaryContrastA700="--palette-primary-contrast-A700",t.Accent50="--palette-accent-50",t.Accent100="--palette-accent-100",t.Accent200="--palette-accent-200",t.Accent300="--palette-accent-300",t.Accent400="--palette-accent-400",t.Accent500="--palette-accent-500",t.Accent600="--palette-accent-600",t.Accent700="--palette-accent-700",t.Accent800="--palette-accent-800",t.Accent900="--palette-accent-900",t.AccentA100="--palette-accent-A100",t.AccentA200="--palette-accent-A200",t.AccentA400="--palette-accent-A400",t.AccentA700="--palette-accent-A700",t.DarkAccentText="--dark-accent-text",t.LightAccentText="--light-accent-text",t.Warn50="--palette-warn-50",t.Warn100="--palette-warn-100",t.Warn200="--palette-warn-200",t.Warn300="--palette-warn-300",t.Warn400="--palette-warn-400",t.Warn500="--palette-warn-500",t.Warn600="--palette-warn-600",t.Warn700="--palette-warn-700",t.Warn800="--palette-warn-800",t.Warn900="--palette-warn-900",t.WarnA100="--palette-warn-A100",t.WarnA200="--palette-warn-A200",t.WarnA400="--palette-warn-A400",t.WarnA700="--palette-warn-A700",t.DarkWarnText="--dark-warn-text",t.LightWarnText="--light-warn-text",t.BackgroundStatusBar="--palette-background-status-bar",t.BackgroundAppBar="--palette-background-app-bar",t.BackgroundBackground="--palette-background-background",t.BackgroundHover="--palette-background-hover",t.BackgroundHoverAlpha="--palette-background-hover-alpha",t.BackgroundCard="--palette-background-card",t.BackgroundDialog="--palette-background-dialog",t.BackgroundDisabledButton="--palette-background-disabled-button",t.BackgroundDisabledButtonAlpha="--palette-background-disabled-button-alpha",t.BackgroundRaisedButton="--palette-background-raised-button",t.BackgroundFocusedButton="--palette-background-focused-button",t.BackgroundFocusedButtonAlpha="--palette-background-focused-button-alpha",t.BackgroundSelectedButton="--palette-background-selected-button",t.BackgroundSelectedDisabledButton="--palette-background-selected-disabled-button",t.BackgroundDisabledButtonToggle="--palette-background-disabled-button-toggle",t.BackgroundUnselectedChip="--palette-background-unselected-chip",t.BackgroundDisabledListOption="--palette-background-disabled-list-option",t.ForegroundBase="--palette-foreground-base",t.ForegroundDivider="--palette-foreground-divider",t.ForegroundDividerAlpha="--palette-foreground-divider-alpha",t.ForegroundDividers="--palette-foreground-dividers",t.ForegroundDividersAlpha="--palette-foreground-dividers-alpha",t.ForegroundDisabled="--palette-foreground-disabled",t.ForegroundDisabledAlpha="--palette-foreground-disabled-alpha",t.ForegroundDisabledButton="--palette-foreground-disabled-button",t.ForegroundDisabledButtonAlpha="--palette-foreground-disabled-button-alpha",t.ForegroundDisabledText="--palette-foreground-disabled-text",t.ForegroundDisabledTextAlpha="--palette-foreground-disabled-text-alpha",t.ForegroundElevation="--palette-foreground-elevation",t.ForegroundHintText="--palette-foreground-hint-text",t.ForegroundHintTextAlpha="--palette-foreground-hint-text-alpha",t.ForegroundSecondaryText="--palette-foreground-secondary-text",t.ForegroundSecondaryTextAlpha="--palette-foreground-secondary-text-alpha",t.ForegroundIcon="--palette-foreground-icon",t.ForegroundIconAlpha="--palette-foreground-icon-alpha",t.ForegroundIcons="--palette-foreground-icons",t.ForegroundIconsAlpha="--palette-foreground-icons-alpha",t.ForegroundText="--palette-foreground-text",t.ForegroundTextAlpha="--palette-foreground-text-alpha",t.ForegroundSliderMin="--palette-foreground-slider-min",t.ForegroundSliderMinAlpha="--palette-foreground-slider-min-alpha",t.ForegroundSliderOff="--palette-foreground-slider-off",t.ForegroundSliderOffAlpha="--palette-foreground-slider-off-alpha",t.ForegroundSliderOffActive="--palette-foreground-slider-off-active",t.ForegroundSliderOffActiveAlpha="--palette-foreground-slider-off-active-alpha",t.BackgroundStatusBarDark="--palette-background-status-bar-dark",t.BackgroundAppBarDark="--palette-background-app-bar-dark",t.BackgroundBackgroundDark="--palette-background-background-dark",t.BackgroundHoverDark="--palette-background-hover-dark",t.BackgroundHoverDarkAlpha="--palette-background-hover-dark-alpha",t.BackgroundCardDark="--palette-background-card-dark",t.BackgroundDialogDark="--palette-background-dialog-dark",t.BackgroundDisabledButtonDark="--palette-background-disabled-button-dark",t.BackgroundDisabledButtonDarkAlpha="--palette-background-disabled-button-dark-alpha",t.BackgroundRaisedButtonDark="--palette-background-raised-button-dark",t.BackgroundFocusedButtonDark="--palette-background-focused-button-dark",t.BackgroundFocusedButtonDarkAlpha="--palette-background-focused-button-dark-alpha",t.BackgroundSelectedButtonDark="--palette-background-selected-button-dark",t.BackgroundSelectedDisabledButtonDark="--palette-background-selected-disabled-button-dark",t.BackgroundDisabledButtonToggleDark="--palette-background-disabled-button-toggle-dark",t.BackgroundUnselectedChipDark="--palette-background-unselected-chip-dark",t.BackgroundDisabledListOptionDark="--palette-background-disabled-list-option-dark",t.ForegroundBaseDark="--palette-foreground-base-dark",t.ForegroundDividerDark="--palette-foreground-divider-dark",t.ForegroundDividerDarkAlpha="--palette-foreground-divider-dark-alpha",t.ForegroundDividersDark="--palette-foreground-dividers-dark",t.ForegroundDividersDarkAlpha="--palette-foreground-dividers-dark-alpha",t.ForegroundDisabledDark="--palette-foreground-disabled-dark",t.ForegroundDisabledDarkAlpha="--palette-foreground-disabled-dark-alpha",t.ForegroundDisabledButtonDark="--palette-foreground-disabled-button-dark",t.ForegroundDisabledButtonDarkAlpha="--palette-foreground-disabled-button-dark-alpha",t.ForegroundDisabledTextDark="--palette-foreground-disabled-text-dark",t.ForegroundDisabledTextDarkAlpha="--palette-foreground-disabled-text-dark-alpha",t.ForegroundElevationDark="--palette-foreground-elevation-dark",t.ForegroundHintTextDark="--palette-foreground-hint-text-dark",t.ForegroundHintTextDarkAlpha="--palette-foreground-hint-text-dark-alpha",t.ForegroundSecondaryTextDark="--palette-foreground-secondary-text-dark",t.ForegroundSecondaryTextAlphaDark="--palette-foreground-secondary-text-alpha-dark",t.ForegroundIconDark="--palette-foreground-icon-dark",t.ForegroundIconDarkAlpha="--palette-foreground-icon-dark-alpha",t.ForegroundIconsDark="--palette-foreground-icons-dark",t.ForegroundIconsDarkAlpha="--palette-foreground-icons-dark-alpha",t.ForegroundTextDark="--palette-foreground-text-dark",t.ForegroundTextDarkAlpha="--palette-foreground-text-dark-alpha",t.ForegroundSliderMinDark="--palette-foreground-slider-min-dark",t.ForegroundSliderMinDarkAlpha="--palette-foreground-slider-min-dark-alpha",t.ForegroundSliderOffDark="--palette-foreground-slider-off-dark",t.ForegroundSliderOffDarkAlpha="--palette-foreground-slider-off-dark-alpha",t.ForegroundSliderOffActiveDark="--palette-foreground-slider-off-active-dark",t.ForegroundSliderOffActiveDarkAlpha="--palette-foreground-slider-off-active-dark-alpha"}(qm||(qm={})),qm))();const aJ={isAutoContrast:!0,isAlternativeColorAlgorithm:!1,darkThemeClass:"isDarkTheme",lightThemeClass:"isLightTheme",colorMap:[{name:"50",map:[52,0,0]},{name:"100",map:[37,0,0]},{name:"200",map:[26,0,0]},{name:"300",map:[12,0,0]},{name:"400",map:[6,0,0]},{name:"500",map:[0,0,0]},{name:"600",map:[0,6,0]},{name:"700",map:[0,12,0]},{name:"800",map:[0,18,0]},{name:"900",map:[0,24,0]},{name:"A100",map:[50,0,30]},{name:"A200",map:[30,0,30]},{name:"A400",map:[10,0,15]},{name:"A700",map:[5,0,5]}],sortedHues:["50","100","200","300","400","500","600","700","800","900"]},qR=new k("Mat Css Config");let lJ=(()=>{class t{constructor(e,i,r){this.document=i,this.contrastColorThresholdPrimary="400",this.contrastColorThresholdAccent="400",this.contrastColorThresholdWarn="400",this.isAutoContrast=!1,this.renderer=e.createRenderer(null,null),this.ROOT=this.document.documentElement,this.cfg={...aJ,...r},this.isAutoContrast=this.cfg.isAutoContrast,this.cfg.isDarkTheme&&this.setDarkTheme(this.cfg.isDarkTheme),this.cfg.primary&&this.setPrimaryColor(this.cfg.primary),this.cfg.accent&&this.setAccentColor(this.cfg.accent),this.cfg.warn&&this.setWarnColor(this.cfg.warn)}setPrimaryColor(e){this.primary=e;const i=Ei.Primary,r=this._computePaletteColors(i,this.primary);this._setStyle(r),this.isAutoContrast&&this._recalculateAndSetContrastColor(i)}setAccentColor(e){this.accent=e;const i=Ei.Accent,r=this._computePaletteColors(i,this.accent);this._setStyle(r),this.isAutoContrast&&this._recalculateAndSetContrastColor(i)}setWarnColor(e){this.warn=e;const i=Ei.Warn,r=this._computePaletteColors(i,this.warn);this._setStyle(r),this.isAutoContrast&&this._recalculateAndSetContrastColor(i)}setVariable(e,i){this._setStyle([{name:e,val:i}])}setDarkTheme(e){e?(this.document.body.classList.remove(this.cfg.lightThemeClass),this.document.body.classList.add(this.cfg.darkThemeClass)):(this.document.body.classList.remove(this.cfg.darkThemeClass),this.document.body.classList.add(this.cfg.lightThemeClass)),this.isDarkTheme=e}setAutoContrastEnabled(e){this.isAutoContrast=e,e?(this._recalculateAndSetContrastColor(Ei.Primary),this._recalculateAndSetContrastColor(Ei.Accent),this._recalculateAndSetContrastColor(Ei.Warn)):(this.setContrastColorThresholdPrimary(this.contrastColorThresholdPrimary),this.setContrastColorThresholdAccent(this.contrastColorThresholdAccent),this.setContrastColorThresholdWarn(this.contrastColorThresholdWarn))}setContrastColorThresholdPrimary(e){this.contrastColorThresholdPrimary=e,this.setContrastColorThreshold(e,Ei.Primary)}setContrastColorThresholdAccent(e){this.contrastColorThresholdAccent=e,this.setContrastColorThreshold(e,Ei.Accent)}setContrastColorThresholdWarn(e){this.contrastColorThresholdWarn=e,this.setContrastColorThreshold(e,Ei.Warn)}setContrastColorThreshold(e,i){let r=t.DARK_TEXT_VAR;const o=this.cfg.sortedHues.map(s=>(s===e&&(r=t.LIGHT_TEXT_VAR),{val:this._getCssVarValue(r),name:`${i+t.CONTRAST_PREFIX}${s}`}));this._setStyle(o)}setAlternativeColorAlgorithm(e){this.cfg.isAlternativeColorAlgorithm=e,this.setPrimaryColor(this.primary),this.setAccentColor(this.accent),this.setWarnColor(this.warn)}changeContrastColorThresholdPrimary(e){this.setContrastColorThresholdPrimary(e)}changeContrastColorThresholdAccent(e){this.setContrastColorThresholdAccent(e)}changeContrastColorThresholdWarn(e){this.setContrastColorThresholdWarn(e)}changeContrastColorThreshold(e,i){this.setContrastColorThreshold(e,i)}getPaletteForColor(e){return this.cfg.isAlternativeColorAlgorithm?this.getTraditionalPaletteForColor(e):this.getConstantinPaletteForColor(e)}getTraditionalPaletteForColor(e){return this.cfg.colorMap.map(i=>{const r=new vr(e).lighten(i.map[0]).darken(i.map[1]).saturate(i.map[2]),o=new vr(r);return{hue:i.name,isLight:o.isLight(),color:{...o.toRgb(),str:`rgb(${o.toRgb().r},${o.toRgb().g},${o.toRgb().b})`}}})}getConstantinPaletteForColor(e){return this.cfg.colorMap.map(i=>{const r=this.computePalletTriad(e,i.name);return{hue:i.name,isLight:r.isLight,color:{...r.rgb,str:`rgb(${r.rgb.r},${r.rgb.g},${r.rgb.b})`}}})}getPaletteWithContrastForColor(e){const i=this._getCssVarValue(t.LIGHT_TEXT_VAR),r=this._getCssVarValue(t.DARK_TEXT_VAR);return this.getPaletteForColor(e).map(s=>{const l=(s.isLight?i:r).split(",").map(d=>+d),c={r:l[0],g:l[1],b:l[2],a:1};return{...s,contrast:{...c,str:`${c.r},${c.g},${c.b}`}}})}_computePaletteColors(e,i){return this.getPaletteForColor(i).map(r=>{const o=r.color;return{name:`${e}${r.hue}`,val:`${o.r}, ${o.g}, ${o.b}`}})}_recalculateAndSetContrastColor(e){const i=this._calculateContrastColorsForCurrentValues(e).map(({contrastColorVar:r,hue:o})=>({val:this._getCssVarValue(r),name:`${e+t.CONTRAST_PREFIX}${o}`}));this._setStyle(i)}_calculateContrastColorsForCurrentValues(e){return this.cfg.sortedHues.map(i=>{const r=this._getCssVarValue(`${e}${i}`);return{contrastColorVar:new vr(`rgb(${r})`).isDark()?t.LIGHT_TEXT_VAR:t.DARK_TEXT_VAR,hue:i}})}_setStyle(e){e.forEach(i=>{this.renderer.setStyle(this.ROOT,i.name,i.val,Sn.DashCase)})}_getCssVarValue(e){return getComputedStyle(this.ROOT).getPropertyValue(e)}computePalletTriad(e,i){const r=new vr("#ffffff"),o=this.multiply(new vr(e).toRgb(),new vr(e).toRgb()),s=new vr(e).tetrad();let a;switch(i){case"50":a=this.getColorObject(r.mix(e,12));break;case"100":a=this.getColorObject(r.mix(e,30));break;case"200":a=this.getColorObject(r.mix(e,50));break;case"300":a=this.getColorObject(r.mix(e,70));break;case"400":a=this.getColorObject(r.mix(e,85));break;case"500":a=this.getColorObject(r.mix(e,100));break;case"600":a=this.getColorObject(o.mix(e,87));break;case"700":a=this.getColorObject(o.mix(e,70));break;case"800":a=this.getColorObject(o.mix(e,54));break;case"900":a=this.getColorObject(o.mix(e,25));break;case"A100":a=this.getColorObject(o.mix(s[4],15).saturate(80).lighten(65));break;case"A200":a=this.getColorObject(o.mix(s[4],15).saturate(80).lighten(55));break;case"A400":a=this.getColorObject(o.mix(s[4],15).saturate(100).lighten(45));break;case"A700":a=this.getColorObject(o.mix(s[4],15).saturate(100).lighten(40))}return a}multiply(e,i){return e.b=Math.floor(e.b*i.b/255),e.g=Math.floor(e.g*i.g/255),e.r=Math.floor(e.r*i.r/255),new vr("rgb\xa0"+e.r+"\xa0"+e.g+"\xa0"+e.b)}getColorObject(e){const i=new vr(e);return{rgb:i.toRgb(),isLight:i.isLight()}}}return t.CONTRAST_PREFIX="contrast-",t.DARK_TEXT_VAR="--dark-primary-text",t.LIGHT_TEXT_VAR="--light-primary-text",t.\u0275fac=function(e){return new(e||t)(_(ho),_(ge),_(qR))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),cJ=(()=>{class t{static forRoot(e){return{ngModule:t,providers:[{provide:qR,useValue:e}]}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Re]}),t})(),YR=(()=>{class n{constructor(i){this.url=i,this.type=n.type}}return n.type="[Theming] Load Theming File",n})();const dJ=V.record(V.nativeEnum(qm),V.string());let uJ=(()=>{var t;let n=((t=class{constructor(){this.http=R(vi),this.materialVars=R(lJ)}load(i,{url:r}){return this.http.get(r,{responseType:"text"}).pipe(B(o=>zf(o,{filename:r})),B(o=>dJ.parse(o)),Ze(o=>i.setState(o)),Ze(o=>this.setVariables(o)))}setVariables(i){for(const[r,o]of Object.entries(i))this.materialVars.setVariable(r,o)}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return U([He(YR),y("design:type",Function),y("design:paramtypes",[Object,YR]),y("design:returntype",xe)],n.prototype,"load",null),n=U([xi({name:"theming",defaults:{}})],n),n})(),hJ=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[cJ.forRoot({}),sn.forFeature([uJ])]}),n})();var ew=function t(){},ZR=function(){function t(n){this._ranScripts={},this._renderer=n.createRenderer(null,null)}return t.prototype.insertEl=function(n,e,i,r,o){if(r&&!o){var s=n._prevSVG&&n._prevSVG.parentNode;s&&this._renderer.removeChild(s,n._prevSVG),e.innerHTML=""}o?this._renderer.insertBefore(e,i,e.firstChild):this._renderer.appendChild(e,i),"svg"===i.nodeName&&(n._prevSVG=i)},t.prototype.evalScripts=function(n,e,i){for(var r=n.querySelectorAll("script"),o=[],s=0;s0&&("always"===i||"once"===i&&!this._ranScripts[e])){for(s=0;s-1}(e.inlineSVG)){var r=e.inlineSVG.split("#")[1];i=function pJ(t,n,e){var i=n.querySelector('[id="'.concat(e,'"]'));if(!i)throw new Error('Symbol "'.concat(e,'" not found'));var r=t.createElement("svg","svg");t.appendChild(r,i);var o=t.createElement("use","svg");return t.setAttribute(o,"href","#".concat(e),"xlink"),t.appendChild(r,o),r}(e._renderer,i,r)}e._processSvg(i)},function(i){e._fail(i)}))}},t.prototype._processSvg=function(n){if(n){if(this.removeSVGAttributes&&or(this.platformId)&&QR(n,this.removeSVGAttributes),this.setSVGAttributes&&function gJ(t,n){for(var e in n)t.setAttribute(e,n[e])}(n,this.setSVGAttributes),this.onSVGLoaded&&(n=this.onSVGLoaded(n,this._el.nativeElement)),this._insertEl(n),or(this.platformId)&&this._inlineSVGService.evalScripts(n,this.inlineSVG,this.evalScripts),this.forceEvalStyles){var e=n.querySelectorAll("style");Array.from(e).forEach(function(i){return i.textContent+=""})}this.onSVGInserted.emit(n)}},t.prototype._insertEl=function(n){if(this.injectComponent){if(!this._svgComp){var e=this._resolver.resolveComponentFactory(KR);this._svgComp=this._viewContainerRef.createComponent(e)}this._svgComp.instance.context=this,this._svgComp.instance.replaceContents=this.replaceContents,this._svgComp.instance.prepend=this.prepend,this._svgComp.instance.content=n,this._renderer.appendChild(this._el.nativeElement,this._svgComp.injector.get(KR)._el.nativeElement)}else this._inlineSVGService.insertEl(this,this._el.nativeElement,n,this.replaceContents,this.prepend)},t.prototype._fail=function(n){if(this.onSVGFailed.emit(n),this.fallbackImgUrl){var e=this._renderer.createElement("IMG");this._renderer.setAttribute(e,"src",this.fallbackImgUrl),this._insertEl(e)}else this.fallbackSVG&&this.fallbackSVG!==this.inlineSVG&&(this.inlineSVG=this.fallbackSVG,this._insertSVG())},t.prototype._isValidPlatform=function(){return gc(this.platformId)||or(this.platformId)},t.prototype._isSSRDisabled=function(){return gc(this.platformId)&&this._config&&this._config.clientOnly},t.\u0275fac=function(e){return new(e||t)(m(H),m(it),m(Ri),m(XR),m(mi),m(ZR),m(ew,8),m(ss))},t.\u0275dir=M({type:t,selectors:[["","inlineSVG",""]],inputs:{inlineSVG:"inlineSVG",resolveSVGUrl:"resolveSVGUrl",replaceContents:"replaceContents",prepend:"prepend",injectComponent:"injectComponent",cacheSVG:"cacheSVG",setSVGAttributes:"setSVGAttributes",removeSVGAttributes:"removeSVGAttributes",forceEvalStyles:"forceEvalStyles",evalScripts:"evalScripts",fallbackImgUrl:"fallbackImgUrl",fallbackSVG:"fallbackSVG",onSVGLoaded:"onSVGLoaded"},outputs:{onSVGInserted:"onSVGInserted",onSVGFailed:"onSVGFailed"},features:[ie([XR]),at]}),t}(),JR=function(){function t(){}return t.forRoot=function(n){return{ngModule:t,providers:[{provide:ew,useValue:n}]}},t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t}();function Ym(t=0,n,e=hK){let i=-1;return null!=n&&(gx(n)?e=n:i=n),new xe(r=>{let o=function bJ(t){return t instanceof Date&&!isNaN(t)}(t)?+t-e.now():t;o<0&&(o=0);let s=0;return e.schedule(function(){r.closed||(r.next(s++),0<=i?this.schedule(void 0,i):r.complete())},o)})}let vl={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};const tF=/[&<>"']/,yJ=new RegExp(tF.source,"g"),nF=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,wJ=new RegExp(nF.source,"g"),xJ={"&":"&","<":"<",">":">",'"':""","'":"'"},iF=t=>xJ[t];function un(t,n){if(n){if(tF.test(t))return t.replace(yJ,iF)}else if(nF.test(t))return t.replace(wJ,iF);return t}const CJ=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function rF(t){return t.replace(CJ,(n,e)=>"colon"===(e=e.toLowerCase())?":":"#"===e.charAt(0)?"x"===e.charAt(1)?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):"")}const DJ=/(^|[^\[])\^/g;function dt(t,n){t="string"==typeof t?t:t.source,n=n||"";const e={replace:(i,r)=>(r=(r=r.source||r).replace(DJ,"$1"),t=t.replace(i,r),e),getRegex:()=>new RegExp(t,n)};return e}const EJ=/[^\w:]/g,SJ=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function oF(t,n,e){if(t){let i;try{i=decodeURIComponent(rF(e)).replace(EJ,"").toLowerCase()}catch{return null}if(0===i.indexOf("javascript:")||0===i.indexOf("vbscript:")||0===i.indexOf("data:"))return null}n&&!SJ.test(e)&&(e=function AJ(t,n){Zm[" "+t]||(Zm[" "+t]=kJ.test(t)?t+"/":Xm(t,"/",!0));const e=-1===(t=Zm[" "+t]).indexOf(":");return"//"===n.substring(0,2)?e?n:t.replace(MJ,"$1")+n:"/"===n.charAt(0)?e?n:t.replace(TJ,"$1")+n:t+n}(n,e));try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}const Zm={},kJ=/^[^:]+:\/*[^/]*$/,MJ=/^([^:]+:)[\s\S]*$/,TJ=/^([^:]+:\/*[^/]*)[\s\S]*$/,Km={exec:function(){}};function zi(t){let e,i,n=1;for(;n{let l=!1,c=s;for(;--c>=0&&"\\"===a[c];)l=!l;return l?"|":" |"}).split(/ \|/);let r=0;if(i[0].trim()||i.shift(),i.length>0&&!i[i.length-1].trim()&&i.pop(),i.length>n)i.splice(n);else for(;i.length1;)1&n&&(e+=t),n>>=1,t+=t;return e+t}function cF(t,n,e,i){const r=n.href,o=n.title?un(n.title):null,s=t[1].replace(/\\([\[\]])/g,"$1");if("!"!==t[0].charAt(0)){i.state.inLink=!0;const a={type:"link",raw:e,href:r,title:o,text:s,tokens:i.inlineTokens(s)};return i.state.inLink=!1,a}return{type:"image",raw:e,href:r,title:o,text:un(s)}}class tw{constructor(n){this.options=n||vl}space(n){const e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){const e=this.rules.block.code.exec(n);if(e){const i=e[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?i:Xm(i,"\n")}}}fences(n){const e=this.rules.block.fences.exec(n);if(e){const i=e[0],r=function OJ(t,n){const e=t.match(/^(\s+)(?:```)/);if(null===e)return n;const i=e[1];return n.split("\n").map(r=>{const o=r.match(/^\s+/);if(null===o)return r;const[s]=o;return s.length>=i.length?r.slice(i.length):r}).join("\n")}(i,e[3]||"");return{type:"code",raw:i,lang:e[2]?e[2].trim().replace(this.rules.inline._escapes,"$1"):e[2],text:r}}}heading(n){const e=this.rules.block.heading.exec(n);if(e){let i=e[2].trim();if(/#$/.test(i)){const r=Xm(i,"#");(this.options.pedantic||!r||/ $/.test(r))&&(i=r.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:i,tokens:this.lexer.inline(i)}}}hr(n){const e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:e[0]}}blockquote(n){const e=this.rules.block.blockquote.exec(n);if(e){const i=e[0].replace(/^ *>[ \t]?/gm,""),r=this.lexer.state.top;this.lexer.state.top=!0;const o=this.lexer.blockTokens(i);return this.lexer.state.top=r,{type:"blockquote",raw:e[0],tokens:o,text:i}}}list(n){let e=this.rules.block.list.exec(n);if(e){let i,r,o,s,a,l,c,d,u,h,f,p,g=e[1].trim();const b=g.length>1,v={type:"list",raw:"",ordered:b,start:b?+g.slice(0,-1):"",loose:!1,items:[]};g=b?`\\d{1,9}\\${g.slice(-1)}`:`\\${g}`,this.options.pedantic&&(g=b?g:"[*+-]");const w=new RegExp(`^( {0,3}${g})((?:[\t ][^\\n]*)?(?:\\n|$))`);for(;n&&(p=!1,(e=w.exec(n))&&!this.rules.block.hr.test(n));){if(i=e[0],n=n.substring(i.length),d=e[2].split("\n",1)[0].replace(/^\t+/,F=>" ".repeat(3*F.length)),u=n.split("\n",1)[0],this.options.pedantic?(s=2,f=d.trimLeft()):(s=e[2].search(/[^ ]/),s=s>4?1:s,f=d.slice(s),s+=e[1].length),l=!1,!d&&/^ *$/.test(u)&&(i+=u+"\n",n=n.substring(u.length+1),p=!0),!p){const F=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),ye=new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),Te=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),It=new RegExp(`^ {0,${Math.min(3,s-1)}}#`);for(;n&&(h=n.split("\n",1)[0],u=h,this.options.pedantic&&(u=u.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!(Te.test(u)||It.test(u)||F.test(u)||ye.test(n)));){if(u.search(/[^ ]/)>=s||!u.trim())f+="\n"+u.slice(s);else{if(l||d.search(/[^ ]/)>=4||Te.test(d)||It.test(d)||ye.test(d))break;f+="\n"+u}!l&&!u.trim()&&(l=!0),i+=h+"\n",n=n.substring(h.length+1),d=u.slice(s)}}v.loose||(c?v.loose=!0:/\n *\n *$/.test(i)&&(c=!0)),this.options.gfm&&(r=/^\[[ xX]\] /.exec(f),r&&(o="[ ] "!==r[0],f=f.replace(/^\[[ xX]\] +/,""))),v.items.push({type:"list_item",raw:i,task:!!r,checked:o,loose:!1,text:f}),v.raw+=i}v.items[v.items.length-1].raw=i.trimRight(),v.items[v.items.length-1].text=f.trimRight(),v.raw=v.raw.trimRight();const C=v.items.length;for(a=0;a"space"===Te.type),ye=F.length>0&&F.some(Te=>/\n.*\n/.test(Te.raw));v.loose=ye}if(v.loose)for(a=0;a$/,"$1").replace(this.rules.inline._escapes,"$1"):"",o=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"):e[3];return{type:"def",tag:i,raw:e[0],href:r,title:o}}}table(n){const e=this.rules.block.table.exec(n);if(e){const i={type:"table",header:sF(e[1]).map(r=>({text:r})),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(i.header.length===i.align.length){i.raw=e[0];let o,s,a,l,r=i.align.length;for(o=0;o({text:c}));for(r=i.header.length,s=0;s/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):un(e[0]):e[0]}}link(n){const e=this.rules.inline.link.exec(n);if(e){const i=e[2].trim();if(!this.options.pedantic&&/^$/.test(i))return;const s=Xm(i.slice(0,-1),"\\");if((i.length-s.length)%2==0)return}else{const s=function IJ(t,n){if(-1===t.indexOf(n[1]))return-1;const e=t.length;let i=0,r=0;for(;r-1){const l=(0===e[0].indexOf("!")?5:4)+e[1].length+s;e[2]=e[2].substring(0,s),e[0]=e[0].substring(0,l).trim(),e[3]=""}}let r=e[2],o="";if(this.options.pedantic){const s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r);s&&(r=s[1],o=s[3])}else o=e[3]?e[3].slice(1,-1):"";return r=r.trim(),/^$/.test(i)?r.slice(1):r.slice(1,-1)),cF(e,{href:r&&r.replace(this.rules.inline._escapes,"$1"),title:o&&o.replace(this.rules.inline._escapes,"$1")},e[0],this.lexer)}}reflink(n,e){let i;if((i=this.rules.inline.reflink.exec(n))||(i=this.rules.inline.nolink.exec(n))){let r=(i[2]||i[1]).replace(/\s+/g," ");if(r=e[r.toLowerCase()],!r){const o=i[0].charAt(0);return{type:"text",raw:o,text:o}}return cF(i,r,i[0],this.lexer)}}emStrong(n,e,i=""){let r=this.rules.inline.emStrong.lDelim.exec(n);if(!r||r[3]&&i.match(/[\p{L}\p{N}]/u))return;const o=r[1]||r[2]||"";if(!o||o&&(""===i||this.rules.inline.punctuation.exec(i))){const s=r[0].length-1;let a,l,c=s,d=0;const u="*"===r[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(u.lastIndex=0,e=e.slice(-1*n.length+s);null!=(r=u.exec(e));){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(l=a.length,r[3]||r[4]){c+=l;continue}if((r[5]||r[6])&&s%3&&!((s+l)%3)){d+=l;continue}if(c-=l,c>0)continue;l=Math.min(l,l+c+d);const h=n.slice(0,s+r.index+(r[0].length-a.length)+l);if(Math.min(s,l)%2){const p=h.slice(1,-1);return{type:"em",raw:h,text:p,tokens:this.lexer.inlineTokens(p)}}const f=h.slice(2,-2);return{type:"strong",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(n){const e=this.rules.inline.code.exec(n);if(e){let i=e[2].replace(/\n/g," ");const r=/[^ ]/.test(i),o=/^ /.test(i)&&/ $/.test(i);return r&&o&&(i=i.substring(1,i.length-1)),i=un(i,!0),{type:"codespan",raw:e[0],text:i}}}br(n){const e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n){const e=this.rules.inline.del.exec(n);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(n,e){const i=this.rules.inline.autolink.exec(n);if(i){let r,o;return"@"===i[2]?(r=un(this.options.mangle?e(i[1]):i[1]),o="mailto:"+r):(r=un(i[1]),o=r),{type:"link",raw:i[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}}url(n,e){let i;if(i=this.rules.inline.url.exec(n)){let r,o;if("@"===i[2])r=un(this.options.mangle?e(i[0]):i[0]),o="mailto:"+r;else{let s;do{s=i[0],i[0]=this.rules.inline._backpedal.exec(i[0])[0]}while(s!==i[0]);r=un(i[0]),o="www."===i[1]?"http://"+i[0]:i[0]}return{type:"link",raw:i[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(n,e){const i=this.rules.inline.text.exec(n);if(i){let r;return r=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):un(i[0]):i[0]:un(this.options.smartypants?e(i[0]):i[0]),{type:"text",raw:i[0],text:r}}}}const le={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Km,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};le.def=dt(le.def).replace("label",le._label).replace("title",le._title).getRegex(),le.bullet=/(?:[*+-]|\d{1,9}[.)])/,le.listItemStart=dt(/^( *)(bull) */).replace("bull",le.bullet).getRegex(),le.list=dt(le.list).replace(/bull/g,le.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+le.def.source+")").getRegex(),le._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",le._comment=/|$)/,le.html=dt(le.html,"i").replace("comment",le._comment).replace("tag",le._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),le.paragraph=dt(le._paragraph).replace("hr",le.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",le._tag).getRegex(),le.blockquote=dt(le.blockquote).replace("paragraph",le.paragraph).getRegex(),le.normal=zi({},le),le.gfm=zi({},le.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),le.gfm.table=dt(le.gfm.table).replace("hr",le.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",le._tag).getRegex(),le.gfm.paragraph=dt(le._paragraph).replace("hr",le.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",le.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",le._tag).getRegex(),le.pedantic=zi({},le.normal,{html:dt("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",le._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Km,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:dt(le.normal._paragraph).replace("hr",le.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",le.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const K={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Km,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Km,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(i="x"+i.toString(16)),n+="&#"+i+";";return n}K._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",K.punctuation=dt(K.punctuation).replace(/punctuation/g,K._punctuation).getRegex(),K.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,K.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,K._comment=dt(le._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),K.emStrong.lDelim=dt(K.emStrong.lDelim).replace(/punct/g,K._punctuation).getRegex(),K.emStrong.rDelimAst=dt(K.emStrong.rDelimAst,"g").replace(/punct/g,K._punctuation).getRegex(),K.emStrong.rDelimUnd=dt(K.emStrong.rDelimUnd,"g").replace(/punct/g,K._punctuation).getRegex(),K._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,K._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,K._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,K.autolink=dt(K.autolink).replace("scheme",K._scheme).replace("email",K._email).getRegex(),K._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,K.tag=dt(K.tag).replace("comment",K._comment).replace("attribute",K._attribute).getRegex(),K._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,K._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,K._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,K.link=dt(K.link).replace("label",K._label).replace("href",K._href).replace("title",K._title).getRegex(),K.reflink=dt(K.reflink).replace("label",K._label).replace("ref",le._label).getRegex(),K.nolink=dt(K.nolink).replace("ref",le._label).getRegex(),K.reflinkSearch=dt(K.reflinkSearch,"g").replace("reflink",K.reflink).replace("nolink",K.nolink).getRegex(),K.normal=zi({},K),K.pedantic=zi({},K.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:dt(/^!?\[(label)\]\((.*?)\)/).replace("label",K._label).getRegex(),reflink:dt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",K._label).getRegex()}),K.gfm=zi({},K.normal,{escape:dt(K.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\l+" ".repeat(c.length));n;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(a=>!!(i=a.call({lexer:this},n,e))&&(n=n.substring(i.raw.length),e.push(i),!0)))){if(i=this.tokenizer.space(n)){n=n.substring(i.raw.length),1===i.raw.length&&e.length>0?e[e.length-1].raw+="\n":e.push(i);continue}if(i=this.tokenizer.code(n)){n=n.substring(i.raw.length),r=e[e.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?e.push(i):(r.raw+="\n"+i.raw,r.text+="\n"+i.text,this.inlineQueue[this.inlineQueue.length-1].src=r.text);continue}if(i=this.tokenizer.fences(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.heading(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.hr(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.blockquote(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.list(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.html(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.def(n)){n=n.substring(i.raw.length),r=e[e.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title}):(r.raw+="\n"+i.raw,r.text+="\n"+i.raw,this.inlineQueue[this.inlineQueue.length-1].src=r.text);continue}if(i=this.tokenizer.table(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.lheading(n)){n=n.substring(i.raw.length),e.push(i);continue}if(o=n,this.options.extensions&&this.options.extensions.startBlock){let a=1/0;const l=n.slice(1);let c;this.options.extensions.startBlock.forEach(function(d){c=d.call({lexer:this},l),"number"==typeof c&&c>=0&&(a=Math.min(a,c))}),a<1/0&&a>=0&&(o=n.substring(0,a+1))}if(this.state.top&&(i=this.tokenizer.paragraph(o))){r=e[e.length-1],s&&"paragraph"===r.type?(r.raw+="\n"+i.raw,r.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):e.push(i),s=o.length!==n.length,n=n.substring(i.raw.length);continue}if(i=this.tokenizer.text(n)){n=n.substring(i.raw.length),r=e[e.length-1],r&&"text"===r.type?(r.raw+="\n"+i.raw,r.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):e.push(i);continue}if(n){const a="Infinite loop on byte: "+n.charCodeAt(0);if(this.options.silent){console.error(a);break}throw new Error(a)}}return this.state.top=!0,e}inline(n,e=[]){return this.inlineQueue.push({src:n,tokens:e}),e}inlineTokens(n,e=[]){let i,r,o,a,l,c,s=n;if(this.tokens.links){const d=Object.keys(this.tokens.links);if(d.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(s));)d.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,a.index)+"["+lF("a",a[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(s));)s=s.slice(0,a.index)+"["+lF("a",a[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(a=this.tokenizer.rules.inline.escapedEmSt.exec(s));)s=s.slice(0,a.index+a[0].length-2)+"++"+s.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;n;)if(l||(c=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(d=>!!(i=d.call({lexer:this},n,e))&&(n=n.substring(i.raw.length),e.push(i),!0)))){if(i=this.tokenizer.escape(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.tag(n)){n=n.substring(i.raw.length),r=e[e.length-1],r&&"text"===i.type&&"text"===r.type?(r.raw+=i.raw,r.text+=i.text):e.push(i);continue}if(i=this.tokenizer.link(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.reflink(n,this.tokens.links)){n=n.substring(i.raw.length),r=e[e.length-1],r&&"text"===i.type&&"text"===r.type?(r.raw+=i.raw,r.text+=i.text):e.push(i);continue}if(i=this.tokenizer.emStrong(n,s,c)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.codespan(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.br(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.del(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.autolink(n,dF)){n=n.substring(i.raw.length),e.push(i);continue}if(!this.state.inLink&&(i=this.tokenizer.url(n,dF))){n=n.substring(i.raw.length),e.push(i);continue}if(o=n,this.options.extensions&&this.options.extensions.startInline){let d=1/0;const u=n.slice(1);let h;this.options.extensions.startInline.forEach(function(f){h=f.call({lexer:this},u),"number"==typeof h&&h>=0&&(d=Math.min(d,h))}),d<1/0&&d>=0&&(o=n.substring(0,d+1))}if(i=this.tokenizer.inlineText(o,RJ)){n=n.substring(i.raw.length),"_"!==i.raw.slice(-1)&&(c=i.raw.slice(-1)),l=!0,r=e[e.length-1],r&&"text"===r.type?(r.raw+=i.raw,r.text+=i.text):e.push(i);continue}if(n){const d="Infinite loop on byte: "+n.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}return e}}class Id{constructor(n){this.options=n||vl}code(n,e,i){const r=(e||"").match(/\S*/)[0];if(this.options.highlight){const o=this.options.highlight(n,r);null!=o&&o!==n&&(i=!0,n=o)}return n=n.replace(/\n$/,"")+"\n",r?'
'+(i?n:un(n,!0))+"
\n":"
"+(i?n:un(n,!0))+"
\n"}blockquote(n){return`
\n${n}
\n`}html(n){return n}heading(n,e,i,r){return this.options.headerIds?`${n}\n`:`${n}\n`}hr(){return this.options.xhtml?"
\n":"
\n"}list(n,e,i){const r=e?"ol":"ul";return"<"+r+(e&&1!==i?' start="'+i+'"':"")+">\n"+n+"\n"}listitem(n){return`
  • ${n}
  • \n`}checkbox(n){return" "}paragraph(n){return`

    ${n}

    \n`}table(n,e){return e&&(e=`${e}`),"\n\n"+n+"\n"+e+"
    \n"}tablerow(n){return`\n${n}\n`}tablecell(n,e){const i=e.header?"th":"td";return(e.align?`<${i} align="${e.align}">`:`<${i}>`)+n+`\n`}strong(n){return`${n}`}em(n){return`${n}`}codespan(n){return`${n}`}br(){return this.options.xhtml?"
    ":"
    "}del(n){return`${n}`}link(n,e,i){if(null===(n=oF(this.options.sanitize,this.options.baseUrl,n)))return i;let r='",r}image(n,e,i){if(null===(n=oF(this.options.sanitize,this.options.baseUrl,n)))return i;let r=`${i}":">",r}text(n){return n}}class uF{strong(n){return n}em(n){return n}codespan(n){return n}del(n){return n}html(n){return n}text(n){return n}link(n,e,i){return""+i}image(n,e,i){return""+i}br(){return""}}class hF{constructor(){this.seen={}}serialize(n){return n.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(n,e){let i=n,r=0;if(this.seen.hasOwnProperty(i)){r=this.seen[n];do{r++,i=n+"-"+r}while(this.seen.hasOwnProperty(i))}return e||(this.seen[n]=r,this.seen[i]=0),i}slug(n,e={}){const i=this.serialize(n);return this.getNextSafeSlug(i,e.dryrun)}}class yr{constructor(n){this.options=n||vl,this.options.renderer=this.options.renderer||new Id,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new uF,this.slugger=new hF}static parse(n,e){return new yr(e).parse(n)}static parseInline(n,e){return new yr(e).parseInline(n)}parse(n,e=!0){let r,o,s,a,l,c,d,u,h,f,p,g,b,v,w,C,F,ye,Te,i="";const It=n.length;for(r=0;r0&&"paragraph"===w.tokens[0].type?(w.tokens[0].text=ye+" "+w.tokens[0].text,w.tokens[0].tokens&&w.tokens[0].tokens.length>0&&"text"===w.tokens[0].tokens[0].type&&(w.tokens[0].tokens[0].text=ye+" "+w.tokens[0].tokens[0].text)):w.tokens.unshift({type:"text",text:ye}):v+=ye),v+=this.parse(w.tokens,b),h+=this.renderer.listitem(v,F,C);i+=this.renderer.list(h,p,g);continue;case"html":i+=this.renderer.html(f.text);continue;case"paragraph":i+=this.renderer.paragraph(this.parseInline(f.tokens));continue;case"text":for(h=f.tokens?this.parseInline(f.tokens):f.text;r+1"u"||null===t)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof t)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected");if("function"==typeof n&&(e=n,n=null),aF(n=zi({},me.defaults,n||{})),e){const r=n.highlight;let o;try{o=to.lex(t,n)}catch(l){return e(l)}const s=function(l){let c;if(!l)try{n.walkTokens&&me.walkTokens(o,n.walkTokens),c=yr.parse(o,n)}catch(d){l=d}return n.highlight=r,l?e(l):e(null,c)};if(!r||r.length<3||(delete n.highlight,!o.length))return s();let a=0;return me.walkTokens(o,function(l){"code"===l.type&&(a++,setTimeout(()=>{r(l.text,l.lang,function(c,d){if(c)return s(c);null!=d&&d!==l.text&&(l.text=d,l.escaped=!0),a--,0===a&&s()})},0))}),void(0===a&&s())}function i(r){if(r.message+="\nPlease report this to https://github.com/markedjs/marked.",n.silent)return"

    An error occurred:

    "+un(r.message+"",!0)+"
    ";throw r}try{const r=to.lex(t,n);if(n.walkTokens){if(n.async)return Promise.all(me.walkTokens(r,n.walkTokens)).then(()=>yr.parse(r,n)).catch(i);me.walkTokens(r,n.walkTokens)}return yr.parse(r,n)}catch(r){i(r)}}me.options=me.setOptions=function(t){return zi(me.defaults,t),function vJ(t){vl=t}(me.defaults),me},me.getDefaults=function eF(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}},me.defaults=vl,me.use=function(...t){const n=me.defaults.extensions||{renderers:{},childTokens:{}};t.forEach(e=>{const i=zi({},e);if(i.async=me.defaults.async||i.async,e.extensions&&(e.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if(r.renderer){const o=n.renderers[r.name];n.renderers[r.name]=o?function(...s){let a=r.renderer.apply(this,s);return!1===a&&(a=o.apply(this,s)),a}:r.renderer}if(r.tokenizer){if(!r.level||"block"!==r.level&&"inline"!==r.level)throw new Error("extension level must be 'block' or 'inline'");n[r.level]?n[r.level].unshift(r.tokenizer):n[r.level]=[r.tokenizer],r.start&&("block"===r.level?n.startBlock?n.startBlock.push(r.start):n.startBlock=[r.start]:"inline"===r.level&&(n.startInline?n.startInline.push(r.start):n.startInline=[r.start]))}r.childTokens&&(n.childTokens[r.name]=r.childTokens)}),i.extensions=n),e.renderer){const r=me.defaults.renderer||new Id;for(const o in e.renderer){const s=r[o];r[o]=(...a)=>{let l=e.renderer[o].apply(r,a);return!1===l&&(l=s.apply(r,a)),l}}i.renderer=r}if(e.tokenizer){const r=me.defaults.tokenizer||new tw;for(const o in e.tokenizer){const s=r[o];r[o]=(...a)=>{let l=e.tokenizer[o].apply(r,a);return!1===l&&(l=s.apply(r,a)),l}}i.tokenizer=r}if(e.walkTokens){const r=me.defaults.walkTokens;i.walkTokens=function(o){let s=[];return s.push(e.walkTokens.call(this,o)),r&&(s=s.concat(r.call(this,o))),s}}me.setOptions(i)})},me.walkTokens=function(t,n){let e=[];for(const i of t)switch(e=e.concat(n.call(me,i)),i.type){case"table":for(const r of i.header)e=e.concat(me.walkTokens(r.tokens,n));for(const r of i.rows)for(const o of r)e=e.concat(me.walkTokens(o.tokens,n));break;case"list":e=e.concat(me.walkTokens(i.items,n));break;default:me.defaults.extensions&&me.defaults.extensions.childTokens&&me.defaults.extensions.childTokens[i.type]?me.defaults.extensions.childTokens[i.type].forEach(function(r){e=e.concat(me.walkTokens(i[r],n))}):i.tokens&&(e=e.concat(me.walkTokens(i.tokens,n)))}return e},me.parseInline=function(t,n){if(typeof t>"u"||null===t)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!=typeof t)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected");aF(n=zi({},me.defaults,n||{}));try{const e=to.lexInline(t,n);return n.walkTokens&&me.walkTokens(e,n.walkTokens),yr.parseInline(e,n)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",n.silent)return"

    An error occurred:

    "+un(e.message+"",!0)+"
    ";throw e}},me.Parser=yr,me.parser=yr.parse,me.Renderer=Id,me.TextRenderer=uF,me.Lexer=to,me.lexer=to.lex,me.Tokenizer=tw,me.Slugger=hF,me.parse=me;const FJ=["*"];let nw=(()=>{class t{constructor(){this._buttonClick$=new te,this.copied$=this._buttonClick$.pipe(jn(()=>$n(j(!0),Ym(3e3).pipe(EA(!1)))),rf(),Ia(1)),this.copiedText$=this.copied$.pipe(cr(!1),B(e=>e?"Copied":"Copy"))}onCopyToClipboardClick(){this._buttonClick$.next()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=G({type:t,selectors:[["markdown-clipboard"]],decls:4,vars:7,consts:[[1,"markdown-clipboard-button",3,"click"]],template:function(e,i){1&e&&(x(0,"button",0),re("click",function(){return i.onCopyToClipboardClick()}),wa(1,"async"),N(2),wa(3,"async"),E()),2&e&&(ce("copied",xa(1,3,i.copied$)),D(2),Qt(xa(3,5,i.copiedText$)))},dependencies:[Ab],encapsulation:2,changeDetection:0}),t})();class LJ{}var Od=(()=>(function(t){t.CommandLine="command-line",t.LineHighlight="line-highlight",t.LineNumbers="line-numbers"}(Od||(Od={})),Od))();class VJ{}const fF=new k("SECURITY_CONTEXT");let iw=(()=>{class t{constructor(e,i,r,o,s,a){this.platform=e,this.securityContext=i,this.http=r,this.clipboardOptions=o,this.sanitizer=a,this.DEFAULT_MARKED_OPTIONS={renderer:new Id},this.DEFAULT_KATEX_OPTIONS={delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}]},this.DEFAULT_MERMAID_OPTIONS={startOnLoad:!1},this.DEFAULT_CLIPBOARD_OPTIONS={buttonComponent:void 0},this.DEFAULT_PARSE_OPTIONS={decodeHtml:!1,inline:!1,emoji:!1,mermaid:!1,markedOptions:this.DEFAULT_MARKED_OPTIONS,disableSanitizer:!1},this.DEFAULT_RENDER_OPTIONS={clipboard:!1,clipboardOptions:void 0,katex:!1,katexOptions:void 0,mermaid:!1,mermaidOptions:void 0},this._reload$=new te,this.reload$=this._reload$.asObservable(),this.options=s}get options(){return this._options}set options(e){this._options={...this.DEFAULT_MARKED_OPTIONS,...e}}get renderer(){return this.options.renderer}set renderer(e){this.options.renderer=e}parse(e,i=this.DEFAULT_PARSE_OPTIONS){const{decodeHtml:r,inline:o,emoji:s,mermaid:a,disableSanitizer:l}=i,c={...this.options,...i.markedOptions};a&&(this.renderer=this.extendRenderer(c.renderer||new Id));const d=this.trimIndentation(e),u=r?this.decodeHtml(d):d,h=s?this.parseEmoji(u):u,f=this.parseMarked(h,c,o);return(l?f:this.sanitizer.sanitize(this.securityContext,f))||""}render(e,i=this.DEFAULT_RENDER_OPTIONS,r){const{clipboard:o,clipboardOptions:s,katex:a,katexOptions:l,mermaid:c,mermaidOptions:d}=i;o&&this.renderClipboard(e,r,{...this.DEFAULT_CLIPBOARD_OPTIONS,...this.clipboardOptions,...s}),a&&this.renderKatex(e,{...this.DEFAULT_KATEX_OPTIONS,...l}),c&&this.renderMermaid(e,{...this.DEFAULT_MERMAID_OPTIONS,...d}),this.highlight(e)}reload(){this._reload$.next()}getSource(e){if(!this.http)throw new Error("[ngx-markdown] When using the `src` attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information");return this.http.get(e,{responseType:"text"}).pipe(B(i=>this.handleExtension(e,i)))}highlight(e){if(!or(this.platform)||typeof Prism>"u"||typeof Prism.highlightAllUnder>"u")return;e||(e=document);const i=e.querySelectorAll('pre code:not([class*="language-"])');Array.prototype.forEach.call(i,r=>r.classList.add("language-none")),Prism.highlightAllUnder(e)}decodeHtml(e){if(!or(this.platform))return e;const i=document.createElement("textarea");return i.innerHTML=e,i.value}extendRenderer(e){const i=e;if(!0===i.\u0275NgxMarkdownRendererExtended)return e;const r=e.code;return e.code=function(o,s,a){return"mermaid"===s?`
    ${o}
    `:r.call(this,o,s,a)},i.\u0275NgxMarkdownRendererExtended=!0,e}handleExtension(e,i){const r=e.lastIndexOf("://"),o=r>-1?e.substring(r+4):e,s=o.lastIndexOf("/"),a=s>-1?o.substring(s+1).split("?")[0]:"",l=a.lastIndexOf("."),c=l>-1?a.substring(l+1):"";return c&&"md"!==c?"```"+c+"\n"+i+"\n```":i}parseMarked(e,i,r=!1){return r?me.parseInline(e,i):me.parse(e,i)}parseEmoji(e){if(!or(this.platform))return e;if(typeof joypixels>"u"||typeof joypixels.shortnameToUnicode>"u")throw new Error("[ngx-markdown] When using the `emoji` attribute you *have to* include Emoji-Toolkit files to `angular.json` or use imports. See README for more information");return joypixels.shortnameToUnicode(e)}renderKatex(e,i){if(or(this.platform)){if(typeof katex>"u"||typeof renderMathInElement>"u")throw new Error("[ngx-markdown] When using the `katex` attribute you *have to* include KaTeX files to `angular.json` or use imports. See README for more information");renderMathInElement(e,i)}}renderClipboard(e,i,r){if(!or(this.platform))return;if(typeof ClipboardJS>"u")throw new Error("[ngx-markdown] When using the `clipboard` attribute you *have to* include Clipboard files to `angular.json` or use imports. See README for more information");if(!i)throw new Error("[ngx-markdown] When using the `clipboard` attribute you *have to* provide the `viewContainerRef` parameter to `MarkdownService.render()` function");const{buttonComponent:o,buttonTemplate:s}=r,a=e.querySelectorAll("pre");for(let l=0;lu.style.opacity="1",c.onmouseout=()=>u.style.opacity="0",h=o?i.createComponent(o).hostView:s?i.createEmbeddedView(s):i.createComponent(nw).hostView,h.rootNodes.forEach(p=>{p.onmouseover=()=>u.style.opacity="1",u.appendChild(p),f=new ClipboardJS(p,{text:()=>c.innerText})}),h.onDestroy(()=>f.destroy())}}renderMermaid(e,i=this.DEFAULT_MERMAID_OPTIONS){if(!or(this.platform))return;if(typeof mermaid>"u"||typeof mermaid.init>"u")throw new Error("[ngx-markdown] When using the `mermaid` attribute you *have to* include Mermaid files to `angular.json` or use imports. See README for more information");const r=e.querySelectorAll(".mermaid");0!==r.length&&(mermaid.initialize(i),mermaid.init(r))}trimIndentation(e){if(!e)return"";let i;return e.split("\n").map(r=>{let o=i;return r.length>0&&(o=isNaN(o)?r.search(/\S|$/):Math.min(r.search(/\S|$/),o)),isNaN(i)&&(i=o),o?r.substring(o):r}).join("\n")}}return t.\u0275fac=function(e){return new(e||t)(_(ss),_(fF),_(vi,8),_(LJ,8),_(VJ,8),_(Ma))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Ms=(()=>{class t{constructor(e,i,r){this.element=e,this.markdownService=i,this.viewContainerRef=r,this.error=new ee,this.load=new ee,this.ready=new ee,this._clipboard=!1,this._commandLine=!1,this._disableSanitizer=!1,this._emoji=!1,this._inline=!1,this._katex=!1,this._lineHighlight=!1,this._lineNumbers=!1,this._mermaid=!1,this._srcRelativeLink=!1,this.destroyed$=new te}get disableSanitizer(){return this._disableSanitizer}set disableSanitizer(e){this._disableSanitizer=this.coerceBooleanProperty(e)}get inline(){return this._inline}set inline(e){this._inline=this.coerceBooleanProperty(e)}get srcRelativeLink(){return this._srcRelativeLink}set srcRelativeLink(e){this._srcRelativeLink=this.coerceBooleanProperty(e)}get clipboard(){return this._clipboard}set clipboard(e){this._clipboard=this.coerceBooleanProperty(e)}get emoji(){return this._emoji}set emoji(e){this._emoji=this.coerceBooleanProperty(e)}get katex(){return this._katex}set katex(e){this._katex=this.coerceBooleanProperty(e)}get mermaid(){return this._mermaid}set mermaid(e){this._mermaid=this.coerceBooleanProperty(e)}get lineHighlight(){return this._lineHighlight}set lineHighlight(e){this._lineHighlight=this.coerceBooleanProperty(e)}get lineNumbers(){return this._lineNumbers}set lineNumbers(e){this._lineNumbers=this.coerceBooleanProperty(e)}get commandLine(){return this._commandLine}set commandLine(e){this._commandLine=this.coerceBooleanProperty(e)}ngOnChanges(){this.loadContent()}loadContent(){null==this.data?null==this.src||this.handleSrc():this.handleData()}ngAfterViewInit(){!this.data&&!this.src&&this.handleTransclusion(),this.markdownService.reload$.pipe(ze(this.destroyed$)).subscribe(()=>this.loadContent())}ngOnDestroy(){this.destroyed$.next(),this.destroyed$.complete()}render(e,i=!1){let r;this.src&&this.srcRelativeLink&&(r={baseUrl:new URL(this.src,location.origin).pathname});const s={clipboard:this.clipboard,clipboardOptions:{buttonComponent:this.clipboardButtonComponent,buttonTemplate:this.clipboardButtonTemplate},katex:this.katex,katexOptions:this.katexOptions,mermaid:this.mermaid,mermaidOptions:this.mermaidOptions},a=this.markdownService.parse(e,{decodeHtml:i,inline:this.inline,emoji:this.emoji,mermaid:this.mermaid,markedOptions:r,disableSanitizer:this.disableSanitizer});this.element.nativeElement.innerHTML=a,this.handlePlugins(),this.markdownService.render(this.element.nativeElement,s,this.viewContainerRef),this.ready.emit()}coerceBooleanProperty(e){return null!=e&&"false"!=`${String(e)}`}handleData(){this.render(this.data)}handleSrc(){this.markdownService.getSource(this.src).subscribe({next:e=>{this.render(e),this.load.emit(e)},error:e=>this.error.emit(e)})}handleTransclusion(){this.render(this.element.nativeElement.innerHTML,!0)}handlePlugins(){this.commandLine&&(this.setPluginClass(this.element.nativeElement,Od.CommandLine),this.setPluginOptions(this.element.nativeElement,{dataFilterOutput:this.filterOutput,dataHost:this.host,dataPrompt:this.prompt,dataOutput:this.output,dataUser:this.user})),this.lineHighlight&&this.setPluginOptions(this.element.nativeElement,{dataLine:this.line,dataLineOffset:this.lineOffset}),this.lineNumbers&&(this.setPluginClass(this.element.nativeElement,Od.LineNumbers),this.setPluginOptions(this.element.nativeElement,{dataStart:this.start}))}setPluginClass(e,i){const r=e.querySelectorAll("pre");for(let o=0;o{const a=i[s];if(a){const l=this.toLispCase(s);r.item(o).setAttribute(l,a.toString())}})}toLispCase(e){const i=e.match(/([A-Z])/g);if(!i)return e;let r=e.toString();for(let o=0,s=i.length;o{class t{static forRoot(e){return{ngModule:t,providers:[iw,e&&e.loader||[],e&&e.clipboardOptions||[],e&&e.markedOptions||[],{provide:fF,useValue:e&&null!=e.sanitize?e.sanitize:$e.HTML}]}}static forChild(){return{ngModule:t}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Re]}),t})();var mF;!function(t){let n;var r;let e,i;(r=n=t.SecurityLevel||(t.SecurityLevel={})).Strict="strict",r.Loose="loose",r.Antiscript="antiscript",r.Sandbox="sandbox",function(r){r.Base="base",r.Forest="forest",r.Dark="dark",r.Default="default",r.Neutral="neutral"}(e=t.Theme||(t.Theme={})),function(r){r[r.Debug=1]="Debug",r[r.Info=2]="Info",r[r.Warn=3]="Warn",r[r.Error=4]="Error",r[r.Fatal=5]="Fatal"}(i=t.LogLevel||(t.LogLevel={}))}(mF||(mF={}));const WJ=["addListener","removeListener"],qJ=["addEventListener","removeEventListener"],YJ=["on","off"];function Ho(t,n,e,i){if(We(e)&&(i=e,e=void 0),i)return Ho(t,n,e).pipe(nf(i));const[r,o]=function XJ(t){return We(t.addEventListener)&&We(t.removeEventListener)}(t)?qJ.map(s=>a=>t[s](n,a,e)):function ZJ(t){return We(t.addListener)&&We(t.removeListener)}(t)?WJ.map(pF(t,n)):function KJ(t){return We(t.on)&&We(t.off)}(t)?YJ.map(pF(t,n)):[];if(!r&&$p(t))return Ot(s=>Ho(s,n,e))(Xt(t));if(!r)throw new TypeError("Invalid event target");return new xe(s=>{const a=(...l)=>s.next(1o(a)})}function pF(t,n){return e=>i=>t[e](n,i)}const Rd={schedule(t){let n=requestAnimationFrame,e=cancelAnimationFrame;const{delegate:i}=Rd;i&&(n=i.requestAnimationFrame,e=i.cancelAnimationFrame);const r=n(o=>{e=void 0,t(o)});return new rt(()=>e?.(r))},requestAnimationFrame(...t){const{delegate:n}=Rd;return(n?.requestAnimationFrame||requestAnimationFrame)(...t)},cancelAnimationFrame(...t){const{delegate:n}=Rd;return(n?.cancelAnimationFrame||cancelAnimationFrame)(...t)},delegate:void 0},eee=new class JJ extends f0{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let r;n=n||i.shift();do{if(r=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,r){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw r}}}(class QJ extends h0{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=Rd.requestAnimationFrame(()=>n.flush(void 0))))}recycleAsyncId(n,e,i=0){var r;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:o}=n;null!=e&&(null===(r=o[o.length-1])||void 0===r?void 0:r.id)!==e&&(Rd.cancelAnimationFrame(e),n._scheduled=void 0)}});let rw,tee=1;const Qm={};function gF(t){return t in Qm&&(delete Qm[t],!0)}const nee={setImmediate(t){const n=tee++;return Qm[n]=!0,rw||(rw=Promise.resolve()),rw.then(()=>gF(n)&&t()),n},clearImmediate(t){gF(t)}},{setImmediate:iee,clearImmediate:ree}=nee,Jm={setImmediate(...t){const{delegate:n}=Jm;return(n?.setImmediate||iee)(...t)},clearImmediate(t){const{delegate:n}=Jm;return(n?.clearImmediate||ree)(t)},delegate:void 0},aee=new class see extends f0{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let r;n=n||i.shift();do{if(r=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,r){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw r}}}(class oee extends h0{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=Jm.setImmediate(n.flush.bind(n,void 0))))}recycleAsyncId(n,e,i=0){var r;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:o}=n;null!=e&&(null===(r=o[o.length-1])||void 0===r?void 0:r.id)!==e&&(Jm.clearImmediate(e),n._scheduled=void 0)}});function ep(t,n=m0){return function lee(t){return gt((n,e)=>{let i=!1,r=null,o=null,s=!1;const a=()=>{if(o?.unsubscribe(),o=null,i){i=!1;const c=r;r=null,e.next(c)}s&&e.complete()},l=()=>{o=null,s&&e.complete()};n.subscribe(ot(e,c=>{i=!0,r=c,o||Xt(t(c)).subscribe(o=ot(e,a,l))},()=>{s=!0,(!i||!o||o.closed)&&e.complete()}))})}(()=>Ym(t,n))}const cee=["contentWrapper"],dee=["*"],uee=new k("VIRTUAL_SCROLL_STRATEGY");let tp=(()=>{class t{constructor(e,i,r){this._ngZone=e,this._platform=i,this._scrolled=new te,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=r}register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){const i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=20){return this._platform.isBrowser?new xe(i=>{this._globalSubscription||this._addGlobalListener();const r=e>0?this._scrolled.pipe(ep(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{r.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):j()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){const r=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(mt(o=>!o||r.indexOf(o)>-1))}getAncestorScrollContainers(e){const i=[];return this.scrollContainers.forEach((r,o)=>{this._scrollableContainsElement(o,e)&&i.push(o)}),i}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(e,i){let r=Kr(i),o=e.getElementRef().nativeElement;do{if(r==o)return!0}while(r=r.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>Ho(this._getWindow().document,"scroll").subscribe(()=>this._scrolled.next()))}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}}return t.\u0275fac=function(e){return new(e||t)(_(Y),_(pt),_(ge,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),_F=(()=>{class t{constructor(e,i,r,o){this.elementRef=e,this.scrollDispatcher=i,this.ngZone=r,this.dir=o,this._destroyed=new te,this._elementScrolled=new xe(s=>this.ngZone.runOutsideAngular(()=>Ho(this.elementRef.nativeElement,"scroll").pipe(ze(this._destroyed)).subscribe(s)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const i=this.elementRef.nativeElement,r=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=r?e.end:e.start),null==e.right&&(e.right=r?e.start:e.end),null!=e.bottom&&(e.top=i.scrollHeight-i.clientHeight-e.bottom),r&&0!=yd()?(null!=e.left&&(e.right=i.scrollWidth-i.clientWidth-e.left),2==yd()?e.left=e.right:1==yd()&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=i.scrollWidth-i.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const i=this.elementRef.nativeElement;yO()?i.scrollTo(e):(null!=e.top&&(i.scrollTop=e.top),null!=e.left&&(i.scrollLeft=e.left))}measureScrollOffset(e){const i="left",r="right",o=this.elementRef.nativeElement;if("top"==e)return o.scrollTop;if("bottom"==e)return o.scrollHeight-o.clientHeight-o.scrollTop;const s=this.dir&&"rtl"==this.dir.value;return"start"==e?e=s?r:i:"end"==e&&(e=s?i:r),s&&2==yd()?e==i?o.scrollWidth-o.clientWidth-o.scrollLeft:o.scrollLeft:s&&1==yd()?e==i?o.scrollLeft+o.scrollWidth-o.clientWidth:-o.scrollLeft:e==i?o.scrollLeft:o.scrollWidth-o.clientWidth-o.scrollLeft}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(tp),m(Y),m(In,8))},t.\u0275dir=M({type:t,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0}),t})(),As=(()=>{class t{constructor(e,i,r){this._platform=e,this._change=new te,this._changeListener=o=>{this._change.next(o)},this._document=r,i.runOutsideAngular(()=>{if(e.isBrowser){const o=this._getWindow();o.addEventListener("resize",this._changeListener),o.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){const e=this._getWindow();e.removeEventListener("resize",this._changeListener),e.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:i,height:r}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+r,right:e.left+i,height:r,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,i=this._getWindow(),r=e.documentElement,o=r.getBoundingClientRect();return{top:-o.top||e.body.scrollTop||i.scrollY||r.scrollTop||0,left:-o.left||e.body.scrollLeft||i.scrollX||r.scrollLeft||0}}change(e=20){return e>0?this._change.pipe(ep(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}}return t.\u0275fac=function(e){return new(e||t)(_(pt),_(Y),_(ge,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const bF=new k("VIRTUAL_SCROLLABLE");let mee=(()=>{class t extends _F{constructor(e,i,r,o){super(e,i,r,o)}measureViewportSize(e){const i=this.elementRef.nativeElement;return"horizontal"===e?i.clientWidth:i.clientHeight}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(tp),m(Y),m(In,8))},t.\u0275dir=M({type:t,features:[P]}),t})();const gee=typeof requestAnimationFrame<"u"?eee:aee;let _ee=(()=>{class t extends mee{get orientation(){return this._orientation}set orientation(e){this._orientation!==e&&(this._orientation=e,this._calculateSpacerSize())}get appendOnly(){return this._appendOnly}set appendOnly(e){this._appendOnly=Ve(e)}constructor(e,i,r,o,s,a,l,c){super(e,a,r,s),this.elementRef=e,this._changeDetectorRef=i,this._scrollStrategy=o,this.scrollable=c,this._platform=R(pt),this._detachedSubject=new te,this._renderedRangeSubject=new te,this._orientation="vertical",this._appendOnly=!1,this.scrolledIndexChange=new xe(d=>this._scrollStrategy.scrolledIndexChange.subscribe(u=>Promise.resolve().then(()=>this.ngZone.run(()=>d.next(u))))),this.renderedRangeStream=this._renderedRangeSubject,this._totalContentSize=0,this._totalContentWidth="",this._totalContentHeight="",this._renderedRange={start:0,end:0},this._dataLength=0,this._viewportSize=0,this._renderedContentOffset=0,this._renderedContentOffsetNeedsRewrite=!1,this._isChangeDetectionPending=!1,this._runAfterChangeDetection=[],this._viewportChanges=rt.EMPTY,this._viewportChanges=l.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this)}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe(cr(null),ep(0,gee)).subscribe(()=>this._scrollStrategy.onContentScrolled()),this._markChangeDetectionNeeded()})))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),super.ngOnDestroy()}attach(e){this.ngZone.runOutsideAngular(()=>{this._forOf=e,this._forOf.dataStream.pipe(ze(this._detachedSubject)).subscribe(i=>{const r=i.length;r!==this._dataLength&&(this._dataLength=r,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()})})}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(e){return this.getElementRef().nativeElement.getBoundingClientRect()[e]}setTotalContentSize(e){this._totalContentSize!==e&&(this._totalContentSize=e,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(e){(function pee(t,n){return t.start==n.start&&t.end==n.end})(this._renderedRange,e)||(this.appendOnly&&(e={start:0,end:Math.max(this._renderedRange.end,e.end)}),this._renderedRangeSubject.next(this._renderedRange=e),this._markChangeDetectionNeeded(()=>this._scrollStrategy.onContentRendered()))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(e,i="to-start"){e=this.appendOnly&&"to-start"===i?0:e;const o="horizontal"==this.orientation,s=o?"X":"Y";let l=`translate${s}(${Number((o&&this.dir&&"rtl"==this.dir.value?-1:1)*e)}px)`;this._renderedContentOffset=e,"to-end"===i&&(l+=` translate${s}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=l&&(this._renderedContentTransform=l,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(e,i="auto"){const r={behavior:i};"horizontal"===this.orientation?r.start=e:r.top=e,this.scrollable.scrollTo(r)}scrollToIndex(e,i="auto"){this._scrollStrategy.scrollToIndex(e,i)}measureScrollOffset(e){let i;return i=this.scrollable==this?r=>super.measureScrollOffset(r):r=>this.scrollable.measureScrollOffset(r),Math.max(0,i(e??("horizontal"===this.orientation?"start":"top"))-this.measureViewportOffset())}measureViewportOffset(e){let i;const r="left",o="right",s="rtl"==this.dir?.value;i="start"==e?s?o:r:"end"==e?s?r:o:e||("horizontal"===this.orientation?"left":"top");const a=this.scrollable.measureBoundingClientRectWithScrollOffset(i);return this.elementRef.nativeElement.getBoundingClientRect()[i]-a}measureRenderedContentSize(){const e=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?e.offsetWidth:e.offsetHeight}measureRangeSize(e){return this._forOf?this._forOf.measureRangeSize(e,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(e){e&&this._runAfterChangeDetection.push(e),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._doChangeDetection()})))}_doChangeDetection(){this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run(()=>this._changeDetectorRef.markForCheck());const e=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(const i of e)i()}_calculateSpacerSize(){this._totalContentHeight="horizontal"===this.orientation?"":`${this._totalContentSize}px`,this._totalContentWidth="horizontal"===this.orientation?`${this._totalContentSize}px`:""}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(en),m(Y),m(uee,8),m(In,8),m(tp),m(As),m(bF,8))},t.\u0275cmp=G({type:t,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(e,i){if(1&e&&Ge(cee,7),2&e){let r;Q(r=J())&&(i._contentWrapper=r.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(e,i){2&e&&ce("cdk-virtual-scroll-orientation-horizontal","horizontal"===i.orientation)("cdk-virtual-scroll-orientation-vertical","horizontal"!==i.orientation)},inputs:{orientation:"orientation",appendOnly:"appendOnly"},outputs:{scrolledIndexChange:"scrolledIndexChange"},standalone:!0,features:[ie([{provide:_F,useFactory:(n,e)=>n||e,deps:[[new Ar,new Iu(bF)],t]}]),P,Be],ngContentSelectors:dee,decls:4,vars:4,consts:[[1,"cdk-virtual-scroll-content-wrapper"],["contentWrapper",""],[1,"cdk-virtual-scroll-spacer"]],template:function(e,i){1&e&&(Bt(),x(0,"div",0,1),Se(2),E(),z(3,"div",2)),2&e&&(D(3),tr("width",i._totalContentWidth)("height",i._totalContentHeight))},styles:["cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}"],encapsulation:2,changeDetection:0}),t})(),vF=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})(),ow=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Cd,vF,_ee,Cd,vF]}),t})();function bee(t,n){}const vee=function(t){return{animationDuration:t}},yee=function(t,n){return{value:t,params:n}};function wee(t,n){1&t&&Se(0)}const yF=["*"],xee=["tabListContainer"],Cee=["tabList"],Dee=["tabListInner"],Eee=["nextPaginator"],See=["previousPaginator"],kee=["tabBodyWrapper"],Mee=["tabHeader"];function Tee(t,n){}function Aee(t,n){1&t&&O(0,Tee,0,0,"ng-template",14),2&t&&S("cdkPortalOutlet",X().$implicit.templateLabel)}function Iee(t,n){1&t&&N(0),2&t&&Qt(X().$implicit.textLabel)}function Oee(t,n){if(1&t){const e=mo();x(0,"div",6,7),re("click",function(){const r=Wi(e),o=r.$implicit,s=r.index,a=X(),l=Ft(1);return qi(a._handleClick(o,l,s))})("cdkFocusChange",function(r){const s=Wi(e).index;return qi(X()._tabFocusChanged(r,s))}),z(2,"span",8)(3,"div",9),x(4,"span",10)(5,"span",11),O(6,Aee,1,1,"ng-template",12),O(7,Iee,1,1,"ng-template",null,13,Jn),E()()()}if(2&t){const e=n.$implicit,i=n.index,r=Ft(1),o=Ft(8),s=X();ce("mdc-tab--active",s.selectedIndex===i),S("id",s._getTabLabelId(i))("ngClass",e.labelClass)("disabled",e.disabled)("fitInkBarToContent",s.fitInkBarToContent),tt("tabIndex",s._getTabIndex(i))("aria-posinset",i+1)("aria-setsize",s._tabs.length)("aria-controls",s._getTabContentId(i))("aria-selected",s.selectedIndex===i)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),D(3),S("matRippleTrigger",r)("matRippleDisabled",e.disabled||s.disableRipple),D(3),S("ngIf",e.templateLabel)("ngIfElse",o)}}function Ree(t,n){if(1&t){const e=mo();x(0,"mat-tab-body",15),re("_onCentered",function(){return Wi(e),qi(X()._removeTabBodyWrapperHeight())})("_onCentering",function(r){return Wi(e),qi(X()._setTabBodyWrapperHeight(r))}),E()}if(2&t){const e=n.$implicit,i=n.index,r=X();ce("mat-mdc-tab-body-active",r.selectedIndex===i),S("id",r._getTabContentId(i))("ngClass",e.bodyClass)("content",e.content)("position",e.position)("origin",e.origin)("animationDuration",r.animationDuration)("preserveContent",r.preserveContent),tt("tabindex",null!=r.contentTabIndex&&r.selectedIndex===i?r.contentTabIndex:null)("aria-labelledby",r._getTabLabelId(i))}}const Fee={translateTab:xc("translateTab",[sr("center, void, left-origin-center, right-origin-center",on({transform:"none"})),sr("left",on({transform:"translate3d(-100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),sr("right",on({transform:"translate3d(100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),Co("* => left, * => right, left => center, right => center",xo("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")),Co("void => left-origin-center",[on({transform:"translate3d(-100%, 0, 0)",visibility:"hidden"}),xo("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")]),Co("void => right-origin-center",[on({transform:"translate3d(100%, 0, 0)",visibility:"hidden"}),xo("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")])])};let Pee=(()=>{class t extends gl{constructor(e,i,r,o){super(e,i,o),this._host=r,this._centeringSub=rt.EMPTY,this._leavingSub=rt.EMPTY}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(cr(this._host._isCenterPosition(this._host._position))).subscribe(e=>{e&&!this.hasAttached()&&this.attach(this._host._content)}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this.detach()})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(m(Ri),m(it),m(st(()=>wF)),m(ge))},t.\u0275dir=M({type:t,selectors:[["","matTabBodyHost",""]],features:[P]}),t})(),Nee=(()=>{class t{set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(e,i,r){this._elementRef=e,this._dir=i,this._dirChangeSubscription=rt.EMPTY,this._translateTabComplete=new te,this._onCentering=new ee,this._beforeCentering=new ee,this._afterLeavingCenter=new ee,this._onCentered=new ee(!0),this.animationDuration="500ms",this.preserveContent=!1,i&&(this._dirChangeSubscription=i.change.subscribe(o=>{this._computePositionAnimationState(o),r.markForCheck()})),this._translateTabComplete.pipe(rf((o,s)=>o.fromState===s.fromState&&o.toState===s.toState)).subscribe(o=>{this._isCenterPosition(o.toState)&&this._isCenterPosition(this._position)&&this._onCentered.emit(),this._isCenterPosition(o.fromState)&&!this._isCenterPosition(this._position)&&this._afterLeavingCenter.emit()})}ngOnInit(){"center"==this._position&&null!=this.origin&&(this._position=this._computePositionFromOrigin(this.origin))}ngOnDestroy(){this._dirChangeSubscription.unsubscribe(),this._translateTabComplete.complete()}_onTranslateTabStarted(e){const i=this._isCenterPosition(e.toState);this._beforeCentering.emit(i),i&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_isCenterPosition(e){return"center"==e||"left-origin-center"==e||"right-origin-center"==e}_computePositionAnimationState(e=this._getLayoutDirection()){this._position=this._positionIndex<0?"ltr"==e?"left":"right":this._positionIndex>0?"ltr"==e?"right":"left":"center"}_computePositionFromOrigin(e){const i=this._getLayoutDirection();return"ltr"==i&&e<=0||"rtl"==i&&e>0?"left-origin-center":"right-origin-center"}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(In,8),m(en))},t.\u0275dir=M({type:t,inputs:{_content:["content","_content"],origin:"origin",animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_afterLeavingCenter:"_afterLeavingCenter",_onCentered:"_onCentered"}}),t})(),wF=(()=>{class t extends Nee{constructor(e,i,r){super(e,i,r)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(In,8),m(en))},t.\u0275cmp=G({type:t,selectors:[["mat-tab-body"]],viewQuery:function(e,i){if(1&e&&Ge(gl,5),2&e){let r;Q(r=J())&&(i._portalHost=r.first)}},hostAttrs:[1,"mat-mdc-tab-body"],features:[P],decls:3,vars:6,consts:[["cdkScrollable","",1,"mat-mdc-tab-body-content"],["content",""],["matTabBodyHost",""]],template:function(e,i){1&e&&(x(0,"div",0,1),re("@translateTab.start",function(o){return i._onTranslateTabStarted(o)})("@translateTab.done",function(o){return i._translateTabComplete.next(o)}),O(2,bee,0,0,"ng-template",2),E()),2&e&&S("@translateTab",sh(3,yee,i._position,$_(1,vee,i.animationDuration)))},dependencies:[Pee],styles:['.mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-mdc-tab-body-content[style*="visibility: hidden"]{display:none}'],encapsulation:2,data:{animation:[Fee.translateTab]}}),t})();const Lee=new k("MatTabContent");let Bee=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","matTabContent",""]],features:[ie([{provide:Lee,useExisting:t}])]}),t})();const Vee=new k("MatTabLabel"),xF=new k("MAT_TAB");let jee=(()=>{class t extends QX{constructor(e,i,r){super(e,i),this._closestTab=r}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(it),m(xF,8))},t.\u0275dir=M({type:t,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],features:[ie([{provide:Vee,useExisting:t}]),P]}),t})();const sw="mdc-tab-indicator--active",CF="mdc-tab-indicator--no-transition";class Hee{constructor(n){this._items=n}hide(){this._items.forEach(n=>n.deactivateInkBar())}alignToElement(n){const e=this._items.find(r=>r.elementRef.nativeElement===n),i=this._currentItem;if(i?.deactivateInkBar(),e){const r=i?.elementRef.nativeElement.getBoundingClientRect?.();e.activateInkBar(r),this._currentItem=e}}}function zee(t){return class extends t{constructor(...n){super(...n),this._fitToContent=!1}get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(n){const e=Ve(n);this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(n){const e=this.elementRef.nativeElement;if(!n||!e.getBoundingClientRect||!this._inkBarContentElement)return void e.classList.add(sw);const i=e.getBoundingClientRect(),r=n.width/i.width,o=n.left-i.left;e.classList.add(CF),this._inkBarContentElement.style.setProperty("transform",`translateX(${o}px) scaleX(${r})`),e.getBoundingClientRect(),e.classList.remove(CF),e.classList.add(sw),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this.elementRef.nativeElement.classList.remove(sw)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){const n=this.elementRef.nativeElement.ownerDocument||document;this._inkBarElement=n.createElement("span"),this._inkBarContentElement=n.createElement("span"),this._inkBarElement.className="mdc-tab-indicator",this._inkBarContentElement.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",this._inkBarElement.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){(this._fitToContent?this.elementRef.nativeElement.querySelector(".mdc-tab__content"):this.elementRef.nativeElement).appendChild(this._inkBarElement)}}}const $ee=xm(class{}),Gee=zee((()=>{class t extends $ee{constructor(e){super(),this.elementRef=e}focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,features:[P]}),t})());let DF=(()=>{class t extends Gee{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(e,i){2&e&&(tt("aria-disabled",!!i.disabled),ce("mat-mdc-tab-disabled",i.disabled))},inputs:{disabled:"disabled",fitInkBarToContent:"fitInkBarToContent"},features:[P]}),t})();const Wee=xm(class{}),EF=new k("MAT_TAB_GROUP");let qee=(()=>{class t extends Wee{get content(){return this._contentPortal}constructor(e,i){super(),this._viewContainerRef=e,this._closestTabGroup=i,this.textLabel="",this._contentPortal=null,this._stateChanges=new te,this.position=null,this.origin=null,this.isActive=!1}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new pl(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(EF,8))},t.\u0275dir=M({type:t,viewQuery:function(e,i){if(1&e&&Ge(bt,7),2&e){let r;Q(r=J())&&(i._implicitContent=r.first)}},inputs:{textLabel:["label","textLabel"],ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass"},features:[P,at]}),t})(),SF=(()=>{class t extends qee{get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=G({type:t,selectors:[["mat-tab"]],contentQueries:function(e,i,r){if(1&e&&(Ye(r,Bee,7,bt),Ye(r,jee,5)),2&e){let o;Q(o=J())&&(i._explicitContent=o.first),Q(o=J())&&(i.templateLabel=o.first)}},inputs:{disabled:"disabled"},exportAs:["matTab"],features:[ie([{provide:xF,useExisting:t}]),P],ngContentSelectors:yF,decls:1,vars:0,template:function(e,i){1&e&&(Bt(),O(0,wee,1,0,"ng-template"))},encapsulation:2}),t})();const kF=ll({passive:!0});let Kee=(()=>{class t{get disablePagination(){return this._disablePagination}set disablePagination(e){this._disablePagination=Ve(e)}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){e=si(e),this._selectedIndex!=e&&(this._selectedIndexChanged=!0,this._selectedIndex=e,this._keyManager&&this._keyManager.updateActiveItem(e))}constructor(e,i,r,o,s,a,l){this._elementRef=e,this._changeDetectorRef=i,this._viewportRuler=r,this._dir=o,this._ngZone=s,this._platform=a,this._animationMode=l,this._scrollDistance=0,this._selectedIndexChanged=!1,this._destroyed=new te,this._showPaginationControls=!1,this._disableScrollAfter=!0,this._disableScrollBefore=!0,this._stopScrolling=new te,this._disablePagination=!1,this._selectedIndex=0,this.selectFocusedIndex=new ee,this.indexFocused=new ee,s.runOutsideAngular(()=>{Ho(e.nativeElement,"mouseleave").pipe(ze(this._destroyed)).subscribe(()=>{this._stopInterval()})})}ngAfterViewInit(){Ho(this._previousPaginator.nativeElement,"touchstart",kF).pipe(ze(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("before")}),Ho(this._nextPaginator.nativeElement,"touchstart",kF).pipe(ze(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("after")})}ngAfterContentInit(){const e=this._dir?this._dir.change:j("ltr"),i=this._viewportRuler.change(150),r=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new AO(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(this._selectedIndex),this._ngZone.onStable.pipe(qt(1)).subscribe(r),$n(e,i,this._items.changes,this._itemsResized()).pipe(ze(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),r()})}),this._keyManager.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(o=>{this.indexFocused.emit(o),this._setTabFocus(o)})}_itemsResized(){return"function"!=typeof ResizeObserver?xn:this._items.changes.pipe(cr(this._items),jn(e=>new xe(i=>this._ngZone.runOutsideAngular(()=>{const r=new ResizeObserver(o=>i.next(o));return e.forEach(o=>r.observe(o.elementRef.nativeElement)),()=>{r.disconnect()}}))),gm(1),mt(e=>e.some(i=>i.contentRect.width>0&&i.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!cl(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){const i=this._items.get(this.focusIndex);i&&!i.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager.onKeydown(e)}}_onContentChanges(){const e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return!this._items||!!this._items.toArray()[e]}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();const i=this._tabListContainer.nativeElement;i.scrollLeft="ltr"==this._getLayoutDirection()?0:i.scrollWidth-i.offsetWidth}}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;const e=this.scrollDistance,i="ltr"===this._getLayoutDirection()?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(i)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){return this._scrollTo(this._scrollDistance+("before"==e?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;const i=this._items?this._items.toArray()[e]:null;if(!i)return;const r=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:o,offsetWidth:s}=i.elementRef.nativeElement;let a,l;"ltr"==this._getLayoutDirection()?(a=o,l=a+s):(l=this._tabListInner.nativeElement.offsetWidth-o,a=l-s);const c=this.scrollDistance,d=this.scrollDistance+r;ad&&(this.scrollDistance+=Math.min(l-d,a-c))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{const e=this._tabListInner.nativeElement.scrollWidth>this._elementRef.nativeElement.offsetWidth;e||(this.scrollDistance=0),e!==this._showPaginationControls&&this._changeDetectorRef.markForCheck(),this._showPaginationControls=e}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){return this._tabListInner.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}_alignInkBarToSelectedTab(){const e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,i=e?e.elementRef.nativeElement:null;i?this._inkBar.alignToElement(i):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,i){i&&null!=i.button&&0!==i.button||(this._stopInterval(),Ym(650,100).pipe(ze($n(this._stopScrolling,this._destroyed))).subscribe(()=>{const{maxScrollDistance:r,distance:o}=this._scrollHeader(e);(0===o||o>=r)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};const i=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(i,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:i,distance:this._scrollDistance}}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(en),m(As),m(In,8),m(Y),m(pt),m(Jt,8))},t.\u0275dir=M({type:t,inputs:{disablePagination:"disablePagination"}}),t})(),Xee=(()=>{class t extends Kee{get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=Ve(e)}constructor(e,i,r,o,s,a,l){super(e,i,r,o,s,a,l),this._disableRipple=!1}_itemSelected(e){e.preventDefault()}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(en),m(As),m(In,8),m(Y),m(pt),m(Jt,8))},t.\u0275dir=M({type:t,inputs:{disableRipple:"disableRipple"},features:[P]}),t})(),Qee=(()=>{class t extends Xee{constructor(e,i,r,o,s,a,l){super(e,i,r,o,s,a,l)}ngAfterContentInit(){this._inkBar=new Hee(this._items),super.ngAfterContentInit()}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(en),m(As),m(In,8),m(Y),m(pt),m(Jt,8))},t.\u0275cmp=G({type:t,selectors:[["mat-tab-header"]],contentQueries:function(e,i,r){if(1&e&&Ye(r,DF,4),2&e){let o;Q(o=J())&&(i._items=o)}},viewQuery:function(e,i){if(1&e&&(Ge(xee,7),Ge(Cee,7),Ge(Dee,7),Ge(Eee,5),Ge(See,5)),2&e){let r;Q(r=J())&&(i._tabListContainer=r.first),Q(r=J())&&(i._tabList=r.first),Q(r=J())&&(i._tabListInner=r.first),Q(r=J())&&(i._nextPaginator=r.first),Q(r=J())&&(i._previousPaginator=r.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(e,i){2&e&&ce("mat-mdc-tab-header-pagination-controls-enabled",i._showPaginationControls)("mat-mdc-tab-header-rtl","rtl"==i._getLayoutDirection())},inputs:{selectedIndex:"selectedIndex"},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"},features:[P],ngContentSelectors:yF,decls:13,vars:10,consts:[["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"matRippleDisabled","disabled","click","mousedown","touchend"],["previousPaginator",""],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["tabListContainer",""],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],["tabList",""],[1,"mat-mdc-tab-labels"],["tabListInner",""],["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"matRippleDisabled","disabled","mousedown","click","touchend"],["nextPaginator",""]],template:function(e,i){1&e&&(Bt(),x(0,"button",0,1),re("click",function(){return i._handlePaginatorClick("before")})("mousedown",function(o){return i._handlePaginatorPress("before",o)})("touchend",function(){return i._stopInterval()}),z(2,"div",2),E(),x(3,"div",3,4),re("keydown",function(o){return i._handleKeydown(o)}),x(5,"div",5,6),re("cdkObserveContent",function(){return i._onContentChanges()}),x(7,"div",7,8),Se(9),E()()(),x(10,"button",9,10),re("mousedown",function(o){return i._handlePaginatorPress("after",o)})("click",function(){return i._handlePaginatorClick("after")})("touchend",function(){return i._stopInterval()}),z(12,"div",2),E()),2&e&&(ce("mat-mdc-tab-header-pagination-disabled",i._disableScrollBefore),S("matRippleDisabled",i._disableScrollBefore||i.disableRipple)("disabled",i._disableScrollBefore||null),D(3),ce("_mat-animation-noopable","NoopAnimations"===i._animationMode),D(7),ce("mat-mdc-tab-header-pagination-disabled",i._disableScrollAfter),S("matRippleDisabled",i._disableScrollAfter||i.disableRipple)("disabled",i._disableScrollAfter||null))},dependencies:[Cs,bm],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}._mat-animation-noopable span.mdc-tab-indicator__content,._mat-animation-noopable span.mdc-tab__text-label{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.mat-mdc-tab::before{margin:5px}.cdk-high-contrast-active .mat-mdc-tab[aria-disabled=true]{color:GrayText}"],encapsulation:2}),t})();const MF=new k("MAT_TABS_CONFIG");let Jee=0;const ete=b0(zO(class{constructor(t){this._elementRef=t}}),"primary");let tte=(()=>{class t extends ete{get dynamicHeight(){return this._dynamicHeight}set dynamicHeight(e){this._dynamicHeight=Ve(e)}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=si(e,null)}get animationDuration(){return this._animationDuration}set animationDuration(e){this._animationDuration=/^\d+$/.test(e+"")?e+"ms":e}get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=si(e,null)}get disablePagination(){return this._disablePagination}set disablePagination(e){this._disablePagination=Ve(e)}get preserveContent(){return this._preserveContent}set preserveContent(e){this._preserveContent=Ve(e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){const i=this._elementRef.nativeElement.classList;i.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&i.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}constructor(e,i,r,o){super(e),this._changeDetectorRef=i,this._animationMode=o,this._tabs=new Ca,this._indexToSelect=0,this._lastFocusedTabIndex=null,this._tabBodyWrapperHeight=0,this._tabsSubscription=rt.EMPTY,this._tabLabelSubscription=rt.EMPTY,this._dynamicHeight=!1,this._selectedIndex=null,this.headerPosition="above",this._disablePagination=!1,this._preserveContent=!1,this.selectedIndexChange=new ee,this.focusChange=new ee,this.animationDone=new ee,this.selectedTabChange=new ee(!0),this._groupId=Jee++,this.animationDuration=r&&r.animationDuration?r.animationDuration:"500ms",this.disablePagination=!(!r||null==r.disablePagination)&&r.disablePagination,this.dynamicHeight=!(!r||null==r.dynamicHeight)&&r.dynamicHeight,this.contentTabIndex=r?.contentTabIndex??null,this.preserveContent=!!r?.preserveContent}ngAfterContentChecked(){const e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){const i=null==this._selectedIndex;if(!i){this.selectedTabChange.emit(this._createChangeEvent(e));const r=this._tabBodyWrapper.nativeElement;r.style.minHeight=r.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((r,o)=>r.isActive=o===e),i||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((i,r)=>{i.position=r-e,null!=this._selectedIndex&&0==i.position&&!i.origin&&(i.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{const e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){const i=this._tabs.toArray();let r;for(let o=0;o{i[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(cr(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(i=>i._closestTabGroup===this||!i._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){const i=this._tabHeader;i&&(i.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){const i=new ite;return i.index=e,this._tabs&&this._tabs.length&&(i.tab=this._tabs.toArray()[e]),i}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=$n(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e){return`mat-tab-label-${this._groupId}-${e}`}_getTabContentId(e){return`mat-tab-content-${this._groupId}-${e}`}_setTabBodyWrapperHeight(e){if(!this._dynamicHeight||!this._tabBodyWrapperHeight)return;const i=this._tabBodyWrapper.nativeElement;i.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(i.style.height=e+"px")}_removeTabBodyWrapperHeight(){const e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this.animationDone.emit()}_handleClick(e,i,r){i.focusIndex=r,e.disabled||(this.selectedIndex=r)}_getTabIndex(e){return e===(this._lastFocusedTabIndex??this.selectedIndex)?0:-1}_tabFocusChanged(e,i){e&&"mouse"!==e&&"touch"!==e&&(this._tabHeader.focusIndex=i)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(en),m(MF,8),m(Jt,8))},t.\u0275dir=M({type:t,inputs:{dynamicHeight:"dynamicHeight",selectedIndex:"selectedIndex",headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:"contentTabIndex",disablePagination:"disablePagination",preserveContent:"preserveContent",backgroundColor:"backgroundColor"},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},features:[P]}),t})(),nte=(()=>{class t extends tte{get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=Ve(e),this._changeDetectorRef.markForCheck()}get stretchTabs(){return this._stretchTabs}set stretchTabs(e){this._stretchTabs=Ve(e)}constructor(e,i,r,o){super(e,i,r,o),this._fitInkBarToContent=!1,this._stretchTabs=!0,this.fitInkBarToContent=!(!r||null==r.fitInkBarToContent)&&r.fitInkBarToContent}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(en),m(MF,8),m(Jt,8))},t.\u0275cmp=G({type:t,selectors:[["mat-tab-group"]],contentQueries:function(e,i,r){if(1&e&&Ye(r,SF,5),2&e){let o;Q(o=J())&&(i._allTabs=o)}},viewQuery:function(e,i){if(1&e&&(Ge(kee,5),Ge(Mee,5)),2&e){let r;Q(r=J())&&(i._tabBodyWrapper=r.first),Q(r=J())&&(i._tabHeader=r.first)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:6,hostBindings:function(e,i){2&e&&ce("mat-mdc-tab-group-dynamic-height",i.dynamicHeight)("mat-mdc-tab-group-inverted-header","below"===i.headerPosition)("mat-mdc-tab-group-stretch-tabs",i.stretchTabs)},inputs:{color:"color",disableRipple:"disableRipple",fitInkBarToContent:"fitInkBarToContent",stretchTabs:["mat-stretch-tabs","stretchTabs"]},exportAs:["matTabGroup"],features:[ie([{provide:EF,useExisting:t}]),P],decls:6,vars:7,consts:[[3,"selectedIndex","disableRipple","disablePagination","indexFocused","selectFocusedIndex"],["tabHeader",""],["class","mdc-tab mat-mdc-tab mat-mdc-focus-indicator","role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",3,"id","mdc-tab--active","ngClass","disabled","fitInkBarToContent","click","cdkFocusChange",4,"ngFor","ngForOf"],[1,"mat-mdc-tab-body-wrapper"],["tabBodyWrapper",""],["role","tabpanel",3,"id","mat-mdc-tab-body-active","ngClass","content","position","origin","animationDuration","preserveContent","_onCentered","_onCentering",4,"ngFor","ngForOf"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-mdc-focus-indicator",3,"id","ngClass","disabled","fitInkBarToContent","click","cdkFocusChange"],["tabNode",""],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"ngIf","ngIfElse"],["tabTextLabel",""],[3,"cdkPortalOutlet"],["role","tabpanel",3,"id","ngClass","content","position","origin","animationDuration","preserveContent","_onCentered","_onCentering"]],template:function(e,i){1&e&&(x(0,"mat-tab-header",0,1),re("indexFocused",function(o){return i._focusChanged(o)})("selectFocusedIndex",function(o){return i.selectedIndex=o}),O(2,Oee,9,17,"div",2),E(),x(3,"div",3,4),O(5,Ree,1,11,"mat-tab-body",5),E()),2&e&&(S("selectedIndex",i.selectedIndex||0)("disableRipple",i.disableRipple)("disablePagination",i.disablePagination),D(2),S("ngForOf",i._tabs),D(1),ce("_mat-animation-noopable","NoopAnimations"===i._animationMode),D(2),S("ngForOf",i._tabs))},dependencies:[fM,cs,Vn,gl,Cs,LK,wF,DF,Qee],styles:['.mdc-tab{min-width:90px;padding-right:24px;padding-left:24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;margin:0;padding-top:0;padding-bottom:0;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1}.mdc-tab::-moz-focus-inner{padding:0;border:0}.mdc-tab[hidden]{display:none}.mdc-tab--min-width{flex:0 1 auto}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab__icon{transition:150ms color linear;z-index:2}.mdc-tab--stacked .mdc-tab__content{flex-direction:column;align-items:center;justify-content:center}.mdc-tab--stacked .mdc-tab__text-label{padding-top:6px;padding-bottom:4px}.mdc-tab--active .mdc-tab__text-label,.mdc-tab--active .mdc-tab__icon{transition-delay:100ms}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:8px;padding-right:0}[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label,.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label[dir=rtl]{padding-left:0;padding-right:8px}.mdc-tab-indicator .mdc-tab-indicator__content--underline{border-top-width:2px}.mdc-tab-indicator .mdc-tab-indicator__content--icon{height:34px;font-size:34px}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator .mdc-tab-indicator__content{transition:250ms transform cubic-bezier(0.4, 0, 0.2, 1)}.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition:150ms opacity linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition-delay:100ms}.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-tab.mdc-tab{height:48px;flex-grow:0}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none}.mat-mdc-tab .mdc-tab__text-label{display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-disabled{opacity:.4}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-mdc-tab-header-with-background-background-color, transparent)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-focus-indicator::before{border-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{border-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}'],encapsulation:2}),t})();class ite{}let rte=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Re,Dt,_l,Ed,vm,VO,Dt]}),t})();const TF=yO();class ote{constructor(n,e){this._viewportRuler=n,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=e}attach(){}enable(){if(this._canBeEnabled()){const n=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=n.style.left||"",this._previousHTMLStyles.top=n.style.top||"",n.style.left=Ut(-this._previousScrollPosition.left),n.style.top=Ut(-this._previousScrollPosition.top),n.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const n=this._document.documentElement,i=n.style,r=this._document.body.style,o=i.scrollBehavior||"",s=r.scrollBehavior||"";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,n.classList.remove("cdk-global-scrollblock"),TF&&(i.scrollBehavior=r.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),TF&&(i.scrollBehavior=o,r.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const e=this._document.body,i=this._viewportRuler.getViewportSize();return e.scrollHeight>i.height||e.scrollWidth>i.width}}class ste{constructor(n,e,i,r){this._scrollDispatcher=n,this._ngZone=e,this._viewportRuler=i,this._config=r,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(n){this._overlayRef=n}enable(){if(this._scrollSubscription)return;const n=this._scrollDispatcher.scrolled(0).pipe(mt(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=n.subscribe(()=>{const e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=n.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}class AF{enable(){}disable(){}attach(){}}function aw(t,n){return n.some(e=>t.bottome.bottom||t.righte.right)}function IF(t,n){return n.some(e=>t.tope.bottom||t.lefte.right)}class ate{constructor(n,e,i,r){this._scrollDispatcher=n,this._viewportRuler=e,this._ngZone=i,this._config=r,this._scrollSubscription=null}attach(n){this._overlayRef=n}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:r}=this._viewportRuler.getViewportSize();aw(e,[{width:i,height:r,bottom:r,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let lte=(()=>{class t{constructor(e,i,r,o){this._scrollDispatcher=e,this._viewportRuler=i,this._ngZone=r,this.noop=()=>new AF,this.close=s=>new ste(this._scrollDispatcher,this._ngZone,this._viewportRuler,s),this.block=()=>new ote(this._viewportRuler,this._document),this.reposition=s=>new ate(this._scrollDispatcher,this._viewportRuler,this._ngZone,s),this._document=o}}return t.\u0275fac=function(e){return new(e||t)(_(tp),_(As),_(Y),_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();class lw{constructor(n){if(this.scrollStrategy=new AF,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,n){const e=Object.keys(n);for(const i of e)void 0!==n[i]&&(this[i]=n[i])}}}class np{constructor(n,e,i,r,o){this.offsetX=i,this.offsetY=r,this.panelClass=o,this.originX=n.originX,this.originY=n.originY,this.overlayX=e.overlayX,this.overlayY=e.overlayY}}class cte{constructor(n,e){this.connectionPair=n,this.scrollableViewProperties=e}}let OF=(()=>{class t{constructor(e){this._attachedOverlays=[],this._document=e}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){const i=this._attachedOverlays.indexOf(e);i>-1&&this._attachedOverlays.splice(i,1),0===this._attachedOverlays.length&&this.detach()}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),dte=(()=>{class t extends OF{constructor(e,i){super(e),this._ngZone=i,this._keydownListener=r=>{const o=this._attachedOverlays;for(let s=o.length-1;s>-1;s--)if(o[s]._keydownEvents.observers.length>0){const a=o[s]._keydownEvents;this._ngZone?this._ngZone.run(()=>a.next(r)):a.next(r);break}}}add(e){super.add(e),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}}return t.\u0275fac=function(e){return new(e||t)(_(ge),_(Y,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),ute=(()=>{class t extends OF{constructor(e,i,r){super(e),this._platform=i,this._ngZone=r,this._cursorStyleIsSet=!1,this._pointerDownListener=o=>{this._pointerDownEventTarget=Vo(o)},this._clickListener=o=>{const s=Vo(o),a="click"===o.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:s;this._pointerDownEventTarget=null;const l=this._attachedOverlays.slice();for(let c=l.length-1;c>-1;c--){const d=l[c];if(d._outsidePointerEvents.observers.length<1||!d.hasAttached())continue;if(d.overlayElement.contains(s)||d.overlayElement.contains(a))break;const u=d._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>u.next(o)):u.next(o)}}}add(e){if(super.add(e),!this._isAttached){const i=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(i)):this._addEventListeners(i),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const e=this._document.body;e.removeEventListener("pointerdown",this._pointerDownListener,!0),e.removeEventListener("click",this._clickListener,!0),e.removeEventListener("auxclick",this._clickListener,!0),e.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(e.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(e){e.addEventListener("pointerdown",this._pointerDownListener,!0),e.addEventListener("click",this._clickListener,!0),e.addEventListener("auxclick",this._clickListener,!0),e.addEventListener("contextmenu",this._clickListener,!0)}}return t.\u0275fac=function(e){return new(e||t)(_(ge),_(pt),_(Y,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),ip=(()=>{class t{constructor(e,i){this._platform=i,this._document=e}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const e="cdk-overlay-container";if(this._platform.isBrowser||d0()){const r=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let o=0;othis._backdropClick.next(u),this._backdropTransitionendHandler=u=>{this._disposeBackdrop(u.target)},this._keydownEvents=new te,this._outsidePointerEvents=new te,r.scrollStrategy&&(this._scrollStrategy=r.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=r.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(n){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const e=this._portalOutlet.attach(n);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(qt(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof e?.onDestroy&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const n=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),n}dispose(){const n=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._previousHostParent=this._pane=this._host=null,n&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(n){n!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=n,this.hasAttached()&&(n.attach(this),this.updatePosition()))}updateSize(n){this._config={...this._config,...n},this._updateElementSize()}setDirection(n){this._config={...this._config,direction:n},this._updateElementDirection()}addPanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!0)}removePanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!1)}getDirection(){const n=this._config.direction;return n?"string"==typeof n?n:n.value:"ltr"}updateScrollStrategy(n){n!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=n,this.hasAttached()&&(n.attach(this),n.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const n=this._pane.style;n.width=Ut(this._config.width),n.height=Ut(this._config.height),n.minWidth=Ut(this._config.minWidth),n.minHeight=Ut(this._config.minHeight),n.maxWidth=Ut(this._config.maxWidth),n.maxHeight=Ut(this._config.maxHeight)}_togglePointerEvents(n){this._pane.style.pointerEvents=n?"":"none"}_attachBackdrop(){const n="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(n)})}):this._backdropElement.classList.add(n)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const n=this._backdropElement;if(n){if(this._animationsDisabled)return void this._disposeBackdrop(n);n.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{n.addEventListener("transitionend",this._backdropTransitionendHandler)}),n.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(n)},500))}}_toggleClasses(n,e,i){const r=_m(e||[]).filter(o=>!!o);r.length&&(i?n.classList.add(...r):n.classList.remove(...r))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{const n=this._ngZone.onStable.pipe(ze($n(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),n.unsubscribe())})})}_disposeScrollStrategy(){const n=this._scrollStrategy;n&&(n.disable(),n.detach&&n.detach())}_disposeBackdrop(n){n&&(n.removeEventListener("click",this._backdropClickHandler),n.removeEventListener("transitionend",this._backdropTransitionendHandler),n.remove(),this._backdropElement===n&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const RF="cdk-overlay-connected-position-bounding-box",hte=/([A-Za-z%]+)$/;class fte{get positions(){return this._preferredPositions}constructor(n,e,i,r,o){this._viewportRuler=e,this._document=i,this._platform=r,this._overlayContainer=o,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new te,this._resizeSubscription=rt.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(n)}attach(n){this._validatePositions(),n.hostElement.classList.add(RF),this._overlayRef=n,this._boundingBox=n.hostElement,this._pane=n.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const n=this._originRect,e=this._overlayRect,i=this._viewportRect,r=this._containerRect,o=[];let s;for(let a of this._preferredPositions){let l=this._getOriginPoint(n,r,a),c=this._getOverlayPoint(l,e,a),d=this._getOverlayFit(c,e,i,a);if(d.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(a,l);this._canFitWithFlexibleDimensions(d,c,i)?o.push({position:a,origin:l,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(l,a)}):(!s||s.overlayFit.visibleAreal&&(l=d,a=c)}return this._isPushed=!1,void this._applyPosition(a.position,a.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(s.position,s.originPoint);this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Is(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(RF),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const n=this._lastPosition;if(n){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const e=this._getOriginPoint(this._originRect,this._containerRect,n);this._applyPosition(n,e)}else this.apply()}withScrollableContainers(n){return this._scrollables=n,this}withPositions(n){return this._preferredPositions=n,-1===n.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(n){return this._viewportMargin=n,this}withFlexibleDimensions(n=!0){return this._hasFlexibleDimensions=n,this}withGrowAfterOpen(n=!0){return this._growAfterOpen=n,this}withPush(n=!0){return this._canPush=n,this}withLockedPosition(n=!0){return this._positionLocked=n,this}setOrigin(n){return this._origin=n,this}withDefaultOffsetX(n){return this._offsetX=n,this}withDefaultOffsetY(n){return this._offsetY=n,this}withTransformOriginOn(n){return this._transformOriginSelector=n,this}_getOriginPoint(n,e,i){let r,o;if("center"==i.originX)r=n.left+n.width/2;else{const s=this._isRtl()?n.right:n.left,a=this._isRtl()?n.left:n.right;r="start"==i.originX?s:a}return e.left<0&&(r-=e.left),o="center"==i.originY?n.top+n.height/2:"top"==i.originY?n.top:n.bottom,e.top<0&&(o-=e.top),{x:r,y:o}}_getOverlayPoint(n,e,i){let r,o;return r="center"==i.overlayX?-e.width/2:"start"===i.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,o="center"==i.overlayY?-e.height/2:"top"==i.overlayY?0:-e.height,{x:n.x+r,y:n.y+o}}_getOverlayFit(n,e,i,r){const o=PF(e);let{x:s,y:a}=n,l=this._getOffset(r,"x"),c=this._getOffset(r,"y");l&&(s+=l),c&&(a+=c);let h=0-a,f=a+o.height-i.height,p=this._subtractOverflows(o.width,0-s,s+o.width-i.width),g=this._subtractOverflows(o.height,h,f),b=p*g;return{visibleArea:b,isCompletelyWithinViewport:o.width*o.height===b,fitsInViewportVertically:g===o.height,fitsInViewportHorizontally:p==o.width}}_canFitWithFlexibleDimensions(n,e,i){if(this._hasFlexibleDimensions){const r=i.bottom-e.y,o=i.right-e.x,s=FF(this._overlayRef.getConfig().minHeight),a=FF(this._overlayRef.getConfig().minWidth);return(n.fitsInViewportVertically||null!=s&&s<=r)&&(n.fitsInViewportHorizontally||null!=a&&a<=o)}return!1}_pushOverlayOnScreen(n,e,i){if(this._previousPushAmount&&this._positionLocked)return{x:n.x+this._previousPushAmount.x,y:n.y+this._previousPushAmount.y};const r=PF(e),o=this._viewportRect,s=Math.max(n.x+r.width-o.width,0),a=Math.max(n.y+r.height-o.height,0),l=Math.max(o.top-i.top-n.y,0),c=Math.max(o.left-i.left-n.x,0);let d=0,u=0;return d=r.width<=o.width?c||-s:n.xp&&!this._isInitialRender&&!this._growAfterOpen&&(s=n.y-p/2)}if("end"===e.overlayX&&!r||"start"===e.overlayX&&r)h=i.width-n.x+this._viewportMargin,d=n.x-this._viewportMargin;else if("start"===e.overlayX&&!r||"end"===e.overlayX&&r)u=n.x,d=i.right-n.x;else{const f=Math.min(i.right-n.x+i.left,n.x),p=this._lastBoundingBoxSize.width;d=2*f,u=n.x-f,d>p&&!this._isInitialRender&&!this._growAfterOpen&&(u=n.x-p/2)}return{top:s,left:u,bottom:a,right:h,width:d,height:o}}_setBoundingBoxStyles(n,e){const i=this._calculateBoundingBoxRect(n,e);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));const r={};if(this._hasExactPosition())r.top=r.left="0",r.bottom=r.right=r.maxHeight=r.maxWidth="",r.width=r.height="100%";else{const o=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;r.height=Ut(i.height),r.top=Ut(i.top),r.bottom=Ut(i.bottom),r.width=Ut(i.width),r.left=Ut(i.left),r.right=Ut(i.right),r.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",r.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",o&&(r.maxHeight=Ut(o)),s&&(r.maxWidth=Ut(s))}this._lastBoundingBoxSize=i,Is(this._boundingBox.style,r)}_resetBoundingBoxStyles(){Is(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Is(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(n,e){const i={},r=this._hasExactPosition(),o=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(r){const d=this._viewportRuler.getViewportScrollPosition();Is(i,this._getExactOverlayY(e,n,d)),Is(i,this._getExactOverlayX(e,n,d))}else i.position="static";let a="",l=this._getOffset(e,"x"),c=this._getOffset(e,"y");l&&(a+=`translateX(${l}px) `),c&&(a+=`translateY(${c}px)`),i.transform=a.trim(),s.maxHeight&&(r?i.maxHeight=Ut(s.maxHeight):o&&(i.maxHeight="")),s.maxWidth&&(r?i.maxWidth=Ut(s.maxWidth):o&&(i.maxWidth="")),Is(this._pane.style,i)}_getExactOverlayY(n,e,i){let r={top:"",bottom:""},o=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i)),"bottom"===n.overlayY?r.bottom=this._document.documentElement.clientHeight-(o.y+this._overlayRect.height)+"px":r.top=Ut(o.y),r}_getExactOverlayX(n,e,i){let s,r={left:"",right:""},o=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i)),s=this._isRtl()?"end"===n.overlayX?"left":"right":"end"===n.overlayX?"right":"left","right"===s?r.right=this._document.documentElement.clientWidth-(o.x+this._overlayRect.width)+"px":r.left=Ut(o.x),r}_getScrollVisibility(){const n=this._getOriginRect(),e=this._pane.getBoundingClientRect(),i=this._scrollables.map(r=>r.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:IF(n,i),isOriginOutsideView:aw(n,i),isOverlayClipped:IF(e,i),isOverlayOutsideView:aw(e,i)}}_subtractOverflows(n,...e){return e.reduce((i,r)=>i-Math.max(r,0),n)}_getNarrowedViewportRect(){const n=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._viewportMargin,left:i.left+this._viewportMargin,right:i.left+n-this._viewportMargin,bottom:i.top+e-this._viewportMargin,width:n-2*this._viewportMargin,height:e-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(n,e){return"x"===e?null==n.offsetX?this._offsetX:n.offsetX:null==n.offsetY?this._offsetY:n.offsetY}_validatePositions(){}_addPanelClasses(n){this._pane&&_m(n).forEach(e=>{""!==e&&-1===this._appliedPanelClasses.indexOf(e)&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(n=>{this._pane.classList.remove(n)}),this._appliedPanelClasses=[])}_getOriginRect(){const n=this._origin;if(n instanceof H)return n.nativeElement.getBoundingClientRect();if(n instanceof Element)return n.getBoundingClientRect();const e=n.width||0,i=n.height||0;return{top:n.y,bottom:n.y+i,left:n.x,right:n.x+e,height:i,width:e}}}function Is(t,n){for(let e in n)n.hasOwnProperty(e)&&(t[e]=n[e]);return t}function FF(t){if("number"!=typeof t&&null!=t){const[n,e]=t.split(hte);return e&&"px"!==e?null:parseFloat(n)}return t||null}function PF(t){return{top:Math.floor(t.top),right:Math.floor(t.right),bottom:Math.floor(t.bottom),left:Math.floor(t.left),width:Math.floor(t.width),height:Math.floor(t.height)}}const NF="cdk-global-overlay-wrapper";class mte{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(n){const e=n.getConfig();this._overlayRef=n,this._width&&!e.width&&n.updateSize({width:this._width}),this._height&&!e.height&&n.updateSize({height:this._height}),n.hostElement.classList.add(NF),this._isDisposed=!1}top(n=""){return this._bottomOffset="",this._topOffset=n,this._alignItems="flex-start",this}left(n=""){return this._xOffset=n,this._xPosition="left",this}bottom(n=""){return this._topOffset="",this._bottomOffset=n,this._alignItems="flex-end",this}right(n=""){return this._xOffset=n,this._xPosition="right",this}start(n=""){return this._xOffset=n,this._xPosition="start",this}end(n=""){return this._xOffset=n,this._xPosition="end",this}width(n=""){return this._overlayRef?this._overlayRef.updateSize({width:n}):this._width=n,this}height(n=""){return this._overlayRef?this._overlayRef.updateSize({height:n}):this._height=n,this}centerHorizontally(n=""){return this.left(n),this._xPosition="center",this}centerVertically(n=""){return this.top(n),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:r,height:o,maxWidth:s,maxHeight:a}=i,l=!("100%"!==r&&"100vw"!==r||s&&"100%"!==s&&"100vw"!==s),c=!("100%"!==o&&"100vh"!==o||a&&"100%"!==a&&"100vh"!==a),d=this._xPosition,u=this._xOffset,h="rtl"===this._overlayRef.getConfig().direction;let f="",p="",g="";l?g="flex-start":"center"===d?(g="center",h?p=u:f=u):h?"left"===d||"end"===d?(g="flex-end",f=u):("right"===d||"start"===d)&&(g="flex-start",p=u):"left"===d||"start"===d?(g="flex-start",f=u):("right"===d||"end"===d)&&(g="flex-end",p=u),n.position=this._cssPosition,n.marginLeft=l?"0":f,n.marginTop=c?"0":this._topOffset,n.marginBottom=this._bottomOffset,n.marginRight=l?"0":p,e.justifyContent=g,e.alignItems=c?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,i=e.style;e.classList.remove(NF),i.justifyContent=i.alignItems=n.marginTop=n.marginBottom=n.marginLeft=n.marginRight=n.position="",this._overlayRef=null,this._isDisposed=!0}}let pte=(()=>{class t{constructor(e,i,r,o){this._viewportRuler=e,this._document=i,this._platform=r,this._overlayContainer=o}global(){return new mte}flexibleConnectedTo(e){return new fte(e,this._viewportRuler,this._document,this._platform,this._overlayContainer)}}return t.\u0275fac=function(e){return new(e||t)(_(As),_(ge),_(pt),_(ip))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),gte=0,no=(()=>{class t{constructor(e,i,r,o,s,a,l,c,d,u,h,f){this.scrollStrategies=e,this._overlayContainer=i,this._componentFactoryResolver=r,this._positionBuilder=o,this._keyboardDispatcher=s,this._injector=a,this._ngZone=l,this._document=c,this._directionality=d,this._location=u,this._outsideClickDispatcher=h,this._animationsModuleType=f}create(e){const i=this._createHostElement(),r=this._createPaneElement(i),o=this._createPortalOutlet(r),s=new lw(e);return s.direction=s.direction||this._directionality.value,new Fd(o,i,r,s,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType)}position(){return this._positionBuilder}_createPaneElement(e){const i=this._document.createElement("div");return i.id="cdk-overlay-"+gte++,i.classList.add("cdk-overlay-pane"),e.appendChild(i),i}_createHostElement(){const e=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(e),e}_createPortalOutlet(e){return this._appRef||(this._appRef=this._injector.get(as)),new XX(e,this._componentFactoryResolver,this._appRef,this._injector,this._document)}}return t.\u0275fac=function(e){return new(e||t)(_(lte),_(ip),_(Ri),_(pte),_(dte),_(kt),_(Y),_(ge),_(In),_(fc),_(ute),_(Jt,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const _te=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],LF=new k("cdk-connected-overlay-scroll-strategy");let BF=(()=>{class t{constructor(e){this.elementRef=e}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0}),t})(),VF=(()=>{class t{get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(e){this._hasBackdrop=Ve(e)}get lockPosition(){return this._lockPosition}set lockPosition(e){this._lockPosition=Ve(e)}get flexibleDimensions(){return this._flexibleDimensions}set flexibleDimensions(e){this._flexibleDimensions=Ve(e)}get growAfterOpen(){return this._growAfterOpen}set growAfterOpen(e){this._growAfterOpen=Ve(e)}get push(){return this._push}set push(e){this._push=Ve(e)}constructor(e,i,r,o,s){this._overlay=e,this._dir=s,this._hasBackdrop=!1,this._lockPosition=!1,this._growAfterOpen=!1,this._flexibleDimensions=!1,this._push=!1,this._backdropSubscription=rt.EMPTY,this._attachSubscription=rt.EMPTY,this._detachSubscription=rt.EMPTY,this._positionSubscription=rt.EMPTY,this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.backdropClick=new ee,this.positionChange=new ee,this.attach=new ee,this.detach=new ee,this.overlayKeydown=new ee,this.overlayOutsideClick=new ee,this._templatePortal=new pl(i,r),this._scrollStrategyFactory=o,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=_te);const e=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(i=>{this.overlayKeydown.next(i),27===i.keyCode&&!this.disableClose&&!cl(i)&&(i.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(i=>{this.overlayOutsideClick.next(i)})}_buildConfig(){const e=this._position=this.positionStrategy||this._createPositionStrategy(),i=new lw({direction:this._dir,positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop});return(this.width||0===this.width)&&(i.width=this.width),(this.height||0===this.height)&&(i.height=this.height),(this.minWidth||0===this.minWidth)&&(i.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(i.minHeight=this.minHeight),this.backdropClass&&(i.backdropClass=this.backdropClass),this.panelClass&&(i.panelClass=this.panelClass),i}_updatePositionStrategy(e){const i=this.positions.map(r=>({originX:r.originX,originY:r.originY,overlayX:r.overlayX,overlayY:r.overlayY,offsetX:r.offsetX||this.offsetX,offsetY:r.offsetY||this.offsetY,panelClass:r.panelClass||void 0}));return e.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(i).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const e=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(e),e}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof BF?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(e=>{this.backdropClick.emit(e)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(DA(()=>this.positionChange.observers.length>0)).subscribe(e=>{this.positionChange.emit(e),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(m(no),m(bt),m(it),m(LF),m(In,8))},t.\u0275dir=M({type:t,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:["cdkConnectedOverlayOrigin","origin"],positions:["cdkConnectedOverlayPositions","positions"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:["cdkConnectedOverlayOpen","open"],disableClose:["cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop"],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition"],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions"],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen"],push:["cdkConnectedOverlayPush","push"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[at]}),t})();const vte={provide:LF,deps:[no],useFactory:function bte(t){return()=>t.scrollStrategies.reposition()}};let rp=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:[no,vte],imports:[Cd,_l,ow,ow]}),t})(),jF=(()=>{var t;class n{constructor(){this.el=R(H).nativeElement,this.overlayRef=R(no).create({positionStrategy:R(no).position().flexibleConnectedTo(this.el).withPositions([new np({originX:"end",originY:"bottom"},{overlayX:"end",overlayY:"top"}),new np({originX:"start",originY:"top"},{overlayX:"start",overlayY:"bottom"}),new np({originX:"start",originY:"bottom"},{overlayX:"start",overlayY:"top"}),new np({originX:"end",originY:"top"},{overlayX:"end",overlayY:"bottom"})]).withPush(!0)}),this.viewContainerRef=R(it)}set content(i){this.portal=new pl(i,this.viewContainerRef,this._data),this.updateContent()}set data(i){this._data={$implicit:i},this.portal&&(this.portal.context=this._data,this.updateContent())}startHover(){const{overlayRef:i,portal:r}=this;!i.hasAttached()&&r&&i.attach(r)}endHover(){const{overlayRef:i}=this;i.hasAttached()&&i.detach()}updateContent(){const{overlayRef:i,portal:r}=this;i.hasAttached()&&r&&(i.detach(),i.attach(r))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275dir=M({type:t,selectors:[["","hraHover",""]],hostBindings:function(i,r){1&i&&re("mouseover",function(){return r.startHover()})("mouseout",function(){return r.endHover()})},inputs:{content:["hraHover","content"],data:["hraHoverData","data"]},standalone:!0}),n})(),Pd=(()=>{class t{static url({url:e}){return e}static selectedOnHovered({selectedOnHover:e}){return e}static selectedOnClicked({selectedOnClick:e}){return e}static mapping({mapping:e}){return e}}return U([Ct([bl]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"url",null),U([Ct([bl]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"selectedOnHovered",null),U([Ct([bl]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"selectedOnClicked",null),U([Ct([bl]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Array)],t,"mapping",null),t})(),yte=(()=>{var t;class n{constructor(){this.gradient=[]}get gradientCss(){return`linear-gradient(90deg, ${this.gradient.map(({color:r,percentage:o})=>`${r} ${o}%`).join(",")})`}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-gradient-legend"]],inputs:{gradient:"gradient"},standalone:!0,features:[Be],decls:7,vars:2,consts:[[1,"gradient-bar"],[1,"legend"],[1,"start"],[1,"filler"],[1,"end"]],template:function(i,r){1&i&&(z(0,"div",0),x(1,"div",1)(2,"div",2),N(3,"0.0"),E(),z(4,"div",3),x(5,"div",4),N(6,"1.0"),E()()),2&i&&tr("background",r.gradientCss)},dependencies:[Re],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .gradient-bar[_ngcontent-%COMP%]{height:1.5rem;width:100%}[_nghost-%COMP%] .legend[_ngcontent-%COMP%]{display:flex}[_nghost-%COMP%] .legend[_ngcontent-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}"],changeDetection:0}),n})();function wte(t,n){if(1&t&&(x(0,"div",1),z(1,"div",2)(2,"div",3)(3,"div",2),x(4,"div",4),N(5),E()()),2&t){const e=n.$implicit;D(2),tS("--size: ",e.radius,"rem"),D(3),Qt(e.label)}}let xte=(()=>{var t;class n{constructor(){this.sizes=[]}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-size-legend"]],inputs:{sizes:"sizes"},standalone:!0,features:[Be],decls:1,vars:1,consts:[["class","item",4,"ngFor","ngForOf"],[1,"item"],[1,"filler"],[1,"circle"],[1,"label"]],template:function(i,r){1&i&&O(0,wte,6,4,"div",0),2&i&&S("ngForOf",r.sizes)},dependencies:[Re,cs],styles:["[_nghost-%COMP%]{display:flex;flex-direction:row;column-gap:2rem}[_nghost-%COMP%] .item[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;line-height:.5rem}[_nghost-%COMP%] .item[_ngcontent-%COMP%] .circle[_ngcontent-%COMP%]{height:var(--size);width:var(--size);border-radius:50%;border:.125rem solid #75838f}[_nghost-%COMP%] .item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{margin-top:.5rem}[_nghost-%COMP%] .item[_ngcontent-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}"],changeDetection:0}),n})(),Cte=(()=>{var t;class n{constructor(){this.collaborateText="",this.message="",this.collaborateClick=new ee}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-empty-biomarker"]],inputs:{collaborateText:"collaborateText",message:"message"},outputs:{collaborateClick:"collaborateClick"},standalone:!0,features:[Be],decls:3,vars:2,consts:[[1,"message",3,"data"],["mat-flat-button","","color","primary",1,"collaborate-button",3,"click"]],template:function(i,r){1&i&&(z(0,"markdown",0),x(1,"button",1),re("click",function(s){return r.collaborateClick.emit(s)}),N(2),E()),2&i&&(S("data",r.message),D(2),nt(" ",r.collaborateText,"\n"))},dependencies:[Re,Xr,fl,Ts,Ms],styles:["[_nghost-%COMP%]{display:block;padding:2.625rem 2rem}[_nghost-%COMP%] .message[_ngcontent-%COMP%]{color:#243142}[_nghost-%COMP%] .collaborate-button[_ngcontent-%COMP%]{margin-top:2rem;font-weight:700;color:#fff;width:100%;max-width:17.25rem;height:3rem}"],changeDetection:0}),n})();const Dte=[[["caption"]],[["colgroup"],["col"]]],Ete=["caption","colgroup, col"];function cw(t){return class extends t{get sticky(){return this._sticky}set sticky(n){const e=this._sticky;this._sticky=Ve(n),this._hasStickyChanged=e!==this._sticky}hasStickyChanged(){const n=this._hasStickyChanged;return this._hasStickyChanged=!1,n}resetStickyChanged(){this._hasStickyChanged=!1}constructor(...n){super(...n),this._sticky=!1,this._hasStickyChanged=!1}}}const yl=new k("CDK_TABLE");let wl=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","cdkCellDef",""]]}),t})(),xl=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","cdkHeaderCellDef",""]]}),t})(),op=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","cdkFooterCellDef",""]]}),t})();class Tte{}const Ate=cw(Tte);let io=(()=>{class t extends Ate{get name(){return this._name}set name(e){this._setNameInput(e)}get stickyEnd(){return this._stickyEnd}set stickyEnd(e){const i=this._stickyEnd;this._stickyEnd=Ve(e),this._hasStickyChanged=i!==this._stickyEnd}constructor(e){super(),this._table=e,this._stickyEnd=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(e){e&&(this._name=e,this.cssClassFriendlyName=e.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}}return t.\u0275fac=function(e){return new(e||t)(m(yl,8))},t.\u0275dir=M({type:t,selectors:[["","cdkColumnDef",""]],contentQueries:function(e,i,r){if(1&e&&(Ye(r,wl,5),Ye(r,xl,5),Ye(r,op,5)),2&e){let o;Q(o=J())&&(i.cell=o.first),Q(o=J())&&(i.headerCell=o.first),Q(o=J())&&(i.footerCell=o.first)}},inputs:{sticky:"sticky",name:["cdkColumnDef","name"],stickyEnd:"stickyEnd"},features:[ie([{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:t}]),P]}),t})();class dw{constructor(n,e){e.nativeElement.classList.add(...n._columnCssClassName)}}let uw=(()=>{class t extends dw{constructor(e,i){super(e,i)}}return t.\u0275fac=function(e){return new(e||t)(m(io),m(H))},t.\u0275dir=M({type:t,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],features:[P]}),t})(),hw=(()=>{class t extends dw{constructor(e,i){if(super(e,i),1===e._table?._elementRef.nativeElement.nodeType){const r=e._table._elementRef.nativeElement.getAttribute("role");i.nativeElement.setAttribute("role","grid"===r||"treegrid"===r?"gridcell":"cell")}}}return t.\u0275fac=function(e){return new(e||t)(m(io),m(H))},t.\u0275dir=M({type:t,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],features:[P]}),t})();class zF{constructor(){this.tasks=[],this.endTasks=[]}}const fw=new k("_COALESCED_STYLE_SCHEDULER");let UF=(()=>{class t{constructor(e){this._ngZone=e,this._currentSchedule=null,this._destroyed=new te}schedule(e){this._createScheduleIfNeeded(),this._currentSchedule.tasks.push(e)}scheduleEnd(e){this._createScheduleIfNeeded(),this._currentSchedule.endTasks.push(e)}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}_createScheduleIfNeeded(){this._currentSchedule||(this._currentSchedule=new zF,this._getScheduleObservable().pipe(ze(this._destroyed)).subscribe(()=>{for(;this._currentSchedule.tasks.length||this._currentSchedule.endTasks.length;){const e=this._currentSchedule;this._currentSchedule=new zF;for(const i of e.tasks)i();for(const i of e.endTasks)i()}this._currentSchedule=null}))}_getScheduleObservable(){return this._ngZone.isStable?yt(Promise.resolve(void 0)):this._ngZone.onStable.pipe(qt(1))}}return t.\u0275fac=function(e){return new(e||t)(_(Y))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),mw=(()=>{class t{constructor(e,i){this.template=e,this._differs=i}ngOnChanges(e){if(!this._columnsDiffer){const i=e.columns&&e.columns.currentValue||[];this._columnsDiffer=this._differs.find(i).create(),this._columnsDiffer.diff(i)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(e){return this instanceof Nd?e.headerCell.template:this instanceof Ld?e.footerCell.template:e.cell.template}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(gi))},t.\u0275dir=M({type:t,features:[at]}),t})();class Ite extends mw{}const Ote=cw(Ite);let Nd=(()=>{class t extends Ote{constructor(e,i,r){super(e,i),this._table=r}ngOnChanges(e){super.ngOnChanges(e)}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(gi),m(yl,8))},t.\u0275dir=M({type:t,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:["cdkHeaderRowDef","columns"],sticky:["cdkHeaderRowDefSticky","sticky"]},features:[P,at]}),t})();class Rte extends mw{}const Fte=cw(Rte);let Ld=(()=>{class t extends Fte{constructor(e,i,r){super(e,i),this._table=r}ngOnChanges(e){super.ngOnChanges(e)}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(gi),m(yl,8))},t.\u0275dir=M({type:t,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:["cdkFooterRowDef","columns"],sticky:["cdkFooterRowDefSticky","sticky"]},features:[P,at]}),t})(),sp=(()=>{class t extends mw{constructor(e,i,r){super(e,i),this._table=r}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(gi),m(yl,8))},t.\u0275dir=M({type:t,selectors:[["","cdkRowDef",""]],inputs:{columns:["cdkRowDefColumns","columns"],when:["cdkRowDefWhen","when"]},features:[P]}),t})(),ro=(()=>{class t{constructor(e){this._viewContainer=e,t.mostRecentCellOutlet=this}ngOnDestroy(){t.mostRecentCellOutlet===this&&(t.mostRecentCellOutlet=null)}}return t.mostRecentCellOutlet=null,t.\u0275fac=function(e){return new(e||t)(m(it))},t.\u0275dir=M({type:t,selectors:[["","cdkCellOutlet",""]]}),t})(),pw=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=G({type:t,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,i){1&e&&Ln(0,0)},dependencies:[ro],encapsulation:2}),t})(),_w=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=G({type:t,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,i){1&e&&Ln(0,0)},dependencies:[ro],encapsulation:2}),t})(),ap=(()=>{class t{constructor(e){this.templateRef=e,this._contentClassName="cdk-no-data-row"}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["ng-template","cdkNoDataRow",""]]}),t})();const $F=["top","bottom","left","right"];class Pte{constructor(n,e,i,r,o=!0,s=!0,a){this._isNativeHtmlTable=n,this._stickCellCss=e,this.direction=i,this._coalescedStyleScheduler=r,this._isBrowser=o,this._needsPositionStickyOnElement=s,this._positionListener=a,this._cachedCellWidths=[],this._borderCellCss={top:`${e}-border-elem-top`,bottom:`${e}-border-elem-bottom`,left:`${e}-border-elem-left`,right:`${e}-border-elem-right`}}clearStickyPositioning(n,e){const i=[];for(const r of n)if(r.nodeType===r.ELEMENT_NODE){i.push(r);for(let o=0;o{for(const r of i)this._removeStickyStyle(r,e)})}updateStickyColumns(n,e,i,r=!0){if(!n.length||!this._isBrowser||!e.some(h=>h)&&!i.some(h=>h))return void(this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:[]}),this._positionListener.stickyEndColumnsUpdated({sizes:[]})));const o=n[0],s=o.children.length,a=this._getCellWidths(o,r),l=this._getStickyStartColumnPositions(a,e),c=this._getStickyEndColumnPositions(a,i),d=e.lastIndexOf(!0),u=i.indexOf(!0);this._coalescedStyleScheduler.schedule(()=>{const h="rtl"===this.direction,f=h?"right":"left",p=h?"left":"right";for(const g of n)for(let b=0;be[b]?g:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:-1===u?[]:a.slice(u).map((g,b)=>i[b+u]?g:null).reverse()}))})}stickRows(n,e,i){if(!this._isBrowser)return;const r="bottom"===i?n.slice().reverse():n,o="bottom"===i?e.slice().reverse():e,s=[],a=[],l=[];for(let d=0,u=0;d{for(let d=0;d{e.some(r=>!r)?this._removeStickyStyle(i,["bottom"]):this._addStickyStyle(i,"bottom",0,!1)})}_removeStickyStyle(n,e){for(const r of e)n.style[r]="",n.classList.remove(this._borderCellCss[r]);$F.some(r=>-1===e.indexOf(r)&&n.style[r])?n.style.zIndex=this._getCalculatedZIndex(n):(n.style.zIndex="",this._needsPositionStickyOnElement&&(n.style.position=""),n.classList.remove(this._stickCellCss))}_addStickyStyle(n,e,i,r){n.classList.add(this._stickCellCss),r&&n.classList.add(this._borderCellCss[e]),n.style[e]=`${i}px`,n.style.zIndex=this._getCalculatedZIndex(n),this._needsPositionStickyOnElement&&(n.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(n){const e={top:100,bottom:10,left:1,right:1};let i=0;for(const r of $F)n.style[r]&&(i+=e[r]);return i?`${i}`:""}_getCellWidths(n,e=!0){if(!e&&this._cachedCellWidths.length)return this._cachedCellWidths;const i=[],r=n.children;for(let o=0;o0;o--)e[o]&&(i[o]=r,r+=n[o]);return i}}const bw=new k("CDK_SPL");let lp=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(H))},t.\u0275dir=M({type:t,selectors:[["","rowOutlet",""]]}),t})(),cp=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(H))},t.\u0275dir=M({type:t,selectors:[["","headerRowOutlet",""]]}),t})(),dp=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(H))},t.\u0275dir=M({type:t,selectors:[["","footerRowOutlet",""]]}),t})(),up=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(H))},t.\u0275dir=M({type:t,selectors:[["","noDataRowOutlet",""]]}),t})(),hp=(()=>{class t{get trackBy(){return this._trackByFn}set trackBy(e){this._trackByFn=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(e){this._multiTemplateDataRows=Ve(e),this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}get fixedLayout(){return this._fixedLayout}set fixedLayout(e){this._fixedLayout=Ve(e),this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}constructor(e,i,r,o,s,a,l,c,d,u,h,f){this._differs=e,this._changeDetectorRef=i,this._elementRef=r,this._dir=s,this._platform=l,this._viewRepeater=c,this._coalescedStyleScheduler=d,this._viewportRuler=u,this._stickyPositioningListener=h,this._ngZone=f,this._onDestroy=new te,this._columnDefsByName=new Map,this._customColumnDefs=new Set,this._customRowDefs=new Set,this._customHeaderRowDefs=new Set,this._customFooterRowDefs=new Set,this._headerRowDefChanged=!0,this._footerRowDefChanged=!0,this._stickyColumnStylesNeedReset=!0,this._forceRecalculateCellWidths=!0,this._cachedRenderRowsMap=new Map,this.stickyCssClass="cdk-table-sticky",this.needsPositionStickyOnElement=!0,this._isShowingNoDataRow=!1,this._multiTemplateDataRows=!1,this._fixedLayout=!1,this.contentChanged=new ee,this.viewChange=new Tt({start:0,end:Number.MAX_VALUE}),o||this._elementRef.nativeElement.setAttribute("role","table"),this._document=a,this._isNativeHtmlTable="TABLE"===this._elementRef.nativeElement.nodeName}ngOnInit(){this._setupStickyStyler(),this._isNativeHtmlTable&&this._applyNativeTableSections(),this._dataDiffer=this._differs.find([]).create((e,i)=>this.trackBy?this.trackBy(i.dataIndex,i.data):i),this._viewportRuler.change().pipe(ze(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentChecked(){this._cacheRowDefs(),this._cacheColumnDefs();const i=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||i,this._forceRecalculateCellWidths=i,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}ngOnDestroy(){[this._rowOutlet.viewContainer,this._headerRowOutlet.viewContainer,this._footerRowOutlet.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(e=>{e.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),Am(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();const e=this._dataDiffer.diff(this._renderRows);if(!e)return this._updateNoDataRow(),void this.contentChanged.next();const i=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(e,i,(r,o,s)=>this._getEmbeddedViewArgs(r.item,s),r=>r.item.data,r=>{1===r.operation&&r.context&&this._renderCellTemplateForItem(r.record.item.rowDef,r.context)}),this._updateRowIndexContext(),e.forEachIdentityChange(r=>{i.get(r.currentIndex).context.$implicit=r.item.data}),this._updateNoDataRow(),this._ngZone&&Y.isInAngularZone()?this._ngZone.onStable.pipe(qt(1),ze(this._onDestroy)).subscribe(()=>{this.updateStickyColumnStyles()}):this.updateStickyColumnStyles(),this.contentChanged.next()}addColumnDef(e){this._customColumnDefs.add(e)}removeColumnDef(e){this._customColumnDefs.delete(e)}addRowDef(e){this._customRowDefs.add(e)}removeRowDef(e){this._customRowDefs.delete(e)}addHeaderRowDef(e){this._customHeaderRowDefs.add(e),this._headerRowDefChanged=!0}removeHeaderRowDef(e){this._customHeaderRowDefs.delete(e),this._headerRowDefChanged=!0}addFooterRowDef(e){this._customFooterRowDefs.add(e),this._footerRowDefChanged=!0}removeFooterRowDef(e){this._customFooterRowDefs.delete(e),this._footerRowDefChanged=!0}setNoDataRow(e){this._customNoDataRow=e}updateStickyHeaderRowStyles(){const e=this._getRenderedRows(this._headerRowOutlet),r=this._elementRef.nativeElement.querySelector("thead");r&&(r.style.display=e.length?"":"none");const o=this._headerRowDefs.map(s=>s.sticky);this._stickyStyler.clearStickyPositioning(e,["top"]),this._stickyStyler.stickRows(e,o,"top"),this._headerRowDefs.forEach(s=>s.resetStickyChanged())}updateStickyFooterRowStyles(){const e=this._getRenderedRows(this._footerRowOutlet),r=this._elementRef.nativeElement.querySelector("tfoot");r&&(r.style.display=e.length?"":"none");const o=this._footerRowDefs.map(s=>s.sticky);this._stickyStyler.clearStickyPositioning(e,["bottom"]),this._stickyStyler.stickRows(e,o,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,o),this._footerRowDefs.forEach(s=>s.resetStickyChanged())}updateStickyColumnStyles(){const e=this._getRenderedRows(this._headerRowOutlet),i=this._getRenderedRows(this._rowOutlet),r=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...e,...i,...r],["left","right"]),this._stickyColumnStylesNeedReset=!1),e.forEach((o,s)=>{this._addStickyColumnStyles([o],this._headerRowDefs[s])}),this._rowDefs.forEach(o=>{const s=[];for(let a=0;a{this._addStickyColumnStyles([o],this._footerRowDefs[s])}),Array.from(this._columnDefsByName.values()).forEach(o=>o.resetStickyChanged())}_getAllRenderRows(){const e=[],i=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let r=0;r{const a=r&&r.has(s)?r.get(s):[];if(a.length){const l=a.shift();return l.dataIndex=i,l}return{data:e,rowDef:s,dataIndex:i}})}_cacheColumnDefs(){this._columnDefsByName.clear(),fp(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(i=>{this._columnDefsByName.has(i.name),this._columnDefsByName.set(i.name,i)})}_cacheRowDefs(){this._headerRowDefs=fp(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=fp(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=fp(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);const e=this._rowDefs.filter(i=>!i.when);this._defaultRowDef=e[0]}_renderUpdatedColumns(){const e=(s,a)=>s||!!a.getColumnsDiff(),i=this._rowDefs.reduce(e,!1);i&&this._forceRenderDataRows();const r=this._headerRowDefs.reduce(e,!1);r&&this._forceRenderHeaderRows();const o=this._footerRowDefs.reduce(e,!1);return o&&this._forceRenderFooterRows(),i||r||o}_switchDataSource(e){this._data=[],Am(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),e||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear()),this._dataSource=e}_observeRenderChanges(){if(!this.dataSource)return;let e;Am(this.dataSource)?e=this.dataSource.connect(this):Tc(this.dataSource)?e=this.dataSource:Array.isArray(this.dataSource)&&(e=j(this.dataSource)),this._renderChangeSubscription=e.pipe(ze(this._onDestroy)).subscribe(i=>{this._data=i||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((e,i)=>this._renderRow(this._headerRowOutlet,e,i)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((e,i)=>this._renderRow(this._footerRowOutlet,e,i)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(e,i){const r=Array.from(i.columns||[]).map(a=>this._columnDefsByName.get(a)),o=r.map(a=>a.sticky),s=r.map(a=>a.stickyEnd);this._stickyStyler.updateStickyColumns(e,o,s,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(e){const i=[];for(let r=0;r!o.when||o.when(i,e));else{let o=this._rowDefs.find(s=>s.when&&s.when(i,e))||this._defaultRowDef;o&&r.push(o)}return r}_getEmbeddedViewArgs(e,i){return{templateRef:e.rowDef.template,context:{$implicit:e.data},index:i}}_renderRow(e,i,r,o={}){const s=e.viewContainer.createEmbeddedView(i.template,o,r);return this._renderCellTemplateForItem(i,o),s}_renderCellTemplateForItem(e,i){for(let r of this._getCellTemplates(e))ro.mostRecentCellOutlet&&ro.mostRecentCellOutlet._viewContainer.createEmbeddedView(r,i);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){const e=this._rowOutlet.viewContainer;for(let i=0,r=e.length;i{const r=this._columnDefsByName.get(i);return e.extractCellTemplate(r)}):[]}_applyNativeTableSections(){const e=this._document.createDocumentFragment(),i=[{tag:"thead",outlets:[this._headerRowOutlet]},{tag:"tbody",outlets:[this._rowOutlet,this._noDataRowOutlet]},{tag:"tfoot",outlets:[this._footerRowOutlet]}];for(const r of i){const o=this._document.createElement(r.tag);o.setAttribute("role","rowgroup");for(const s of r.outlets)o.appendChild(s.elementRef.nativeElement);e.appendChild(o)}this._elementRef.nativeElement.appendChild(e)}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){const e=(i,r)=>i||r.hasStickyChanged();this._headerRowDefs.reduce(e,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(e,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(e,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){this._stickyStyler=new Pte(this._isNativeHtmlTable,this.stickyCssClass,this._dir?this._dir.value:"ltr",this._coalescedStyleScheduler,this._platform.isBrowser,this.needsPositionStickyOnElement,this._stickyPositioningListener),(this._dir?this._dir.change:j()).pipe(ze(this._onDestroy)).subscribe(i=>{this._stickyStyler.direction=i,this.updateStickyColumnStyles()})}_getOwnDefs(e){return e.filter(i=>!i._table||i._table===this)}_updateNoDataRow(){const e=this._customNoDataRow||this._noDataRow;if(!e)return;const i=0===this._rowOutlet.viewContainer.length;if(i===this._isShowingNoDataRow)return;const r=this._noDataRowOutlet.viewContainer;if(i){const o=r.createEmbeddedView(e.templateRef),s=o.rootNodes[0];1===o.rootNodes.length&&s?.nodeType===this._document.ELEMENT_NODE&&(s.setAttribute("role","row"),s.classList.add(e._contentClassName))}else r.clear();this._isShowingNoDataRow=i}}return t.\u0275fac=function(e){return new(e||t)(m(gi),m(en),m(H),Tr("role"),m(In,8),m(ge),m(pt),m(kd),m(fw),m(As),m(bw,12),m(Y,8))},t.\u0275cmp=G({type:t,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(e,i,r){if(1&e&&(Ye(r,ap,5),Ye(r,io,5),Ye(r,sp,5),Ye(r,Nd,5),Ye(r,Ld,5)),2&e){let o;Q(o=J())&&(i._noDataRow=o.first),Q(o=J())&&(i._contentColumnDefs=o),Q(o=J())&&(i._contentRowDefs=o),Q(o=J())&&(i._contentHeaderRowDefs=o),Q(o=J())&&(i._contentFooterRowDefs=o)}},viewQuery:function(e,i){if(1&e&&(Ge(lp,7),Ge(cp,7),Ge(dp,7),Ge(up,7)),2&e){let r;Q(r=J())&&(i._rowOutlet=r.first),Q(r=J())&&(i._headerRowOutlet=r.first),Q(r=J())&&(i._footerRowOutlet=r.first),Q(r=J())&&(i._noDataRowOutlet=r.first)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(e,i){2&e&&ce("cdk-table-fixed-layout",i.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:"multiTemplateDataRows",fixedLayout:"fixedLayout"},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],features:[ie([{provide:yl,useExisting:t},{provide:kd,useClass:uR},{provide:fw,useClass:UF},{provide:bw,useValue:null}])],ngContentSelectors:Ete,decls:6,vars:0,consts:[["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(e,i){1&e&&(Bt(Dte),Se(0),Se(1,1),Ln(2,0)(3,1)(4,2)(5,3))},dependencies:[lp,cp,dp,up],styles:[".cdk-table-fixed-layout{table-layout:fixed}"],encapsulation:2}),t})();function fp(t,n){return t.concat(Array.from(n))}let Lte=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[ow]}),t})();const Bte=[[["caption"]],[["colgroup"],["col"]]],Vte=["caption","colgroup, col"];let mp=(()=>{class t extends hp{constructor(){super(...arguments),this.stickyCssClass="mat-mdc-table-sticky",this.needsPositionStickyOnElement=!1}ngOnInit(){super.ngOnInit(),this._isNativeHtmlTable&&this._elementRef.nativeElement.querySelector("tbody").classList.add("mdc-data-table__content")}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=G({type:t,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(e,i){2&e&&ce("mdc-table-fixed-layout",i.fixedLayout)},exportAs:["matTable"],features:[ie([{provide:hp,useExisting:t},{provide:yl,useExisting:t},{provide:fw,useClass:UF},{provide:kd,useClass:uR},{provide:bw,useValue:null}]),P],ngContentSelectors:Vte,decls:6,vars:0,consts:[["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(e,i){1&e&&(Bt(Bte),Se(0),Se(1,1),Ln(2,0)(3,1)(4,2)(5,3))},dependencies:[lp,cp,dp,up],styles:[".mdc-data-table{border-radius:var(--mdc-shape-medium, 4px);border-width:1px;border-style:solid}.mdc-data-table .mdc-data-table__header-cell:first-child{border-top-left-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:first-child,.mdc-data-table .mdc-data-table__header-cell:first-child[dir=rtl]{border-top-right-radius:var(--mdc-shape-medium, 4px);border-top-left-radius:0}.mdc-data-table .mdc-data-table__header-cell:last-child{border-top-right-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:last-child,.mdc-data-table .mdc-data-table__header-cell:last-child[dir=rtl]{border-top-left-radius:var(--mdc-shape-medium, 4px);border-top-right-radius:0}.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child{border-bottom-left-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child,.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child[dir=rtl]{border-bottom-right-radius:var(--mdc-shape-medium, 4px);border-bottom-left-radius:0}.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child{border-bottom-right-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child,.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child[dir=rtl]{border-bottom-left-radius:var(--mdc-shape-medium, 4px);border-bottom-right-radius:0}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-width:1px;border-bottom-style:solid}.mdc-data-table__pagination{border-top-width:1px;border-top-style:solid}.mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:none}.mdc-data-table__row{height:52px}.mdc-data-table__pagination{min-height:52px}.mdc-data-table__header-row{height:56px}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px 0 16px}.mdc-data-table__header-cell--checkbox,.mdc-data-table__cell--checkbox{padding-left:4px;padding-right:0}[dir=rtl] .mdc-data-table__header-cell--checkbox,[dir=rtl] .mdc-data-table__cell--checkbox,.mdc-data-table__header-cell--checkbox[dir=rtl],.mdc-data-table__cell--checkbox[dir=rtl]{padding-left:0;padding-right:4px}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__cell--checkbox{width:1px}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--checkbox{width:1px}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__sort-icon-button{width:28px;height:28px;padding:2px;transform:rotate(0.0001deg);margin-left:4px;margin-right:0;opacity:0}.mdc-data-table__sort-icon-button .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:28px;height:28px;margin-top:0px;margin-bottom:0px;margin-right:0px;margin-left:0px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:28px;left:50%;width:28px;transform:translate(-50%, -50%)}[dir=rtl] .mdc-data-table__sort-icon-button,.mdc-data-table__sort-icon-button[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__header-cell--sorted-descending .mdc-data-table__sort-icon-button{transform:rotate(-180deg)}.mdc-data-table__sort-icon-button:focus,.mdc-data-table__header-cell:hover .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button{opacity:1}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__header-cell--with-sort{cursor:pointer}.mdc-data-table__sort-status-label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.mdc-data-table--sticky-header .mdc-data-table__header-cell{position:sticky;top:0;z-index:1}.mdc-data-table{-webkit-overflow-scrolling:touch;display:inline-flex;flex-direction:column;box-sizing:border-box;position:relative}.mdc-data-table__table-container{-webkit-overflow-scrolling:touch;overflow-x:auto;width:100%}.mdc-data-table__table{min-width:100%;border:0;white-space:nowrap;border-spacing:0;table-layout:fixed}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--checkbox{width:1px}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__sort-icon-button{width:28px;height:28px;padding:2px;transform:rotate(0.0001deg);margin-left:4px;margin-right:0;opacity:0}.mdc-data-table__sort-icon-button .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:28px;height:28px;margin-top:0px;margin-bottom:0px;margin-right:0px;margin-left:0px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:28px;left:50%;width:28px;transform:translate(-50%, -50%)}[dir=rtl] .mdc-data-table__sort-icon-button,.mdc-data-table__sort-icon-button[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__header-cell--sorted-descending .mdc-data-table__sort-icon-button{transform:rotate(-180deg)}.mdc-data-table__sort-icon-button:focus,.mdc-data-table__header-cell:hover .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button{opacity:1}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__header-cell--with-sort{cursor:pointer}.mdc-data-table__sort-status-label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__cell--checkbox{width:1px}.mdc-data-table__pagination{box-sizing:border-box;display:flex;justify-content:flex-end}.mdc-data-table__pagination-trailing{margin-left:4px;margin-right:0;align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end}[dir=rtl] .mdc-data-table__pagination-trailing,.mdc-data-table__pagination-trailing[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__pagination-navigation{align-items:center;display:flex}.mdc-data-table__pagination-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__pagination-button .mdc-button__icon,.mdc-data-table__pagination-button .mdc-button__icon[dir=rtl]{transform:rotate(180deg)}[dir=rtl] .mdc-data-table__pagination-button,.mdc-data-table__pagination-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__pagination-total{margin-left:14px;margin-right:36px;white-space:nowrap}[dir=rtl] .mdc-data-table__pagination-total,.mdc-data-table__pagination-total[dir=rtl]{margin-left:36px;margin-right:14px}.mdc-data-table__pagination-rows-per-page{margin-left:0;margin-right:22px;align-items:center;display:inline-flex}[dir=rtl] .mdc-data-table__pagination-rows-per-page,.mdc-data-table__pagination-rows-per-page[dir=rtl]{margin-left:22px;margin-right:0}.mdc-data-table__pagination-rows-per-page-label{margin-left:0;margin-right:12px;white-space:nowrap}[dir=rtl] .mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__pagination-rows-per-page-label[dir=rtl]{margin-left:12px;margin-right:0}.mdc-data-table__pagination-rows-per-page-select{min-width:var(--mdc-menu-min-width, 80px);margin:8px 0}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor{width:100%;min-width:80px}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor{height:36px}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above{font-size:.75rem}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-data-table__pagination-rows-per-page-select .mdc-select__dropdown-icon{width:20px;height:20px}.mdc-data-table__pagination-rows-per-page-select.mdc-select--outlined .mdc-select__anchor :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 56px)}.mdc-data-table__pagination-rows-per-page-select .mdc-list-item.mdc-list-item--with-one-line{height:36px}.mdc-data-table__progress-indicator{display:none;position:absolute;width:100%}.mdc-data-table--in-progress .mdc-data-table__progress-indicator{display:block}.mdc-data-table__scrim{background-color:var(--mdc-theme-surface, #fff);height:100%;opacity:.32;position:absolute;top:0;width:100%}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table-sticky{position:sticky !important}.mat-mdc-table{table-layout:auto;white-space:normal}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table .mat-mdc-row:hover,.mat-mdc-table .mat-mdc-footer-row:hover{background-color:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}"],encapsulation:2}),t})(),Bd=(()=>{class t extends wl{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matCellDef",""]],features:[ie([{provide:wl,useExisting:t}]),P]}),t})(),Vd=(()=>{class t extends xl{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matHeaderCellDef",""]],features:[ie([{provide:xl,useExisting:t}]),P]}),t})(),jd=(()=>{class t extends io{get name(){return this._name}set name(e){this._setNameInput(e)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matColumnDef",""]],inputs:{sticky:"sticky",name:["matColumnDef","name"]},features:[ie([{provide:io,useExisting:t},{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:t}]),P]}),t})(),Hd=(()=>{class t extends uw{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],features:[P]}),t})(),zd=(()=>{class t extends hw{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],features:[P]}),t})(),WF=(()=>{class t extends Nd{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matHeaderRowDef",""]],inputs:{columns:["matHeaderRowDef","columns"],sticky:["matHeaderRowDefSticky","sticky"]},features:[ie([{provide:Nd,useExisting:t}]),P]}),t})(),pp=(()=>{class t extends sp{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matRowDef",""]],inputs:{columns:["matRowDefColumns","columns"],when:["matRowDefWhen","when"]},features:[ie([{provide:sp,useExisting:t}]),P]}),t})(),qF=(()=>{class t extends pw{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=G({type:t,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],features:[ie([{provide:pw,useExisting:t}]),P],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,i){1&e&&Ln(0,0)},dependencies:[ro],encapsulation:2}),t})(),gp=(()=>{class t extends _w{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=G({type:t,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],features:[ie([{provide:_w,useExisting:t}]),P],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,i){1&e&&Ln(0,0)},dependencies:[ro],encapsulation:2}),t})(),vw=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Dt,Lte,Dt]}),t})();class Kte extends dR{get data(){return this._data.value}set data(n){n=Array.isArray(n)?n:[],this._data.next(n),this._renderChangesSubscription||this._filterData(n)}get filter(){return this._filter.value}set filter(n){this._filter.next(n),this._renderChangesSubscription||this._filterData(this.data)}get sort(){return this._sort}set sort(n){this._sort=n,this._updateChangeSubscription()}get paginator(){return this._paginator}set paginator(n){this._paginator=n,this._updateChangeSubscription()}constructor(n=[]){super(),this._renderData=new Tt([]),this._filter=new Tt(""),this._internalPageChanges=new te,this._renderChangesSubscription=null,this.sortingDataAccessor=(e,i)=>{const r=e[i];if(DO(r)){const o=Number(r);return o<9007199254740991?o:r}return r},this.sortData=(e,i)=>{const r=i.active,o=i.direction;return r&&""!=o?e.sort((s,a)=>{let l=this.sortingDataAccessor(s,r),c=this.sortingDataAccessor(a,r);const d=typeof l,u=typeof c;d!==u&&("number"===d&&(l+=""),"number"===u&&(c+=""));let h=0;return null!=l&&null!=c?l>c?h=1:l{const r=Object.keys(e).reduce((s,a)=>s+e[a]+"\u25ec","").toLowerCase(),o=i.trim().toLowerCase();return-1!=r.indexOf(o)},this._data=new Tt(n),this._updateChangeSubscription()}_updateChangeSubscription(){const n=this._sort?$n(this._sort.sortChange,this._sort.initialized):j(null),e=this._paginator?$n(this._paginator.page,this._internalPageChanges,this._paginator.initialized):j(null),r=La([this._data,this._filter]).pipe(B(([a])=>this._filterData(a))),o=La([r,n]).pipe(B(([a])=>this._orderData(a))),s=La([o,e]).pipe(B(([a])=>this._pageData(a)));this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=s.subscribe(a=>this._renderData.next(a))}_filterData(n){return this.filteredData=null==this.filter||""===this.filter?n:n.filter(e=>this.filterPredicate(e,this.filter)),this.paginator&&this._updatePaginator(this.filteredData.length),this.filteredData}_orderData(n){return this.sort?this.sortData(n.slice(),this.sort):n}_pageData(n){if(!this.paginator)return n;const e=this.paginator.pageIndex*this.paginator.pageSize;return n.slice(e,e+this.paginator.pageSize)}_updatePaginator(n){Promise.resolve().then(()=>{const e=this.paginator;if(e&&(e.length=n,e.pageIndex>0)){const i=Math.ceil(e.length/e.pageSize)-1||0,r=Math.min(e.pageIndex,i);r!==e.pageIndex&&(e.pageIndex=r,this._internalPageChanges.next())}})}connect(){return this._renderChangesSubscription||this._updateChangeSubscription(),this._renderData}disconnect(){this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=null}}class Xte extends Kte{}function Qte(t,n){1&t&&(x(0,"th",10),N(1,"Item Number"),E())}function Jte(t,n){if(1&t&&(x(0,"td",11),N(1),E()),2&t){const e=n.index;D(1),nt("",e+1,".")}}function ene(t,n){1&t&&(x(0,"th",10),N(1,"Title and Link"),E())}function tne(t,n){if(1&t&&(x(0,"td",11),N(1),z(2,"br"),x(3,"a",12),N(4),E()()),2&t){const e=n.$implicit;D(1),nt(" ",e.title," "),D(2),S("href",e.link,Oi),D(1),Qt(e.label)}}function nne(t,n){1&t&&z(0,"tr",13)}const ine=function(){return["link","title"]};let rne=(()=>{var t;class n{constructor(){this.sources=[],this.showTable=!0}toggleTable(){this.showTable=!this.showTable}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-source-list"]],inputs:{sources:"sources"},standalone:!0,features:[Be],decls:15,vars:6,consts:[[1,"toggle",3,"click"],[1,"end"],[1,"table-content"],["mat-table","",3,"dataSource"],[1,"sr-only"],["matColumnDef","link"],["class","sr-only","mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","title"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell","",1,"sr-only"],["mat-cell",""],["target","_blank",3,"href"],["mat-row",""]],template:function(i,r){1&i&&(x(0,"hra-label-box",0),re("click",function(){return r.toggleTable()}),N(1," Source Data "),x(2,"mat-icon",1),N(3),E()(),x(4,"div",2)(5,"table",3)(6,"caption",4),N(7," Source List Table with Title and Links "),E(),Pn(8,5),O(9,Qte,2,0,"th",6),O(10,Jte,2,1,"td",7),Nn(),Pn(11,8),O(12,ene,2,0,"th",6),O(13,tne,5,3,"td",7),Nn(),O(14,nne,1,0,"tr",9),E()()),2&i&&(D(3),nt(" ",r.showTable?"keyboard_arrow_down":"keyboard_arrow_up"," "),D(1),ce("hidden",!r.showTable),D(1),S("dataSource",r.sources),D(9),S("matRowDefColumns",U_(5,ine)))},dependencies:[Re,vw,mp,Vd,jd,Bd,pp,Hd,zd,gp,_r,Qr,zm],styles:["[_nghost-%COMP%]{display:block;height:100%}[_nghost-%COMP%] .sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}[_nghost-%COMP%] .toggle[_ngcontent-%COMP%]{display:flex;align-items:center;height:3.5rem;grid-area:source-list-header;color:var(--dark-primary-text);border-top:.063rem solid #d3d3d3;border-bottom:.063rem solid #d3d3d3}[_nghost-%COMP%] .table-content[_ngcontent-%COMP%]{height:calc(100% - 3.5rem);overflow:auto}[_nghost-%COMP%] .table-content.hidden[_ngcontent-%COMP%]{display:none}[_nghost-%COMP%] .table-content[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{height:100%}[_nghost-%COMP%] .table-content[_ngcontent-%COMP%] .mat-mdc-cell[_ngcontent-%COMP%]{vertical-align:top;border:none;padding:.25rem .875rem;font-size:1rem}[_nghost-%COMP%] .table-content[_ngcontent-%COMP%] .mdc-data-table__content{display:block;padding:1rem 0rem}"],changeDetection:0}),n})(),one=(()=>{var t;class n{constructor(){this.color="",this.size=0}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-biomarker-table-data-icon"]],hostVars:4,hostBindings:function(i,r){2&i&&tr("background-color",r.color)("--radius",r.size,"rem")},inputs:{color:"color",size:"size"},standalone:!0,features:[Be],decls:0,vars:0,template:function(i,r){},dependencies:[Re],styles:["[_nghost-%COMP%]{display:block;border-radius:50%;--radius: .625rem;width:var(--radius);height:var(--radius)}"],changeDetection:0}),n})();function sne(t,n){1&t&&(x(0,"div",2),N(1,"No data"),E())}function ane(t,n){1&t&&(x(0,"th",11),N(1,"Item Label"),E())}function lne(t,n){if(1&t&&(x(0,"td",12),N(1),E()),2&t){const e=n.$implicit;ce("no-border",!e.isLastItem),D(1),nt(" ",e.data.label," ")}}function cne(t,n){1&t&&(x(0,"th",11),N(1,"Item Value"),E())}function dne(t,n){if(1&t&&(x(0,"td",13),N(1),E()),2&t){const e=n.$implicit;ce("no-border",!e.isLastItem),D(1),nt(" ",e.data.value," ")}}function une(t,n){1&t&&z(0,"tr",14)}const hne=function(){return["label","value"]};function fne(t,n){1&t&&(x(0,"table",3)(1,"caption",4),N(2," Biomarker Table Data Card "),E(),Pn(3,5),O(4,ane,2,0,"th",6),O(5,lne,2,3,"td",7),Nn(),Pn(6,8),O(7,cne,2,0,"th",6),O(8,dne,2,3,"td",9),Nn(),O(9,une,1,0,"tr",10),E()),2&t&&(S("dataSource",X().sectionItems),D(9),S("matRowDefColumns",U_(2,hne)))}let mne=(()=>{var t;class n{constructor(){this.data=[],this.sectionItems=[]}ngOnChanges(i){"data"in i&&this.updateSectionItems()}updateSectionItems(){const i=[];this.data.forEach((r,o)=>{r.forEach((s,a)=>{i.push({data:s,section:o,isLastItem:a===r.length-1})})}),this.sectionItems=i}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-biomarker-table-data-card"]],inputs:{data:"data"},standalone:!0,features:[at,Be],decls:2,vars:2,consts:[["class","no-data",4,"ngIf"],["mat-table","",3,"dataSource",4,"ngIf"],[1,"no-data"],["mat-table","",3,"dataSource"],[1,"sr-only"],["matColumnDef","label"],["class","sr-only","mat-header-cell","",4,"matHeaderCellDef"],["class","label","mat-cell","",3,"no-border",4,"matCellDef"],["matColumnDef","value"],["class","value","mat-cell","",3,"no-border",4,"matCellDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell","",1,"sr-only"],["mat-cell","",1,"label"],["mat-cell","",1,"value"],["mat-row",""]],template:function(i,r){1&i&&(O(0,sne,2,0,"div",0),O(1,fne,10,3,"table",1)),2&i&&(S("ngIf",0===r.sectionItems.length),D(1),S("ngIf",r.sectionItems.length>0))},dependencies:[Re,Vn,vw,mp,Vd,jd,Bd,pp,Hd,zd,gp],styles:["[_nghost-%COMP%]{display:flex;padding:1rem 1.5rem;border-radius:.5rem;box-shadow:.063rem .125rem 1rem .125rem #00000029;background-color:var(--palette-primary-contrast-500-rgb)}[_nghost-%COMP%] .mat-mdc-cell[_ngcontent-%COMP%]{padding:.25rem 0rem}[_nghost-%COMP%] .mat-mdc-row[_ngcontent-%COMP%]{height:-moz-fit-content;height:fit-content}[_nghost-%COMP%] .no-border[_ngcontent-%COMP%]{border:none}[_nghost-%COMP%] .label[_ngcontent-%COMP%]{color:#243142;padding-right:3rem}[_nghost-%COMP%] .value[_ngcontent-%COMP%]{color:#4c5a69}[_nghost-%COMP%] .sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}"],changeDetection:0}),n})();function pne(t,n){1&t&&(x(0,"th",13),N(1,"Cell Type"),E())}function gne(t,n){if(1&t&&(x(0,"td",14),N(1),E()),2&t){const e=n.$implicit,i=X();ce("highlight",e[0]===i.hightlightedCellName),D(1),nt(" ",e[0]," ")}}function _ne(t,n){1&t&&(x(0,"th",15),N(1,"Cell Count"),E())}function bne(t,n){if(1&t&&(x(0,"td",16),N(1),wa(2,"number"),E()),2&t){const e=n.$implicit,i=X();ce("highlight",e[0]===i.hightlightedCellName),D(1),nt(" ",void 0!==e[1]?xa(2,3,e[1]):"no data"," ")}}function vne(t,n){if(1&t&&(x(0,"th",20),N(1),E()),2&t){const e=X().$implicit;X(),S("hraHover",Ft(13))("hraHoverData",e),D(1),nt(" ",e," ")}}const YF=function(t,n){return[t,n]};function yne(t,n){if(1&t&&z(0,"hra-biomarker-table-data-icon",24),2&t){const e=X().$implicit,i=X().index,r=X(),o=Ft(15);S("color",r.getColor(e[i+2].color))("size",r.getSize(e[i+2].size))("hraHover",o)("hraHoverData",sh(4,YF,i+2,e))}}function wne(t,n){if(1&t&&z(0,"div",25),2&t){const e=X().$implicit,i=X().index;X(),S("hraHover",Ft(15))("hraHoverData",sh(2,YF,i+2,e))}}function xne(t,n){if(1&t&&(x(0,"td",21),O(1,yne,1,7,"hra-biomarker-table-data-icon",22),O(2,wne,1,5,"ng-template",null,23,Jn),E()),2&t){const e=n.$implicit,i=Ft(3),r=X().index,o=X();ce("highlight",e[0]===o.hightlightedCellName),D(1),S("ngIf",void 0!==e[r+2])("ngIfElse",i)}}function Cne(t,n){1&t&&(Pn(0,17),O(1,vne,2,3,"th",18),O(2,xne,4,4,"td",19),Nn()),2&t&&S("matColumnDef",n.$implicit)}function Dne(t,n){1&t&&z(0,"tr",26)}function Ene(t,n){1&t&&z(0,"tr",27)}function Sne(t,n){if(1&t&&(x(0,"div",28),N(1),E()),2&t){const e=n.$implicit;D(1),nt(" ",e," ")}}function kne(t,n){if(1&t&&z(0,"hra-biomarker-table-data-card",29),2&t){const e=n.$implicit;S("data",X().getHoverData(e))}}let Mne=(()=>{var t;class n{constructor(){this.tissueInfo={id:"",label:""},this.columns=[],this.data=[],this.gradient=[],this.sizes=[],this.hightlightedCellName="",this.dataSource=new Xte([])}get columnsWithTypeAndCount(){return["type","count",...this.columns]}ngOnChanges(i){"data"in i&&(this.dataSource.data=this.data)}lerp(i,r,o){return r*(1-i)+o*i}hex2rgb(i){return[parseInt(i.slice(1,3),16),parseInt(i.slice(3,5),16),parseInt(i.slice(5,7),16)]}getMinMaxColor(i){const r=this.gradient.findIndex((a,l,c)=>i>=a.percentage&&i<=c[l+1]?.percentage);return{minColor:this.hex2rgb(this.gradient[r]?.color??this.gradient[0].color),maxColor:this.hex2rgb(this.gradient[r+1]?.color??this.gradient[this.gradient.length-1].color)}}getMinMaxSize(i){const r=this.sizes.findIndex((a,l,c)=>i>=parseFloat(a.label)/100&&i<=parseFloat(c[l+1]?.label)/100);return{minSize:this.sizes[r]?.radius??this.sizes[0].radius,maxSize:this.sizes[r+1]?.radius??this.sizes[this.sizes.length-1].radius}}getColor(i){const{minColor:r,maxColor:o}=this.getMinMaxColor(i);return"#"+r.map((s,a)=>this.lerp(i,s,o[a])).map(s=>Math.round(s).toString(16)).join("")}getSize(i){const{minSize:r,maxSize:o}=this.getMinMaxSize(i);return this.lerp(i,r,o)}getHoverData([i,r]){if(void 0===r[i])return[];const{tissueInfo:{id:o,label:s}}=this,{data:{cell:a,biomarker:l,meanExpression:c,dataset_count:d}}=r[i];return[[{label:"Functional Tissue Unit Name",value:s},{label:"Uberon ID",value:o},{label:"#Datasets",value:`${d??0}`}],[{label:"Cell Type Name",value:r[0]},{label:"CL ID",value:a},{label:"Number of Cells",value:`${r[1]}`}],[{label:"Gene Name",value:this.columns[i-2]},{label:"HGNC ID",value:l},{label:"Mean Expression Value",value:c.toFixed(6)}]]}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-biomarker-table"]],inputs:{tissueInfo:"tissueInfo",columns:"columns",data:"data",gradient:"gradient",sizes:"sizes",hightlightedCellName:"hightlightedCellName"},standalone:!0,features:[at,Be],decls:16,vars:4,consts:[["mat-table","",1,"table",3,"dataSource"],[1,"sr-only"],["matColumnDef","type"],["mat-header-cell","",4,"matHeaderCellDef"],["class","type","mat-cell","",3,"highlight",4,"matCellDef"],["matColumnDef","count"],["class","count","mat-header-cell","",4,"matHeaderCellDef"],["class","count","mat-cell","",3,"highlight",4,"matCellDef"],[3,"matColumnDef",4,"ngFor","ngForOf"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["columnHover",""],["dataHover",""],["mat-header-cell",""],["mat-cell","",1,"type"],["mat-header-cell","",1,"count"],["mat-cell","",1,"count"],[3,"matColumnDef"],["class","icon-header","mat-header-cell","",3,"hraHover","hraHoverData",4,"matHeaderCellDef"],["class","icon-cell","mat-cell","",3,"highlight",4,"matCellDef"],["mat-header-cell","",1,"icon-header",3,"hraHover","hraHoverData"],["mat-cell","",1,"icon-cell"],["class","icon",3,"color","size","hraHover","hraHoverData",4,"ngIf","ngIfElse"],["emptyCell",""],[1,"icon",3,"color","size","hraHover","hraHoverData"],[1,"empty",3,"hraHover","hraHoverData"],["mat-header-row",""],["mat-row",""],[1,"biomarker-table-hover","full-column-name"],[3,"data"]],template:function(i,r){1&i&&(x(0,"table",0)(1,"caption",1),N(2," Cell type table by Biomarker "),E(),Pn(3,2),O(4,pne,2,0,"th",3),O(5,gne,2,3,"td",4),Nn(),Pn(6,5),O(7,_ne,2,0,"th",6),O(8,bne,3,5,"td",7),Nn(),O(9,Cne,3,1,"ng-container",8),O(10,Dne,1,0,"tr",9),O(11,Ene,1,0,"tr",10),E(),O(12,Sne,2,1,"ng-template",null,11,Jn),O(14,kne,1,1,"ng-template",null,12,Jn)),2&i&&(S("dataSource",r.dataSource),D(9),S("ngForOf",r.columns),D(1),S("matHeaderRowDef",r.columnsWithTypeAndCount),D(1),S("matRowDefColumns",r.columnsWithTypeAndCount))},dependencies:[Re,cs,Vn,wM,vw,mp,Vd,WF,jd,Bd,pp,Hd,zd,qF,gp,one,jF,mne],styles:["[_nghost-%COMP%]{display:block;max-width:43rem}[_nghost-%COMP%] .sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}[_nghost-%COMP%] .table[_ngcontent-%COMP%]{margin-left:-1px}[_nghost-%COMP%] .table[_ngcontent-%COMP%] .highlight[_ngcontent-%COMP%]{background-color:gold}[_nghost-%COMP%] .table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background-color:#fff7f8;color:#59264d;text-align:right}[_nghost-%COMP%] .table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:.063rem solid #d3d3d3;border-left:.063rem solid #d3d3d3}[_nghost-%COMP%] .table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:first-child td[_ngcontent-%COMP%]{border-top:0rem solid #d3d3d3}[_nghost-%COMP%] tr[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]:first-child{text-align:left;padding:0 2rem}[_nghost-%COMP%] tr[_ngcontent-%COMP%] > th[_ngcontent-%COMP%]:first-child{text-align:left;padding:0 2rem}[_nghost-%COMP%] tr[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]:last-of-type{border-right:.063rem solid #d3d3d3}[_nghost-%COMP%] tr[_ngcontent-%COMP%] > th[_ngcontent-%COMP%]:last-of-type{border-right:.063rem solid #d3d3d3}[_nghost-%COMP%] .type[_ngcontent-%COMP%]{height:3rem;max-width:26rem;min-width:17rem;border-radius:0rem;white-space:nowrap}[_nghost-%COMP%] .count[_ngcontent-%COMP%]{text-align:right;height:3rem;min-width:6.5rem}[_nghost-%COMP%] .icon-header[_ngcontent-%COMP%]{max-width:5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[_nghost-%COMP%] .icon-cell[_ngcontent-%COMP%]{max-width:5rem;min-height:3rem}[_nghost-%COMP%] .icon-cell[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:auto} .mat-mdc-tab-header{margin-left:-1px!important} .biomarker-table-hover.full-column-name{display:flex;padding:1rem 1.5rem;border-radius:.5rem;box-shadow:.063rem .125rem 1rem .125rem #00000029;background-color:var(--palette-primary-contrast-500-rgb);overflow:auto;max-width:-moz-fit-content;max-width:fit-content}"],changeDetection:0}),n})(),Tne=(()=>{class t{static aggregates(e){return e.aggregates}static summaries(e){return e.summaries}}return U([Ct([Rm]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Array)],t,"aggregates",null),U([Ct([Rm]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Array)],t,"summaries",null),t})();const Ane=im("metrics"),Ine=im("gradient"),One=im("size");let Rne=(()=>{class t{static sourceReferences(e){return e}}return U([Ct([B0]),y("design:type",Function),y("design:paramtypes",[Array]),y("design:returntype",Array)],t,"sourceReferences",null),t})();function Fne(t,n){if(1&t&&z(0,"hra-biomarker-table",17),2&t){const e=X().$implicit,i=X();let r;S("data",e.rows)("columns",e.columns)("gradient",i.gradients())("sizes",i.sizes())("tissueInfo",i.tissueInfo)("hightlightedCellName",null!==(r=null==(r=i.selectedOnHovered())?null:r.label)&&void 0!==r?r:"")}}function Pne(t,n){if(1&t&&z(0,"hra-empty-biomarker",18),2&t){const e=X(2);S("collaborateText",e.collaborateText)("message",e.message)}}function Nne(t,n){if(1&t&&(x(0,"mat-tab",14),O(1,Fne,1,6,"hra-biomarker-table",15),O(2,Pne,1,2,"hra-empty-biomarker",16),E()),2&t){const e=n.$implicit;S("label",e.label),D(1),S("ngIf",0!==e.rows.length),D(1),S("ngIf",0===e.rows.length)}}function Lne(t,n){if(1&t&&(x(0,"div",19),N(1),E()),2&t){const e=n.$implicit;D(1),nt(" ",e," ")}}const Bne={id:"",label:""};let Vne=(()=>{var t;class n{constructor(){this.tabs=Un(Tne.aggregates),this.gradientHoverInfo=ct(vt.anyText,LX),this.sizeHoverInfo=ct(vt.anyText,BX),this.isTableFullScreen=!1,this.gradients=ct(vt.field,PX,Ine,"points",[]),this.sizes=ct(vt.field,NX,One,"sizes",[]),this.source=Un(Rne.sourceReferences),this.iri=Un(Hm.iri),this.tissues=Un(R0.tissues),this.selectedOnHovered=Un(Pd.selectedOnHovered),this.collaborateText="Collaborate with the HRA Team",this.message="We currently do not have cell type data for this biomarker.\n

    Please contact us to discuss your dataset.",this.setScreenMode=ai($m)}get tissueInfo(){const i=this.iri(),r=this.tissues();if(void 0===i)return Bne;const{id:o,label:s}=r[i];return{id:o,label:s}}toggleFullscreen(){this.isTableFullScreen=!this.isTableFullScreen,this.setScreenMode(this.isTableFullScreen)}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-biomarker-details"]],standalone:!0,features:[Be],decls:22,vars:11,consts:[[1,"table-header"],[1,"end",3,"click"],["mat-stretch-tabs","true","color","accent",1,"table"],["labelClass","table-tab-header",3,"label",4,"ngFor","ngForOf"],[1,"legend-header","gradient"],[1,"icon",3,"hraHover","hraHoverData"],[1,"legend","gradient"],[1,"content",3,"gradient"],[1,"legend-header","size"],[1,"legend","size"],[1,"content",3,"sizes"],[1,"source-list"],[1,"content",3,"sources"],["infoTooltip",""],["labelClass","table-tab-header",3,"label"],[3,"data","columns","gradient","sizes","tissueInfo","hightlightedCellName",4,"ngIf"],[3,"collaborateText","message",4,"ngIf"],[3,"data","columns","gradient","sizes","tissueInfo","hightlightedCellName"],[3,"collaborateText","message"],[1,"biomarker-details","info-tooltip"]],template:function(i,r){if(1&i&&(x(0,"hra-label-box",0),N(1," Cell Types by Gene Biomarkers "),x(2,"mat-icon",1),re("click",function(){return r.toggleFullscreen()}),N(3),E()(),x(4,"mat-tab-group",2),O(5,Nne,3,3,"mat-tab",3),E(),x(6,"hra-label-box",4),N(7," Biomarker Expression Mean in FTU "),x(8,"mat-icon",5),N(9,"info_outlined"),E()(),x(10,"div",6),z(11,"hra-gradient-legend",7),E(),x(12,"hra-label-box",8),N(13," Percentage of Cells in FTU "),x(14,"mat-icon",5),N(15,"info_outlined"),E()(),x(16,"div",9),z(17,"hra-size-legend",10),E(),x(18,"div",11),z(19,"hra-source-list",12),E(),O(20,Lne,2,1,"ng-template",null,13,Jn)),2&i){const o=Ft(21);D(3),nt(" ",r.isTableFullScreen?"close_fullscreen":"open_in_full"," "),D(1),ce("table-fullscreen",r.isTableFullScreen),D(1),S("ngForOf",r.tabs()),D(3),S("hraHover",o)("hraHoverData",r.gradientHoverInfo()),D(3),S("gradient",r.gradients()),D(3),S("hraHover",o)("hraHoverData",r.sizeHoverInfo()),D(3),S("sizes",r.sizes()),D(2),S("sources",r.source())}},dependencies:[Re,cs,Vn,_r,Qr,rte,SF,nte,Mne,yte,jF,zm,xte,rne,Cte],styles:['[_nghost-%COMP%]{display:grid;grid-template-columns:1fr 1fr auto;grid-template-rows:3.5rem minmax(5rem,2fr) 3rem 5rem minmax(5rem,1fr);grid-template-areas:"table-header table-header table-header" "table table table" "gradient-legend-header size-legend-header ." "gradient-legend size-legend ." "source-list source-list source-list";overflow-y:auto}[_nghost-%COMP%] .table-header[_ngcontent-%COMP%]{grid-area:table-header;border-bottom:.063rem solid #d3d3d3;height:3.5rem}[_nghost-%COMP%] .table[_ngcontent-%COMP%]{grid-area:table;max-width:100%;overflow:auto}[_nghost-%COMP%] .table[_ngcontent-%COMP%] .table-tab-header{padding-left:1rem;padding-right:1rem;border-left:.063rem solid #d3d3d3;border-bottom:.063rem solid #d3d3d3}[_nghost-%COMP%] .table[_ngcontent-%COMP%] .table-tab-header:last-child{border-right:.063rem solid #d3d3d3}[_nghost-%COMP%] .table[_ngcontent-%COMP%] .table-tab-header.mdc-tab-indicator--active{background-color:#f8f9fa}[_nghost-%COMP%] .legend-header[_ngcontent-%COMP%]{color:var(--dark-primary-text);border-top:.063rem solid #d3d3d3;border-bottom:.063rem solid #d3d3d3;border-right:.063rem solid #d3d3d3}[_nghost-%COMP%] .legend-header.gradient[_ngcontent-%COMP%]{grid-area:gradient-legend-header}[_nghost-%COMP%] .legend-header.size[_ngcontent-%COMP%]{grid-area:size-legend-header}[_nghost-%COMP%] .legend-header[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin-left:.6rem}[_nghost-%COMP%] .legend[_ngcontent-%COMP%]{padding:1rem 2rem;border-right:.063rem solid #d3d3d3}[_nghost-%COMP%] .legend.gradient[_ngcontent-%COMP%]{grid-area:gradient-legend}[_nghost-%COMP%] .legend.gradient[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{width:10rem}[_nghost-%COMP%] .legend.size[_ngcontent-%COMP%]{grid-area:size-legend}[_nghost-%COMP%] .source-list[_ngcontent-%COMP%]{grid-area:source-list} .biomarker-details.info-tooltip{display:flex;padding:1rem;border:1px solid #a8a3a3;border-radius:.5rem;box-shadow:1px 2px 16px 2px #00000029;background-color:var(--palette-primary-contrast-500-rgb);max-width:21rem;font-size:small}'],changeDetection:0}),n})();function jne(t,n){}class _p{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0,this.closeOnOverlayDetachments=!0}}let ZF=(()=>{class t extends I0{constructor(e,i,r,o,s,a,l,c){super(),this._elementRef=e,this._focusTrapFactory=i,this._config=o,this._interactivityChecker=s,this._ngZone=a,this._overlayRef=l,this._focusMonitor=c,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this.attachDomPortal=d=>{this._portalOutlet.hasAttached();const u=this._portalOutlet.attachDomPortal(d);return this._contentAttached(),u},this._ariaLabelledBy=this._config.ariaLabelledBy||null,this._document=r}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),i}attachTemplatePortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),i}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,i){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const r=()=>{e.removeEventListener("blur",r),e.removeEventListener("mousedown",r),e.removeAttribute("tabindex")};e.addEventListener("blur",r),e.addEventListener("mousedown",r)})),e.focus(i)}_focusByCssSelector(e,i){let r=this._elementRef.nativeElement.querySelector(e);r&&this._forceFocus(r,i)}_trapFocus(){const e=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||e.focus();break;case!0:case"first-tabbable":this._focusTrap.focusInitialElementWhenReady().then(i=>{i||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus)}}_restoreFocus(){const e=this._config.restoreFocus;let i=null;if("string"==typeof e?i=this._document.querySelector(e):"boolean"==typeof e?i=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(i=e),this._config.restoreFocus&&i&&"function"==typeof i.focus){const r=mm(),o=this._elementRef.nativeElement;(!r||r===this._document.body||r===o||o.contains(r))&&(this._focusMonitor?(this._focusMonitor.focusVia(i,this._closeInteractionType),this._closeInteractionType=null):i.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){const e=this._elementRef.nativeElement,i=mm();return e===i||e.contains(i)}_initializeFocusTrap(){this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=mm())}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(g0),m(ge,8),m(_p),m(ym),m(Y),m(Fd),m(xd))},t.\u0275cmp=G({type:t,selectors:[["cdk-dialog-container"]],viewQuery:function(e,i){if(1&e&&Ge(gl,7),2&e){let r;Q(r=J())&&(i._portalOutlet=r.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(e,i){2&e&&tt("id",i._config.id||null)("role",i._config.role)("aria-modal",i._config.ariaModal)("aria-labelledby",i._config.ariaLabel?null:i._ariaLabelledBy)("aria-label",i._config.ariaLabel)("aria-describedby",i._config.ariaDescribedBy||null)},features:[P],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(e,i){1&e&&O(0,jne,0,0,"ng-template",0)},dependencies:[gl],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2}),t})();class yw{constructor(n,e){this.overlayRef=n,this.config=e,this.closed=new te,this.disableClose=e.disableClose,this.backdropClick=n.backdropClick(),this.keydownEvents=n.keydownEvents(),this.outsidePointerEvents=n.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(i=>{27===i.keyCode&&!this.disableClose&&!cl(i)&&(i.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})}),this._detachSubscription=n.detachments().subscribe(()=>{!1!==e.closeOnOverlayDetachments&&this.close()})}close(n,e){if(this.containerInstance){const i=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),i.next(n),i.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(n="",e=""){return this.overlayRef.updateSize({width:n,height:e}),this}addPanelClass(n){return this.overlayRef.addPanelClass(n),this}removePanelClass(n){return this.overlayRef.removePanelClass(n),this}}const KF=new k("DialogScrollStrategy"),Hne=new k("DialogData"),zne=new k("DefaultDialogConfig"),$ne={provide:KF,deps:[no],useFactory:function Une(t){return()=>t.scrollStrategies.block()}};let Gne=0,XF=(()=>{class t{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(e,i,r,o,s,a){this._overlay=e,this._injector=i,this._defaultOptions=r,this._parentDialog=o,this._overlayContainer=s,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new te,this._afterOpenedAtThisLevel=new te,this._ariaHiddenElements=new Map,this.afterAllClosed=mf(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(cr(void 0))),this._scrollStrategy=a}open(e,i){(i={...this._defaultOptions||new _p,...i}).id=i.id||"cdk-dialog-"+Gne++,i.id&&this.getDialogById(i.id);const o=this._getOverlayConfig(i),s=this._overlay.create(o),a=new yw(s,i),l=this._attachContainer(s,a,i);return a.containerInstance=l,this._attachDialogContent(e,a,l,i),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(a),a.closed.subscribe(()=>this._removeOpenDialog(a,!0)),this.afterOpened.next(a),a}closeAll(){ww(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){ww(this._openDialogsAtThisLevel,e=>{!1===e.config.closeOnDestroy&&this._removeOpenDialog(e,!1)}),ww(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){const i=new lw({positionStrategy:e.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation});return e.backdropClass&&(i.backdropClass=e.backdropClass),i}_attachContainer(e,i,r){const o=r.injector||r.viewContainerRef?.injector,s=[{provide:_p,useValue:r},{provide:yw,useValue:i},{provide:Fd,useValue:e}];let a;r.container?"function"==typeof r.container?a=r.container:(a=r.container.type,s.push(...r.container.providers(r))):a=ZF;const l=new A0(a,r.viewContainerRef,kt.create({parent:o||this._injector,providers:s}),r.componentFactoryResolver);return e.attach(l).instance}_attachDialogContent(e,i,r,o){if(e instanceof bt){const s=this._createInjector(o,i,r,void 0);let a={$implicit:o.data,dialogRef:i};o.templateContext&&(a={...a,..."function"==typeof o.templateContext?o.templateContext():o.templateContext}),r.attachTemplatePortal(new pl(e,null,a,s))}else{const s=this._createInjector(o,i,r,this._injector),a=r.attachComponentPortal(new A0(e,o.viewContainerRef,s,o.componentFactoryResolver));i.componentInstance=a.instance}}_createInjector(e,i,r,o){const s=e.injector||e.viewContainerRef?.injector,a=[{provide:Hne,useValue:e.data},{provide:yw,useValue:i}];return e.providers&&("function"==typeof e.providers?a.push(...e.providers(i,e,r)):a.push(...e.providers)),e.direction&&(!s||!s.get(In,null,{optional:!0}))&&a.push({provide:In,useValue:{value:e.direction,change:j()}}),kt.create({parent:s||o,providers:a})}_removeOpenDialog(e,i){const r=this.openDialogs.indexOf(e);r>-1&&(this.openDialogs.splice(r,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((o,s)=>{o?s.setAttribute("aria-hidden",o):s.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),i&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){const e=this._overlayContainer.getContainerElement();if(e.parentElement){const i=e.parentElement.children;for(let r=i.length-1;r>-1;r--){const o=i[r];o!==e&&"SCRIPT"!==o.nodeName&&"STYLE"!==o.nodeName&&!o.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(o,o.getAttribute("aria-hidden")),o.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}}return t.\u0275fac=function(e){return new(e||t)(_(no),_(kt),_(zne,8),_(t,12),_(ip),_(KF))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function ww(t,n){let e=t.length;for(;e--;)n(t[e])}let Wne=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:[XF,$ne],imports:[rp,_l,VO,_l]}),t})();function qne(t,n){}class Ud{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.maxWidth="80vw",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}}const xw="mdc-dialog--open",QF="mdc-dialog--opening",JF="mdc-dialog--closing";let Kne=(()=>{class t extends ZF{constructor(e,i,r,o,s,a,l,c){super(e,i,r,o,s,a,l,c),this._animationStateChanged=new ee}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(g0),m(ge,8),m(Ud),m(ym),m(Y),m(Fd),m(xd))},t.\u0275cmp=G({type:t,selectors:[["ng-component"]],features:[P],decls:0,vars:0,template:function(e,i){},encapsulation:2}),t})();const eP="--mat-dialog-transition-duration";function tP(t){return null==t?null:"number"==typeof t?t:t.endsWith("ms")?si(t.substring(0,t.length-2)):t.endsWith("s")?1e3*si(t.substring(0,t.length-1)):"0"===t?0:null}let Xne=(()=>{class t extends Kne{constructor(e,i,r,o,s,a,l,c,d){super(e,i,r,o,s,a,l,d),this._animationMode=c,this._animationsEnabled="NoopAnimations"!==this._animationMode,this._hostElement=this._elementRef.nativeElement,this._openAnimationDuration=this._animationsEnabled?tP(this._config.enterAnimationDuration)??150:0,this._closeAnimationDuration=this._animationsEnabled?tP(this._config.exitAnimationDuration)??75:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._openAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._closeAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._openAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(eP,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(QF),this._hostElement.classList.add(xw),this._waitForAnimationToComplete(this._openAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(xw),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._closeAnimationDuration}),this._hostElement.classList.remove(xw),this._animationsEnabled?(this._hostElement.style.setProperty(eP,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(JF),this._waitForAnimationToComplete(this._closeAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_clearAnimationClasses(){this._hostElement.classList.remove(QF),this._hostElement.classList.remove(JF)}_waitForAnimationToComplete(e,i){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(i,e)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(g0),m(ge,8),m(Ud),m(ym),m(Y),m(Fd),m(Jt,8),m(xd))},t.\u0275cmp=G({type:t,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:8,hostBindings:function(e,i){2&e&&(ba("id",i._config.id),tt("aria-modal",i._config.ariaModal)("role",i._config.role)("aria-labelledby",i._config.ariaLabel?null:i._ariaLabelledBy)("aria-label",i._config.ariaLabel)("aria-describedby",i._config.ariaDescribedBy||null),ce("_mat-animation-noopable",!i._animationsEnabled))},features:[P],decls:3,vars:0,consts:[[1,"mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(e,i){1&e&&(x(0,"div",0)(1,"div",1),O(2,qne,0,0,"ng-template",2),E()())},dependencies:[gl],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;transform:scale(0.8);opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:none;opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{display:block;width:100%;height:100%}.mat-mdc-dialog-container{outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12))}.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, var(--mdc-shape-medium, 4px))}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title,.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__actions,.mat-mdc-dialog-container.mdc-dialog--scrollable.mdc-dialog-scroll-divider-footer .mdc-dialog__actions{border-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title{border-bottom-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, "Arial");line-height:var(--mdc-dialog-subhead-line-height, 14px);font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500);letter-spacing:var(--mdc-dialog-subhead-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, black)}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, "Arial");line-height:var(--mdc-dialog-supporting-text-line-height, 14px);font-size:var(--mdc-dialog-supporting-text-size, 14px);font-weight:var(--mdc-dialog-supporting-text-weight, 500);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, black)}.mat-mdc-dialog-container .mdc-dialog__container{transition-duration:var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container{transition:none}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-actions{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2}),t})();class Cw{constructor(n,e,i){this._ref=n,this._containerInstance=i,this._afterOpened=new te,this._beforeClosed=new te,this._state=0,this.disableClose=e.disableClose,this.id=n.id,i._animationStateChanged.pipe(mt(r=>"opened"===r.state),qt(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),i._animationStateChanged.pipe(mt(r=>"closed"===r.state),qt(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),n.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),$n(this.backdropClick(),this.keydownEvents().pipe(mt(r=>27===r.keyCode&&!this.disableClose&&!cl(r)))).subscribe(r=>{this.disableClose||(r.preventDefault(),function Qne(t,n,e){t._closeInteractionType=n,t.close(e)}(this,"keydown"===r.type?"keyboard":"mouse"))})}close(n){this._result=n,this._containerInstance._animationStateChanged.pipe(mt(e=>"closing"===e.state),qt(1)).subscribe(e=>{this._beforeClosed.next(n),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),e.totalTime+100)}),this._state=1,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(n){let e=this._ref.config.positionStrategy;return n&&(n.left||n.right)?n.left?e.left(n.left):e.right(n.right):e.centerHorizontally(),n&&(n.top||n.bottom)?n.top?e.top(n.top):e.bottom(n.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(n="",e=""){return this._ref.updateSize(n,e),this}addPanelClass(n){return this._ref.addPanelClass(n),this}removePanelClass(n){return this._ref.removePanelClass(n),this}getState(){return this._state}_finishDialogClose(){this._state=2,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}const Jne=new k("MatMdcDialogData"),eie=new k("mat-mdc-dialog-default-options"),nP=new k("mat-mdc-dialog-scroll-strategy"),nie={provide:nP,deps:[no],useFactory:function tie(t){return()=>t.scrollStrategies.block()}};let iie=0,rie=(()=>{class t{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(e,i,r,o,s,a,l,c,d,u){this._overlay=e,this._defaultOptions=r,this._parentDialog=o,this._dialogRefConstructor=l,this._dialogContainerType=c,this._dialogDataToken=d,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new te,this._afterOpenedAtThisLevel=new te,this._idPrefix="mat-dialog-",this.dialogConfigClass=Ud,this.afterAllClosed=mf(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(cr(void 0))),this._scrollStrategy=a,this._dialog=i.get(XF)}open(e,i){let r;(i={...this._defaultOptions||new Ud,...i}).id=i.id||`${this._idPrefix}${iie++}`,i.scrollStrategy=i.scrollStrategy||this._scrollStrategy();const o=this._dialog.open(e,{...i,positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:i},{provide:_p,useValue:i}]},templateContext:()=>({dialogRef:r}),providers:(s,a,l)=>(r=new this._dialogRefConstructor(s,i,l),r.updatePosition(i?.position),[{provide:this._dialogContainerType,useValue:l},{provide:this._dialogDataToken,useValue:a.data},{provide:this._dialogRefConstructor,useValue:r}])});return r.componentInstance=o.componentInstance,this.openDialogs.push(r),this.afterOpened.next(r),r.afterClosed().subscribe(()=>{const s=this.openDialogs.indexOf(r);s>-1&&(this.openDialogs.splice(s,1),this.openDialogs.length||this._getAfterAllClosed().next())}),r}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let i=e.length;for(;i--;)e[i].close()}}return t.\u0275fac=function(e){Kl()},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),bp=(()=>{class t extends rie{constructor(e,i,r,o,s,a,l,c){super(e,i,o,a,l,s,Cw,Xne,Jne,c),this._idPrefix="mat-mdc-dialog-"}}return t.\u0275fac=function(e){return new(e||t)(_(no),_(kt),_(fc,8),_(eie,8),_(nP),_(t,12),_(ip),_(Jt,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),vp=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:[bp,nie],imports:[Wne,rp,_l,Dt,Dt]}),t})(),oie=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Dt,Dt]}),t})(),rP=(()=>{class t{constructor(e,i){this._renderer=e,this._elementRef=i,this.onChange=r=>{},this.onTouched=()=>{}}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}}return t.\u0275fac=function(e){return new(e||t)(m(mi),m(H))},t.\u0275dir=M({type:t}),t})(),Os=(()=>{class t extends rP{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,features:[P]}),t})();const Ui=new k("NgValueAccessor"),aie={provide:Ui,useExisting:st(()=>Cl),multi:!0},cie=new k("CompositionEventMode");let Cl=(()=>{class t extends rP{constructor(e,i,r){super(e,i),this._compositionMode=r,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function lie(){const t=Pr()?Pr().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(e){this.setProperty("value",e??"")}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}}return t.\u0275fac=function(e){return new(e||t)(m(mi),m(H),m(cie,8))},t.\u0275dir=M({type:t,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(e,i){1&e&&re("input",function(o){return i._handleInput(o.target.value)})("blur",function(){return i.onTouched()})("compositionstart",function(){return i._compositionStart()})("compositionend",function(o){return i._compositionEnd(o.target.value)})},features:[ie([aie]),P]}),t})();const die=!1;function zo(t){return null==t||("string"==typeof t||Array.isArray(t))&&0===t.length}function sP(t){return null!=t&&"number"==typeof t.length}const yn=new k("NgValidators"),Uo=new k("NgAsyncValidators"),uie=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class $d{static min(n){return function aP(t){return n=>{if(zo(n.value)||zo(t))return null;const e=parseFloat(n.value);return!isNaN(e)&&e{if(zo(n.value)||zo(t))return null;const e=parseFloat(n.value);return!isNaN(e)&&e>t?{max:{max:t,actual:n.value}}:null}}(n)}static required(n){return function cP(t){return zo(t.value)?{required:!0}:null}(n)}static requiredTrue(n){return function dP(t){return!0===t.value?null:{required:!0}}(n)}static email(n){return function uP(t){return zo(t.value)||uie.test(t.value)?null:{email:!0}}(n)}static minLength(n){return function hP(t){return n=>zo(n.value)||!sP(n.value)?null:n.value.lengthsP(n.value)&&n.value.length>t?{maxlength:{requiredLength:t,actualLength:n.value.length}}:null}(n)}static pattern(n){return function mP(t){if(!t)return yp;let n,e;return"string"==typeof t?(e="","^"!==t.charAt(0)&&(e+="^"),e+=t,"$"!==t.charAt(t.length-1)&&(e+="$"),n=new RegExp(e)):(e=t.toString(),n=t),i=>{if(zo(i.value))return null;const r=i.value;return n.test(r)?null:{pattern:{requiredPattern:e,actualValue:r}}}}(n)}static nullValidator(n){return null}static compose(n){return yP(n)}static composeAsync(n){return wP(n)}}function yp(t){return null}function pP(t){return null!=t}function gP(t){const n=tc(t)?yt(t):t;if(die&&!T_(n)){let e="Expected async validator to return Promise or Observable.";throw"object"==typeof t&&(e+=" Are you using a synchronous validator where an async validator is expected?"),new A(-1101,e)}return n}function _P(t){let n={};return t.forEach(e=>{n=null!=e?{...n,...e}:n}),0===Object.keys(n).length?null:n}function bP(t,n){return n.map(e=>e(t))}function vP(t){return t.map(n=>function hie(t){return!t.validate}(n)?n:e=>n.validate(e))}function yP(t){if(!t)return null;const n=t.filter(pP);return 0==n.length?null:function(e){return _P(bP(e,n))}}function Dw(t){return null!=t?yP(vP(t)):null}function wP(t){if(!t)return null;const n=t.filter(pP);return 0==n.length?null:function(e){return Mc(bP(e,n).map(gP)).pipe(B(_P))}}function Ew(t){return null!=t?wP(vP(t)):null}function xP(t,n){return null===t?[n]:Array.isArray(t)?[...t,n]:[t,n]}function CP(t){return t._rawValidators}function DP(t){return t._rawAsyncValidators}function Sw(t){return t?Array.isArray(t)?t:[t]:[]}function wp(t,n){return Array.isArray(t)?t.includes(n):t===n}function EP(t,n){const e=Sw(n);return Sw(t).forEach(r=>{wp(e,r)||e.push(r)}),e}function SP(t,n){return Sw(n).filter(e=>!wp(t,e))}class kP{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=Dw(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=Ew(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n){this.control&&this.control.reset(n)}hasError(n,e){return!!this.control&&this.control.hasError(n,e)}getError(n,e){return this.control?this.control.getError(n,e):null}}class On extends kP{get formDirective(){return null}get path(){return null}}class oo extends kP{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class MP{constructor(n){this._cd=n}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}}let xp=(()=>{class t extends MP{constructor(e){super(e)}}return t.\u0275fac=function(e){return new(e||t)(m(oo,2))},t.\u0275dir=M({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(e,i){2&e&&ce("ng-untouched",i.isUntouched)("ng-touched",i.isTouched)("ng-pristine",i.isPristine)("ng-dirty",i.isDirty)("ng-valid",i.isValid)("ng-invalid",i.isInvalid)("ng-pending",i.isPending)},features:[P]}),t})();function TP(t,n){return t?`with name: '${n}'`:`at index: ${n}`}const Tw=!1,Gd="VALID",Dp="INVALID",Dl="PENDING",Wd="DISABLED";function Aw(t){return(Ep(t)?t.validators:t)||null}function Iw(t,n){return(Ep(n)?n.asyncValidators:t)||null}function Ep(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}class OP{constructor(n,e){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(n),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get valid(){return this.status===Gd}get invalid(){return this.status===Dp}get pending(){return this.status==Dl}get disabled(){return this.status===Wd}get enabled(){return this.status!==Wd}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(EP(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(EP(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(SP(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(SP(n,this._rawAsyncValidators))}hasValidator(n){return wp(this._rawValidators,n)}hasAsyncValidator(n){return wp(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){this.touched=!0,this._parent&&!n.onlySelf&&this._parent.markAsTouched(n)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(n=>n.markAllAsTouched())}markAsUntouched(n={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(e=>{e.markAsUntouched({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}markAsDirty(n={}){this.pristine=!1,this._parent&&!n.onlySelf&&this._parent.markAsDirty(n)}markAsPristine(n={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(e=>{e.markAsPristine({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}markAsPending(n={}){this.status=Dl,!1!==n.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!n.onlySelf&&this._parent.markAsPending(n)}disable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=Wd,this.errors=null,this._forEachChild(i=>{i.disable({...n,onlySelf:!0})}),this._updateValue(),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:e}),this._onDisabledChange.forEach(i=>i(!0))}enable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=Gd,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:e}),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n){this._parent&&!n.onlySelf&&(this._parent.updateValueAndValidity(n),n.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Gd||this.status===Dl)&&this._runAsyncValidator(n.emitEvent)),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.updateValueAndValidity(n)}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Wd:Gd}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n){if(this.asyncValidator){this.status=Dl,this._hasOwnPendingAsyncValidator=!0;const e=gP(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(i=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(i,{emitEvent:n})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(n,e={}){this.errors=n,this._updateControlsErrors(!1!==e.emitEvent)}get(n){let e=n;return null==e||(Array.isArray(e)||(e=e.split(".")),0===e.length)?null:e.reduce((i,r)=>i&&i._find(r),this)}getError(n,e){const i=e?this.get(e):this;return i&&i.errors?i.errors[n]:null}hasError(n,e){return!!this.getError(n,e)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(n)}_initObservables(){this.valueChanges=new ee,this.statusChanges=new ee}_calculateStatus(){return this._allControlsDisabled()?Wd:this.errors?Dp:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(Dl)?Dl:this._anyControlsHaveStatus(Dp)?Dp:Gd}_anyControlsHaveStatus(n){return this._anyControls(e=>e.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n={}){this.pristine=!this._anyControlsDirty(),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}_updateTouched(n={}){this.touched=this._anyControlsTouched(),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){Ep(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=function yie(t){return Array.isArray(t)?Dw(t):t||null}(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=function wie(t){return Array.isArray(t)?Ew(t):t||null}(this._rawAsyncValidators)}}class Ow extends OP{constructor(n,e,i){super(Aw(e),Iw(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(n,e){return this.controls[n]?this.controls[n]:(this.controls[n]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(n,e,i={}){this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(n,e={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(n,e,i={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],e&&this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,e={}){(function IP(t,n,e){t._forEachChild((i,r)=>{if(void 0===e[r])throw new A(1002,Tw?function vie(t,n){return`Must supply a value for form control ${TP(t,n)}`}(n,r):"")})})(this,!0,n),Object.keys(n).forEach(i=>{(function AP(t,n,e){const i=t.controls;if(!(n?Object.keys(i):i).length)throw new A(1e3,Tw?function _ie(t){return`\n There are no form controls registered with this ${t?"group":"array"} yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n `}(n):"");if(!i[e])throw new A(1001,Tw?function bie(t,n){return`Cannot find form control ${TP(t,n)}`}(n,e):"")})(this,!0,i),this.controls[i].setValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(Object.keys(n).forEach(i=>{const r=this.controls[i];r&&r.patchValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n={},e={}){this._forEachChild((i,r)=>{i.reset(n[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(n,e,i)=>(n[i]=e.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(e,i)=>!!i._syncPendingControls()||e);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(e=>{const i=this.controls[e];i&&n(i,e)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(const[e,i]of Object.entries(this.controls))if(this.contains(e)&&n(i))return!0;return!1}_reduceValue(){return this._reduceChildren({},(e,i,r)=>((i.enabled||this.disabled)&&(e[r]=i.value),e))}_reduceChildren(n,e){let i=n;return this._forEachChild((r,o)=>{i=e(i,r,o)}),i}_allControlsDisabled(){for(const n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}}const El=new k("CallSetDisabledState",{providedIn:"root",factory:()=>Sp}),Sp="always";function qd(t,n,e=Sp){Rw(t,n),n.valueAccessor.writeValue(t.value),(t.disabled||"always"===e)&&n.valueAccessor.setDisabledState?.(t.disabled),function Die(t,n){n.valueAccessor.registerOnChange(e=>{t._pendingValue=e,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&RP(t,n)})}(t,n),function Sie(t,n){const e=(i,r)=>{n.valueAccessor.writeValue(i),r&&n.viewToModelUpdate(i)};t.registerOnChange(e),n._registerOnDestroy(()=>{t._unregisterOnChange(e)})}(t,n),function Eie(t,n){n.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&RP(t,n),"submit"!==t.updateOn&&t.markAsTouched()})}(t,n),function Cie(t,n){if(n.valueAccessor.setDisabledState){const e=i=>{n.valueAccessor.setDisabledState(i)};t.registerOnDisabledChange(e),n._registerOnDestroy(()=>{t._unregisterOnDisabledChange(e)})}}(t,n)}function Mp(t,n,e=!0){const i=()=>{};n.valueAccessor&&(n.valueAccessor.registerOnChange(i),n.valueAccessor.registerOnTouched(i)),Ap(t,n),t&&(n._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function Tp(t,n){t.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(n)})}function Rw(t,n){const e=CP(t);null!==n.validator?t.setValidators(xP(e,n.validator)):"function"==typeof e&&t.setValidators([e]);const i=DP(t);null!==n.asyncValidator?t.setAsyncValidators(xP(i,n.asyncValidator)):"function"==typeof i&&t.setAsyncValidators([i]);const r=()=>t.updateValueAndValidity();Tp(n._rawValidators,r),Tp(n._rawAsyncValidators,r)}function Ap(t,n){let e=!1;if(null!==t){if(null!==n.validator){const r=CP(t);if(Array.isArray(r)&&r.length>0){const o=r.filter(s=>s!==n.validator);o.length!==r.length&&(e=!0,t.setValidators(o))}}if(null!==n.asyncValidator){const r=DP(t);if(Array.isArray(r)&&r.length>0){const o=r.filter(s=>s!==n.asyncValidator);o.length!==r.length&&(e=!0,t.setAsyncValidators(o))}}}const i=()=>{};return Tp(n._rawValidators,i),Tp(n._rawAsyncValidators,i),e}function RP(t,n){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function FP(t,n){Rw(t,n)}function PP(t,n){t._syncPendingControls(),n.forEach(e=>{const i=e.control;"submit"===i.updateOn&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}const Iie={provide:On,useExisting:st(()=>Ip)},Yd=(()=>Promise.resolve())();let Ip=(()=>{class t extends On{constructor(e,i,r){super(),this.callSetDisabledState=r,this.submitted=!1,this._directives=new Set,this.ngSubmit=new ee,this.form=new Ow({},Dw(e),Ew(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){Yd.then(()=>{const i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),qd(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){Yd.then(()=>{const i=this._findContainer(e.path);i&&i.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){Yd.then(()=>{const i=this._findContainer(e.path),r=new Ow({});FP(r,e),i.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){Yd.then(()=>{const i=this._findContainer(e.path);i&&i.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){Yd.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submitted=!0,PP(this.form,this._directives),this.ngSubmit.emit(e),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e){this.form.reset(e),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}}return t.\u0275fac=function(e){return new(e||t)(m(yn,10),m(Uo,10),m(El,8))},t.\u0275dir=M({type:t,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(e,i){1&e&&re("submit",function(o){return i.onSubmit(o)})("reset",function(){return i.onReset()})},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[ie([Iie]),P]}),t})();function NP(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function LP(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}const Zd=class extends OP{constructor(n=null,e,i){super(Aw(e),Iw(i,e)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(n),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),Ep(e)&&(e.nonNullable||e.initialValueIsDefault)&&(this.defaultValue=LP(n)?n.value:n)}setValue(n,e={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(n,e={}){this.setValue(n,e)}reset(n=this.defaultValue,e={}){this._applyFormState(n),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){NP(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){NP(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(n){LP(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}};let UP=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})();const Lw=new k("NgModelWithFormControlWarning"),jie={provide:oo,useExisting:st(()=>Kd)};let Kd=(()=>{class t extends oo{set isDisabled(e){}constructor(e,i,r,o,s){super(),this._ngModelWarningConfig=o,this.callSetDisabledState=s,this.update=new ee,this._ngModelWarningSent=!1,this._setValidators(e),this._setAsyncValidators(i),this.valueAccessor=function Nw(t,n){if(!n)return null;let e,i,r;return Array.isArray(n),n.forEach(o=>{o.constructor===Cl?e=o:function Tie(t){return Object.getPrototypeOf(t.constructor)===Os}(o)?i=o:r=o}),r||i||e||null}(0,r)}ngOnChanges(e){if(this._isControlChanged(e)){const i=e.form.previousValue;i&&Mp(i,this,!1),qd(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}(function Pw(t,n){if(!t.hasOwnProperty("model"))return!1;const e=t.model;return!!e.isFirstChange()||!Object.is(n,e.currentValue)})(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&Mp(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty("form")}}return t._ngModelWarningSentOnce=!1,t.\u0275fac=function(e){return new(e||t)(m(yn,10),m(Uo,10),m(Ui,10),m(Lw,8),m(El,8))},t.\u0275dir=M({type:t,selectors:[["","formControl",""]],inputs:{form:["formControl","form"],isDisabled:["disabled","isDisabled"],model:["ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[ie([jie]),P,at]}),t})();const Hie={provide:On,useExisting:st(()=>Op)};let Op=(()=>{class t extends On{constructor(e,i,r){super(),this.callSetDisabledState=r,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new ee,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(Ap(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){const i=this.form.get(e.path);return qd(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){Mp(e.control||null,e,!1),function Aie(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,i){this.form.get(e.path).setValue(i)}onSubmit(e){return this.submitted=!0,PP(this.form,this.directives),this.ngSubmit.emit(e),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e){this.form.reset(e),this.submitted=!1}_updateDomValue(){this.directives.forEach(e=>{const i=e.control,r=this.form.get(e.path);i!==r&&(Mp(i||null,e),(t=>t instanceof Zd)(r)&&(qd(r,e,this.callSetDisabledState),e.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const i=this.form.get(e.path);FP(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){const i=this.form.get(e.path);i&&function kie(t,n){return Ap(t,n)}(i,e)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){Rw(this.form,this),this._oldForm&&Ap(this._oldForm,this)}_checkFormPresent(){}}return t.\u0275fac=function(e){return new(e||t)(m(yn,10),m(Uo,10),m(El,8))},t.\u0275dir=M({type:t,selectors:[["","formGroup",""]],hostBindings:function(e,i){1&e&&re("submit",function(o){return i.onSubmit(o)})("reset",function(){return i.onReset()})},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[ie([Hie]),P,at]}),t})(),ore=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[UP]}),t})(),Uw=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:Lw,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:El,useValue:e.callSetDisabledState??Sp}]}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[ore]}),t})();const oN=["*"],sN=["unscopedContent"],lre=["text"],cre=[[["","matListItemAvatar",""],["","matListItemIcon",""]],[["","matListItemTitle",""]],[["","matListItemLine",""]],"*",[["","matListItemMeta",""]],[["mat-divider"]]],dre=["[matListItemAvatar],[matListItemIcon]","[matListItemTitle]","[matListItemLine]","*","[matListItemMeta]","mat-divider"],aN=new k("ListOption");let lN=(()=>{class t{constructor(e){this._elementRef=e}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,selectors:[["","matListItemTitle",""]],hostAttrs:[1,"mat-mdc-list-item-title","mdc-list-item__primary-text"]}),t})(),cN=(()=>{class t{constructor(e){this._elementRef=e}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,selectors:[["","matListItemLine",""]],hostAttrs:[1,"mat-mdc-list-item-line","mdc-list-item__secondary-text"]}),t})(),Mre=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["","matListItemMeta",""]],hostAttrs:[1,"mat-mdc-list-item-meta","mdc-list-item__end"]}),t})(),dN=(()=>{class t{constructor(e){this._listOption=e}_isAlignedAtStart(){return!this._listOption||"after"===this._listOption?._getTogglePosition()}}return t.\u0275fac=function(e){return new(e||t)(m(aN,8))},t.\u0275dir=M({type:t,hostVars:4,hostBindings:function(e,i){2&e&&ce("mdc-list-item__start",i._isAlignedAtStart())("mdc-list-item__end",!i._isAlignedAtStart())}}),t})(),Tre=(()=>{class t extends dN{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matListItemAvatar",""]],hostAttrs:[1,"mat-mdc-list-item-avatar"],features:[P]}),t})(),Are=(()=>{class t extends dN{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matListItemIcon",""]],hostAttrs:[1,"mat-mdc-list-item-icon"],features:[P]}),t})();const Ire=new k("MAT_LIST_CONFIG");let Sl=(()=>{class t{constructor(){this._isNonInteractive=!0,this._disableRipple=!1,this._disabled=!1,this._defaultOptions=R(Ire,{optional:!0})}get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=Ve(e)}get disabled(){return this._disabled}set disabled(e){this._disabled=Ve(e)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,hostVars:1,hostBindings:function(e,i){2&e&&tt("aria-disabled",i.disabled)},inputs:{disableRipple:"disableRipple",disabled:"disabled"}}),t})(),$w=(()=>{class t{set lines(e){this._explicitLines=si(e,null),this._updateItemLines(!1)}get disableRipple(){return this.disabled||this._disableRipple||this._noopAnimations||!!this._listBase?.disableRipple}set disableRipple(e){this._disableRipple=Ve(e)}get disabled(){return this._disabled||!!this._listBase?.disabled}set disabled(e){this._disabled=Ve(e)}get rippleDisabled(){return this.disableRipple||!!this.rippleConfig.disabled}constructor(e,i,r,o,s,a){this._elementRef=e,this._ngZone=i,this._listBase=r,this._platform=o,this._explicitLines=null,this._disableRipple=!1,this._disabled=!1,this._subscriptions=new rt,this._rippleRenderer=null,this._hasUnscopedTextContent=!1,this.rippleConfig=s||{},this._hostElement=this._elementRef.nativeElement,this._isButtonElement="button"===this._hostElement.nodeName.toLowerCase(),this._noopAnimations="NoopAnimations"===a,r&&!r._isNonInteractive&&this._initInteractiveListItem(),this._isButtonElement&&!this._hostElement.hasAttribute("type")&&this._hostElement.setAttribute("type","button")}ngAfterViewInit(){this._monitorProjectedLinesAndTitle(),this._updateItemLines(!0)}ngOnDestroy(){this._subscriptions.unsubscribe(),null!==this._rippleRenderer&&this._rippleRenderer._removeTriggerEvents()}_hasIconOrAvatar(){return!(!this._avatars.length&&!this._icons.length)}_initInteractiveListItem(){this._hostElement.classList.add("mat-mdc-list-item-interactive"),this._rippleRenderer=new hl(this,this._ngZone,this._hostElement,this._platform),this._rippleRenderer.setupTriggerEvents(this._hostElement)}_monitorProjectedLinesAndTitle(){this._ngZone.runOutsideAngular(()=>{this._subscriptions.add($n(this._lines.changes,this._titles.changes).subscribe(()=>this._updateItemLines(!1)))})}_updateItemLines(e){if(!this._lines||!this._titles||!this._unscopedContent)return;e&&this._checkDomForUnscopedTextContent();const i=this._explicitLines??this._inferLinesFromContent(),r=this._unscopedContent.nativeElement;if(this._hostElement.classList.toggle("mat-mdc-list-item-single-line",i<=1),this._hostElement.classList.toggle("mdc-list-item--with-one-line",i<=1),this._hostElement.classList.toggle("mdc-list-item--with-two-lines",2===i),this._hostElement.classList.toggle("mdc-list-item--with-three-lines",3===i),this._hasUnscopedTextContent){const o=0===this._titles.length&&1===i;r.classList.toggle("mdc-list-item__primary-text",o),r.classList.toggle("mdc-list-item__secondary-text",!o)}else r.classList.remove("mdc-list-item__primary-text"),r.classList.remove("mdc-list-item__secondary-text")}_inferLinesFromContent(){let e=this._titles.length+this._lines.length;return this._hasUnscopedTextContent&&(e+=1),e}_checkDomForUnscopedTextContent(){this._hasUnscopedTextContent=Array.from(this._unscopedContent.nativeElement.childNodes).filter(e=>e.nodeType!==e.COMMENT_NODE).some(e=>!(!e.textContent||!e.textContent.trim()))}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Y),m(Sl,8),m(pt),m(Cm,8),m(Jt,8))},t.\u0275dir=M({type:t,contentQueries:function(e,i,r){if(1&e&&(Ye(r,Tre,4),Ye(r,Are,4)),2&e){let o;Q(o=J())&&(i._avatars=o),Q(o=J())&&(i._icons=o)}},hostVars:4,hostBindings:function(e,i){2&e&&(tt("aria-disabled",i.disabled)("disabled",i._isButtonElement&&i.disabled||null),ce("mdc-list-item--disabled",i.disabled))},inputs:{lines:"lines",disableRipple:"disableRipple",disabled:"disabled"}}),t})(),Ore=(()=>{class t extends Sl{constructor(){super(...arguments),this._isNonInteractive=!1}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=G({type:t,selectors:[["mat-action-list"]],hostAttrs:["role","group",1,"mat-mdc-action-list","mat-mdc-list-base","mdc-list"],exportAs:["matActionList"],features:[ie([{provide:Sl,useExisting:t}]),P],ngContentSelectors:oN,decls:1,vars:0,template:function(e,i){1&e&&(Bt(),Se(0))},styles:['@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-list-divider::after{content:"";display:block;border-bottom-width:1px;border-bottom-style:solid}}.mdc-list{margin:0;padding:8px 0;list-style-type:none}.mdc-list:focus{outline:none}.mdc-list-item__wrapper{display:block}.mdc-list-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;align-items:stretch;cursor:pointer}.mdc-list-item:focus{outline:none}.mdc-list-item.mdc-list-item--with-one-line{height:48px}.mdc-list-item.mdc-list-item--with-two-lines{height:64px}.mdc-list-item.mdc-list-item--with-three-lines{height:88px}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__start{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--disabled,.mdc-list-item.mdc-list-item--non-interactive{cursor:auto}.mdc-list-item:not(.mdc-list-item--selected):focus::before,.mdc-list-item.mdc-ripple-upgraded--background-focused::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-list-item:not(.mdc-list-item--selected):focus::before,.mdc-list-item.mdc-ripple-upgraded--background-focused::before{border-color:CanvasText}}.mdc-list-item.mdc-list-item--selected::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:3px double rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-list-item.mdc-list-item--selected::before{border-color:CanvasText}}.mdc-list-item.mdc-list-item--selected:focus::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:3px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-list-item.mdc-list-item--selected:focus::before{border-color:CanvasText}}a.mdc-list-item{color:inherit;text-decoration:none}.mdc-list-item__start{fill:currentColor;flex-shrink:0;pointer-events:none}.mdc-list-item__end{flex-shrink:0;pointer-events:none}.mdc-list-item__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;align-self:center;flex:1;pointer-events:none}.mdc-list-item--with-two-lines .mdc-list-item__content,.mdc-list-item--with-three-lines .mdc-list-item__content{align-self:stretch}.mdc-list-item__content[for]{pointer-events:none}.mdc-list-item__primary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item--with-two-lines .mdc-list-item__primary-text,.mdc-list-item--with-three-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item__secondary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;margin-top:0;line-height:normal}.mdc-list-item__secondary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list-item--with-three-lines .mdc-list-item__secondary-text{white-space:normal;line-height:20px}.mdc-list-item--with-overline .mdc-list-item__secondary-text{white-space:nowrap;line-height:auto}.mdc-list-item__overline-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:24px;content:"";vertical-align:0}.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-three-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-three-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-three-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-avatar.mdc-list-item,.mdc-list-item--with-leading-avatar.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-avatar .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-avatar .mdc-list-item__start,.mdc-list-item--with-leading-avatar .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-avatar .mdc-list-item__start{border-radius:50%}.mdc-list-item--with-leading-icon.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-icon.mdc-list-item,.mdc-list-item--with-leading-icon.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-icon .mdc-list-item__start{margin-left:16px;margin-right:32px}[dir=rtl] .mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-leading-icon .mdc-list-item__start[dir=rtl]{margin-left:32px;margin-right:16px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-thumbnail.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-thumbnail.mdc-list-item,.mdc-list-item--with-leading-thumbnail.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-thumbnail .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-thumbnail .mdc-list-item__start,.mdc-list-item--with-leading-thumbnail .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-image.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-image.mdc-list-item,.mdc-list-item--with-leading-image.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-image .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-image .mdc-list-item__start,.mdc-list-item--with-leading-image .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-one-line{height:72px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-video.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-video.mdc-list-item,.mdc-list-item--with-leading-video.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-video .mdc-list-item__start{margin-left:0;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-video .mdc-list-item__start,.mdc-list-item--with-leading-video .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-one-line{height:72px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-checkbox.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-checkbox.mdc-list-item,.mdc-list-item--with-leading-checkbox.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-checkbox .mdc-list-item__start{margin-left:8px;margin-right:24px}[dir=rtl] .mdc-list-item--with-leading-checkbox .mdc-list-item__start,.mdc-list-item--with-leading-checkbox .mdc-list-item__start[dir=rtl]{margin-left:24px;margin-right:8px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-radio.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-radio.mdc-list-item,.mdc-list-item--with-leading-radio.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-radio .mdc-list-item__start{margin-left:8px;margin-right:24px}[dir=rtl] .mdc-list-item--with-leading-radio .mdc-list-item__start,.mdc-list-item--with-leading-radio .mdc-list-item__start[dir=rtl]{margin-left:24px;margin-right:8px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-switch.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-switch.mdc-list-item,.mdc-list-item--with-leading-switch.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-switch .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-switch .mdc-list-item__start,.mdc-list-item--with-leading-switch .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-trailing-icon.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-icon.mdc-list-item,.mdc-list-item--with-trailing-icon.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-icon .mdc-list-item__end{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--with-trailing-icon .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end{align-self:flex-start;margin-top:0}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:0}.mdc-list-item--with-trailing-meta.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-meta.mdc-list-item,.mdc-list-item--with-trailing-meta.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-meta .mdc-list-item__end{margin-left:28px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-meta .mdc-list-item__end,.mdc-list-item--with-trailing-meta .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:28px}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-trailing-meta .mdc-list-item__end{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family);font-size:var(--mdc-typography-caption-font-size);line-height:var(--mdc-typography-caption-line-height);font-weight:var(--mdc-typography-caption-font-weight);letter-spacing:var(--mdc-typography-caption-letter-spacing);text-decoration:var(--mdc-typography-caption-text-decoration);text-transform:var(--mdc-typography-caption-text-transform)}.mdc-list-item--with-trailing-checkbox.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-checkbox.mdc-list-item,.mdc-list-item--with-trailing-checkbox.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-checkbox .mdc-list-item__end{margin-left:24px;margin-right:8px}[dir=rtl] .mdc-list-item--with-trailing-checkbox .mdc-list-item__end,.mdc-list-item--with-trailing-checkbox .mdc-list-item__end[dir=rtl]{margin-left:8px;margin-right:24px}.mdc-list-item--with-trailing-checkbox.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:8px}.mdc-list-item--with-trailing-radio.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-radio.mdc-list-item,.mdc-list-item--with-trailing-radio.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-radio .mdc-list-item__end{margin-left:24px;margin-right:8px}[dir=rtl] .mdc-list-item--with-trailing-radio .mdc-list-item__end,.mdc-list-item--with-trailing-radio .mdc-list-item__end[dir=rtl]{margin-left:8px;margin-right:24px}.mdc-list-item--with-trailing-radio.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:8px}.mdc-list-item--with-trailing-switch.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-switch.mdc-list-item,.mdc-list-item--with-trailing-switch.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-switch .mdc-list-item__end{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-switch .mdc-list-item__end,.mdc-list-item--with-trailing-switch .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-trailing-switch.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:16px}.mdc-list-item--with-overline.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-overline.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list-item--with-overline.mdc-list-item--with-three-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-overline.mdc-list-item--with-three-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list-item{padding-left:16px;padding-right:16px}[dir=rtl] .mdc-list-item,.mdc-list-item[dir=rtl]{padding-left:16px;padding-right:16px}.mdc-list-group .mdc-deprecated-list{padding:0}.mdc-list-group__subheader{margin:calc((3rem - 1.5rem)/2) 16px}.mdc-list-divider{padding:0;background-clip:content-box}.mdc-list-divider.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset{padding-left:16px;padding-right:auto}[dir=rtl] .mdc-list-divider.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset,.mdc-list-divider.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset[dir=rtl]{padding-left:auto;padding-right:16px}.mdc-list-divider.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset{padding-left:auto;padding-right:16px}[dir=rtl] .mdc-list-divider.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset,.mdc-list-divider.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset[dir=rtl]{padding-left:16px;padding-right:auto}.mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset{padding-left:0px;padding-right:auto}[dir=rtl] .mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset[dir=rtl]{padding-left:auto;padding-right:0px}[dir=rtl] .mdc-list-divider,.mdc-list-divider[dir=rtl]{padding:0}.mdc-list-item{background-color:var(--mdc-list-list-item-container-color)}.mdc-list-item.mdc-list-item--selected{background-color:var(--mdc-list-list-item-selected-container-color)}.mdc-list-item--with-one-line{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-one-line.mdc-list-item--with-leading-avatar,.mdc-list-item--with-one-line.mdc-list-item--with-leading-icon,.mdc-list-item--with-one-line.mdc-list-item--with-leading-thumbnail,.mdc-list-item--with-one-line.mdc-list-item--with-leading-checkbox,.mdc-list-item--with-one-line.mdc-list-item--with-leading-radio,.mdc-list-item--with-one-line.mdc-list-item--with-leading-switch{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-one-line.mdc-list-item--with-leading-image,.mdc-list-item--with-one-line.mdc-list-item--with-leading-video{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-two-lines{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-two-lines.mdc-list-item--with-leading-avatar,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-icon,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-thumbnail,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-checkbox,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-radio,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-switch,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-image,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-video{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-three-lines{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item.mdc-list-item--with-one-line{height:var(--mdc-list-list-item-one-line-container-height)}.mdc-list-item.mdc-list-item--with-two-lines{height:var(--mdc-list-list-item-two-line-container-height)}.mdc-list-item.mdc-list-item--with-three-lines{height:var(--mdc-list-list-item-three-line-container-height)}.mdc-list-item__primary-text{color:var(--mdc-list-list-item-label-text-color)}.mdc-list-item__primary-text{font-family:var(--mdc-list-list-item-label-text-font);line-height:var(--mdc-list-list-item-label-text-line-height);font-size:var(--mdc-list-list-item-label-text-size);font-weight:var(--mdc-list-list-item-label-text-weight);letter-spacing:var(--mdc-list-list-item-label-text-tracking)}.mdc-list-item__secondary-text{color:var(--mdc-list-list-item-supporting-text-color)}.mdc-list-item__secondary-text{font-family:var(--mdc-list-list-item-supporting-text-font);line-height:var(--mdc-list-list-item-supporting-text-line-height);font-size:var(--mdc-list-list-item-supporting-text-size);font-weight:var(--mdc-list-list-item-supporting-text-weight);letter-spacing:var(--mdc-list-list-item-supporting-text-tracking)}.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-list-list-item-leading-icon-color)}.mdc-list-item--with-leading-icon .mdc-list-item__start{width:var(--mdc-list-list-item-leading-icon-size);height:var(--mdc-list-list-item-leading-icon-size)}.mdc-list-item--with-leading-icon .mdc-list-item__start>i{font-size:var(--mdc-list-list-item-leading-icon-size)}.mdc-list-item--with-leading-icon .mdc-list-item__start .mdc-list-item__icon{font-size:var(--mdc-list-list-item-leading-icon-size);width:var(--mdc-list-list-item-leading-icon-size);height:var(--mdc-list-list-item-leading-icon-size)}.mdc-list-item--with-leading-avatar .mdc-list-item__start{width:var(--mdc-list-list-item-leading-avatar-size);height:var(--mdc-list-list-item-leading-avatar-size)}.mdc-list-item.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-list-list-item-trailing-supporting-text-color)}.mdc-list-item--with-trailing-meta .mdc-list-item__end{font-family:var(--mdc-list-list-item-trailing-supporting-text-font);line-height:var(--mdc-list-list-item-trailing-supporting-text-line-height);font-size:var(--mdc-list-list-item-trailing-supporting-text-size);font-weight:var(--mdc-list-list-item-trailing-supporting-text-weight);letter-spacing:var(--mdc-list-list-item-trailing-supporting-text-tracking)}.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-list-list-item-trailing-icon-color)}.mdc-list-item--with-trailing-icon .mdc-list-item__end{width:var(--mdc-list-list-item-trailing-icon-size);height:var(--mdc-list-list-item-trailing-icon-size)}.mdc-list-item--with-trailing-icon .mdc-list-item__end>i{font-size:var(--mdc-list-list-item-trailing-icon-size)}.mdc-list-item--with-trailing-icon .mdc-list-item__end .mdc-list-item__icon{font-size:var(--mdc-list-list-item-trailing-icon-size);width:var(--mdc-list-list-item-trailing-icon-size);height:var(--mdc-list-list-item-trailing-icon-size)}.mdc-list-item--selected.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-list-list-item-selected-trailing-icon-color)}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text{opacity:var(--mdc-list-list-item-disabled-label-text-opacity)}.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-list-list-item-disabled-leading-icon-color)}.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start{opacity:var(--mdc-list-list-item-disabled-leading-icon-opacity)}.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-list-list-item-disabled-trailing-icon-color)}.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end{opacity:var(--mdc-list-list-item-disabled-trailing-icon-opacity)}.mdc-list-item:hover .mdc-list-item__primary-text{color:var(--mdc-list-list-item-hover-label-text-color)}.mdc-list-item--with-leading-icon:hover .mdc-list-item__start{color:var(--mdc-list-list-item-hover-leading-icon-color)}.mdc-list-item--with-trailing-icon:hover .mdc-list-item__end{color:var(--mdc-list-list-item-hover-trailing-icon-color)}.mdc-list-item:focus .mdc-list-item__primary-text{color:var(--mdc-list-list-item-focus-label-text-color)}.mdc-list-item.mdc-list-item--disabled .mdc-list-item__primary-text{color:var(--mdc-list-list-item-disabled-label-text-color)}.mdc-list-item:hover::before{background-color:var(--mdc-list-list-item-hover-state-layer-color);opacity:var(--mdc-list-list-item-hover-state-layer-opacity)}.mdc-list-item.mdc-list-item--disabled::before{background-color:var(--mdc-list-list-item-disabled-state-layer-color);opacity:var(--mdc-list-list-item-disabled-state-layer-opacity)}.mdc-list-item:focus::before{background-color:var(--mdc-list-list-item-focus-state-layer-color);opacity:var(--mdc-list-list-item-focus-state-layer-opacity)}.mdc-list-item--disabled .mdc-radio,.mdc-list-item--disabled .mdc-checkbox{opacity:var(--mdc-list-list-item-disabled-label-text-opacity)}.mdc-list-item--with-leading-avatar .mat-mdc-list-item-avatar{border-radius:var(--mdc-list-list-item-leading-avatar-shape);background-color:var(--mdc-list-list-item-leading-avatar-color)}.mat-mdc-list-base{--mdc-list-list-item-container-shape:0;--mdc-list-list-item-leading-avatar-shape:50%;--mdc-list-list-item-container-color:transparent;--mdc-list-list-item-selected-container-color:transparent;--mdc-list-list-item-leading-avatar-color:transparent;--mdc-list-list-item-leading-icon-size:24px;--mdc-list-list-item-leading-avatar-size:40px;--mdc-list-list-item-trailing-icon-size:24px;--mdc-list-list-item-disabled-state-layer-color:transparent;--mdc-list-list-item-disabled-state-layer-opacity:0;--mdc-list-list-item-disabled-label-text-opacity:0.38;--mdc-list-list-item-disabled-leading-icon-opacity:0.38;--mdc-list-list-item-disabled-trailing-icon-opacity:0.38}.cdk-high-contrast-active a.mdc-list-item--activated::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active a.mdc-list-item--activated [dir=rtl]::after{right:auto;left:16px}.mat-mdc-list-base{display:block}.mat-mdc-list-base .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item__end,.mat-mdc-list-base .mdc-list-item__content{pointer-events:auto}.mat-mdc-list-item,.mat-mdc-list-option{width:100%;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-list-item:not(.mat-mdc-list-item-interactive),.mat-mdc-list-option:not(.mat-mdc-list-item-interactive){cursor:default}.mat-mdc-list-item .mat-divider-inset,.mat-mdc-list-option .mat-divider-inset{position:absolute;left:0;right:0;bottom:0}.mat-mdc-list-item .mat-mdc-list-item-avatar~.mat-divider-inset,.mat-mdc-list-option .mat-mdc-list-item-avatar~.mat-divider-inset{margin-left:72px}[dir=rtl] .mat-mdc-list-item .mat-mdc-list-item-avatar~.mat-divider-inset,[dir=rtl] .mat-mdc-list-option .mat-mdc-list-item-avatar~.mat-divider-inset{margin-right:72px}.mat-mdc-list-item-interactive::before{top:0;left:0;right:0;bottom:0;position:absolute;content:"";opacity:0;pointer-events:none}.mat-mdc-list-item>.mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-list-item:focus>.mat-mdc-focus-indicator::before{content:""}.mat-mdc-list-item.mdc-list-item--with-three-lines .mat-mdc-list-item-line.mdc-list-item__secondary-text{white-space:nowrap;line-height:normal}.mat-mdc-list-item.mdc-list-item--with-three-lines .mat-mdc-list-item-unscoped-content.mdc-list-item__secondary-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0);text-align:left}[dir=rtl] mat-action-list button{text-align:right}mat-action-list button::-moz-focus-inner{border:0}'],encapsulation:2,changeDetection:0}),t})(),Rre=(()=>{class t extends $w{get activated(){return this._activated}set activated(e){this._activated=Ve(e)}constructor(e,i,r,o,s,a){super(e,i,r,o,s,a),this._activated=!1}_getAriaCurrent(){return"A"===this._hostElement.nodeName&&this._activated?"page":null}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Y),m(Sl,8),m(pt),m(Cm,8),m(Jt,8))},t.\u0275cmp=G({type:t,selectors:[["mat-list-item"],["a","mat-list-item",""],["button","mat-list-item",""]],contentQueries:function(e,i,r){if(1&e&&(Ye(r,cN,5),Ye(r,lN,5),Ye(r,Mre,5)),2&e){let o;Q(o=J())&&(i._lines=o),Q(o=J())&&(i._titles=o),Q(o=J())&&(i._meta=o)}},viewQuery:function(e,i){if(1&e&&(Ge(sN,5),Ge(lre,5)),2&e){let r;Q(r=J())&&(i._unscopedContent=r.first),Q(r=J())&&(i._itemText=r.first)}},hostAttrs:[1,"mat-mdc-list-item","mdc-list-item"],hostVars:11,hostBindings:function(e,i){2&e&&(tt("aria-current",i._getAriaCurrent()),ce("mdc-list-item--activated",i.activated)("mdc-list-item--with-leading-avatar",0!==i._avatars.length)("mdc-list-item--with-leading-icon",0!==i._icons.length)("mdc-list-item--with-trailing-meta",0!==i._meta.length)("_mat-animation-noopable",i._noopAnimations))},inputs:{activated:"activated"},exportAs:["matListItem"],features:[P],ngContentSelectors:dre,decls:10,vars:0,consts:[[1,"mdc-list-item__content"],[1,"mat-mdc-list-item-unscoped-content",3,"cdkObserveContent"],["unscopedContent",""],[1,"mat-mdc-focus-indicator"]],template:function(e,i){1&e&&(Bt(cre),Se(0),x(1,"span",0),Se(2,1),Se(3,2),x(4,"span",1,2),re("cdkObserveContent",function(){return i._updateItemLines(!0)}),Se(6,3),E()(),Se(7,4),Se(8,5),z(9,"div",3))},dependencies:[bm],encapsulation:2,changeDetection:0}),t})(),Bre=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[vm,Re,Dt,Ed,QK,oie]}),t})();function Vre(t,n){if(1&t&&(x(0,"div")(1,"a",7),z(2,"img",8),x(3,"div",9),N(4),E()()()),2&t){const e=X();D(2),S("src",e.productLogoUrl,Oi),D(2),Qt(e.productTitle)}}function jre(t,n){1&t&&z(0,"div",10)}function Hre(t,n){1&t&&z(0,"div",10)}function zre(t,n){if(1&t){const e=mo();x(0,"button",12),re("click",function(){const o=Wi(e).$implicit,s=X(2);return s.downloadListOpen=!1,qi(s.download.emit(o))}),N(1),E()}if(2&t){const e=n.$implicit;D(1),nt(" ",e.label," ")}}function Ure(t,n){if(1&t&&(x(0,"mat-action-list"),O(1,zre,2,1,"button",11),E()),2&t){const e=X();D(1),S("ngForOf",e.downloadFormats)}}const $re=[{panelClass:"above",originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",offsetY:0},{panelClass:"below",originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"}];let Gre=(()=>{var t;class n{constructor(){this.size="large",this.productLogoUrl="",this.productTitle="",this.hraPortal=Wr,this.illustrationMetadata=Wr,this.embed=Wr,this.downloadFormats=[],this.download=new ee,this.contactClick=new ee,this.DOWNLOADS_LIST_POSITION=$re,this.downloadListOpen=!1}get isSmall(){return"small"===this.size}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-footer"]],hostVars:2,hostBindings:function(i,r){2&i&&function jE(t){Ni(Kn,ir,t,!0)}(r.size)},inputs:{size:"size",productLogoUrl:"productLogoUrl",productTitle:"productTitle",hraPortal:"hraPortal",illustrationMetadata:"illustrationMetadata",embed:"embed",downloadFormats:"downloadFormats"},outputs:{download:"download",contactClick:"contactClick"},standalone:!0,features:[Be],decls:25,vars:10,consts:[[4,"ngIf"],["class","filler",4,"ngIf"],["mat-stroked-button","","color","accent",1,"button",3,"hraLink"],["mat-stroked-button","","color","accent","type","button","cdkOverlayOrigin","",1,"button",3,"click"],["anchor","cdkOverlayOrigin"],["mat-stroked-button","","color","accent",1,"button",3,"click"],["cdkConnectedOverlay","","cdkConnectedOverlayHasBackdrop","false","cdkConnectedOverlayPush","false","cdkConnectedOverlayPanelClass","download-options-panel",3,"cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayOffsetX","overlayOutsideClick"],[1,"product-logo-link"],["alt","Prodoct Logo",1,"product-logo-image",3,"src"],[1,"product-title"],[1,"filler"],["mat-list-item","",3,"click",4,"ngFor","ngForOf"],["mat-list-item","",3,"click"]],template:function(i,r){if(1&i&&(O(0,Vre,5,2,"div",0),O(1,jre,1,0,"div",1),x(2,"button",2)(3,"mat-icon"),N(4,"info_outlined"),E(),N(5," Illustration\n"),E(),x(6,"button",3,4),re("click",function(){return r.downloadListOpen=!r.downloadListOpen}),x(8,"mat-icon"),N(9,"download"),E(),N(10," Download\n"),E(),x(11,"button",2)(12,"mat-icon"),N(13,"code"),E(),N(14," Embed\n"),E(),O(15,Hre,1,0,"div",1),x(16,"button",5),re("click",function(){return r.contactClick.emit()}),x(17,"mat-icon"),N(18,"mail_outlined"),E(),N(19," Contact\n"),E(),x(20,"button",2)(21,"mat-icon"),N(22,"open_in_new"),E(),N(23," HRA Portal\n"),E(),O(24,Ure,2,1,"ng-template",6),re("overlayOutsideClick",function(){return r.downloadListOpen=!1})),2&i){const o=Ft(7);S("ngIf",r.isSmall),D(1),S("ngIf",r.isSmall),D(1),S("hraLink",r.illustrationMetadata),D(9),S("hraLink",r.embed),D(4),S("ngIf",!r.isSmall),D(5),S("hraLink",r.hraPortal),D(4),S("cdkConnectedOverlayOrigin",o)("cdkConnectedOverlayOpen",r.downloadListOpen)("cdkConnectedOverlayPositions",r.DOWNLOADS_LIST_POSITION)("cdkConnectedOverlayOffsetX",0)}},dependencies:[Re,cs,Vn,Xr,fl,_r,Qr,rp,VF,BF,Bre,Ore,Rre,ml],styles:["[_nghost-%COMP%]{display:flex;padding:1rem 2rem;border-top:.063rem solid #e2e7e9;align-items:center;background-color:#f8f9fa;gap:1rem;--palette-primary-500: #abcdef}[_nghost-%COMP%] .controls[_ngcontent-%COMP%]{display:flex;justify-content:flex-end}[_nghost-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}[_nghost-%COMP%] .product-title[_ngcontent-%COMP%]{color:#900;margin-right:0rem}[_nghost-%COMP%] a[_ngcontent-%COMP%]{cursor:pointer;display:flex}[_nghost-%COMP%] .product-logo-image[_ngcontent-%COMP%]{height:1.2rem;margin-right:1rem}[_nghost-%COMP%] button[_ngcontent-%COMP%]{justify-content:center;align-items:center;min-width:9rem;min-height:3rem;gap:.5rem;--palette-primary-100-rgb: #4c5a69;--palette-primary-500-rgb: #243142}[_nghost-%COMP%] button.mat-accent[_ngcontent-%COMP%]:active{--palette-primary-700-rgb: #4c5a69}[_nghost-%COMP%] button.mat-accent[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{z-index:1} .download-options-panel{box-shadow:.1rem .1rem .4rem .2rem #dad7d7;background-color:#fff}"],changeDetection:0}),n})(),Wre=(()=>{class t{static formats(e){const{formats:i,entries:r}=e;return Object.values(i).filter(s=>!(!s||!(s.id in r)))}}return U([Ct([U0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Array)],t,"formats",null),t})(),hN=(()=>{class t{static isFullScreen(e){return e.isFullScreen}static size(e){return e.size}}return U([Ct([Y0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Boolean)],t,"isFullScreen",null),U([Ct([Y0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",String)],t,"size",null),t})();const qre=["matFormFieldNotchedOutline",""],Yre=["*"],Zre=["textField"],Kre=["iconPrefixContainer"],Xre=["textPrefixContainer"];function Qre(t,n){1&t&&z(0,"span",19)}function Jre(t,n){if(1&t){const e=mo();x(0,"label",17),re("cdkObserveContent",function(){return Wi(e),qi(X(2)._refreshOutlineNotchWidth())}),Se(1,1),O(2,Qre,1,0,"span",18),E()}if(2&t){const e=X(2);S("floating",e._shouldLabelFloat())("cdkObserveContentDisabled",!e._hasOutline())("id",e._labelId),tt("for",e._control.id)("aria-owns",e._control.id),D(2),S("ngIf",!e.hideRequiredMarker&&e._control.required)}}function eoe(t,n){1&t&&O(0,Jre,3,6,"label",16),2&t&&S("ngIf",X()._hasFloatingLabel())}function toe(t,n){1&t&&z(0,"div",20)}function noe(t,n){}function ioe(t,n){1&t&&O(0,noe,0,0,"ng-template",22),2&t&&(X(2),S("ngTemplateOutlet",Ft(1)))}function roe(t,n){if(1&t&&(x(0,"div",21),O(1,ioe,1,1,"ng-template",9),E()),2&t){const e=X();S("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat())("matFormFieldNotchedOutlineLabelWidth",e._labelWidth),D(1),S("ngIf",!e._forceDisplayInfixLabel())}}function ooe(t,n){1&t&&(x(0,"div",23,24),Se(2,2),E())}function soe(t,n){1&t&&(x(0,"div",25,26),Se(2,3),E())}function aoe(t,n){}function loe(t,n){1&t&&O(0,aoe,0,0,"ng-template",22),2&t&&(X(),S("ngTemplateOutlet",Ft(1)))}function coe(t,n){1&t&&(x(0,"div",27),Se(1,4),E())}function doe(t,n){1&t&&(x(0,"div",28),Se(1,5),E())}function uoe(t,n){1&t&&z(0,"div",29)}function hoe(t,n){1&t&&(x(0,"div",30),Se(1,6),E()),2&t&&S("@transitionMessages",X()._subscriptAnimationState)}function foe(t,n){if(1&t&&(x(0,"mat-hint",34),N(1),E()),2&t){const e=X(2);S("id",e._hintLabelId),D(1),Qt(e.hintLabel)}}function moe(t,n){if(1&t&&(x(0,"div",31),O(1,foe,2,2,"mat-hint",32),Se(2,7),z(3,"div",33),Se(4,8),E()),2&t){const e=X();S("@transitionMessages",e._subscriptAnimationState),D(1),S("ngIf",e.hintLabel)}}const poe=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],goe=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];let Xd=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["mat-label"]]}),t})(),_oe=0;const fN=new k("MatError");let Gw=(()=>{class t{constructor(e,i){this.id="mat-mdc-error-"+_oe++,e||i.nativeElement.setAttribute("aria-live","polite")}}return t.\u0275fac=function(e){return new(e||t)(Tr("aria-live"),m(H))},t.\u0275dir=M({type:t,selectors:[["mat-error"],["","matError",""]],hostAttrs:["aria-atomic","true",1,"mat-mdc-form-field-error","mat-mdc-form-field-bottom-align"],hostVars:1,hostBindings:function(e,i){2&e&&ba("id",i.id)},inputs:{id:"id"},features:[ie([{provide:fN,useExisting:t}])]}),t})(),boe=0,mN=(()=>{class t{constructor(){this.align="start",this.id="mat-mdc-hint-"+boe++}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(e,i){2&e&&(ba("id",i.id),tt("align",null),ce("mat-mdc-form-field-hint-end","end"===i.align))},inputs:{align:"align",id:"id"}}),t})();const voe=new k("MatPrefix"),yoe=new k("MatSuffix");let pN=(()=>{class t{constructor(e){this._elementRef=e,this.floating=!1}getWidth(){return function woe(t){if(null!==t.offsetParent)return t.scrollWidth;const e=t.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);const i=e.scrollWidth;return e.remove(),i}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(e,i){2&e&&ce("mdc-floating-label--float-above",i.floating)},inputs:{floating:"floating"}}),t})();const gN="mdc-line-ripple--active",Rp="mdc-line-ripple--deactivating";let _N=(()=>{class t{constructor(e,i){this._elementRef=e,this._handleTransitionEnd=r=>{const o=this._elementRef.nativeElement.classList,s=o.contains(Rp);"opacity"===r.propertyName&&s&&o.remove(gN,Rp)},i.runOutsideAngular(()=>{e.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){const e=this._elementRef.nativeElement.classList;e.remove(Rp),e.add(gN)}deactivate(){this._elementRef.nativeElement.classList.add(Rp)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Y))},t.\u0275dir=M({type:t,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]}),t})(),bN=(()=>{class t{constructor(e,i){this._elementRef=e,this._ngZone=i,this.labelWidth=0,this.open=!1}ngAfterViewInit(){const e=this._elementRef.nativeElement.querySelector(".mdc-floating-label");e?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(e.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>e.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_getNotchWidth(){return this.open?this.labelWidth>0?`calc(${this.labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:"0px":null}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Y))},t.\u0275cmp=G({type:t,selectors:[["div","matFormFieldNotchedOutline",""]],hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(e,i){2&e&&ce("mdc-notched-outline--notched",i.open)},inputs:{labelWidth:["matFormFieldNotchedOutlineLabelWidth","labelWidth"],open:["matFormFieldNotchedOutlineOpen","open"]},attrs:qre,ngContentSelectors:Yre,decls:4,vars:2,consts:[[1,"mdc-notched-outline__leading"],[1,"mdc-notched-outline__notch"],[1,"mdc-notched-outline__trailing"]],template:function(e,i){1&e&&(Bt(),z(0,"div",0),x(1,"div",1),Se(2),E(),z(3,"div",2)),2&e&&(D(1),tr("width",i._getNotchWidth()))},encapsulation:2,changeDetection:0}),t})();const xoe={transitionMessages:xc("transitionMessages",[sr("enter",on({opacity:1,transform:"translateY(0%)"})),Co("void => enter",[on({opacity:0,transform:"translateY(-5px)"}),xo("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let vN=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t}),t})();const yN=new k("MatFormField"),Coe=new k("MAT_FORM_FIELD_DEFAULT_OPTIONS");let wN=0,Ww=(()=>{class t{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=Ve(e)}get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||"auto"}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(e){const i=this._appearance;this._appearance=e||this._defaults?.appearance||"fill","outline"===this._appearance&&this._appearance!==i&&(this._refreshOutlineNotchWidth(),this._needsOutlineLabelOffsetUpdateOnStable=!0)}get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||"fixed"}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||"fixed"}get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}constructor(e,i,r,o,s,a,l,c){this._elementRef=e,this._changeDetectorRef=i,this._ngZone=r,this._dir=o,this._platform=s,this._defaults=a,this._animationMode=l,this._document=c,this._hideRequiredMarker=!1,this.color="primary",this._appearance="fill",this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId="mat-mdc-form-field-label-"+wN++,this._hintLabelId="mat-mdc-hint-"+wN++,this._subscriptAnimationState="",this._labelWidth=0,this._destroyed=new te,this._isFocused=null,this._needsOutlineLabelOffsetUpdateOnStable=!1,a&&(a.appearance&&(this.appearance=a.appearance),this._hideRequiredMarker=Boolean(a?.hideRequiredMarker),a.color&&(this.color=a.color))}ngAfterViewInit(){this._updateFocusState(),this._refreshOutlineNotchWidth(),this._document?.fonts?.ready?this._document.fonts.ready.then(()=>{this._refreshOutlineNotchWidth(),this._changeDetectorRef.markForCheck()}):setTimeout(()=>this._refreshOutlineNotchWidth(),100),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl()}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}getLabelId(){return this._hasFloatingLabel()?this._labelId:null}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(){const e=this._control;e.controlType&&this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${e.controlType}`),e.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),e.ngControl&&e.ngControl.valueChanges&&e.ngControl.valueChanges.pipe(ze(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck())}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),$n(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||null===this._isFocused)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe(ze(this._destroyed)).subscribe(()=>{this._needsOutlineLabelOffsetUpdateOnStable&&(this._needsOutlineLabelOffsetUpdateOnStable=!1,this._updateOutlineLabelOffset())})}),this._dir.change.pipe(ze(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0)}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel(){return!!this._labelChildNonStatic||!!this._labelChildStatic}_shouldLabelFloat(){return this._control.shouldLabelFloat||this._shouldAlwaysFloat()}_shouldForward(e){const i=this._control?this._control.ngControl:null;return i&&i[e]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||(this._labelWidth=this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&e.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getDisplayedMessages()){const i=this._hintChildren?this._hintChildren.find(o=>"start"===o.align):null,r=this._hintChildren?this._hintChildren.find(o=>"end"===o.align):null;i?e.push(i.id):this._hintLabel&&e.push(this._hintLabelId),r&&e.push(r.id)}else this._errorChildren&&e.push(...this._errorChildren.map(i=>i.id));this._control.setDescribedByIds(e)}}_updateOutlineLabelOffset(){if(!this._platform.isBrowser||!this._hasOutline()||!this._floatingLabel)return;const e=this._floatingLabel.element;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return void(e.style.transform="");if(!this._isAttachedToDom())return void(this._needsOutlineLabelOffsetUpdateOnStable=!0);const i=this._iconPrefixContainer?.nativeElement,r=this._textPrefixContainer?.nativeElement,o=i?.getBoundingClientRect().width??0,s=r?.getBoundingClientRect().width??0;e.style.transform=`var(\n --mat-mdc-form-field-label-transform,\n translateY(-50%) translateX(calc(${"rtl"===this._dir.value?"-1":"1"} * (${o+s}px + var(--mat-mdc-form-field-label-offset-x, 0px))))\n )`}_isAttachedToDom(){const e=this._elementRef.nativeElement;if(e.getRootNode){const i=e.getRootNode();return i&&i!==e}return document.documentElement.contains(e)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(en),m(Y),m(In),m(pt),m(Coe,8),m(Jt,8),m(ge))},t.\u0275cmp=G({type:t,selectors:[["mat-form-field"]],contentQueries:function(e,i,r){if(1&e&&(Ye(r,Xd,5),Ye(r,Xd,7),Ye(r,vN,5),Ye(r,voe,5),Ye(r,yoe,5),Ye(r,fN,5),Ye(r,mN,5)),2&e){let o;Q(o=J())&&(i._labelChildNonStatic=o.first),Q(o=J())&&(i._labelChildStatic=o.first),Q(o=J())&&(i._formFieldControl=o.first),Q(o=J())&&(i._prefixChildren=o),Q(o=J())&&(i._suffixChildren=o),Q(o=J())&&(i._errorChildren=o),Q(o=J())&&(i._hintChildren=o)}},viewQuery:function(e,i){if(1&e&&(Ge(Zre,5),Ge(Kre,5),Ge(Xre,5),Ge(pN,5),Ge(bN,5),Ge(_N,5)),2&e){let r;Q(r=J())&&(i._textField=r.first),Q(r=J())&&(i._iconPrefixContainer=r.first),Q(r=J())&&(i._textPrefixContainer=r.first),Q(r=J())&&(i._floatingLabel=r.first),Q(r=J())&&(i._notchedOutline=r.first),Q(r=J())&&(i._lineRipple=r.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(e,i){2&e&&ce("mat-mdc-form-field-label-always-float",i._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",i._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",i._hasIconSuffix)("mat-form-field-invalid",i._control.errorState)("mat-form-field-disabled",i._control.disabled)("mat-form-field-autofilled",i._control.autofilled)("mat-form-field-no-animations","NoopAnimations"===i._animationMode)("mat-form-field-appearance-fill","fill"==i.appearance)("mat-form-field-appearance-outline","outline"==i.appearance)("mat-form-field-hide-placeholder",i._hasFloatingLabel()&&!i._shouldLabelFloat())("mat-focused",i._control.focused)("mat-primary","accent"!==i.color&&"warn"!==i.color)("mat-accent","accent"===i.color)("mat-warn","warn"===i.color)("ng-untouched",i._shouldForward("untouched"))("ng-touched",i._shouldForward("touched"))("ng-pristine",i._shouldForward("pristine"))("ng-dirty",i._shouldForward("dirty"))("ng-valid",i._shouldForward("valid"))("ng-invalid",i._shouldForward("invalid"))("ng-pending",i._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[ie([{provide:yN,useExisting:t}])],ngContentSelectors:goe,decls:18,vars:23,consts:[["labelTemplate",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],["textField",""],["class","mat-mdc-form-field-focus-overlay",4,"ngIf"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth",4,"ngIf"],["class","mat-mdc-form-field-icon-prefix",4,"ngIf"],["class","mat-mdc-form-field-text-prefix",4,"ngIf"],[1,"mat-mdc-form-field-infix"],[3,"ngIf"],["class","mat-mdc-form-field-text-suffix",4,"ngIf"],["class","mat-mdc-form-field-icon-suffix",4,"ngIf"],["matFormFieldLineRipple","",4,"ngIf"],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align",3,"ngSwitch"],["class","mat-mdc-form-field-error-wrapper",4,"ngSwitchCase"],["class","mat-mdc-form-field-hint-wrapper",4,"ngSwitchCase"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent",4,"ngIf"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent"],["aria-hidden","true","class","mat-mdc-form-field-required-marker mdc-floating-label--required",4,"ngIf"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[1,"mat-mdc-form-field-focus-overlay"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-icon-prefix"],["iconPrefixContainer",""],[1,"mat-mdc-form-field-text-prefix"],["textPrefixContainer",""],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],[3,"id",4,"ngIf"],[1,"mat-mdc-form-field-hint-spacer"],[3,"id"]],template:function(e,i){1&e&&(Bt(poe),O(0,eoe,1,1,"ng-template",null,0,Jn),x(2,"div",1,2),re("click",function(o){return i._control.onContainerClick&&i._control.onContainerClick(o)}),O(4,toe,1,0,"div",3),x(5,"div",4),O(6,roe,2,3,"div",5),O(7,ooe,3,0,"div",6),O(8,soe,3,0,"div",7),x(9,"div",8),O(10,loe,1,1,"ng-template",9),Se(11),E(),O(12,coe,2,0,"div",10),O(13,doe,2,0,"div",11),E(),O(14,uoe,1,0,"div",12),E(),x(15,"div",13),O(16,hoe,2,1,"div",14),O(17,moe,5,2,"div",15),E()),2&e&&(D(2),ce("mdc-text-field--filled",!i._hasOutline())("mdc-text-field--outlined",i._hasOutline())("mdc-text-field--no-label",!i._hasFloatingLabel())("mdc-text-field--disabled",i._control.disabled)("mdc-text-field--invalid",i._control.errorState),D(2),S("ngIf",!i._hasOutline()&&!i._control.disabled),D(2),S("ngIf",i._hasOutline()),D(1),S("ngIf",i._hasIconPrefix),D(1),S("ngIf",i._hasTextPrefix),D(2),S("ngIf",!i._hasOutline()||i._forceDisplayInfixLabel()),D(2),S("ngIf",i._hasTextSuffix),D(1),S("ngIf",i._hasIconSuffix),D(1),S("ngIf",!i._hasOutline()),D(1),ce("mat-mdc-form-field-subscript-dynamic-size","dynamic"===i.subscriptSizing),S("ngSwitch",i._getDisplayedMessages()),D(1),S("ngSwitchCase","error"),D(1),S("ngSwitchCase","hint"))},dependencies:[Vn,Mh,kh,bM,bm,mN,pN,bN,_N],styles:['.mdc-text-field{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:"";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{line-height:normal;pointer-events:all}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}'],encapsulation:2,data:{animation:[xoe.transitionMessages]},changeDetection:0}),t})(),Qd=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Dt,Re,vm,Dt]}),t})();const DN=ll({passive:!0});let Soe=(()=>{class t{constructor(e,i){this._platform=e,this._ngZone=i,this._monitoredElements=new Map}monitor(e){if(!this._platform.isBrowser)return xn;const i=Kr(e),r=this._monitoredElements.get(i);if(r)return r.subject;const o=new te,s="cdk-text-field-autofilled",a=l=>{"cdk-text-field-autofill-start"!==l.animationName||i.classList.contains(s)?"cdk-text-field-autofill-end"===l.animationName&&i.classList.contains(s)&&(i.classList.remove(s),this._ngZone.run(()=>o.next({target:l.target,isAutofilled:!1}))):(i.classList.add(s),this._ngZone.run(()=>o.next({target:l.target,isAutofilled:!0})))};return this._ngZone.runOutsideAngular(()=>{i.addEventListener("animationstart",a,DN),i.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(i,{subject:o,unlisten:()=>{i.removeEventListener("animationstart",a,DN)}}),o}stopMonitoring(e){const i=Kr(e),r=this._monitoredElements.get(i);r&&(r.unlisten(),r.subject.complete(),i.classList.remove("cdk-text-field-autofill-monitored"),i.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(i))}ngOnDestroy(){this._monitoredElements.forEach((e,i)=>this.stopMonitoring(i))}}return t.\u0275fac=function(e){return new(e||t)(_(pt),_(Y))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),koe=(()=>{class t{get minRows(){return this._minRows}set minRows(e){this._minRows=si(e),this._setMinHeight()}get maxRows(){return this._maxRows}set maxRows(e){this._maxRows=si(e),this._setMaxHeight()}get enabled(){return this._enabled}set enabled(e){e=Ve(e),this._enabled!==e&&((this._enabled=e)?this.resizeToFitContent(!0):this.reset())}get placeholder(){return this._textareaElement.placeholder}set placeholder(e){this._cachedPlaceholderHeight=void 0,e?this._textareaElement.setAttribute("placeholder",e):this._textareaElement.removeAttribute("placeholder"),this._cacheTextareaPlaceholderHeight()}constructor(e,i,r,o){this._elementRef=e,this._platform=i,this._ngZone=r,this._destroyed=new te,this._enabled=!0,this._previousMinRows=-1,this._isViewInited=!1,this._handleFocusEvent=s=>{this._hasFocus="focus"===s.type},this._document=o,this._textareaElement=this._elementRef.nativeElement}_setMinHeight(){const e=this.minRows&&this._cachedLineHeight?this.minRows*this._cachedLineHeight+"px":null;e&&(this._textareaElement.style.minHeight=e)}_setMaxHeight(){const e=this.maxRows&&this._cachedLineHeight?this.maxRows*this._cachedLineHeight+"px":null;e&&(this._textareaElement.style.maxHeight=e)}ngAfterViewInit(){this._platform.isBrowser&&(this._initialHeight=this._textareaElement.style.height,this.resizeToFitContent(),this._ngZone.runOutsideAngular(()=>{Ho(this._getWindow(),"resize").pipe(ep(16),ze(this._destroyed)).subscribe(()=>this.resizeToFitContent(!0)),this._textareaElement.addEventListener("focus",this._handleFocusEvent),this._textareaElement.addEventListener("blur",this._handleFocusEvent)}),this._isViewInited=!0,this.resizeToFitContent(!0))}ngOnDestroy(){this._textareaElement.removeEventListener("focus",this._handleFocusEvent),this._textareaElement.removeEventListener("blur",this._handleFocusEvent),this._destroyed.next(),this._destroyed.complete()}_cacheTextareaLineHeight(){if(this._cachedLineHeight)return;let e=this._textareaElement.cloneNode(!1);e.rows=1,e.style.position="absolute",e.style.visibility="hidden",e.style.border="none",e.style.padding="0",e.style.height="",e.style.minHeight="",e.style.maxHeight="",e.style.overflow="hidden",this._textareaElement.parentNode.appendChild(e),this._cachedLineHeight=e.clientHeight,e.remove(),this._setMinHeight(),this._setMaxHeight()}_measureScrollHeight(){const e=this._textareaElement,i=e.style.marginBottom||"",r=this._platform.FIREFOX,o=r&&this._hasFocus,s=r?"cdk-textarea-autosize-measuring-firefox":"cdk-textarea-autosize-measuring";o&&(e.style.marginBottom=`${e.clientHeight}px`),e.classList.add(s);const a=e.scrollHeight-4;return e.classList.remove(s),o&&(e.style.marginBottom=i),a}_cacheTextareaPlaceholderHeight(){if(!this._isViewInited||null!=this._cachedPlaceholderHeight)return;if(!this.placeholder)return void(this._cachedPlaceholderHeight=0);const e=this._textareaElement.value;this._textareaElement.value=this._textareaElement.placeholder,this._cachedPlaceholderHeight=this._measureScrollHeight(),this._textareaElement.value=e}ngDoCheck(){this._platform.isBrowser&&this.resizeToFitContent()}resizeToFitContent(e=!1){if(!this._enabled||(this._cacheTextareaLineHeight(),this._cacheTextareaPlaceholderHeight(),!this._cachedLineHeight))return;const i=this._elementRef.nativeElement,r=i.value;if(!e&&this._minRows===this._previousMinRows&&r===this._previousValue)return;const o=this._measureScrollHeight(),s=Math.max(o,this._cachedPlaceholderHeight||0);i.style.height=`${s}px`,this._ngZone.runOutsideAngular(()=>{typeof requestAnimationFrame<"u"?requestAnimationFrame(()=>this._scrollToCaretPosition(i)):setTimeout(()=>this._scrollToCaretPosition(i))}),this._previousValue=r,this._previousMinRows=this._minRows}reset(){void 0!==this._initialHeight&&(this._textareaElement.style.height=this._initialHeight)}_noopInputHandler(){}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_scrollToCaretPosition(e){const{selectionStart:i,selectionEnd:r}=e;!this._destroyed.isStopped&&this._hasFocus&&e.setSelectionRange(i,r)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(Y),m(ge,8))},t.\u0275dir=M({type:t,selectors:[["textarea","cdkTextareaAutosize",""]],hostAttrs:["rows","1",1,"cdk-textarea-autosize"],hostBindings:function(e,i){1&e&&re("input",function(){return i._noopInputHandler()})},inputs:{minRows:["cdkAutosizeMinRows","minRows"],maxRows:["cdkAutosizeMaxRows","maxRows"],enabled:["cdkTextareaAutosize","enabled"],placeholder:"placeholder"},exportAs:["cdkTextareaAutosize"]}),t})(),Moe=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({}),t})();const Toe=new k("MAT_INPUT_VALUE_ACCESSOR"),Aoe=["button","checkbox","file","hidden","image","radio","range","reset","submit"];let Ioe=0;const Ooe=GK(class{constructor(t,n,e,i){this._defaultErrorStateMatcher=t,this._parentForm=n,this._parentFormGroup=e,this.ngControl=i,this.stateChanges=new te}});let qw=(()=>{class t extends Ooe{get disabled(){return this._disabled}set disabled(e){this._disabled=Ve(e),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(e){this._id=e||this._uid}get required(){return this._required??this.ngControl?.control?.hasValidator($d.required)??!1}set required(e){this._required=Ve(e)}get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&vO().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}get value(){return this._inputValueAccessor.value}set value(e){e!==this.value&&(this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=Ve(e)}constructor(e,i,r,o,s,a,l,c,d,u){super(a,o,s,r),this._elementRef=e,this._platform=i,this._autofillMonitor=c,this._formField=u,this._uid="mat-input-"+Ioe++,this.focused=!1,this.stateChanges=new te,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(p=>vO().has(p)),this._iOSKeyupListener=p=>{const g=p.target;!g.value&&0===g.selectionStart&&0===g.selectionEnd&&(g.setSelectionRange(1,1),g.setSelectionRange(0,0))};const h=this._elementRef.nativeElement,f=h.nodeName.toLowerCase();this._inputValueAccessor=l||h,this._previousNativeValue=this.value,this.id=this.id,i.IOS&&d.runOutsideAngular(()=>{e.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===f,this._isTextarea="textarea"===f,this._isInFormField=!!u,this._isNativeSelect&&(this.controlType=h.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}_focusChanged(e){e!==this.focused&&(this.focused=e,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){const e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){const e=this._getPlaceholder();if(e!==this._previousPlaceholder){const i=this._elementRef.nativeElement;this._previousPlaceholder=e,e?i.setAttribute("placeholder",e):i.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){Aoe.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const e=this._elementRef.nativeElement,i=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&i&&i.label)}return this.focused||!this.empty}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(oo,10),m(Ip,8),m(Op,8),m(qK),m(Toe,10),m(Soe),m(Y),m(yN,8))},t.\u0275dir=M({type:t,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(e,i){1&e&&re("focus",function(){return i._focusChanged(!0)})("blur",function(){return i._focusChanged(!1)})("input",function(){return i._onInput()}),2&e&&(ba("id",i.id)("disabled",i.disabled)("required",i.required),tt("name",i.name||null)("readonly",i.readonly&&!i._isNativeSelect||null)("aria-invalid",i.empty&&i.required?null:i.errorState)("aria-required",i.required)("id",i.id),ce("mat-input-server",i._isServer)("mat-mdc-form-field-textarea-control",i._isInFormField&&i._isTextarea)("mat-mdc-form-field-input-control",i._isInFormField)("mdc-text-field__input",i._isInFormField)("mat-mdc-native-select-inline",i._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],features:[ie([{provide:vN,useExisting:t}]),P,at]}),t})(),Yw=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[Dt,Qd,Qd,Moe,Dt]}),t})();function Roe(t,n){1&t&&(x(0,"mat-error"),N(1," Please enter a valid email address "),E())}function Foe(t,n){1&t&&(x(0,"mat-error"),N(1," Email is required! "),E())}let Poe=(()=>{var t;class n{constructor(){this.placeholder="",this.emailChange=new ee,this.destroy$=sl(),this.control=new Zd("",{updateOn:"blur",validators:[$d.required,$d.email]});const{control:i,destroy$:r}=this;i.valueChanges.pipe(ze(r),B(o=>i.valid?o:void 0)).subscribe(o=>this.emailChange.emit(o))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-email-input"]],inputs:{placeholder:"placeholder"},outputs:{emailChange:"emailChange"},standalone:!0,features:[Be],decls:6,vars:4,consts:[["appearance","outline",1,"email-text-field"],["type","email","matInput","",3,"formControl","placeholder"],[4,"ngIf"]],template:function(i,r){1&i&&(x(0,"mat-form-field",0)(1,"mat-label"),N(2," Email "),E(),z(3,"input",1),O(4,Roe,2,0,"mat-error",2),O(5,Foe,2,0,"mat-error",2),E()),2&i&&(D(3),S("formControl",r.control)("placeholder",r.placeholder),D(1),S("ngIf",r.control.hasError("email")&&!r.control.hasError("required")),D(1),S("ngIf",r.control.hasError("required")))},dependencies:[Re,Vn,Qd,Ww,Xd,Gw,Uw,Cl,xp,Kd,Yw,qw],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .email-text-field[_ngcontent-%COMP%]{width:100%;background:#ffffff}[_nghost-%COMP%] .mat-mdc-form-field-required-marker{color:#dc231e}"],changeDetection:0}),n})();function Noe(t,n){if(1&t&&(x(0,"mat-error"),N(1),E()),2&t){const e=X();D(1),nt(" ",e.label," is required! ")}}let Loe=(()=>{var t;class n{constructor(){this.placeholder="",this.label="",this.messageChange=new ee,this.destroy$=sl(),this.control=new Zd("",{updateOn:"blur",validators:[$d.required]});const{control:i,destroy$:r}=this;i.valueChanges.pipe(ze(r),B(o=>i.valid?o:void 0)).subscribe(o=>this.messageChange.emit(o))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-required-textbox"]],inputs:{placeholder:"placeholder",label:"label"},outputs:{messageChange:"messageChange"},standalone:!0,features:[Be],decls:5,vars:4,consts:[["appearance","outline",1,"message-field"],["cdkTextareaAutosize","","cdkAutosizeMinRows","10","cdkAutosizeMaxRows","20","matInput","",3,"formControl","placeholder"],[4,"ngIf"]],template:function(i,r){1&i&&(x(0,"mat-form-field",0)(1,"mat-label"),N(2),E(),z(3,"textarea",1),O(4,Noe,2,1,"mat-error",2),E()),2&i&&(D(2),nt(" ",r.label," "),D(1),S("formControl",r.control)("placeholder",r.placeholder),D(1),S("ngIf",r.control.hasError("required")))},dependencies:[Re,Vn,Yw,qw,Ww,Xd,Gw,koe,Qd,Uw,Cl,xp,Kd],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .message-field[_ngcontent-%COMP%]{width:100%;background:#ffffff}[_nghost-%COMP%] .mat-mdc-form-field-required-marker{color:#dc231e}"],changeDetection:0}),n})();function Boe(t,n){if(1&t&&(x(0,"mat-error"),N(1),E()),2&t){const e=X();D(1),nt("",e.label," is required!")}}let Voe=(()=>{var t;class n{constructor(){this.label="",this.inputChange=new ee,this.destroy$=sl(),this.control=new Zd("",{updateOn:"blur",validators:$d.required});const{control:i,destroy$:r,inputChange:o}=this;i.valueChanges.pipe(ze(r),B(s=>i.valid?s:void 0)).subscribe(o)}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-required-input"]],inputs:{label:"label"},outputs:{inputChange:"inputChange"},standalone:!0,features:[Be],decls:5,vars:3,consts:[["appearance","outline",1,"form-field"],["matInput","",3,"formControl"],[4,"ngIf"]],template:function(i,r){1&i&&(x(0,"mat-form-field",0)(1,"mat-label"),N(2),E(),z(3,"input",1),O(4,Boe,2,1,"mat-error",2),E()),2&i&&(D(2),nt(" ",r.label," "),D(1),S("formControl",r.control),D(1),S("ngIf",r.control.hasError("required")))},dependencies:[Re,Vn,Qd,Ww,Xd,Gw,Yw,qw,Uw,Cl,xp,Kd],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .form-field[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] .mat-mdc-form-field-required-marker{color:#dc231e}"],changeDetection:0}),n})();const joe={email:void 0,subject:void 0,message:void 0};let Hoe=(()=>{var t;class n{constructor(){this.productLogoUrl="",this.productTitle="",this.submitClick=new ee,this.closeClick=new ee,this.contactData=joe}get disableSubmit(){return Object.values(this.contactData).some(i=>void 0===i)}updateData(i,r){this.contactData=r0(this.contactData,o=>{o[i]=r})}submit(){this.submitClick.emit(this.contactData)}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-contact-modal"]],inputs:{productLogoUrl:"productLogoUrl",productTitle:"productTitle"},outputs:{submitClick:"submitClick",closeClick:"closeClick"},standalone:!0,features:[Be],decls:15,vars:3,consts:[[1,"product-logo"],["alt","Prodoct Logo",1,"product-logo-image",3,"src"],[1,"product-title"],["mat-icon-button","",1,"close",3,"click"],["placeholder","Example@domain.com",1,"email",3,"emailChange"],["label","Subject",1,"subject-field",3,"inputChange"],["label","Message","placeholder","Enter your message here",1,"message-field",3,"messageChange"],["data","Please allow two business days for a response to each inquiry.",1,"desc"],["mat-flat-button","","color","primary",1,"submit",3,"disabled","click"],["mat-stroked-button","","color","accent",1,"cancel",3,"click"]],template:function(i,r){1&i&&(x(0,"a",0),z(1,"img",1),x(2,"h2",2),N(3),E()(),x(4,"button",3),re("click",function(){return r.closeClick.emit()}),x(5,"mat-icon"),N(6,"close"),E()(),x(7,"hra-email-input",4),re("emailChange",function(s){return r.updateData("email",s)}),E(),x(8,"hra-required-input",5),re("inputChange",function(s){return r.updateData("subject",s)}),E(),x(9,"hra-required-textbox",6),re("messageChange",function(s){return r.updateData("message",s)}),E(),z(10,"markdown",7),x(11,"button",8),re("click",function(){return r.submit()}),N(12,"Submit"),E(),x(13,"button",9),re("click",function(){return r.closeClick.emit()}),N(14,"Cancel"),E()),2&i&&(D(1),S("src",r.productLogoUrl,Oi),D(2),Qt(r.productTitle),D(8),S("disabled",r.disableSubmit))},dependencies:[Re,Xr,fl,Dm,_r,Qr,Poe,Ts,Ms,Loe,Voe],styles:["[_nghost-%COMP%]{display:block;position:relative;padding-top:2rem;margin-right:1.5rem;margin-left:1.5rem}[_nghost-%COMP%] .product-logo[_ngcontent-%COMP%]{display:flex;align-items:center}[_nghost-%COMP%] .product-logo[_ngcontent-%COMP%] .product-logo-image[_ngcontent-%COMP%]{margin-right:1rem}[_nghost-%COMP%] .product-logo[_ngcontent-%COMP%] .product-title[_ngcontent-%COMP%]{color:#900;margin:0;font-weight:600}[_nghost-%COMP%] .close[_ngcontent-%COMP%]{position:absolute;top:1.5rem;right:0rem}[_nghost-%COMP%] .submit[_ngcontent-%COMP%]{margin-right:1.5rem}[_nghost-%COMP%] .submit[_ngcontent-%COMP%], [_nghost-%COMP%] .cancel[_ngcontent-%COMP%]{width:7.5rem}[_nghost-%COMP%] .email[_ngcontent-%COMP%]{margin-top:1.25rem}[_nghost-%COMP%] .message-field[_ngcontent-%COMP%]{margin-top:1rem}[_nghost-%COMP%] .subject-field[_ngcontent-%COMP%]{margin-top:1rem}[_nghost-%COMP%] .desc[_ngcontent-%COMP%]{margin-top:1.5rem}"],changeDetection:0}),n})(),zoe=(()=>{var t;class n{constructor(){this.productTitle="",this.productLogoUrl="",this.description="",this.closeClick=new ee}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-info-modal"]],inputs:{productTitle:"productTitle",productLogoUrl:"productLogoUrl",description:"description"},outputs:{closeClick:"closeClick"},standalone:!0,features:[Be],decls:8,vars:3,consts:[[1,"title"],["alt","Prodoct Logo",1,"product-logo-image",3,"src"],[1,"product-title"],["mat-icon-button","",1,"close",3,"click"],[1,"description",3,"data"]],template:function(i,r){1&i&&(x(0,"a",0),z(1,"img",1),x(2,"h2",2),N(3),E()(),x(4,"button",3),re("click",function(){return r.closeClick.emit()}),x(5,"mat-icon"),N(6,"close"),E()(),z(7,"markdown",4)),2&i&&(D(1),S("src",r.productLogoUrl,Oi),D(2),Qt(r.productTitle),D(4),S("data",r.description))},dependencies:[Re,Xr,Dm,_r,Qr,Ts,Ms],styles:["[_nghost-%COMP%]{display:block;position:relative;padding:2rem 2rem 1.25rem}[_nghost-%COMP%] .close[_ngcontent-%COMP%]{position:absolute;top:1.5rem;right:1.5rem}[_nghost-%COMP%] .title[_ngcontent-%COMP%]{display:flex;align-items:center}[_nghost-%COMP%] .title[_ngcontent-%COMP%] .product-logo-image[_ngcontent-%COMP%]{height:2.75rem;margin-right:1rem}[_nghost-%COMP%] .title[_ngcontent-%COMP%] .product-title[_ngcontent-%COMP%]{margin:0;color:#900}[_nghost-%COMP%] .description[_ngcontent-%COMP%]{display:block;margin-top:1rem}"],changeDetection:0}),n})();const Uoe=["postMessage"];function $oe(t,n){if(1&t){const e=mo();x(0,"hra-info-modal",2),re("closeClick",function(){return Wi(e),qi(X().close())}),E()}if(2&t){const e=X();S("productLogoUrl",e.productLogoUrl())("productTitle",e.productTitle())("description",e.description())}}let Goe=(()=>{var t;class n{constructor(){this.productLogoUrl=ct(vt.url,w0),this.productTitle=ct(vt.anyText,y0),this.description=ct(vt.anyText,RX),this.sendMessage=ai(Um),this.dialog=R(bp),this.selfRef=R(Cw,{optional:!0})}submit(i){this.sendMessage(i),this.selfRef?.close(),this.postRef=this.dialog.open(this.postMessageTemplate)}close(){this.postRef?.close(),this.selfRef?.close()}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-contact-behavior"]],viewQuery:function(i,r){if(1&i&&Ge(Uoe,5),2&i){let o;Q(o=J())&&(r.postMessageTemplate=o.first)}},standalone:!0,features:[Be],decls:3,vars:2,consts:[[1,"contact-modal",3,"productLogoUrl","productTitle","submitClick","closeClick"],["postMessage",""],[1,"info-modal",3,"productLogoUrl","productTitle","description","closeClick"]],template:function(i,r){1&i&&(x(0,"hra-contact-modal",0),re("submitClick",function(s){return r.submit(s)})("closeClick",function(){return r.close()}),E(),O(1,$oe,1,3,"ng-template",null,1,Jn)),2&i&&S("productLogoUrl",r.productLogoUrl())("productTitle",r.productTitle())},dependencies:[Re,vp,Hoe,zoe],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .contact-modal[_ngcontent-%COMP%]{width:41rem;height:40rem}[_nghost-%COMP%] .info-modal[_ngcontent-%COMP%]{width:35rem;height:11.8rem}@media screen and (max-height: 328px){[_nghost-%COMP%] .contact-modal[_ngcontent-%COMP%]{height:calc(100vh - 2rem)}}"],changeDetection:0}),n})(),Woe=(()=>{var t;class n{constructor(){this.productLogoUrl=ct(vt.url,w0),this.productTitle=ct(vt.anyText,y0),this.downloadFormats=Un(Wre.formats),this.hraPortal=C0,this.illustrationMetadata=D0,this.embed=lR,this.download=ai(Vm),this.size=Un(hN.size),this.dialog=R(bp)}contact(){const i=new Ud;i.disableClose=!0,this.dialog.open(Goe,i)}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-footer-behavior"]],standalone:!0,features:[Be],decls:1,vars:7,consts:[[3,"productLogoUrl","productTitle","hraPortal","illustrationMetadata","embed","downloadFormats","size","contactClick","download"]],template:function(i,r){1&i&&(x(0,"hra-footer",0),re("contactClick",function(){return r.contact()})("download",function(s){return r.download(s.id)}),E()),2&i&&S("productLogoUrl",r.productLogoUrl())("productTitle",r.productTitle())("hraPortal",r.hraPortal)("illustrationMetadata",r.illustrationMetadata)("embed",r.embed)("downloadFormats",r.downloadFormats())("size",r.size())},dependencies:[Re,vp,Gre],styles:["[_nghost-%COMP%]{display:block}"],changeDetection:0}),n})(),qoe=(()=>{var t;class n{constructor(){this.text=""}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-ui-tooltip"]],inputs:{text:"text"},standalone:!0,features:[Be],decls:2,vars:1,consts:[[1,"tooltip"]],template:function(i,r){1&i&&(x(0,"div",0),N(1),E()),2&i&&(D(1),Qt(r.text))},dependencies:[Re],styles:["[_nghost-%COMP%] .tooltip[_ngcontent-%COMP%]{display:flex;flex-direction:column;background:white;box-shadow:1px .125rem 1rem .125rem #00000029;border-radius:.5rem;padding:1rem}"],changeDetection:0}),n})();function EN(t,n,e){return e?EN(t,n).pipe(nf(e)):new xe(i=>{const r=(...s)=>i.next(1===s.length?s[0]:s),o=t(r);return We(n)?()=>n(r,o):void 0})}function Zoe(t,n){if(1&t){const e=mo();x(0,"div",2),re("onSVGInserted",function(r){return Wi(e),qi(X().setSvgElement(r))}),wa(1,"async"),E()}if(2&t){const e=X();ce("hover-active",xa(1,4,e.nodeHoverData$)),S("inlineSVG",e.url)("evalScripts",e.NEVER_EVAL_SCRIPTS)}}function Koe(t,n){if(1&t&&z(0,"hra-ui-tooltip",4),2&t){const e=X().ngIf;S("text",X().formatNodeName(e.node))}}function Xoe(t,n){if(1&t&&(Pn(0),O(1,Koe,1,1,"ng-template",3),Nn()),2&t){const e=n.ngIf,i=X();D(1),S("cdkConnectedOverlayOrigin",e.origin)("cdkConnectedOverlayPositions",i.TOOLTIP_POSITIONS)("cdkConnectedOverlayViewportMargin",16)("cdkConnectedOverlayOpen",!0)}}const Joe=[{originX:"center",originY:"center",overlayX:"start",overlayY:"center",offsetX:8},{originX:"center",originY:"center",overlayX:"end",overlayY:"center",offsetX:-8},{originX:"center",originY:"center",overlayX:"center",overlayY:"top",offsetY:8},{originX:"center",originY:"center",overlayX:"center",overlayY:"bottom",offsetY:-8}];let ese=(()=>{var t;class n{constructor(){this.mapping=[],this.nodeHover=new ee,this.nodeClick=new ee,this.NEVER_EVAL_SCRIPTS="never",this.TOOLTIP_POSITIONS=Joe,this.nodeHoverData$=new Tt(void 0),this.nodeHoverDelayedData$=this.nodeHoverData$.pipe(function Yoe(t){return gt((n,e)=>{let i=!1,r=null,o=null;const s=()=>{if(o?.unsubscribe(),o=null,i){i=!1;const a=r;r=null,e.next(a)}};n.subscribe(ot(e,a=>{o?.unsubscribe(),i=!0,r=a,o=ot(e,s,nu),Xt(t(a)).subscribe(o)},()=>{s(),e.complete()},void 0,()=>{r=o=null}))})}(i=>Ym(i?200:0))),this.renderer=R(mi),this.destroy$=new te,this.highlightedElements=[]}ngOnChanges(i){"highlightId"in i&&(this.resetHighlight(),this.setHighlight())}setHighlight(){const{mapping:i,highlightId:r,crosswalkEl:o}=this,s=i.find(({ontologyId:d})=>d===r);if(!s||!o)return;let a=this.encodeId(s.id);const l=o.querySelector(`#${a}`);if(!l)return;"g"!==l.nodeName&&(a=l.parentElement?.id??"");const c=o.querySelectorAll(`#${a} :is(path, polygon, polyline)`);this.highlightedElements=Array.from(c),c.forEach(d=>d.classList.add("click-active"))}resetHighlight(){for(const i of this.highlightedElements)i.classList.remove("click-active");this.highlightedElements=[]}ngOnDestroy(){this.clear()}setSvgElement(i){this.clear(),this.crosswalkEl=i.querySelector('[id^="Crosswalk"]')??void 0,this.crosswalkEl&&(this.renderer.appendChild(i,this.crosswalkEl),this.attachCrosswalkHover(this.crosswalkEl))}formatNodeName(i){return i.replace(/_/g," ")}attachCrosswalkHover(i){this.attachEvent(i,"mouseover").subscribe(r=>this.onCrosswalkHover(r)),this.attachEvent(i,"mouseout").subscribe(()=>this.onCrosswalkHover(void 0)),this.attachEvent(i,"click").subscribe(r=>this.nodeClick.emit(this.getNode(r)))}onCrosswalkHover(i){if(i){const r=this.getNode(i);r&&(this.nodeHoverData$.next({node:r.label,origin:{x:i.clientX,y:i.clientY}}),this.nodeHover.emit(r))}else this.nodeHoverData$.next(void 0),this.nodeHover.emit()}clear(){this.destroy$.next(),this.destroy$.complete(),this.destroy$=new te}getNode(i){const a=[i.target.id,i.target.parentElement?.id??"",i.target.parentElement?.parentElement?.id??""];for(const l of a){const c=this.decodeId(l),d=this.mapping.find(u=>u.id?.toLowerCase()===c.toLowerCase());if(d)return d}}decodeId(i){return i.replace(/_x([\da-f]+)_/gi,(o,s)=>String.fromCharCode(Number.parseInt(s,16)))}encodeId(i){return i.replace(/[^a-z0-9-]/gi,o=>`_x${o.charCodeAt(0).toString(16).toUpperCase()}_`)}attachEvent(i,r){const{renderer:o,destroy$:s}=this;return EN(c=>o.listen(i,r,c),(c,d)=>d()).pipe(ze(s))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-interactive-svg"]],inputs:{url:"url",mapping:"mapping",highlightId:"highlightId"},outputs:{nodeHover:"nodeHover",nodeClick:"nodeClick"},standalone:!0,features:[at,Be],decls:3,vars:4,consts:[["class","svg",3,"hover-active","inlineSVG","evalScripts","onSVGInserted",4,"ngIf"],[4,"ngIf"],[1,"svg",3,"inlineSVG","evalScripts","onSVGInserted"],["cdkConnectedOverlay","","cdkConnectedOverlayPanelClass","hra-interactive-svg-tooltip-panel",3,"cdkConnectedOverlayOrigin","cdkConnectedOverlayPositions","cdkConnectedOverlayViewportMargin","cdkConnectedOverlayOpen"],[3,"text"]],template:function(i,r){1&i&&(O(0,Zoe,2,6,"div",0),O(1,Xoe,2,4,"ng-container",1),wa(2,"async")),2&i&&(S("ngIf",r.url),D(1),S("ngIf",xa(2,2,r.nodeHoverDelayedData$)))},dependencies:[Re,Vn,Ab,JR,_J,rp,VF,qoe],styles:[".svg{max-height:calc(100vh - 14rem);overflow-y:auto}svg{max-height:calc(100vh - 10rem);width:100%}[id^=Crosswalk] :is(path,polygon,polyline){fill:transparent;stroke:transparent}.hover-active [id^=Crosswalk] g:hover>:is(path,polygon,polyline),.hover-active [id^=Crosswalk] g>g:hover>:is(path,polygon,polyline),[id^=Crosswalk] .click-active{fill:red;mix-blend-mode:saturation}\n"],encapsulation:3,changeDetection:0}),n})(),tse=(()=>{var t;class n{constructor(){this.currentUrl=Un(Pd.url),this.mapping=Un(Pd.mapping),this.iri=Un(Hm.iri),this.tissues=Un(R0.tissues),this.updateNodeOnHover=ai(Fm),this.updateNodeOnClicked=ai(Pm)}get tissueTitle(){const i=this.iri(),r=this.tissues();return i?r[i].label:""}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-medical-illustration-behavior"]],standalone:!0,features:[Be],decls:3,vars:3,consts:[[3,"url","mapping","nodeHover","nodeClick"]],template:function(i,r){1&i&&(x(0,"hra-label-box"),N(1),E(),x(2,"hra-interactive-svg",0),re("nodeHover",function(s){return r.updateNodeOnHover(s)})("nodeClick",function(s){return r.updateNodeOnClicked(s)}),E()),2&i&&(D(1),Qt(r.tissueTitle),D(1),S("url",r.currentUrl())("mapping",r.mapping()))},dependencies:[Re,ese,zm],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] hra-label-box[_ngcontent-%COMP%]{border-bottom:.063rem solid #d3d3d3;width:100%;height:3.5rem}"],changeDetection:0}),n})();const nse=["*"];let SN=(()=>{var t;class n{constructor(){this.isFullScreen=!1}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-fullscreen-content"]],hostVars:2,hostBindings:function(i,r){2&i&&ce("fullscreen-on",r.isFullScreen)},standalone:!0,features:[Be],ngContentSelectors:nse,decls:1,vars:0,template:function(i,r){1&i&&(Bt(),Se(0))},dependencies:[Re],styles:["[_nghost-%COMP%]{display:block;overflow-y:hidden}.fullscreen-on[_nghost-%COMP%]{position:absolute;inset:0;z-index:100}"],changeDetection:0}),n})();const ise=["*"];let rse=(()=>{var t;class n{constructor(){this.fullscreen=!1}ngAfterContentInit(){this.updateFullscreenMode()}ngOnChanges(i){"fullscreen"in i&&this.updateFullscreenMode()}updateFullscreenMode(){this.content?.forEach(i=>{i.isFullScreen=this.fullscreen})}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-fullscreen-container"]],contentQueries:function(i,r,o){if(1&i&&Ye(o,SN,4),2&i){let s;Q(s=J())&&(r.content=s)}},inputs:{fullscreen:"fullscreen"},standalone:!0,features:[at,Be],ngContentSelectors:ise,decls:1,vars:0,template:function(i,r){1&i&&(Bt(),Se(0))},dependencies:[Re],styles:["[_nghost-%COMP%]{display:block;position:relative}"],changeDetection:0}),n})(),ose=(()=>{var t;class n{constructor(){this.isFullscreen=Un(hN.isFullScreen);const i=R(Ao).queryParams.pipe(ze(sl())),r=ai(Lm);i.subscribe(o=>r(o.id))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-ftu-page"]],standalone:!0,features:[Be],decls:5,vars:3,consts:[[1,"content-container",3,"fullscreen"],[1,"illustration"],[1,"fullscreen-content-container"],[1,"illustration-details"]],template:function(i,r){1&i&&(x(0,"hra-fullscreen-container",0),z(1,"ftu-medical-illustration-behavior",1),x(2,"hra-fullscreen-content",2),z(3,"ftu-biomarker-details",3),E()(),z(4,"ftu-footer-behavior")),2&i&&(S("fullscreen",r.isFullscreen()),D(1),ce("display",r.isFullscreen()))},dependencies:[Re,Vne,Woe,rse,SN,tse],styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:hidden}[_nghost-%COMP%] .content-container[_ngcontent-%COMP%]{display:flex;height:calc(100% - 5rem - 1px)}[_nghost-%COMP%] .content-container[_ngcontent-%COMP%] .illustration[_ngcontent-%COMP%]{flex-grow:1}[_nghost-%COMP%] .content-container[_ngcontent-%COMP%] .fullscreen-content-container[_ngcontent-%COMP%], [_nghost-%COMP%] .content-container[_ngcontent-%COMP%] .fullscreen-content-container[_ngcontent-%COMP%] .illustration-details[_ngcontent-%COMP%]{height:100%}[_nghost-%COMP%] .content-container[_ngcontent-%COMP%] .fullscreen-content-container[_ngcontent-%COMP%] .illustration-details[_ngcontent-%COMP%]{border-left:.063rem solid #d3d3d3}[_nghost-%COMP%] .content-container[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child{width:50%}[_nghost-%COMP%] .display[_ngcontent-%COMP%]{display:none}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] ftu-biomarker-details{grid-template-columns:.5fr .5fr 1fr}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] ftu-biomarker-details hra-source-list{width:unset!important}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] ftu-biomarker-details hra-source-list hra-label-box{width:auto}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] hra-label-box.table-header{width:auto}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] hra-biomarker-table{max-width:none}"],changeDetection:0}),n})(),sse=(()=>{var t;class n{constructor(){this.title="",this.description="",this.partners="",this.img="",this.moreText="",this.moreLink=Wr}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-landing-page-intro"]],inputs:{title:"title",description:"description",partners:"partners",img:"img",moreText:"moreText",moreLink:"moreLink"},standalone:!0,features:[Be],decls:9,vars:6,consts:[[1,"title"],[1,"description",3,"data"],["mat-flat-button","","color","primary",1,"more-button",3,"hraLink"],["iconPositionEnd",""],[1,"partners",3,"data"],["alt","alt",1,"image",3,"src"]],template:function(i,r){1&i&&(x(0,"h1",0),N(1),E(),z(2,"markdown",1),x(3,"button",2),N(4),x(5,"mat-icon",3),N(6,"arrow_right_alt"),E()(),z(7,"markdown",4)(8,"img",5)),2&i&&(D(1),Qt(r.title),D(1),S("data",r.description),D(1),S("hraLink",r.moreLink),D(1),nt(" ",r.moreText," "),D(3),S("data",r.partners),D(1),S("src",r.img,Oi))},dependencies:[Re,Xr,fl,_r,Qr,Ts,Ms,ml],styles:["[_nghost-%COMP%]{display:grid;grid-template-columns:3fr 2fr;grid-template-rows:auto auto 3rem 1fr;align-items:start;column-gap:2rem;row-gap:2rem}[_nghost-%COMP%] .title[_ngcontent-%COMP%]{font-size:3rem;line-height:4rem;margin:0}[_nghost-%COMP%] .more-button[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;height:3rem}[_nghost-%COMP%] .image[_ngcontent-%COMP%]{grid-column:2;grid-row:1/span 4;place-self:center;width:100%;height:auto}[_nghost-%COMP%] .description[_ngcontent-%COMP%] p, [_nghost-%COMP%] .partners[_ngcontent-%COMP%] p{margin:0}[_nghost-%COMP%] .description[_ngcontent-%COMP%] a, [_nghost-%COMP%] .partners[_ngcontent-%COMP%] a{color:var(--palette-primary-500-rgb);font-weight:700}"],changeDetection:0}),n})();function ase(t,n){if(1&t&&(x(0,"div",4),z(1,"img",0),x(2,"span",5),N(3),E(),x(4,"span",6),N(5),E()()),2&t){const e=n.$implicit;D(1),S("src",e.icon,Oi),D(2),nt(" ",e.value," "),D(2),nt(" ",e.description," ")}}let lse=(()=>{var t;class n{constructor(){this.title="",this.logo="",this.metrics=[]}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-metrics"]],inputs:{title:"title",logo:"logo",metrics:"metrics"},standalone:!0,features:[Be],decls:5,vars:3,consts:[["alt","",1,"logo",3,"src"],[1,"header-title"],[1,"metrics"],["class","metric",4,"ngFor","ngForOf"],[1,"metric"],[1,"value"],[1,"description"]],template:function(i,r){1&i&&(z(0,"img",0),x(1,"span",1),N(2),E(),x(3,"div",2),O(4,ase,6,3,"div",3),E()),2&i&&(S("src",r.logo,Oi),D(2),Qt(r.title),D(2),S("ngForOf",r.metrics))},dependencies:[Re,cs],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;align-items:center;padding:2rem 0 0;background:#f8f9fa;gap:.5rem}[_nghost-%COMP%] .logo[_ngcontent-%COMP%]{height:2.75rem}[_nghost-%COMP%] .header-title[_ngcontent-%COMP%]{font-size:2rem;line-height:2.5rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%]{display:flex;flex-direction:row;overflow-x:auto;max-width:100%;gap:2rem;padding:2rem 1.75rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;min-width:14.25rem;height:14.75rem;padding-top:2rem;padding-bottom:2rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%]{margin-bottom:2rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:3rem;line-height:4rem;margin-bottom:.25rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] .description[_ngcontent-%COMP%]{font-size:1rem;text-align:center}"],changeDetection:0}),n})(),cse=(()=>{var t;class n{constructor(){this.title="",this.description="",this.img="",this.moreText="",this.moreLink=Wr}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-landing-page-in-depth"]],inputs:{title:"title",description:"description",img:"img",moreText:"moreText",moreLink:"moreLink"},standalone:!0,features:[Be],decls:6,vars:5,consts:[["alt","",1,"image",3,"src"],[1,"title"],[1,"description",3,"data"],["mat-flat-button","","color","primary",1,"more-button",3,"hraLink"]],template:function(i,r){1&i&&(z(0,"img",0),x(1,"h1",1),N(2),E(),z(3,"markdown",2),x(4,"button",3),N(5),E()),2&i&&(S("src",r.img,Oi),D(2),Qt(r.title),D(1),S("data",r.description),D(1),S("hraLink",r.moreLink),D(1),nt(" ",r.moreText,"\n"))},dependencies:[Re,Ts,Ms,Xr,fl,_r,ml],styles:["[_nghost-%COMP%]{display:grid;grid-template-columns:2fr 3fr;grid-template-rows:auto auto 1fr;column-gap:2rem;row-gap:2rem;padding:3.5rem 2rem}[_nghost-%COMP%] .image[_ngcontent-%COMP%]{grid-column:1;grid-row:1/span 3;width:100%;height:auto;align-self:center;border-radius:1rem;box-shadow:.06rem .13rem 1rem .13rem #00000029}[_nghost-%COMP%] .title[_ngcontent-%COMP%]{font-size:2rem;line-height:2.5rem;margin:0}[_nghost-%COMP%] .description[_ngcontent-%COMP%]{font-size:1rem;line-height:1.5rem}[_nghost-%COMP%] .description[_ngcontent-%COMP%] p{margin:0}[_nghost-%COMP%] .description[_ngcontent-%COMP%] a{color:var(--palette-primary-500-rgb);font-weight:700}[_nghost-%COMP%] .more-button[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;height:3rem}"],changeDetection:0}),n})();const dse=["intersectable"];let use=(()=>{var t;class n{constructor(){this.landingPageIntroTitle=ct(vt.anyText,wX),this.landingPageIntroDescription=ct(vt.markdown,xX),this.landingPageIntroPartners=ct(vt.markdown,CX),this.landingPageIntroMoreText=ct(vt.anyText,DX),this.landingPageIntroImg=ct(vt.url,EX),this.metrics=ct(vt.field,OX,Ane,"metrics",[]),this.metricsTitle=ct(vt.anyText,kX),this.metricsLogo=ct(vt.url,SX),this.landingPageDepthTitle=ct(vt.anyText,MX),this.landingPageDepthDescription=ct(vt.markdown,AX),this.landingPageDepthMoreText=ct(vt.anyText,IX),this.landingPageDepthImg=ct(vt.url,TX),this.LinkIds=Pp,this.renderer=R(mi),this.destroy$=sl()}ngAfterViewInit(){const i=new IntersectionObserver(this.handleIntersection.bind(this),{threshold:.18});this.intersectableEls.forEach(r=>i.observe(r.nativeElement)),this.destroy$.subscribe(()=>i.disconnect())}handleIntersection(i,r){for(const{isIntersecting:o,target:s}of i)o&&(this.renderer.addClass(s,"visible"),r.unobserve(s))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-landing-page-content"]],viewQuery:function(i,r){if(1&i&&Ge(dse,5,H),2&i){let o;Q(o=J())&&(r.intersectableEls=o)}},standalone:!0,features:[Be],decls:5,vars:14,consts:[[1,"intro",3,"title","img","partners","description","moreText","moreLink"],[1,"metrics",3,"title","metrics","logo"],["intersectable",""],[1,"in-depth",3,"title","description","moreText","img","moreLink"]],template:function(i,r){1&i&&z(0,"hra-landing-page-intro",0)(1,"hra-metrics",1,2)(3,"hra-landing-page-in-depth",3,2),2&i&&(S("title",r.landingPageIntroTitle())("img",r.landingPageIntroImg())("partners",r.landingPageIntroPartners())("description",r.landingPageIntroDescription())("moreText",r.landingPageIntroMoreText())("moreLink",r.LinkIds.ExploreFTU),D(1),S("title",r.metricsTitle())("metrics",r.metrics())("logo",r.metricsLogo()),D(2),S("title",r.landingPageDepthTitle())("description",r.landingPageDepthDescription())("moreText",r.landingPageDepthMoreText())("img",r.landingPageDepthImg())("moreLink",r.LinkIds.LandingPageReadMore))},dependencies:[Re,sse,lse,cse],styles:["[_nghost-%COMP%]{display:block;overflow-x:hidden}[_nghost-%COMP%] .intro[_ngcontent-%COMP%]{margin:3.5rem 2rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%]{opacity:0}[_nghost-%COMP%] .metrics.visible[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeIn 2s ease-in forwards}[_nghost-%COMP%] .in-depth[_ngcontent-%COMP%]{opacity:0}[_nghost-%COMP%] .in-depth.visible[_ngcontent-%COMP%]{overflow:hidden;animation:_ngcontent-%COMP%_slideIn 2s ease-in-out forwards}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}@keyframes _ngcontent-%COMP%_slideIn{0%{transform:translate(200%);opacity:1}to{transform:translate(0);opacity:1}}"],changeDetection:0}),n})(),hse=(()=>{var t;class n{constructor(){ai(j0)()}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-landing"]],standalone:!0,features:[Be],decls:1,vars:0,template:function(i,r){1&i&&z(0,"ftu-landing-page-content")},dependencies:[Re,use],styles:["[_nghost-%COMP%]{display:block}"],changeDetection:0}),n})();const fse=[{path:"",loadComponent:()=>hse},{path:"ftu",resolve:{id:t=>{const n=ai(Qa,x0);return t.queryParamMap.get("id")||(n(),xn)}},loadComponent:()=>ose},{path:"**",redirectTo:"/"}];let mse=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=he({imports:[A1.forRoot(fse),A1]}),n})(),pse=(()=>{class t{static get(){return(e,i)=>gr.getStorage(e).getItem(i)??void 0}static length(){return e=>gr.getStorage(e).length}}return U([Ct([gr]),y("design:type",Function),y("design:paramtypes",[]),y("design:returntype",Function)],t,"get",null),U([Ct([gr]),y("design:type",Function),y("design:paramtypes",[]),y("design:returntype",Function)],t,"length",null),t})(),gse=(()=>{var t;class n{constructor(){this.content="",this.portal=Wr,this.proceedClick=new ee}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["hra-screen-size-notice"]],inputs:{content:"content",portal:"portal"},outputs:{proceedClick:"proceedClick"},standalone:!0,features:[Be],decls:10,vars:2,consts:[["mat-icon-button","",1,"header-close",3,"click"],[1,"content",3,"data"],["mat-stroked-button","","color","accent",1,"btn-stroked",3,"click"],["mat-flat-button","","color","primary",1,"btn-flat",3,"hraLink"]],template:function(i,r){1&i&&(x(0,"h3"),N(1,"Screen Size Notice"),E(),x(2,"button",0),re("click",function(){return r.proceedClick.emit()}),x(3,"mat-icon"),N(4,"close"),E()(),z(5,"markdown",1),x(6,"button",2),re("click",function(){return r.proceedClick.emit()}),N(7," Proceed to FTU Explorer\n"),E(),x(8,"a",3),N(9," Human Reference Atlas Portal "),E()),2&i&&(D(5),S("data",r.content),D(3),S("hraLink",r.portal))},dependencies:[Re,Ts,Ms,Xr,QO,fl,Dm,_r,Qr,ml],styles:["[_nghost-%COMP%]{display:none;position:relative;border-radius:.5rem;padding:1.5rem;flex-direction:column}[_nghost-%COMP%] .header-close[_ngcontent-%COMP%]{position:absolute;top:.625rem;right:1rem}[_nghost-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 1rem;font-weight:700}[_nghost-%COMP%] .btn-stroked[_ngcontent-%COMP%]{font-weight:700;margin-bottom:1rem;margin-top:1rem;padding:.75rem 0;letter-spacing:.5px}[_nghost-%COMP%] .btn-flat[_ngcontent-%COMP%]{font-weight:700;font-size:16px;padding:.75rem 0;letter-spacing:.5px;color:#fff}[_nghost-%COMP%] .content[_ngcontent-%COMP%]{font-size:1rem;line-height:1.5rem;letter-spacing:.5px}@media (max-width: 480px){[_nghost-%COMP%]{display:flex}}"],changeDetection:0}),n})(),_se=(()=>{var t;class n{constructor(){this.content=ct(vt.anyText,VX),this.portal=C0,this.ref=R(Cw,{optional:!0}),this.setScreenNoticeShown=ai(s0,Zr.Local,"screen-size-notice","shown")}close(){this.setScreenNoticeShown(),this.ref?.close()}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-ui-screen-notice-behavior"]],standalone:!0,features:[Be],decls:1,vars:2,consts:[[3,"content","portal","proceedClick"]],template:function(i,r){1&i&&(x(0,"hra-screen-size-notice",0),re("proceedClick",function(){return r.close()}),E()),2&i&&S("content",r.content())("portal",r.portal)},dependencies:[Re,gse],styles:["[_nghost-%COMP%]{display:block}"],changeDetection:0}),n})();function bse(t,n){1&t&&(Pn(0),z(1,"ftu-tissue-library-behavior",2),x(2,"div",3),z(3,"router-outlet"),E(),Nn())}let vse=(()=>{var t;class n{set linksYamlUrl(i){this.loadLinks(i)}set resourcesYamlUrl(i){this.loadResources(i)}set organIri(i){this.navigateToOrgan(ji("FTU"),{queryParams:{id:i}})}constructor(){this.matTypography=!0,this.SMALL_VIEWPORT_THRESHOLD=480,this.organSelected=bd(Hm.iri),this.nodeHovered=bd(Pd.selectedOnHovered),this.nodeClicked=bd(Pd.selectedOnClicked),this.screenSizeNoticeOpen=!1,this.hasShownSmallViewportNotice=ct(pse.get,Zr.Local,"screen-size-notice"),this.loadLinks=ai(Uf),this.loadResources=ai(nm),this.navigateToOrgan=ai(Qa),this.dialog=R(bp),R(ln).initialNavigation()}ngAfterContentInit(){this.detectSmallViewport()}detectSmallViewport(){window.innerWidth<=this.SMALL_VIEWPORT_THRESHOLD&&!this.hasShownSmallViewportNotice()&&(this.dialog.open(_se,{width:"312px",disableClose:!1,panelClass:"custom-overlay"}).afterClosed().subscribe(()=>this.screenSizeNoticeOpen=!1),this.screenSizeNoticeOpen=!0)}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=G({type:t,selectors:[["ftu-ui-root"]],hostVars:2,hostBindings:function(i,r){2&i&&ce("mat-typography",r.matTypography)},inputs:{linksYamlUrl:"linksYamlUrl",resourcesYamlUrl:"resourcesYamlUrl",organIri:"organIri"},outputs:{organSelected:"organSelected",nodeHovered:"nodeHovered",nodeClicked:"nodeClicked"},features:[ie([vp])],decls:2,vars:1,consts:[[1,"header"],[4,"ngIf"],[1,"sidebar"],[1,"page-content"]],template:function(i,r){1&i&&(z(0,"ftu-header-behavior",0),O(1,bse,4,0,"ng-container",1)),2&i&&(D(1),S("ngIf",!r.screenSizeNoticeOpen))},dependencies:[Vn,Kv,cR,TR],styles:['[_nghost-%COMP%]{display:grid;width:100%;height:100%;grid-template-columns:21rem calc(100% - 21rem);grid-template-rows:5rem max(100% - 5rem);grid-template-areas:"header header" "sidebar content"}[_nghost-%COMP%] .header[_ngcontent-%COMP%]{grid-area:header;border-bottom:.0625rem solid rgba(var(--dark-dividers))}[_nghost-%COMP%] .sidebar[_ngcontent-%COMP%]{grid-area:sidebar;border-right:.0625rem solid rgba(var(--dark-dividers))}[_nghost-%COMP%] .page-content[_ngcontent-%COMP%]{grid-area:content}[_nghost-%COMP%] .page-content[_ngcontent-%COMP%]:has(ftu-ftu-page){overflow-y:hidden}[_nghost-%COMP%] .custom-overlay[_ngcontent-%COMP%]{background-color:#fff}[_nghost-%COMP%] .content-container.hidden[_ngcontent-%COMP%]{display:none}']}),n})();function yse(){const t=function bX(){return Tm(Mm,rR)}();return()=>t([new nd({[x0]:{type:ri.Internal,commands:["/"]}}),new Uf("assets/links.yml"),new nm("assets/resources.yml"),new vR])}let xse=(()=>{var t;class n{constructor(i){this.injector=i}ngDoBootstrap(){const i=function BZ(t,n){const e=function IZ(t,n){return n.get(Ri).resolveComponentFactory(t).inputs}(t,n.injector),i=n.strategyFactory||new PZ(t,n.injector),r=function AZ(t){const n={};return t.forEach(({propName:e,templateName:i})=>{n[function EZ(t){return t.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`)}(i)]=e}),n}(e);class o extends LZ{get ngElementStrategy(){if(!this._ngElementStrategy){const a=this._ngElementStrategy=i.create(this.injector||n.injector);e.forEach(({propName:l})=>{if(!this.hasOwnProperty(l))return;const c=this[l];delete this[l],a.setInputValue(l,c)})}return this._ngElementStrategy}constructor(a){super(),this.injector=a}attributeChangedCallback(a,l,c,d){this.ngElementStrategy.setInputValue(r[a],c)}connectedCallback(){let a=!1;this.ngElementStrategy.events&&(this.subscribeToEvents(),a=!0),this.ngElementStrategy.connect(this),a||this.subscribeToEvents()}disconnectedCallback(){this._ngElementStrategy&&this._ngElementStrategy.disconnect(),this.ngElementEventsSubscription&&(this.ngElementEventsSubscription.unsubscribe(),this.ngElementEventsSubscription=null)}subscribeToEvents(){this.ngElementEventsSubscription=this.ngElementStrategy.events.subscribe(a=>{const l=new CustomEvent(a.name,{detail:a.value});this.dispatchEvent(l)})}}return o.observedAttributes=Object.keys(r),e.forEach(({propName:s})=>{Object.defineProperty(o.prototype,s,{get(){return this.ngElementStrategy.getInputValue(s)},set(a){this.ngElementStrategy.setInputValue(s,a)},configurable:!0,enumerable:!0})}),o}(vse,{injector:this.injector});customElements.define("hra-ftu-wc",i)}}return(t=n).\u0275fac=function(i){return new(i||t)(_(kt))},t.\u0275mod=pe({type:t}),t.\u0275inj=he({providers:[{provide:Sa,useFactory:yse,multi:!0}],imports:[WM,p6,p5,vp,JR.forRoot(),Ts.forRoot({loader:vi}),sn.forRoot(),hJ,mse,DZ,LQ,ZQ.forRoot({googleAnalyticsToken:"G-1WRJHN9FM6"}),cR,TR]}),n})();B4().bootstrapModule(xse).catch(t=>console.error(t))})(); \ No newline at end of file +(()=>{"use strict";var Go={d:(t,n)=>{for(var e in n)Go.o(n,e)&&!Go.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r:t=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},Bp={};function qe(t){return"function"==typeof t}function Vp(t){const e=t(i=>{Error.call(i),i.stack=(new Error).stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}Go.r(Bp),Go.d(Bp,{About:()=>dR,Embed:()=>uR,ExploreFTU:()=>$X,Illustration:()=>M0,LandingPage:()=>S0,LandingPageReadMore:()=>GX,Portal:()=>k0,ProductTitle:()=>cR});const jp=Vp(t=>function(e){t(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((i,r)=>`${r+1}) ${i.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e});function iu(t,n){if(t){const e=t.indexOf(n);0<=e&&t.splice(e,1)}}class rt{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(const o of e)o.remove(this);else e.remove(this);const{initialTeardown:i}=this;if(qe(i))try{i()}catch(o){n=o instanceof jp?o.errors:[o]}const{_finalizers:r}=this;if(r){this._finalizers=null;for(const o of r)try{nx(o)}catch(s){n=n??[],s instanceof jp?n=[...n,...s.errors]:n.push(s)}}if(n)throw new jp(n)}}add(n){var e;if(n&&n!==this)if(this.closed)nx(n);else{if(n instanceof rt){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(n)}}_hasParent(n){const{_parentage:e}=this;return e===n||Array.isArray(e)&&e.includes(n)}_addParent(n){const{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(n),e):e?[e,n]:n}_removeParent(n){const{_parentage:e}=this;e===n?this._parentage=null:Array.isArray(e)&&iu(e,n)}remove(n){const{_finalizers:e}=this;e&&iu(e,n),n instanceof rt&&n._removeParent(this)}}rt.EMPTY=(()=>{const t=new rt;return t.closed=!0,t})();const ex=rt.EMPTY;function tx(t){return t instanceof rt||t&&"closed"in t&&qe(t.remove)&&qe(t.add)&&qe(t.unsubscribe)}function nx(t){qe(t)?t():t.unsubscribe()}const Wo={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},ru={setTimeout(t,n,...e){const{delegate:i}=ru;return i?.setTimeout?i.setTimeout(t,n,...e):setTimeout(t,n,...e)},clearTimeout(t){const{delegate:n}=ru;return(n?.clearTimeout||clearTimeout)(t)},delegate:void 0};function ix(t){ru.setTimeout(()=>{const{onUnhandledError:n}=Wo;if(!n)throw t;n(t)})}function ou(){}const PN=Hp("C",void 0,void 0);function Hp(t,n,e){return{kind:t,value:n,error:e}}let qo=null;function su(t){if(Wo.useDeprecatedSynchronousErrorHandling){const n=!qo;if(n&&(qo={errorThrown:!1,error:null}),t(),n){const{errorThrown:e,error:i}=qo;if(qo=null,e)throw i}}else t()}class zp extends rt{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,tx(n)&&n.add(this)):this.destination=HN}static create(n,e,i){return new Ns(n,e,i)}next(n){this.isStopped?$p(function NN(t){return Hp("N",t,void 0)}(n),this):this._next(n)}error(n){this.isStopped?$p(function FN(t){return Hp("E",void 0,t)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?$p(PN,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const BN=Function.prototype.bind;function Up(t,n){return BN.call(t,n)}class VN{constructor(n){this.partialObserver=n}next(n){const{partialObserver:e}=this;if(e.next)try{e.next(n)}catch(i){au(i)}}error(n){const{partialObserver:e}=this;if(e.error)try{e.error(n)}catch(i){au(i)}else au(n)}complete(){const{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(e){au(e)}}}class Ns extends zp{constructor(n,e,i){let r;if(super(),qe(n)||!n)r={next:n??void 0,error:e??void 0,complete:i??void 0};else{let o;this&&Wo.useDeprecatedNextContext?(o=Object.create(n),o.unsubscribe=()=>this.unsubscribe(),r={next:n.next&&Up(n.next,o),error:n.error&&Up(n.error,o),complete:n.complete&&Up(n.complete,o)}):r=n}this.destination=new VN(r)}}function au(t){Wo.useDeprecatedSynchronousErrorHandling?function LN(t){Wo.useDeprecatedSynchronousErrorHandling&&qo&&(qo.errorThrown=!0,qo.error=t)}(t):ix(t)}function $p(t,n){const{onStoppedNotification:e}=Wo;e&&ru.setTimeout(()=>e(t,n))}const HN={closed:!0,next:ou,error:function jN(t){throw t},complete:ou},Gp="function"==typeof Symbol&&Symbol.observable||"@@observable";function ho(t){return t}function rx(t){return 0===t.length?ho:1===t.length?t[0]:function(e){return t.reduce((i,r)=>r(i),e)}}let xe=(()=>{class t{constructor(e){e&&(this._subscribe=e)}lift(e){const i=new t;return i.source=this,i.operator=e,i}subscribe(e,i,r){const o=function $N(t){return t&&t instanceof zp||function UN(t){return t&&qe(t.next)&&qe(t.error)&&qe(t.complete)}(t)&&tx(t)}(e)?e:new Ns(e,i,r);return su(()=>{const{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(e){try{return this._subscribe(e)}catch(i){e.error(i)}}forEach(e,i){return new(i=ox(i))((r,o)=>{const s=new Ns({next:a=>{try{e(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:r});this.subscribe(s)})}_subscribe(e){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(e)}[Gp](){return this}pipe(...e){return rx(e)(this)}toPromise(e){return new(e=ox(e))((i,r)=>{let o;this.subscribe(s=>o=s,s=>r(s),()=>i(o))})}}return t.create=n=>new t(n),t})();function ox(t){var n;return null!==(n=t??Wo.Promise)&&void 0!==n?n:Promise}const GN=Vp(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let te=(()=>{class t extends xe{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const i=new sx(this,this);return i.operator=e,i}_throwIfClosed(){if(this.closed)throw new GN}next(e){su(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(e)}})}error(e){su(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:i}=this;for(;i.length;)i.shift().error(e)}})}complete(){su(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:i,isStopped:r,observers:o}=this;return i||r?ex:(this.currentObservers=null,o.push(e),new rt(()=>{this.currentObservers=null,iu(o,e)}))}_checkFinalizedStatuses(e){const{hasError:i,thrownError:r,isStopped:o}=this;i?e.error(r):o&&e.complete()}asObservable(){const e=new xe;return e.source=this,e}}return t.create=(n,e)=>new sx(n,e),t})();class sx extends te{constructor(n,e){super(),this.destination=n,this.source=e}next(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===i||i.call(e,n)}error(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===i||i.call(e,n)}complete(){var n,e;null===(e=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===e||e.call(n)}_subscribe(n){var e,i;return null!==(i=null===(e=this.source)||void 0===e?void 0:e.subscribe(n))&&void 0!==i?i:ex}}function ax(t){return qe(t?.lift)}function gt(t){return n=>{if(ax(n))return n.lift(function(e){try{return t(e,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function ot(t,n,e,i,r){return new WN(t,n,e,i,r)}class WN extends zp{constructor(n,e,i,r,o,s){super(n),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=e?function(a){try{e(a)}catch(l){n.error(l)}}:super._next,this._error=r?function(a){try{r(a)}catch(l){n.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:e}=this;super.unsubscribe(),!e&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}}function B(t,n){return gt((e,i)=>{let r=0;e.subscribe(ot(i,o=>{i.next(t.call(n,o,r++))}))})}function z(t,n,e,i){var s,r=arguments.length,o=r<3?n:null===i?i=Object.getOwnPropertyDescriptor(n,e):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,n,e,i);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(o=(r<3?s(o):r>3?s(n,e,o):s(n,e))||o);return r>3&&o&&Object.defineProperty(n,e,o),o}function y(t,n){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,n)}function Yo(t){return this instanceof Yo?(this.v=t,this):new Yo(t)}function KN(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=function dx(t){var n="function"==typeof Symbol&&Symbol.iterator,e=n&&t[n],i=0;if(e)return e.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),e={},i("next"),i("throw"),i("return"),e[Symbol.asyncIterator]=function(){return this},e);function i(o){e[o]=t[o]&&function(s){return new Promise(function(a,l){!function r(o,s,a,l){Promise.resolve(l).then(function(c){o({value:c,done:a})},s)}(a,l,(s=t[o](s)).done,s.value)})}}}const qp=t=>t&&"number"==typeof t.length&&"function"!=typeof t;function ux(t){return qe(t?.then)}function hx(t){return qe(t[Gp])}function fx(t){return Symbol.asyncIterator&&qe(t?.[Symbol.asyncIterator])}function mx(t){return new TypeError(`You provided ${null!==t&&"object"==typeof t?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const px=function QN(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function gx(t){return qe(t?.[px])}function _x(t){return function ZN(t,n,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=e.apply(t,n||[]),o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(h){i[h]&&(r[h]=function(f){return new Promise(function(p,g){o.push([h,f,p,g])>1||a(h,f)})})}function a(h,f){try{!function l(h){h.value instanceof Yo?Promise.resolve(h.value.v).then(c,d):u(o[0][2],h)}(i[h](f))}catch(p){u(o[0][3],p)}}function c(h){a("next",h)}function d(h){a("throw",h)}function u(h,f){h(f),o.shift(),o.length&&a(o[0][0],o[0][1])}}(this,arguments,function*(){const e=t.getReader();try{for(;;){const{value:i,done:r}=yield Yo(e.read());if(r)return yield Yo(void 0);yield yield Yo(i)}}finally{e.releaseLock()}})}function bx(t){return qe(t?.getReader)}function Qt(t){if(t instanceof xe)return t;if(null!=t){if(hx(t))return function JN(t){return new xe(n=>{const e=t[Gp]();if(qe(e.subscribe))return e.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(t);if(qp(t))return function eL(t){return new xe(n=>{for(let e=0;e{t.then(e=>{n.closed||(n.next(e),n.complete())},e=>n.error(e)).then(null,ix)})}(t);if(fx(t))return vx(t);if(gx(t))return function nL(t){return new xe(n=>{for(const e of t)if(n.next(e),n.closed)return;n.complete()})}(t);if(bx(t))return function iL(t){return vx(_x(t))}(t)}throw mx(t)}function vx(t){return new xe(n=>{(function rL(t,n){var e,i,r,o;return function qN(t,n,e,i){return new(e||(e=Promise))(function(o,s){function a(d){try{c(i.next(d))}catch(u){s(u)}}function l(d){try{c(i.throw(d))}catch(u){s(u)}}function c(d){d.done?o(d.value):function r(o){return o instanceof e?o:new e(function(s){s(o)})}(d.value).then(a,l)}c((i=i.apply(t,n||[])).next())})}(this,void 0,void 0,function*(){try{for(e=KN(t);!(i=yield e.next()).done;)if(n.next(i.value),n.closed)return}catch(s){r={error:s}}finally{try{i&&!i.done&&(o=e.return)&&(yield o.call(e))}finally{if(r)throw r.error}}n.complete()})})(t,n).catch(e=>n.error(e))})}function Cr(t,n,e,i=0,r=!1){const o=n.schedule(function(){e(),r?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(o),!r)return o}function Ot(t,n,e=1/0){return qe(n)?Ot((i,r)=>B((o,s)=>n(i,o,r,s))(Qt(t(i,r))),e):("number"==typeof n&&(e=n),gt((i,r)=>function oL(t,n,e,i,r,o,s,a){const l=[];let c=0,d=0,u=!1;const h=()=>{u&&!l.length&&!c&&n.complete()},f=g=>c{o&&n.next(g),c++;let b=!1;Qt(e(g,d++)).subscribe(ot(n,v=>{r?.(v),o?f(v):n.next(v)},()=>{b=!0},void 0,()=>{if(b)try{for(c--;l.length&&cp(v)):p(v)}h()}catch(v){n.error(v)}}))};return t.subscribe(ot(n,f,()=>{u=!0,h()})),()=>{a?.()}}(i,r,t,e)))}function Ls(t=1/0){return Ot(ho,t)}const Cn=new xe(t=>t.complete());function yx(t){return t&&qe(t.schedule)}function Yp(t){return t[t.length-1]}function wx(t){return qe(Yp(t))?t.pop():void 0}function Al(t){return yx(Yp(t))?t.pop():void 0}function xx(t,n=0){return gt((e,i)=>{e.subscribe(ot(i,r=>Cr(i,t,()=>i.next(r),n),()=>Cr(i,t,()=>i.complete(),n),r=>Cr(i,t,()=>i.error(r),n)))})}function Cx(t,n=0){return gt((e,i)=>{i.add(t.schedule(()=>e.subscribe(i),n))})}function Dx(t,n){if(!t)throw new Error("Iterable cannot be null");return new xe(e=>{Cr(e,n,()=>{const i=t[Symbol.asyncIterator]();Cr(e,n,()=>{i.next().then(r=>{r.done?e.complete():e.next(r.value)})},0,!0)})})}function yt(t,n){return n?function fL(t,n){if(null!=t){if(hx(t))return function lL(t,n){return Qt(t).pipe(Cx(n),xx(n))}(t,n);if(qp(t))return function dL(t,n){return new xe(e=>{let i=0;return n.schedule(function(){i===t.length?e.complete():(e.next(t[i++]),e.closed||this.schedule())})})}(t,n);if(ux(t))return function cL(t,n){return Qt(t).pipe(Cx(n),xx(n))}(t,n);if(fx(t))return Dx(t,n);if(gx(t))return function uL(t,n){return new xe(e=>{let i;return Cr(e,n,()=>{i=t[px](),Cr(e,n,()=>{let r,o;try{({value:r,done:o}=i.next())}catch(s){return void e.error(s)}o?e.complete():e.next(r)},0,!0)}),()=>qe(i?.return)&&i.return()})}(t,n);if(bx(t))return function hL(t,n){return Dx(_x(t),n)}(t,n)}throw mx(t)}(t,n):Qt(t)}function Gn(...t){const n=Al(t),e=function aL(t,n){return"number"==typeof Yp(t)?t.pop():n}(t,1/0),i=t;return i.length?1===i.length?Qt(i[0]):Ls(e)(yt(i,n)):Cn}function Il(t={}){const{connector:n=(()=>new te),resetOnError:e=!0,resetOnComplete:i=!0,resetOnRefCountZero:r=!0}=t;return o=>{let s,a,l,c=0,d=!1,u=!1;const h=()=>{a?.unsubscribe(),a=void 0},f=()=>{h(),s=l=void 0,d=u=!1},p=()=>{const g=s;f(),g?.unsubscribe()};return gt((g,b)=>{c++,!u&&!d&&h();const v=l=l??n();b.add(()=>{c--,0===c&&!u&&!d&&(a=Zp(p,r))}),v.subscribe(b),!s&&c>0&&(s=new Ns({next:w=>v.next(w),error:w=>{u=!0,h(),a=Zp(f,e,w),v.error(w)},complete:()=>{d=!0,h(),a=Zp(f,i),v.complete()}}),Qt(g).subscribe(s))})(o)}}function Zp(t,n,...e){if(!0===n)return void t();if(!1===n)return;const i=new Ns({next:()=>{i.unsubscribe(),t()}});return Qt(n(...e)).subscribe(i)}function lt(t){for(let n in t)if(t[n]===lt)return n;throw Error("Could not find renamed property on target object.")}function Kp(t,n){for(const e in n)n.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=n[e])}function ut(t){if("string"==typeof t)return t;if(Array.isArray(t))return"["+t.map(ut).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;const n=t.toString();if(null==n)return""+n;const e=n.indexOf("\n");return-1===e?n:n.substring(0,e)}function Xp(t,n){return null==t||""===t?null===n?"":n:null==n||""===n?t:t+" "+n}const mL=lt({__forward_ref__:lt});function at(t){return t.__forward_ref__=at,t.toString=function(){return ut(this())},t}function de(t){return Qp(t)?t():t}function Qp(t){return"function"==typeof t&&t.hasOwnProperty(mL)&&t.__forward_ref__===at}function Jp(t){return t&&!!t.\u0275providers}const lu="https://g.co/ng/security#xss";class A extends Error{constructor(n,e){super(cu(n,e)),this.code=n}}function cu(t,n){return`NG0${Math.abs(t)}${n?": "+n.trim():""}`}function Ce(t){return"string"==typeof t?t:null==t?"":String(t)}function du(t,n){throw new A(-201,!1)}function di(t,n){null==t&&function Je(t,n,e,i){throw new Error(`ASSERTION ERROR: ${t}`+(null==i?"":` [Expected=> ${e} ${i} ${n} <=Actual]`))}(n,t,null,"!=")}function T(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function ue(t){return{providers:t.providers||[],imports:t.imports||[]}}function uu(t){return Ex(t,hu)||Ex(t,kx)}function Ex(t,n){return t.hasOwnProperty(n)?t[n]:null}function Sx(t){return t&&(t.hasOwnProperty(eg)||t.hasOwnProperty(CL))?t[eg]:null}const hu=lt({\u0275prov:lt}),eg=lt({\u0275inj:lt}),kx=lt({ngInjectableDef:lt}),CL=lt({ngInjectorDef:lt});var he=(()=>((he=he||{})[he.Default=0]="Default",he[he.Host=1]="Host",he[he.Self=2]="Self",he[he.SkipSelf=4]="SkipSelf",he[he.Optional=8]="Optional",he))();let tg;function ui(t){const n=tg;return tg=t,n}function Mx(t,n,e){const i=uu(t);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:e&he.Optional?null:void 0!==n?n:void du(ut(t))}const ht=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),Ol={},ng="__NG_DI_FLAG__",fu="ngTempTokenPath",EL="ngTokenPath",SL=/\n/gm,kL="\u0275",Tx="__source";let Rl;function Bs(t){const n=Rl;return Rl=t,n}function ML(t,n=he.Default){if(void 0===Rl)throw new A(-203,!1);return null===Rl?Mx(t,void 0,n):Rl.get(t,n&he.Optional?null:void 0,n)}function _(t,n=he.Default){return(function DL(){return tg}()||ML)(de(t),n)}function R(t,n=he.Default){return _(t,mu(n))}function mu(t){return typeof t>"u"||"number"==typeof t?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function ig(t){const n=[];for(let e=0;e((qi=qi||{})[qi.OnPush=0]="OnPush",qi[qi.Default=1]="Default",qi))(),Ii=(()=>{return(t=Ii||(Ii={}))[t.Emulated=0]="Emulated",t[t.None=2]="None",t[t.ShadowDom=3]="ShadowDom",Ii;var t})();const Er={},Xe=[],pu=lt({\u0275cmp:lt}),rg=lt({\u0275dir:lt}),og=lt({\u0275pipe:lt}),Ix=lt({\u0275mod:lt}),Sr=lt({\u0275fac:lt}),Fl=lt({__NG_ELEMENT_ID__:lt});let OL=0;function $(t){return Dr(()=>{const n=Rx(t),e={...n,decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===qi.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&t.dependencies||null,getStandaloneInjector:null,data:t.data||{},encapsulation:t.encapsulation||Ii.Emulated,id:"c"+OL++,styles:t.styles||Xe,_:null,schemas:t.schemas||null,tView:null};Px(e);const i=t.dependencies;return e.directiveDefs=gu(i,!1),e.pipeDefs=gu(i,!0),e})}function PL(t){return et(t)||fn(t)}function FL(t){return null!==t}function pe(t){return Dr(()=>({type:t.type,bootstrap:t.bootstrap||Xe,declarations:t.declarations||Xe,imports:t.imports||Xe,exports:t.exports||Xe,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function Ox(t,n){if(null==t)return Er;const e={};for(const i in t)if(t.hasOwnProperty(i)){let r=t[i],o=r;Array.isArray(r)&&(o=r[1],r=r[0]),e[r]=i,n&&(n[r]=o)}return e}function M(t){return Dr(()=>{const n=Rx(t);return Px(n),n})}function hn(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,standalone:!0===t.standalone,onDestroy:t.type.prototype.ngOnDestroy||null}}function et(t){return t[pu]||null}function fn(t){return t[rg]||null}function Fn(t){return t[og]||null}function qn(t,n){const e=t[Ix]||null;if(!e&&!0===n)throw new Error(`Type ${ut(t)} does not have '\u0275mod' property.`);return e}function Rx(t){const n={};return{type:t.type,providersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:n,exportAs:t.exportAs||null,standalone:!0===t.standalone,selectors:t.selectors||Xe,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Ox(t.inputs,n),outputs:Ox(t.outputs)}}function Px(t){t.features?.forEach(n=>n(t))}function gu(t,n){if(!t)return null;const e=n?Fn:PL;return()=>("function"==typeof t?t():t).map(i=>e(i)).filter(FL)}const kr=0,Y=1,Ie=2,kt=3,Oi=4,Zo=5,mn=6,js=7,Rt=8,_u=9,bu=10,Fe=11,sg=12,Nl=13,Fx=14,Hs=15,pn=16,Ll=17,zs=18,Yi=19,Bl=20,Nx=21,_t=22,ag=1,Lx=2,vu=7,yu=8,Us=9,Dn=10;function Yn(t){return Array.isArray(t)&&"object"==typeof t[ag]}function Ri(t){return Array.isArray(t)&&!0===t[ag]}function lg(t){return 0!=(4&t.flags)}function Vl(t){return t.componentOffset>-1}function wu(t){return 1==(1&t.flags)}function Pi(t){return!!t.template}function LL(t){return 0!=(256&t[Ie])}function Ko(t,n){return t.hasOwnProperty(Sr)?t[Sr]:null}class jx{constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}isFirstChange(){return this.firstChange}}function st(){return Hx}function Hx(t){return t.type.prototype.ngOnChanges&&(t.setInput=HL),jL}function jL(){const t=Ux(this),n=t?.current;if(n){const e=t.previous;if(e===Er)t.previous=n;else for(let i in n)e[i]=n[i];t.current=null,this.ngOnChanges(n)}}function HL(t,n,e,i){const r=this.declaredInputs[e],o=Ux(t)||function zL(t,n){return t[zx]=n}(t,{previous:Er,current:null}),s=o.current||(o.current={}),a=o.previous,l=a[r];s[r]=new jx(l&&l.currentValue,n,a===Er),t[i]=n}st.ngInherit=!0;const zx="__ngSimpleChanges__";function Ux(t){return t[zx]||null}const hi=function(t,n,e){};function rn(t){for(;Array.isArray(t);)t=t[kr];return t}function xu(t,n){return rn(n[t])}function Zn(t,n){return rn(n[t.index])}function Wx(t,n){return t.data[n]}function $s(t,n){return t[n]}function Kn(t,n){const e=n[t];return Yn(e)?e:e[kr]}function Cu(t){return 64==(64&t[Ie])}function mo(t,n){return null==n?null:t[n]}function qx(t){t[zs]=0}function dg(t,n){t[Zo]+=n;let e=t,i=t[kt];for(;null!==i&&(1===n&&1===e[Zo]||-1===n&&0===e[Zo]);)i[Zo]+=n,e=i,i=i[kt]}const De={lFrame:iC(null),bindingsEnabled:!0};function Zx(){return De.bindingsEnabled}function I(){return De.lFrame.lView}function Ue(){return De.lFrame.tView}function fi(t){return De.lFrame.contextLView=t,t[Rt]}function mi(t){return De.lFrame.contextLView=null,t}function on(){let t=Kx();for(;null!==t&&64===t.type;)t=t.parent;return t}function Kx(){return De.lFrame.currentTNode}function Zi(t,n){const e=De.lFrame;e.currentTNode=t,e.isParent=n}function ug(){return De.lFrame.isParent}function hg(){De.lFrame.isParent=!1}function En(){const t=De.lFrame;let n=t.bindingRootIndex;return-1===n&&(n=t.bindingRootIndex=t.tView.bindingStartIndex),n}function Gs(){return De.lFrame.bindingIndex++}function Tr(t){const n=De.lFrame,e=n.bindingIndex;return n.bindingIndex=n.bindingIndex+t,e}function t2(t,n){const e=De.lFrame;e.bindingIndex=e.bindingRootIndex=t,fg(n)}function fg(t){De.lFrame.currentDirectiveIndex=t}function mg(t){const n=De.lFrame.currentDirectiveIndex;return-1===n?null:t[n]}function eC(){return De.lFrame.currentQueryIndex}function pg(t){De.lFrame.currentQueryIndex=t}function r2(t){const n=t[Y];return 2===n.type?n.declTNode:1===n.type?t[mn]:null}function tC(t,n,e){if(e&he.SkipSelf){let r=n,o=t;for(;!(r=r.parent,null!==r||e&he.Host||(r=r2(o),null===r||(o=o[Hs],10&r.type))););if(null===r)return!1;n=r,t=o}const i=De.lFrame=nC();return i.currentTNode=n,i.lView=t,!0}function gg(t){const n=nC(),e=t[Y];De.lFrame=n,n.currentTNode=e.firstChild,n.lView=t,n.tView=e,n.contextLView=t,n.bindingIndex=e.bindingStartIndex,n.inI18n=!1}function nC(){const t=De.lFrame,n=null===t?null:t.child;return null===n?iC(t):n}function iC(t){const n={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null,inI18n:!1};return null!==t&&(t.child=n),n}function rC(){const t=De.lFrame;return De.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}const oC=rC;function _g(){const t=rC();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function Sn(){return De.lFrame.selectedIndex}function Xo(t){De.lFrame.selectedIndex=t}function wt(){const t=De.lFrame;return Wx(t.tView,t.selectedIndex)}function Du(t,n){for(let e=n.directiveStart,i=n.directiveEnd;e=i)break}else n[l]<0&&(t[zs]+=65536),(a>11>16&&(3&t[Ie])===n){t[Ie]+=2048,hi(4,a,o);try{o.call(a)}finally{hi(5,a,o)}}}else{hi(4,a,o);try{o.call(a)}finally{hi(5,a,o)}}}const Ws=-1;class Hl{constructor(n,e,i){this.factory=n,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=i}}function yg(t,n,e){let i=0;for(;in){s=o-1;break}}}for(;o>16}(t),i=n;for(;e>0;)i=i[Hs],e--;return i}let wg=!0;function Tu(t){const n=wg;return wg=t,n}const fC=255,mC=5;let g2=0;const Ki={};function Au(t,n){const e=pC(t,n);if(-1!==e)return e;const i=n[Y];i.firstCreatePass&&(t.injectorIndex=n.length,xg(i.data,t),xg(n,null),xg(i.blueprint,null));const r=Cg(t,n),o=t.injectorIndex;if(hC(r)){const s=ku(r),a=Mu(r,n),l=a[Y].data;for(let c=0;c<8;c++)n[o+c]=a[s+c]|l[s+c]}return n[o+8]=r,o}function xg(t,n){t.push(0,0,0,0,0,0,0,0,n)}function pC(t,n){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null===n[t.injectorIndex+8]?-1:t.injectorIndex}function Cg(t,n){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let e=0,i=null,r=n;for(;null!==r;){if(i=xC(r),null===i)return Ws;if(e++,r=r[Hs],-1!==i.injectorIndex)return i.injectorIndex|e<<16}return Ws}function Dg(t,n,e){!function _2(t,n,e){let i;"string"==typeof e?i=e.charCodeAt(0)||0:e.hasOwnProperty(Fl)&&(i=e[Fl]),null==i&&(i=e[Fl]=g2++);const r=i&fC;n.data[t+(r>>mC)]|=1<=0?n&fC:w2:n}(e);if("function"==typeof o){if(!tC(n,t,i))return i&he.Host?gC(r,0,i):_C(n,e,i,r);try{const s=o(i);if(null!=s||i&he.Optional)return s;du()}finally{oC()}}else if("number"==typeof o){let s=null,a=pC(t,n),l=Ws,c=i&he.Host?n[pn][mn]:null;for((-1===a||i&he.SkipSelf)&&(l=-1===a?Cg(t,n):n[a+8],l!==Ws&&wC(i,!1)?(s=n[Y],a=ku(l),n=Mu(l,n)):a=-1);-1!==a;){const d=n[Y];if(yC(o,a,d.data)){const u=v2(a,n,e,s,i,c);if(u!==Ki)return u}l=n[a+8],l!==Ws&&wC(i,n[Y].data[a+8]===c)&&yC(o,a,n)?(s=d,a=ku(l),n=Mu(l,n)):a=-1}}return r}function v2(t,n,e,i,r,o){const s=n[Y],a=s.data[t+8],d=Iu(a,s,e,null==i?Vl(a)&&wg:i!=s&&0!=(3&a.type),r&he.Host&&o===a);return null!==d?Qo(n,s,d,a):Ki}function Iu(t,n,e,i,r){const o=t.providerIndexes,s=n.data,a=1048575&o,l=t.directiveStart,d=o>>20,h=r?a+d:t.directiveEnd;for(let f=i?a:a+d;f=l&&p.type===e)return f}if(r){const f=s[l];if(f&&Pi(f)&&f.type===e)return l}return null}function Qo(t,n,e,i){let r=t[e];const o=n.data;if(function h2(t){return t instanceof Hl}(r)){const s=r;s.resolving&&function pL(t,n){const e=n?`. Dependency path: ${n.join(" > ")} > ${t}`:"";throw new A(-200,`Circular dependency in DI detected for ${t}${e}`)}(function Qe(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():Ce(t)}(o[e]));const a=Tu(s.canSeeViewProviders);s.resolving=!0;const l=s.injectImpl?ui(s.injectImpl):null;tC(t,i,he.Default);try{r=t[e]=s.factory(void 0,o,t,i),n.firstCreatePass&&e>=i.directiveStart&&function d2(t,n,e){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:o}=n.type.prototype;if(i){const s=Hx(n);(e.preOrderHooks??(e.preOrderHooks=[])).push(t,s),(e.preOrderCheckHooks??(e.preOrderCheckHooks=[])).push(t,s)}r&&(e.preOrderHooks??(e.preOrderHooks=[])).push(0-t,r),o&&((e.preOrderHooks??(e.preOrderHooks=[])).push(t,o),(e.preOrderCheckHooks??(e.preOrderCheckHooks=[])).push(t,o))}(e,o[e],n)}finally{null!==l&&ui(l),Tu(a),s.resolving=!1,oC()}}return r}function yC(t,n,e){return!!(e[n+(t>>mC)]&1<{const n=t.prototype.constructor,e=n[Sr]||Eg(n),i=Object.prototype;let r=Object.getPrototypeOf(t.prototype).constructor;for(;r&&r!==i;){const o=r[Sr]||Eg(r);if(o&&o!==e)return o;r=Object.getPrototypeOf(r)}return o=>new o})}function Eg(t){return Qp(t)?()=>{const n=Eg(de(t));return n&&n()}:Ko(t)}function xC(t){const n=t[Y],e=n.type;return 2===e?n.declTNode:1===e?t[mn]:null}function Ar(t){return function b2(t,n){if("class"===n)return t.classes;if("style"===n)return t.styles;const e=t.attrs;if(e){const i=e.length;let r=0;for(;r{const i=function Sg(t){return function(...e){if(t){const i=t(...e);for(const r in i)this[r]=i[r]}}}(n);function r(...o){if(this instanceof r)return i.apply(this,o),this;const s=new r(...o);return a.annotation=s,a;function a(l,c,d){const u=l.hasOwnProperty(Zs)?l[Zs]:Object.defineProperty(l,Zs,{value:[]})[Zs];for(;u.length<=d;)u.push(null);return(u[d]=u[d]||[]).push(s),l}}return e&&(r.prototype=Object.create(e.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r})}class k{constructor(n,e){this._desc=n,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=T({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function Jo(t,n){t.forEach(e=>Array.isArray(e)?Jo(e,n):n(e))}function DC(t,n,e){n>=t.length?t.push(e):t.splice(n,0,e)}function Ou(t,n){return n>=t.length-1?t.pop():t.splice(n,1)[0]}function Gl(t,n){const e=[];for(let i=0;i=0?t[1|i]=e:(i=~i,function S2(t,n,e,i){let r=t.length;if(r==n)t.push(e,i);else if(1===r)t.push(i,t[0]),t[0]=e;else{for(r--,t.push(t[r-1],t[r]);r>n;)t[r]=t[r-2],r--;t[n]=e,t[n+1]=i}}(t,i,n,e)),i}function Mg(t,n){const e=Qs(t,n);if(e>=0)return t[1|e]}function Qs(t,n){return function EC(t,n,e){let i=0,r=t.length>>e;for(;r!==i;){const o=i+(r-i>>1),s=t[o<n?r=o:i=o+1}return~(r<({token:t})),-1),Ir=Pl(Xs("Optional"),8),Js=Pl(Xs("SkipSelf"),4);var kn=(()=>((kn=kn||{})[kn.Important=1]="Important",kn[kn.DashCase=2]="DashCase",kn))();const Rg=new Map;let Y2=0;const Fg="__ngContext__";function gn(t,n){Yn(n)?(t[Fg]=n[Bl],function K2(t){Rg.set(t[Bl],t)}(n)):t[Fg]=n}let Ng;function Lg(t,n){return Ng(t,n)}function Zl(t){const n=t[kt];return Ri(n)?n[kt]:n}function Bg(t){return GC(t[Nl])}function Vg(t){return GC(t[Oi])}function GC(t){for(;null!==t&&!Ri(t);)t=t[Oi];return t}function ta(t,n,e,i,r){if(null!=i){let o,s=!1;Ri(i)?o=i:Yn(i)&&(s=!0,i=i[kr]);const a=rn(i);0===t&&null!==e?null==r?XC(n,e,a):es(n,e,a,r||null,!0):1===t&&null!==e?es(n,e,a,r||null,!0):2===t?function Wg(t,n,e){const i=Lu(t,n);i&&function gB(t,n,e,i){t.removeChild(n,e,i)}(t,i,n,e)}(n,a,s):3===t&&n.destroyNode(a),null!=o&&function vB(t,n,e,i,r){const o=e[vu];o!==rn(e)&&ta(n,t,i,o,r);for(let a=Dn;a0&&(t[e-1][Oi]=i[Oi]);const o=Ou(t,Dn+n);!function lB(t,n){Kl(t,n,n[Fe],2,null,null),n[kr]=null,n[mn]=null}(i[Y],i);const s=o[Yi];null!==s&&s.detachView(o[Y]),i[kt]=null,i[Oi]=null,i[Ie]&=-65}return i}function YC(t,n){if(!(128&n[Ie])){const e=n[Fe];e.destroyNode&&Kl(t,n,e,3,null,null),function uB(t){let n=t[Nl];if(!n)return Ug(t[Y],t);for(;n;){let e=null;if(Yn(n))e=n[Nl];else{const i=n[Dn];i&&(e=i)}if(!e){for(;n&&!n[Oi]&&n!==t;)Yn(n)&&Ug(n[Y],n),n=n[kt];null===n&&(n=t),Yn(n)&&Ug(n[Y],n),e=n&&n[Oi]}n=e}}(n)}}function Ug(t,n){if(!(128&n[Ie])){n[Ie]&=-65,n[Ie]|=128,function pB(t,n){let e;if(null!=t&&null!=(e=t.destroyHooks))for(let i=0;i=0?i[r=s]():i[r=-s].unsubscribe(),o+=2}else{const s=i[r=e[o+1]];e[o].call(s)}if(null!==i){for(let o=r+1;o-1){const{encapsulation:o}=t.data[i.directiveStart+r];if(o===Ii.None||o===Ii.Emulated)return null}return Zn(i,e)}}(t,n.parent,e)}function es(t,n,e,i,r){t.insertBefore(n,e,i,r)}function XC(t,n,e){t.appendChild(n,e)}function QC(t,n,e,i,r){null!==i?es(t,n,e,i,r):XC(t,n,e)}function Lu(t,n){return t.parentNode(n)}function JC(t,n,e){return tD(t,n,e)}let $g,ju,Zg,Hu,tD=function eD(t,n,e){return 40&t.type?Zn(t,e):null};function Bu(t,n,e,i){const r=ZC(t,i,n),o=n[Fe],a=JC(i.parent||n[mn],i,n);if(null!=r)if(Array.isArray(e))for(let l=0;lt,createScript:t=>t,createScriptURL:t=>t})}catch{}return ju}()?.createHTML(t)||t}function dD(t){return function Kg(){if(void 0===Hu&&(Hu=null,ht.trustedTypes))try{Hu=ht.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Hu}()?.createScriptURL(t)||t}class ts{constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${lu})`}}class SB extends ts{getTypeName(){return"HTML"}}class kB extends ts{getTypeName(){return"Style"}}class MB extends ts{getTypeName(){return"Script"}}class TB extends ts{getTypeName(){return"URL"}}class AB extends ts{getTypeName(){return"ResourceURL"}}function Qn(t){return t instanceof ts?t.changingThisBreaksApplicationSecurity:t}function Xi(t,n){const e=function IB(t){return t instanceof ts&&t.getTypeName()||null}(t);if(null!=e&&e!==n){if("ResourceURL"===e&&"URL"===n)return!0;throw new Error(`Required a safe ${n}, got a ${e} (see ${lu})`)}return e===n}class LB{constructor(n){this.inertDocumentHelper=n}getInertBodyElement(n){n=""+n;try{const e=(new window.DOMParser).parseFromString(na(n),"text/html").body;return null===e?this.inertDocumentHelper.getInertBodyElement(n):(e.removeChild(e.firstChild),e)}catch{return null}}}class BB{constructor(n){this.defaultDoc=n,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(n){const e=this.inertDocument.createElement("template");return e.innerHTML=na(n),e}}const jB=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function zu(t){return(t=String(t)).match(jB)?t:"unsafe:"+t}function Or(t){const n={};for(const e of t.split(","))n[e]=!0;return n}function Xl(...t){const n={};for(const e of t)for(const i in e)e.hasOwnProperty(i)&&(n[i]=!0);return n}const hD=Or("area,br,col,hr,img,wbr"),fD=Or("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),mD=Or("rp,rt"),Xg=Xl(hD,Xl(fD,Or("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),Xl(mD,Or("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),Xl(mD,fD)),Qg=Or("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),pD=Xl(Qg,Or("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),Or("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),HB=Or("script,style,template");class zB{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(n){let e=n.firstChild,i=!0;for(;e;)if(e.nodeType===Node.ELEMENT_NODE?i=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,i&&e.firstChild)e=e.firstChild;else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let r=this.checkClobberedElement(e,e.nextSibling);if(r){e=r;break}e=this.checkClobberedElement(e,e.parentNode)}return this.buf.join("")}startElement(n){const e=n.nodeName.toLowerCase();if(!Xg.hasOwnProperty(e))return this.sanitizedSomething=!0,!HB.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const i=n.attributes;for(let r=0;r"),!0}endElement(n){const e=n.nodeName.toLowerCase();Xg.hasOwnProperty(e)&&!hD.hasOwnProperty(e)&&(this.buf.push(""))}chars(n){this.buf.push(gD(n))}checkClobberedElement(n,e){if(e&&(n.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error(`Failed to sanitize html because the element is clobbered: ${n.outerHTML}`);return e}}const UB=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,$B=/([^\#-~ |!])/g;function gD(t){return t.replace(/&/g,"&").replace(UB,function(n){return"&#"+(1024*(n.charCodeAt(0)-55296)+(n.charCodeAt(1)-56320)+65536)+";"}).replace($B,function(n){return"&#"+n.charCodeAt(0)+";"}).replace(//g,">")}let Uu;function _D(t,n){let e=null;try{Uu=Uu||function uD(t){const n=new BB(t);return function VB(){try{return!!(new window.DOMParser).parseFromString(na(""),"text/html")}catch{return!1}}()?new LB(n):n}(t);let i=n?String(n):"";e=Uu.getInertBodyElement(i);let r=5,o=i;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,i=o,o=e.innerHTML,e=Uu.getInertBodyElement(i)}while(i!==o);return na((new zB).sanitizeChildren(Jg(e)||e))}finally{if(e){const i=Jg(e)||e;for(;i.firstChild;)i.removeChild(i.firstChild)}}}function Jg(t){return"content"in t&&function GB(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}var $e=(()=>(($e=$e||{})[$e.NONE=0]="NONE",$e[$e.HTML=1]="HTML",$e[$e.STYLE=2]="STYLE",$e[$e.SCRIPT=3]="SCRIPT",$e[$e.URL=4]="URL",$e[$e.RESOURCE_URL=5]="RESOURCE_URL",$e))();function Fi(t){const n=Ql();return n?n.sanitize($e.URL,t)||"":Xi(t,"URL")?Qn(t):zu(Ce(t))}function bD(t){const n=Ql();if(n)return dD(n.sanitize($e.RESOURCE_URL,t)||"");if(Xi(t,"ResourceURL"))return dD(Qn(t));throw new A(904,!1)}function e_(t,n,e){return function XB(t,n){return"src"===n&&("embed"===t||"frame"===t||"iframe"===t||"media"===t||"script"===t)||"href"===n&&("base"===t||"link"===t)?bD:Fi}(n,e)(t)}function Ql(){const t=I();return t&&t[sg]}const $u=new k("ENVIRONMENT_INITIALIZER"),t_=new k("INJECTOR",-1),vD=new k("INJECTOR_DEF_TYPES");class yD{get(n,e=Ol){if(e===Ol){const i=new Error(`NullInjectorError: No provider for ${ut(n)}!`);throw i.name="NullInjectorError",i}return e}}function wD(...t){return{\u0275providers:xD(0,t),\u0275fromNgModule:!0}}function xD(t,...n){const e=[],i=new Set;let r;return Jo(n,o=>{const s=o;n_(s,e,[],i)&&(r||(r=[]),r.push(s))}),void 0!==r&&CD(r,e),e}function CD(t,n){for(let e=0;e{n.push(o)})}}function n_(t,n,e,i){if(!(t=de(t)))return!1;let r=null,o=Sx(t);const s=!o&&et(t);if(o||s){if(s&&!s.standalone)return!1;r=t}else{const l=t.ngModule;if(o=Sx(l),!o)return!1;r=l}const a=i.has(r);if(s){if(a)return!1;if(i.add(r),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const c of l)n_(c,n,e,i)}}else{if(!o)return!1;{if(null!=o.imports&&!a){let c;i.add(r);try{Jo(o.imports,d=>{n_(d,n,e,i)&&(c||(c=[]),c.push(d))})}finally{}void 0!==c&&CD(c,n)}if(!a){const c=Ko(r)||(()=>new r);n.push({provide:r,useFactory:c,deps:Xe},{provide:vD,useValue:r,multi:!0},{provide:$u,useValue:()=>_(r),multi:!0})}const l=o.providers;null==l||a||i_(l,d=>{n.push(d)})}}return r!==t&&void 0!==t.providers}function i_(t,n){for(let e of t)Jp(e)&&(e=e.\u0275providers),Array.isArray(e)?i_(e,n):n(e)}const JB=lt({provide:String,useValue:lt});function r_(t){return null!==t&&"object"==typeof t&&JB in t}function ns(t){return"function"==typeof t}const o_=new k("Set Injector scope."),Gu={},tV={};let s_;function Wu(){return void 0===s_&&(s_=new yD),s_}class Qi{}class SD extends Qi{get destroyed(){return this._destroyed}constructor(n,e,i,r){super(),this.parent=e,this.source=i,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,l_(n,s=>this.processProvider(s)),this.records.set(t_,ia(void 0,this)),r.has("environment")&&this.records.set(Qi,ia(void 0,this));const o=this.records.get(o_);null!=o&&"string"==typeof o.value&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(vD.multi,Xe,he.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const n of this._ngOnDestroyHooks)n.ngOnDestroy();for(const n of this._onDestroyHooks)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(n){this._onDestroyHooks.push(n)}runInContext(n){this.assertNotDestroyed();const e=Bs(this),i=ui(void 0);try{return n()}finally{Bs(e),ui(i)}}get(n,e=Ol,i=he.Default){this.assertNotDestroyed(),i=mu(i);const r=Bs(this),o=ui(void 0);try{if(!(i&he.SkipSelf)){let a=this.records.get(n);if(void 0===a){const l=function sV(t){return"function"==typeof t||"object"==typeof t&&t instanceof k}(n)&&uu(n);a=l&&this.injectableDefInScope(l)?ia(a_(n),Gu):null,this.records.set(n,a)}if(null!=a)return this.hydrate(n,a)}return(i&he.Self?Wu():this.parent).get(n,e=i&he.Optional&&e===Ol?null:e)}catch(s){if("NullInjectorError"===s.name){if((s[fu]=s[fu]||[]).unshift(ut(n)),r)throw s;return function AL(t,n,e,i){const r=t[fu];throw n[Tx]&&r.unshift(n[Tx]),t.message=function IL(t,n,e,i=null){t=t&&"\n"===t.charAt(0)&&t.charAt(1)==kL?t.slice(2):t;let r=ut(n);if(Array.isArray(n))r=n.map(ut).join(" -> ");else if("object"==typeof n){let o=[];for(let s in n)if(n.hasOwnProperty(s)){let a=n[s];o.push(s+":"+("string"==typeof a?JSON.stringify(a):ut(a)))}r=`{${o.join(", ")}}`}return`${e}${i?"("+i+")":""}[${r}]: ${t.replace(SL,"\n ")}`}("\n"+t.message,r,e,i),t[EL]=r,t[fu]=null,t}(s,n,"R3InjectorError",this.source)}throw s}finally{ui(o),Bs(r)}}resolveInjectorInitializers(){const n=Bs(this),e=ui(void 0);try{const i=this.get($u.multi,Xe,he.Self);for(const r of i)r()}finally{Bs(n),ui(e)}}toString(){const n=[],e=this.records;for(const i of e.keys())n.push(ut(i));return`R3Injector[${n.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new A(205,!1)}processProvider(n){let e=ns(n=de(n))?n:de(n&&n.provide);const i=function iV(t){return r_(t)?ia(void 0,t.useValue):ia(kD(t),Gu)}(n);if(ns(n)||!0!==n.multi)this.records.get(e);else{let r=this.records.get(e);r||(r=ia(void 0,Gu,!0),r.factory=()=>ig(r.multi),this.records.set(e,r)),e=n,r.multi.push(n)}this.records.set(e,i)}hydrate(n,e){return e.value===Gu&&(e.value=tV,e.value=e.factory()),"object"==typeof e.value&&e.value&&function oV(t){return null!==t&&"object"==typeof t&&"function"==typeof t.ngOnDestroy}(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}injectableDefInScope(n){if(!n.providedIn)return!1;const e=de(n.providedIn);return"string"==typeof e?"any"===e||this.scopes.has(e):this.injectorDefTypes.has(e)}}function a_(t){const n=uu(t),e=null!==n?n.factory:Ko(t);if(null!==e)return e;if(t instanceof k)throw new A(204,!1);if(t instanceof Function)return function nV(t){const n=t.length;if(n>0)throw Gl(n,"?"),new A(204,!1);const e=function wL(t){const n=t&&(t[hu]||t[kx]);return n?(function xL(t){if(t.hasOwnProperty("name"))return t.name;(""+t).match(/^function\s*([^\s(]+)/)}(t),n):null}(t);return null!==e?()=>e.factory(t):()=>new t}(t);throw new A(204,!1)}function kD(t,n,e){let i;if(ns(t)){const r=de(t);return Ko(r)||a_(r)}if(r_(t))i=()=>de(t.useValue);else if(function ED(t){return!(!t||!t.useFactory)}(t))i=()=>t.useFactory(...ig(t.deps||[]));else if(function DD(t){return!(!t||!t.useExisting)}(t))i=()=>_(de(t.useExisting));else{const r=de(t&&(t.useClass||t.provide));if(!function rV(t){return!!t.deps}(t))return Ko(r)||a_(r);i=()=>new r(...ig(t.deps))}return i}function ia(t,n,e=!1){return{factory:t,value:n,multi:e?[]:void 0}}function l_(t,n){for(const e of t)Array.isArray(e)?l_(e,n):e&&Jp(e)?l_(e.\u0275providers,n):n(e)}class aV{}class MD{}class cV{resolveComponentFactory(n){throw function lV(t){const n=Error(`No component factory found for ${ut(t)}. Did you add it to @NgModule.entryComponents?`);return n.ngComponent=t,n}(n)}}let Ni=(()=>{class t{}return t.NULL=new cV,t})();function dV(){return ra(on(),I())}function ra(t,n){return new H(Zn(t,n))}let H=(()=>{class t{constructor(e){this.nativeElement=e}}return t.__NG_ELEMENT_ID__=dV,t})();function uV(t){return t instanceof H?t.nativeElement:t}class po{}let gi=(()=>{class t{}return t.__NG_ELEMENT_ID__=()=>function hV(){const t=I(),e=Kn(on().index,t);return(Yn(e)?e:t)[Fe]}(),t})(),fV=(()=>{class t{}return t.\u0275prov=T({token:t,providedIn:"root",factory:()=>null}),t})();class go{constructor(n){this.full=n,this.major=n.split(".")[0],this.minor=n.split(".")[1],this.patch=n.split(".").slice(2).join(".")}}const mV=new go("15.2.6"),c_={},d_="ngOriginalError";function u_(t){return t[d_]}class Ji{constructor(){this._console=console}handleError(n){const e=this._findOriginalError(n);this._console.error("ERROR",n),e&&this._console.error("ORIGINAL ERROR",e)}_findOriginalError(n){let e=n&&u_(n);for(;e&&u_(e);)e=u_(e);return e||null}}function Rr(t){return t instanceof Function?t():t}function ID(t,n,e){let i=t.length;for(;;){const r=t.indexOf(n,e);if(-1===r)return r;if(0===r||t.charCodeAt(r-1)<=32){const o=n.length;if(r+o===i||t.charCodeAt(r+o)<=32)return r}e=r+1}}const OD="ng-template";function EV(t,n,e){let i=0,r=!0;for(;io?"":r[u+1].toLowerCase();const f=8&i?h:null;if(f&&-1!==ID(f,c,0)||2&i&&c!==h){if(Li(i))return!1;s=!0}}}}else{if(!s&&!Li(i)&&!Li(l))return!1;if(s&&Li(l))continue;s=!1,i=l|1&i}}return Li(i)||s}function Li(t){return 0==(1&t)}function MV(t,n,e,i){if(null===n)return-1;let r=0;if(i||!e){let o=!1;for(;r-1)for(e++;e0?'="'+a+'"':"")+"]"}else 8&i?r+="."+s:4&i&&(r+=" "+s);else""!==r&&!Li(s)&&(n+=FD(o,r),r=""),i=s,o=o||!Li(i);e++}return""!==r&&(n+=FD(o,r)),n}const Ee={};function E(t){ND(Ue(),I(),Sn()+t,!1)}function ND(t,n,e,i){if(!i)if(3==(3&n[Ie])){const o=t.preOrderCheckHooks;null!==o&&Eu(n,o,e)}else{const o=t.preOrderHooks;null!==o&&Su(n,o,0,e)}Xo(e)}function jD(t,n=null,e=null,i){const r=HD(t,n,e,i);return r.resolveInjectorInitializers(),r}function HD(t,n=null,e=null,i,r=new Set){const o=[e||Xe,wD(t)];return i=i||("object"==typeof t?void 0:ut(t)),new SD(o,n||Wu(),i||null,r)}let xt=(()=>{class t{static create(e,i){if(Array.isArray(e))return jD({name:""},i,e,"");{const r=e.name??"";return jD({name:r},e.parent,e.providers,r)}}}return t.THROW_IF_NOT_FOUND=Ol,t.NULL=new yD,t.\u0275prov=T({token:t,providedIn:"any",factory:()=>_(t_)}),t.__NG_ELEMENT_ID__=-1,t})();function m(t,n=he.Default){const e=I();return null===e?_(t,n):bC(on(),e,de(t),n)}function Jl(){throw new Error("invalid")}function YD(t,n){const e=t.contentQueries;if(null!==e)for(let i=0;i_t&&ND(t,n,_t,!1),hi(s?2:0,r),e(i,r)}finally{Xo(o),hi(s?3:1,r)}}function b_(t,n,e){if(lg(n)){const r=n.directiveEnd;for(let o=n.directiveStart;o0;){const e=t[--n];if("number"==typeof e&&e<0)return e}return 0})(s)!=a&&s.push(a),s.push(e,i,o)}}(t,n,i,ec(t,e,r.hostVars,Ee),r)}function er(t,n,e,i,r,o){const s=Zn(t,n);!function D_(t,n,e,i,r,o,s){if(null==o)t.removeAttribute(n,r,e);else{const a=null==s?Ce(o):s(o,i||"",r);t.setAttribute(n,r,a,e)}}(n[Fe],s,o,t.value,e,i,r)}function vj(t,n,e,i,r,o){const s=o[n];if(null!==s){const a=i.setInput;for(let l=0;l0&&E_(e)}}function E_(t){for(let i=Bg(t);null!==i;i=Vg(i))for(let r=Dn;r0&&E_(o)}const e=t[Y].components;if(null!==e)for(let i=0;i0&&E_(r)}}function Dj(t,n){const e=Kn(n,t),i=e[Y];(function Ej(t,n){for(let e=n.length;e-1&&(zg(n,i),Ou(e,i))}this._attachedToViewContainer=!1}YC(this._lView[Y],this._lView)}onDestroy(n){XD(this._lView[Y],this._lView,null,n)}markForCheck(){S_(this._cdRefInjectingView||this._lView)}detach(){this._lView[Ie]&=-65}reattach(){this._lView[Ie]|=64}detectChanges(){Xu(this._lView[Y],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new A(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function dB(t,n){Kl(t,n,n[Fe],2,null,null)}(this._lView[Y],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new A(902,!1);this._appRef=n}}class Sj extends tc{constructor(n){super(n),this._view=n}detectChanges(){const n=this._view;Xu(n[Y],n,n[Rt],!1)}checkNoChanges(){}get context(){return null}}class lE extends Ni{constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){const e=et(n);return new nc(e,this.ngModule)}}function cE(t){const n=[];for(let e in t)t.hasOwnProperty(e)&&n.push({propName:t[e],templateName:e});return n}class Mj{constructor(n,e){this.injector=n,this.parentInjector=e}get(n,e,i){i=mu(i);const r=this.injector.get(n,c_,i);return r!==c_||e===c_?r:this.parentInjector.get(n,e,i)}}class nc extends MD{get inputs(){return cE(this.componentDef.inputs)}get outputs(){return cE(this.componentDef.outputs)}constructor(n,e){super(),this.componentDef=n,this.ngModule=e,this.componentType=n.type,this.selector=function PV(t){return t.map(RV).join(",")}(n.selectors),this.ngContentSelectors=n.ngContentSelectors?n.ngContentSelectors:[],this.isBoundToModule=!!e}create(n,e,i,r){let o=(r=r||this.ngModule)instanceof Qi?r:r?.injector;o&&null!==this.componentDef.getStandaloneInjector&&(o=this.componentDef.getStandaloneInjector(o)||o);const s=o?new Mj(n,o):n,a=s.get(po,null);if(null===a)throw new A(407,!1);const l=s.get(fV,null),c=a.createRenderer(null,this.componentDef),d=this.componentDef.selectors[0][0]||"div",u=i?function rj(t,n,e){return t.selectRootElement(n,e===Ii.ShadowDom)}(c,i,this.componentDef.encapsulation):Hg(c,d,function kj(t){const n=t.toLowerCase();return"svg"===n?"svg":"math"===n?"math":null}(d)),h=this.componentDef.onPush?288:272,f=w_(0,null,null,1,0,null,null,null,null,null),p=Yu(null,f,null,h,null,null,a,c,l,s,null);let g,b;gg(p);try{const v=this.componentDef;let w,C=null;v.findHostDirectiveDefs?(w=[],C=new Map,v.findHostDirectiveDefs(v,w,C),w.push(v)):w=[v];const P=function Aj(t,n){const e=t[Y],i=_t;return t[i]=n,aa(e,i,2,"#host",null)}(p,u),ye=function Ij(t,n,e,i,r,o,s,a){const l=r[Y];!function Oj(t,n,e,i){for(const r of t)n.mergedAttrs=zl(n.mergedAttrs,r.hostAttrs);null!==n.mergedAttrs&&(Qu(n,n.mergedAttrs,!0),null!==e&&sD(i,e,n))}(i,t,n,s);const c=o.createRenderer(n,e),d=Yu(r,KD(e),null,e.onPush?32:16,r[t.index],t,o,c,a||null,null,null);return l.firstCreatePass&&C_(l,t,i.length-1),Ku(r,d),r[t.index]=d}(P,u,v,w,p,a,c);b=Wx(f,_t),u&&function Pj(t,n,e,i){if(i)yg(t,e,["ng-version",mV.full]);else{const{attrs:r,classes:o}=function FV(t){const n=[],e=[];let i=1,r=2;for(;i0&&oD(t,e,o.join(" "))}}(c,v,u,i),void 0!==e&&function Fj(t,n,e){const i=t.projection=[];for(let r=0;r=0;i--){const r=t[i];r.hostVars=n+=r.hostVars,r.hostAttrs=zl(r.hostAttrs,e=zl(e,r.hostAttrs))}}(i)}function T_(t){return t===Er?{}:t===Xe?[]:t}function Bj(t,n){const e=t.viewQuery;t.viewQuery=e?(i,r)=>{n(i,r),e(i,r)}:n}function Vj(t,n){const e=t.contentQueries;t.contentQueries=e?(i,r,o)=>{n(i,r,o),e(i,r,o)}:n}function jj(t,n){const e=t.hostBindings;t.hostBindings=e?(i,r)=>{n(i,r),e(i,r)}:n}function eh(t){return!!A_(t)&&(Array.isArray(t)||!(t instanceof Map)&&Symbol.iterator in t)}function A_(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function tr(t,n,e){return t[n]=e}function _n(t,n,e){return!Object.is(t[n],e)&&(t[n]=e,!0)}function tt(t,n,e,i){const r=I();return _n(r,Gs(),n)&&(Ue(),er(wt(),r,t,n,e,i)),tt}function ca(t,n,e,i){return _n(t,Gs(),e)?n+Ce(e)+i:Ee}function O(t,n,e,i,r,o,s,a){const l=I(),c=Ue(),d=t+_t,u=c.firstCreatePass?function Kj(t,n,e,i,r,o,s,a,l){const c=n.consts,d=aa(n,t,4,s||null,mo(c,a));x_(n,e,d,mo(c,l)),Du(n,d);const u=d.tView=w_(2,d,i,r,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,c);return null!==n.queries&&(n.queries.template(n,d),u.queries=n.queries.embeddedTView(d)),d}(d,c,l,n,e,i,r,o,s):c.data[d];Zi(u,!1);const h=l[Fe].createComment("");Bu(c,l,h,u),gn(h,l),Ku(l,l[d]=iE(h,l,h,u)),wu(u)&&v_(c,l,u),null!=s&&y_(l,u,a)}function Pt(t){return $s(function JL(){return De.lFrame.contextLView}(),_t+t)}function S(t,n,e){const i=I();return _n(i,Gs(),n)&&Jn(Ue(),wt(),i,t,n,i[Fe],e,!1),S}function I_(t,n,e,i,r){const s=r?"class":"style";M_(t,e,n.inputs[s],s,i)}function x(t,n,e,i){const r=I(),o=Ue(),s=_t+t,a=r[Fe],l=o.firstCreatePass?function Qj(t,n,e,i,r,o){const s=n.consts,l=aa(n,t,2,i,mo(s,r));return x_(n,e,l,mo(s,o)),null!==l.attrs&&Qu(l,l.attrs,!1),null!==l.mergedAttrs&&Qu(l,l.mergedAttrs,!0),null!==n.queries&&n.queries.elementStart(n,l),l}(s,o,r,n,e,i):o.data[s],c=r[s]=Hg(a,n,function c2(){return De.lFrame.currentNamespace}()),d=wu(l);return Zi(l,!0),sD(a,c,l),32!=(32&l.flags)&&Bu(o,r,c,l),0===function YL(){return De.lFrame.elementDepthCount}()&&gn(c,r),function ZL(){De.lFrame.elementDepthCount++}(),d&&(v_(o,r,l),b_(o,l,r)),null!==i&&y_(r,l),x}function D(){let t=on();ug()?hg():(t=t.parent,Zi(t,!1));const n=t;!function KL(){De.lFrame.elementDepthCount--}();const e=Ue();return e.firstCreatePass&&(Du(e,t),lg(t)&&e.queries.elementEnd(t)),null!=n.classesWithoutHost&&function f2(t){return 0!=(8&t.flags)}(n)&&I_(e,n,I(),n.classesWithoutHost,!0),null!=n.stylesWithoutHost&&function m2(t){return 0!=(16&t.flags)}(n)&&I_(e,n,I(),n.stylesWithoutHost,!1),D}function G(t,n,e,i){return x(t,n,e,i),D(),G}function Ln(t,n,e){const i=I(),r=Ue(),o=t+_t,s=r.firstCreatePass?function Jj(t,n,e,i,r){const o=n.consts,s=mo(o,i),a=aa(n,t,8,"ng-container",s);return null!==s&&Qu(a,s,!0),x_(n,e,a,mo(o,r)),null!==n.queries&&n.queries.elementStart(n,a),a}(o,r,i,n,e):r.data[o];Zi(s,!0);const a=i[o]=i[Fe].createComment("");return Bu(r,i,a,s),gn(a,i),wu(s)&&(v_(r,i,s),b_(r,s,i)),null!=e&&y_(i,s),Ln}function Bn(){let t=on();const n=Ue();return ug()?hg():(t=t.parent,Zi(t,!1)),n.firstCreatePass&&(Du(n,t),lg(t)&&n.queries.elementEnd(t)),Bn}function Vn(t,n,e){return Ln(t,n,e),Bn(),Vn}function nr(){return I()}function rc(t){return!!t&&"function"==typeof t.then}function CE(t){return!!t&&"function"==typeof t.subscribe}const O_=CE;function re(t,n,e,i){const r=I(),o=Ue(),s=on();return function EE(t,n,e,i,r,o,s){const a=wu(i),c=t.firstCreatePass&&oE(t),d=n[Rt],u=rE(n);let h=!0;if(3&i.type||s){const g=Zn(i,n),b=s?s(g):g,v=u.length,w=s?P=>s(rn(P[i.index])):i.index;let C=null;if(!s&&a&&(C=function eH(t,n,e,i){const r=t.cleanup;if(null!=r)for(let o=0;ol?a[l]:null}"string"==typeof s&&(o+=2)}return null}(t,n,r,i.index)),null!==C)(C.__ngLastListenerFn__||C).__ngNextListenerFn__=o,C.__ngLastListenerFn__=o,h=!1;else{o=kE(i,n,d,o,!1);const P=e.listen(b,r,o);u.push(o,P),c&&c.push(r,w,v,v+1)}}else o=kE(i,n,d,o,!1);const f=i.outputs;let p;if(h&&null!==f&&(p=f[r])){const g=p.length;if(g)for(let b=0;b-1?Kn(t.index,n):n);let l=SE(n,e,i,s),c=o.__ngNextListenerFn__;for(;c;)l=SE(n,e,c,s)&&l,c=c.__ngNextListenerFn__;return r&&!1===l&&(s.preventDefault(),s.returnValue=!1),l}}function W(t=1){return function o2(t){return(De.lFrame.contextLView=function s2(t,n){for(;t>0;)n=n[Hs],t--;return n}(t,De.lFrame.contextLView))[Rt]}(t)}function tH(t,n){let e=null;const i=function TV(t){const n=t.attrs;if(null!=n){const e=n.indexOf(5);if(!(1&e))return n[e+1]}return null}(t);for(let r=0;r>17&32767}function P_(t){return 2|t}function rs(t){return(131068&t)>>2}function F_(t,n){return-131069&t|n<<2}function N_(t){return 1|t}function LE(t,n,e,i,r){const o=t[e+1],s=null===n;let a=i?_o(o):rs(o),l=!1;for(;0!==a&&(!1===l||s);){const d=t[a+1];aH(t[a],n)&&(l=!0,t[a+1]=i?N_(d):P_(d)),a=i?_o(d):rs(d)}l&&(t[e+1]=i?P_(o):N_(o))}function aH(t,n){return null===t||null==n||(Array.isArray(t)?t[1]:t)===n||!(!Array.isArray(t)||"string"!=typeof n)&&Qs(t,n)>=0}const Gt={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function BE(t){return t.substring(Gt.key,Gt.keyEnd)}function lH(t){return t.substring(Gt.value,Gt.valueEnd)}function VE(t,n){const e=Gt.textEnd;return e===n?-1:(n=Gt.keyEnd=function uH(t,n,e){for(;n32;)n++;return n}(t,Gt.key=n,e),_a(t,n,e))}function jE(t,n){const e=Gt.textEnd;let i=Gt.key=_a(t,n,e);return e===i?-1:(i=Gt.keyEnd=function hH(t,n,e){let i;for(;n=65&&(-33&i)<=90||i>=48&&i<=57);)n++;return n}(t,i,e),i=zE(t,i,e),i=Gt.value=_a(t,i,e),i=Gt.valueEnd=function fH(t,n,e){let i=-1,r=-1,o=-1,s=n,a=s;for(;s32&&(a=s),o=r,r=i,i=-33&l}return a}(t,i,e),zE(t,i,e))}function HE(t){Gt.key=0,Gt.keyEnd=0,Gt.value=0,Gt.valueEnd=0,Gt.textEnd=t.length}function _a(t,n,e){for(;n=0;e=jE(n,e))qE(t,BE(n),lH(n))}function or(t,n){for(let e=function cH(t){return HE(t),VE(t,_a(t,0,Gt.textEnd))}(n);e>=0;e=VE(n,e))Xn(t,BE(n),!0)}function Bi(t,n,e,i){const r=I(),o=Ue(),s=Tr(2);o.firstUpdatePass&&WE(o,t,s,i),n!==Ee&&_n(r,s,n)&&YE(o,o.data[Sn()],r,r[Fe],t,r[s+1]=function wH(t,n){return null==t||""===t||("string"==typeof n?t+=n:"object"==typeof t&&(t=ut(Qn(t)))),t}(n,e),i,s)}function Vi(t,n,e,i){const r=Ue(),o=Tr(2);r.firstUpdatePass&&WE(r,null,o,i);const s=I();if(e!==Ee&&_n(s,o,e)){const a=r.data[Sn()];if(KE(a,i)&&!GE(r,o)){let l=i?a.classesWithoutHost:a.stylesWithoutHost;null!==l&&(e=Xp(l,e||"")),I_(r,a,s,e,i)}else!function yH(t,n,e,i,r,o,s,a){r===Ee&&(r=Xe);let l=0,c=0,d=0=t.expandoStartIndex}function WE(t,n,e,i){const r=t.data;if(null===r[e+1]){const o=r[Sn()],s=GE(t,e);KE(o,i)&&null===n&&!s&&(n=!1),n=function pH(t,n,e,i){const r=mg(t);let o=i?n.residualClasses:n.residualStyles;if(null===r)0===(i?n.classBindings:n.styleBindings)&&(e=oc(e=L_(null,t,n,e,i),n.attrs,i),o=null);else{const s=n.directiveStylingLast;if(-1===s||t[s]!==r)if(e=L_(r,t,n,e,i),null===o){let l=function gH(t,n,e){const i=e?n.classBindings:n.styleBindings;if(0!==rs(i))return t[_o(i)]}(t,n,i);void 0!==l&&Array.isArray(l)&&(l=L_(null,t,n,l[1],i),l=oc(l,n.attrs,i),function _H(t,n,e,i){t[_o(e?n.classBindings:n.styleBindings)]=i}(t,n,i,l))}else o=function bH(t,n,e){let i;const r=n.directiveEnd;for(let o=1+n.directiveStylingLast;o0)&&(c=!0)):d=e,r)if(0!==l){const h=_o(t[a+1]);t[i+1]=nh(h,a),0!==h&&(t[h+1]=F_(t[h+1],i)),t[a+1]=function iH(t,n){return 131071&t|n<<17}(t[a+1],i)}else t[i+1]=nh(a,0),0!==a&&(t[a+1]=F_(t[a+1],i)),a=i;else t[i+1]=nh(l,0),0===a?a=i:t[l+1]=F_(t[l+1],i),l=i;c&&(t[i+1]=P_(t[i+1])),LE(t,d,i,!0),LE(t,d,i,!1),function sH(t,n,e,i,r){const o=r?t.residualClasses:t.residualStyles;null!=o&&"string"==typeof n&&Qs(o,n)>=0&&(e[i+1]=N_(e[i+1]))}(n,d,t,i,o),s=nh(a,l),o?n.classBindings=s:n.styleBindings=s}(r,o,n,e,s,i)}}function L_(t,n,e,i,r){let o=null;const s=e.directiveEnd;let a=e.directiveStylingLast;for(-1===a?a=e.directiveStart:a++;a0;){const l=t[r],c=Array.isArray(l),d=c?l[1]:l,u=null===d;let h=e[r+1];h===Ee&&(h=u?Xe:void 0);let f=u?Mg(h,i):d===i?h:void 0;if(c&&!ih(f)&&(f=Mg(l,i)),ih(f)&&(a=f,s))return a;const p=t[r+1];r=s?_o(p):rs(p)}if(null!==n){let l=o?n.residualClasses:n.residualStyles;null!=l&&(a=Mg(l,i))}return a}function ih(t){return void 0!==t}function KE(t,n){return 0!=(t.flags&(n?8:16))}function N(t,n=""){const e=I(),i=Ue(),r=t+_t,o=i.firstCreatePass?aa(i,r,1,n,null):i.data[r],s=e[r]=function jg(t,n){return t.createText(n)}(e[Fe],n);Bu(i,e,s,o),Zi(o,!1)}function Jt(t){return nt("",t,""),Jt}function nt(t,n,e){const i=I(),r=ca(i,t,n,e);return r!==Ee&&function Pr(t,n,e){const i=xu(n,t);!function WC(t,n,e){t.setValue(n,e)}(t[Fe],i,e)}(i,Sn(),r),nt}function oS(t,n,e){!function rr(t){Vi(qE,mH,t,!1)}(ca(I(),t,n,e))}function ba(t,n,e){const i=I();return _n(i,Gs(),n)&&Jn(Ue(),wt(),i,t,n,i[Fe],e,!0),ba}function B_(t,n,e){const i=I();if(_n(i,Gs(),n)){const o=Ue(),s=wt();Jn(o,s,i,t,n,function sE(t,n,e){return(null===t||Pi(t))&&(e=function $L(t){for(;Array.isArray(t);){if("object"==typeof t[ag])return t;t=t[kr]}return null}(e[n.index])),e[Fe]}(mg(o.data),s,i),e,!0)}return B_}const os=void 0;var jH=["en",[["a","p"],["AM","PM"],os],[["AM","PM"],os,os],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],os,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],os,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",os,"{1} 'at' {0}",os],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function VH(t){const e=Math.floor(Math.abs(t)),i=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===i?1:5}];let va={};function Mn(t){const n=function HH(t){return t.toLowerCase().replace(/_/g,"-")}(t);let e=gS(n);if(e)return e;const i=n.split("-")[0];if(e=gS(i),e)return e;if("en"===i)return jH;throw new A(701,!1)}function gS(t){return t in va||(va[t]=ht.ng&&ht.ng.common&&ht.ng.common.locales&&ht.ng.common.locales[t]),va[t]}var U=(()=>((U=U||{})[U.LocaleId=0]="LocaleId",U[U.DayPeriodsFormat=1]="DayPeriodsFormat",U[U.DayPeriodsStandalone=2]="DayPeriodsStandalone",U[U.DaysFormat=3]="DaysFormat",U[U.DaysStandalone=4]="DaysStandalone",U[U.MonthsFormat=5]="MonthsFormat",U[U.MonthsStandalone=6]="MonthsStandalone",U[U.Eras=7]="Eras",U[U.FirstDayOfWeek=8]="FirstDayOfWeek",U[U.WeekendRange=9]="WeekendRange",U[U.DateFormat=10]="DateFormat",U[U.TimeFormat=11]="TimeFormat",U[U.DateTimeFormat=12]="DateTimeFormat",U[U.NumberSymbols=13]="NumberSymbols",U[U.NumberFormats=14]="NumberFormats",U[U.CurrencyCode=15]="CurrencyCode",U[U.CurrencySymbol=16]="CurrencySymbol",U[U.CurrencyName=17]="CurrencyName",U[U.Currencies=18]="Currencies",U[U.Directionality=19]="Directionality",U[U.PluralCase=20]="PluralCase",U[U.ExtraData=21]="ExtraData",U))();const ya="en-US";let _S=ya;function H_(t,n,e,i,r){if(t=de(t),Array.isArray(t))for(let o=0;o>20;if(ns(t)||!t.multi){const f=new Hl(l,r,m),p=U_(a,n,r?d:d+h,u);-1===p?(Dg(Au(c,s),o,a),z_(o,t,n.length),n.push(a),c.directiveStart++,c.directiveEnd++,r&&(c.providerIndexes+=1048576),e.push(f),s.push(f)):(e[p]=f,s[p]=f)}else{const f=U_(a,n,d+h,u),p=U_(a,n,d,d+h),b=p>=0&&e[p];if(r&&!b||!r&&!(f>=0&&e[f])){Dg(Au(c,s),o,a);const v=function V3(t,n,e,i,r){const o=new Hl(t,e,m);return o.multi=[],o.index=n,o.componentProviders=0,zS(o,r,i&&!e),o}(r?B3:L3,e.length,r,i,l);!r&&b&&(e[p].providerFactory=v),z_(o,t,n.length,0),n.push(a),c.directiveStart++,c.directiveEnd++,r&&(c.providerIndexes+=1048576),e.push(v),s.push(v)}else z_(o,t,f>-1?f:p,zS(e[r?p:f],l,!r&&i));!r&&i&&b&&e[p].componentProviders++}}}function z_(t,n,e,i){const r=ns(n),o=function eV(t){return!!t.useClass}(n);if(r||o){const l=(o?de(n.useClass):n).prototype.ngOnDestroy;if(l){const c=t.destroyHooks||(t.destroyHooks=[]);if(!r&&n.multi){const d=c.indexOf(e);-1===d?c.push(e,[i,l]):c[d+1].push(i,l)}else c.push(e,l)}}}function zS(t,n,e){return e&&t.componentProviders++,t.multi.push(n)-1}function U_(t,n,e,i){for(let r=e;r{e.providersResolver=(i,r)=>function N3(t,n,e){const i=Ue();if(i.firstCreatePass){const r=Pi(t);H_(e,i.data,i.blueprint,r,!0),H_(n,i.data,i.blueprint,r,!1)}}(i,r?r(t):t,n)}}class bo{}class US{}class $S extends bo{constructor(n,e){super(),this._parent=e,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new lE(this);const i=qn(n);this._bootstrapComponents=Rr(i.bootstrap),this._r3Injector=HD(n,e,[{provide:bo,useValue:this},{provide:Ni,useValue:this.componentFactoryResolver}],ut(n),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(n)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class G_ extends US{constructor(n){super(),this.moduleType=n}create(n){return new $S(this.moduleType,n)}}class H3 extends bo{constructor(n,e,i){super(),this.componentFactoryResolver=new lE(this),this.instance=null;const r=new SD([...n,{provide:bo,useValue:this},{provide:Ni,useValue:this.componentFactoryResolver}],e||Wu(),i,new Set(["environment"]));this.injector=r,r.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function lh(t,n,e=null){return new H3(t,n,e).injector}let z3=(()=>{class t{constructor(e){this._injector=e,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e.id)){const i=xD(0,e.type),r=i.length>0?lh([i],this._injector,`Standalone[${e.type.name}]`):null;this.cachedInjectors.set(e.id,r)}return this.cachedInjectors.get(e.id)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}}return t.\u0275prov=T({token:t,providedIn:"environment",factory:()=>new t(_(Qi))}),t})();function Be(t){t.getStandaloneInjector=n=>n.get(z3).getOrCreateStandaloneInjector(t)}function q_(t,n,e){const i=En()+t,r=I();return r[i]===Ee?tr(r,i,e?n.call(e):n()):function ic(t,n){return t[n]}(r,i)}function Y_(t,n,e,i){return XS(I(),En(),t,n,e,i)}function ch(t,n,e,i,r){return function QS(t,n,e,i,r,o,s){const a=n+e;return function is(t,n,e,i){const r=_n(t,n,e);return _n(t,n+1,i)||r}(t,a,r,o)?tr(t,a+2,s?i.call(s,r,o):i(r,o)):uc(t,a+2)}(I(),En(),t,n,e,i,r)}function uc(t,n){const e=t[n];return e===Ee?void 0:e}function XS(t,n,e,i,r,o){const s=n+e;return _n(t,s,r)?tr(t,s+1,o?i.call(o,r):i(r)):uc(t,s+1)}function wa(t,n){const e=Ue();let i;const r=t+_t;e.firstCreatePass?(i=function rz(t,n){if(n)for(let e=n.length-1;e>=0;e--){const i=n[e];if(t===i.name)return i}}(n,e.pipeRegistry),e.data[r]=i,i.onDestroy&&(e.destroyHooks??(e.destroyHooks=[])).push(r,i.onDestroy)):i=e.data[r];const o=i.factory||(i.factory=Ko(i.type)),s=ui(m);try{const a=Tu(!1),l=o();return Tu(a),function Xj(t,n,e,i){e>=t.data.length&&(t.data[e]=null,t.blueprint[e]=null),n[e]=i}(e,I(),r,l),l}finally{ui(s)}}function xa(t,n,e){const i=t+_t,r=I(),o=$s(r,i);return function hc(t,n){return t[Y].data[n].pure}(r,i)?XS(r,En(),n,o.transform,e,o):o.transform(e)}function Z_(t){return n=>{setTimeout(t,void 0,n)}}const Q=class cz extends te{constructor(n=!1){super(),this.__isAsync=n}emit(n){super.next(n)}subscribe(n,e,i){let r=n,o=e||(()=>null),s=i;if(n&&"object"==typeof n){const l=n;r=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=Z_(o),r&&(r=Z_(r)),s&&(s=Z_(s)));const a=super.subscribe({next:r,error:o,complete:s});return n instanceof rt&&n.add(a),a}};function dz(){return this._results[Symbol.iterator]()}class Ca{get changes(){return this._changes||(this._changes=new Q)}constructor(n=!1){this._emitDistinctChangesOnly=n,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const e=Ca.prototype;e[Symbol.iterator]||(e[Symbol.iterator]=dz)}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,e){return this._results.reduce(n,e)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,e){const i=this;i.dirty=!1;const r=function pi(t){return t.flat(Number.POSITIVE_INFINITY)}(n);(this._changesDetected=!function D2(t,n,e){if(t.length!==n.length)return!1;for(let i=0;i{class t{}return t.__NG_ELEMENT_ID__=fz,t})();const uz=bt,hz=class extends uz{constructor(n,e,i){super(),this._declarationLView=n,this._declarationTContainer=e,this.elementRef=i}createEmbeddedView(n,e){const i=this._declarationTContainer.tView,r=Yu(this._declarationLView,i,n,16,null,i.declTNode,null,null,null,null,e||null);r[Ll]=this._declarationLView[this._declarationTContainer.index];const s=this._declarationLView[Yi];return null!==s&&(r[Yi]=s.createEmbeddedView(i)),__(i,r,n),new tc(r)}};function fz(){return dh(on(),I())}function dh(t,n){return 4&t.type?new hz(n,t,ra(t,n)):null}let it=(()=>{class t{}return t.__NG_ELEMENT_ID__=mz,t})();function mz(){return rk(on(),I())}const pz=it,nk=class extends pz{constructor(n,e,i){super(),this._lContainer=n,this._hostTNode=e,this._hostLView=i}get element(){return ra(this._hostTNode,this._hostLView)}get injector(){return new qs(this._hostTNode,this._hostLView)}get parentInjector(){const n=Cg(this._hostTNode,this._hostLView);if(hC(n)){const e=Mu(n,this._hostLView),i=ku(n);return new qs(e[Y].data[i+8],e)}return new qs(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const e=ik(this._lContainer);return null!==e&&e[n]||null}get length(){return this._lContainer.length-Dn}createEmbeddedView(n,e,i){let r,o;"number"==typeof i?r=i:null!=i&&(r=i.index,o=i.injector);const s=n.createEmbeddedView(e||{},o);return this.insert(s,r),s}createComponent(n,e,i,r,o){const s=n&&!function $l(t){return"function"==typeof t}(n);let a;if(s)a=e;else{const u=e||{};a=u.index,i=u.injector,r=u.projectableNodes,o=u.environmentInjector||u.ngModuleRef}const l=s?n:new nc(et(n)),c=i||this.parentInjector;if(!o&&null==l.ngModule){const h=(s?c:this.parentInjector).get(Qi,null);h&&(o=h)}const d=l.create(c,r,void 0,o);return this.insert(d.hostView,a),d}insert(n,e){const i=n._lView,r=i[Y];if(function qL(t){return Ri(t[kt])}(i)){const d=this.indexOf(n);if(-1!==d)this.detach(d);else{const u=i[kt],h=new nk(u,u[mn],u[kt]);h.detach(h.indexOf(n))}}const o=this._adjustIndex(e),s=this._lContainer;!function hB(t,n,e,i){const r=Dn+i,o=e.length;i>0&&(e[r-1][Oi]=n),i0)i.push(s[a/2]);else{const c=o[a+1],d=n[-l];for(let u=Dn;u{class t{constructor(e){this.appInits=e,this.resolve=hh,this.reject=hh,this.initialized=!1,this.done=!1,this.donePromise=new Promise((i,r)=>{this.resolve=i,this.reject=r})}runInitializers(){if(this.initialized)return;const e=[],i=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let r=0;r{o.subscribe({complete:a,error:l})});e.push(s)}}Promise.all(e).then(()=>{i()}).catch(r=>{this.reject(r)}),0===e.length&&i(),this.initialized=!0}}return t.\u0275fac=function(e){return new(e||t)(_(Sa,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const mc=new k("AppId",{providedIn:"root",factory:function kk(){return`${ab()}${ab()}${ab()}`}});function ab(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const Mk=new k("Platform Initializer"),ss=new k("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),en=new k("AnimationModuleType");let Hz=(()=>{class t{log(e){console.log(e)}warn(e){console.warn(e)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"platform"}),t})();const sr=new k("LocaleId",{providedIn:"root",factory:()=>R(sr,he.Optional|he.SkipSelf)||function zz(){return typeof $localize<"u"&&$localize.locale||ya}()});class $z{constructor(n,e){this.ngModuleFactory=n,this.componentFactories=e}}let Tk=(()=>{class t{compileModuleSync(e){return new G_(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const i=this.compileModuleSync(e),o=Rr(qn(e).declarations).reduce((s,a)=>{const l=et(a);return l&&s.push(new nc(l)),s},[]);return new $z(i,o)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const qz=(()=>Promise.resolve(0))();function lb(t){typeof Zone>"u"?qz.then(()=>{t&&t.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",t)}class Z{constructor({enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:e=!1,shouldCoalesceRunChangeDetection:i=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new Q(!1),this.onMicrotaskEmpty=new Q(!1),this.onStable=new Q(!1),this.onError=new Q(!1),typeof Zone>"u")throw new A(908,!1);Zone.assertZonePatched();const r=this;r._nesting=0,r._outer=r._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!i&&e,r.shouldCoalesceRunChangeDetection=i,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=function Yz(){let t=ht.requestAnimationFrame,n=ht.cancelAnimationFrame;if(typeof Zone<"u"&&t&&n){const e=t[Zone.__symbol__("OriginalDelegate")];e&&(t=e);const i=n[Zone.__symbol__("OriginalDelegate")];i&&(n=i)}return{nativeRequestAnimationFrame:t,nativeCancelAnimationFrame:n}}().nativeRequestAnimationFrame,function Xz(t){const n=()=>{!function Kz(t){t.isCheckStableRunning||-1!==t.lastRequestAnimationFrameId||(t.lastRequestAnimationFrameId=t.nativeRequestAnimationFrame.call(ht,()=>{t.fakeTopEventTask||(t.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{t.lastRequestAnimationFrameId=-1,db(t),t.isCheckStableRunning=!0,cb(t),t.isCheckStableRunning=!1},void 0,()=>{},()=>{})),t.fakeTopEventTask.invoke()}),db(t))}(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(e,i,r,o,s,a)=>{try{return Ok(t),e.invokeTask(r,o,s,a)}finally{(t.shouldCoalesceEventChangeDetection&&"eventTask"===o.type||t.shouldCoalesceRunChangeDetection)&&n(),Rk(t)}},onInvoke:(e,i,r,o,s,a,l)=>{try{return Ok(t),e.invoke(r,o,s,a,l)}finally{t.shouldCoalesceRunChangeDetection&&n(),Rk(t)}},onHasTask:(e,i,r,o)=>{e.hasTask(r,o),i===r&&("microTask"==o.change?(t._hasPendingMicrotasks=o.microTask,db(t),cb(t)):"macroTask"==o.change&&(t.hasPendingMacrotasks=o.macroTask))},onHandleError:(e,i,r,o)=>(e.handleError(r,o),t.runOutsideAngular(()=>t.onError.emit(o)),!1)})}(r)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!Z.isInAngularZone())throw new A(909,!1)}static assertNotInAngularZone(){if(Z.isInAngularZone())throw new A(909,!1)}run(n,e,i){return this._inner.run(n,e,i)}runTask(n,e,i,r){const o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+r,n,Zz,hh,hh);try{return o.runTask(s,e,i)}finally{o.cancelTask(s)}}runGuarded(n,e,i){return this._inner.runGuarded(n,e,i)}runOutsideAngular(n){return this._outer.run(n)}}const Zz={};function cb(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function db(t){t.hasPendingMicrotasks=!!(t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&-1!==t.lastRequestAnimationFrameId)}function Ok(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function Rk(t){t._nesting--,cb(t)}class Qz{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new Q,this.onMicrotaskEmpty=new Q,this.onStable=new Q,this.onError=new Q}run(n,e,i){return n.apply(e,i)}runGuarded(n,e,i){return n.apply(e,i)}runOutsideAngular(n){return n()}runTask(n,e,i,r){return n.apply(e,i)}}const Pk=new k(""),mh=new k("");let fb,ub=(()=>{class t{constructor(e,i,r){this._ngZone=e,this.registry=i,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,fb||(function Jz(t){fb=t}(r),r.addToWindow(i)),this._watchAngularEvents(),e.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Z.assertNotInAngularZone(),lb(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())lb(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb(this._didWork)}this._didWork=!1});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(e)||(clearTimeout(i.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,i,r){let o=-1;i&&i>0&&(o=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==o),e(this._didWork,this.getPendingTasks())},i)),this._callbacks.push({doneCb:e,timeoutId:o,updateCb:r})}whenStable(e,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,i,r),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,i,r){return[]}}return t.\u0275fac=function(e){return new(e||t)(_(Z),_(hb),_(mh))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),hb=(()=>{class t{constructor(){this._applications=new Map}registerApplication(e,i){this._applications.set(e,i)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,i=!0){return fb?.findTestabilityInTree(this,e,i)??null}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"platform"}),t})();const Fr=!1;let vo=null;const Fk=new k("AllowMultipleToken"),mb=new k("PlatformDestroyListeners"),ph=new k("appBootstrapListener");class Nk{constructor(n,e){this.name=n,this.token=e}}function Bk(t,n,e=[]){const i=`Platform: ${n}`,r=new k(i);return(o=[])=>{let s=pb();if(!s||s.injector.get(Fk,!1)){const a=[...e,...o,{provide:r,useValue:!0}];t?t(a):function nU(t){if(vo&&!vo.get(Fk,!1))throw new A(400,!1);vo=t;const n=t.get(jk);(function Lk(t){const n=t.get(Mk,null);n&&n.forEach(e=>e())})(t)}(function Vk(t=[],n){return xt.create({name:n,providers:[{provide:o_,useValue:"platform"},{provide:mb,useValue:new Set([()=>vo=null])},...t]})}(a,i))}return function rU(t){const n=pb();if(!n)throw new A(401,!1);return n}()}}function pb(){return vo?.get(jk)??null}let jk=(()=>{class t{constructor(e){this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(e,i){const r=function zk(t,n){let e;return e="noop"===t?new Qz:("zone.js"===t?void 0:t)||new Z(n),e}(i?.ngZone,function Hk(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!t||!t.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!t||!t.ngZoneRunCoalescing)||!1}}(i)),o=[{provide:Z,useValue:r}];return r.run(()=>{const s=xt.create({providers:o,parent:this.injector,name:e.moduleType.name}),a=e.create(s),l=a.injector.get(Ji,null);if(!l)throw new A(402,!1);return r.runOutsideAngular(()=>{const c=r.onError.subscribe({next:d=>{l.handleError(d)}});a.onDestroy(()=>{gh(this._modules,a),c.unsubscribe()})}),function Uk(t,n,e){try{const i=e();return rc(i)?i.catch(r=>{throw n.runOutsideAngular(()=>t.handleError(r)),r}):i}catch(i){throw n.runOutsideAngular(()=>t.handleError(i)),i}}(l,r,()=>{const c=a.injector.get(fh);return c.runInitializers(),c.donePromise.then(()=>(function bS(t){di(t,"Expected localeId to be defined"),"string"==typeof t&&(_S=t.toLowerCase().replace(/_/g,"-"))}(a.injector.get(sr,ya)||ya),this._moduleDoBootstrap(a),a))})})}bootstrapModule(e,i=[]){const r=$k({},i);return function eU(t,n,e){const i=new G_(e);return Promise.resolve(i)}(0,0,e).then(o=>this.bootstrapModuleFactory(o,r))}_moduleDoBootstrap(e){const i=e.injector.get(as);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(r=>i.bootstrap(r));else{if(!e.instance.ngDoBootstrap)throw new A(-403,!1);e.instance.ngDoBootstrap(i)}this._modules.push(e)}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new A(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const e=this._injector.get(mb,null);e&&(e.forEach(i=>i()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return t.\u0275fac=function(e){return new(e||t)(_(xt))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"platform"}),t})();function $k(t,n){return Array.isArray(n)?n.reduce($k,t):{...t,...n}}let as=(()=>{class t{get destroyed(){return this._destroyed}get injector(){return this._injector}constructor(e,i,r){this._zone=e,this._injector=i,this._exceptionHandler=r,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const o=new xe(a=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{a.next(this._stable),a.complete()})}),s=new xe(a=>{let l;this._zone.runOutsideAngular(()=>{l=this._zone.onStable.subscribe(()=>{Z.assertNotInAngularZone(),lb(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,a.next(!0))})})});const c=this._zone.onUnstable.subscribe(()=>{Z.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{a.next(!1)}))});return()=>{l.unsubscribe(),c.unsubscribe()}});this.isStable=Gn(o,s.pipe(Il()))}bootstrap(e,i){const r=e instanceof MD;if(!this._injector.get(fh).done){!r&&function Vs(t){const n=et(t)||fn(t)||Fn(t);return null!==n&&n.standalone}(e);throw new A(405,Fr)}let s;s=r?e:this._injector.get(Ni).resolveComponentFactory(e),this.componentTypes.push(s.componentType);const a=function tU(t){return t.isBoundToModule}(s)?void 0:this._injector.get(bo),c=s.create(xt.NULL,[],i||s.selector,a),d=c.location.nativeElement,u=c.injector.get(Pk,null);return u?.registerApplication(d),c.onDestroy(()=>{this.detachView(c.hostView),gh(this.components,c),u?.unregisterApplication(d)}),this._loadComponent(c),c}tick(){if(this._runningTick)throw new A(101,!1);try{this._runningTick=!0;for(let e of this._views)e.detectChanges()}catch(e){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(e))}finally{this._runningTick=!1}}attachView(e){const i=e;this._views.push(i),i.attachToAppRef(this)}detachView(e){const i=e;gh(this._views,i),i.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView),this.tick(),this.components.push(e);const i=this._injector.get(ph,[]);i.push(...this._bootstrapListeners),i.forEach(r=>r(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>gh(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new A(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return t.\u0275fac=function(e){return new(e||t)(_(Z),_(Qi),_(Ji))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function gh(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}let tn=(()=>{class t{}return t.__NG_ELEMENT_ID__=sU,t})();function sU(t){return function aU(t,n,e){if(Vl(t)&&!e){const i=Kn(t.index,n);return new tc(i,i)}return 47&t.type?new tc(n[pn],n):null}(on(),I(),16==(16&t))}class Zk{constructor(){}supports(n){return eh(n)}create(n){return new fU(n)}}const hU=(t,n)=>n;class fU{constructor(n){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=n||hU}forEachItem(n){let e;for(e=this._itHead;null!==e;e=e._next)n(e)}forEachOperation(n){let e=this._itHead,i=this._removalsHead,r=0,o=null;for(;e||i;){const s=!i||e&&e.currentIndex{s=this._trackByFn(r,a),null!==e&&Object.is(e.trackById,s)?(i&&(e=this._verifyReinsertion(e,a,s,r)),Object.is(e.item,a)||this._addIdentityChange(e,a)):(e=this._mismatch(e,a,s,r),i=!0),e=e._next,r++}),this.length=r;return this._truncate(e),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,e,i,r){let o;return null===n?o=this._itTail:(o=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._reinsertAfter(n,o,r)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,r))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._moveAfter(n,o,r)):n=this._addAfter(new mU(e,i),o,r),n}_verifyReinsertion(n,e,i,r){let o=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==o?n=this._reinsertAfter(o,n._prev,r):n.currentIndex!=r&&(n.currentIndex=r,this._addToMoves(n,r)),n}_truncate(n){for(;null!==n;){const e=n._next;this._addToRemovals(this._unlink(n)),n=e}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(n,e,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const r=n._prevRemoved,o=n._nextRemoved;return null===r?this._removalsHead=o:r._nextRemoved=o,null===o?this._removalsTail=r:o._prevRemoved=r,this._insertAfter(n,e,i),this._addToMoves(n,i),n}_moveAfter(n,e,i){return this._unlink(n),this._insertAfter(n,e,i),this._addToMoves(n,i),n}_addAfter(n,e,i){return this._insertAfter(n,e,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,e,i){const r=null===e?this._itHead:e._next;return n._next=r,n._prev=e,null===r?this._itTail=n:r._prev=n,null===e?this._itHead=n:e._next=n,null===this._linkedRecords&&(this._linkedRecords=new Kk),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const e=n._prev,i=n._next;return null===e?this._itHead=i:e._next=i,null===i?this._itTail=e:i._prev=e,n}_addToMoves(n,e){return n.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new Kk),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,e){return n.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class mU{constructor(n,e){this.item=n,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class pU{constructor(){this._head=null,this._tail=null}add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,e){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===e||e<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const e=n._prevDup,i=n._nextDup;return null===e?this._head=i:e._nextDup=i,null===i?this._tail=e:i._prevDup=e,null===this._head}}class Kk{constructor(){this.map=new Map}put(n){const e=n.trackById;let i=this.map.get(e);i||(i=new pU,this.map.set(e,i)),i.add(n)}get(n,e){const r=this.map.get(n);return r?r.get(n,e):null}remove(n){const e=n.trackById;return this.map.get(e).remove(n)&&this.map.delete(e),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function Xk(t,n,e){const i=t.previousIndex;if(null===i)return i;let r=0;return e&&i{if(e&&e.key===r)this._maybeAddToChanges(e,i),this._appendAfter=e,e=e._next;else{const o=this._getOrCreateRecordForKey(r,i);e=this._insertBeforeOrAppend(e,o)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let i=e;null!==i;i=i._nextRemoved)i===this._mapHead&&(this._mapHead=null),this._records.delete(i.key),i._nextRemoved=i._next,i.previousValue=i.currentValue,i.currentValue=null,i._prev=null,i._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(n,e){if(n){const i=n._prev;return e._next=n,e._prev=i,n._prev=e,i&&(i._next=e),n===this._mapHead&&(this._mapHead=e),this._appendAfter=n,n}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(n,e){if(this._records.has(n)){const r=this._records.get(n);this._maybeAddToChanges(r,e);const o=r._prev,s=r._next;return o&&(o._next=s),s&&(s._prev=o),r._next=null,r._prev=null,r}const i=new _U(n);return this._records.set(n,i),i.currentValue=e,this._addToAdditions(i),i}_reset(){if(this.isDirty){let n;for(this._previousMapHead=this._mapHead,n=this._previousMapHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._changesHead;null!==n;n=n._nextChanged)n.previousValue=n.currentValue;for(n=this._additionsHead;null!=n;n=n._nextAdded)n.previousValue=n.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(n,e){Object.is(e,n.currentValue)||(n.previousValue=n.currentValue,n.currentValue=e,this._addToChanges(n))}_addToAdditions(n){null===this._additionsHead?this._additionsHead=this._additionsTail=n:(this._additionsTail._nextAdded=n,this._additionsTail=n)}_addToChanges(n){null===this._changesHead?this._changesHead=this._changesTail=n:(this._changesTail._nextChanged=n,this._changesTail=n)}_forEach(n,e){n instanceof Map?n.forEach(e):Object.keys(n).forEach(i=>e(n[i],i))}}class _U{constructor(n){this.key=n,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function Jk(){return new bi([new Zk])}let bi=(()=>{class t{constructor(e){this.factories=e}static create(e,i){if(null!=i){const r=i.factories.slice();e=e.concat(r)}return new t(e)}static extend(e){return{provide:t,useFactory:i=>t.create(e,i||Jk()),deps:[[t,new Js,new Ir]]}}find(e){const i=this.factories.find(r=>r.supports(e));if(null!=i)return i;throw new A(901,!1)}}return t.\u0275prov=T({token:t,providedIn:"root",factory:Jk}),t})();function eM(){return new pc([new Qk])}let pc=(()=>{class t{constructor(e){this.factories=e}static create(e,i){if(i){const r=i.factories.slice();e=e.concat(r)}return new t(e)}static extend(e){return{provide:t,useFactory:i=>t.create(e,i||eM()),deps:[[t,new Js,new Ir]]}}find(e){const i=this.factories.find(r=>r.supports(e));if(i)return i;throw new A(901,!1)}}return t.\u0275prov=T({token:t,providedIn:"root",factory:eM}),t})();const yU=Bk(null,"core",[]);let wU=(()=>{class t{constructor(e){}}return t.\u0275fac=function(e){return new(e||t)(_(as))},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})(),yb=null;function Nr(){return yb}class DU{}const ge=new k("DocumentToken");let yh=(()=>{class t{historyGo(e){throw new Error("Not implemented")}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return function EU(){return _(tM)}()},providedIn:"platform"}),t})();const SU=new k("Location Initialized");let tM=(()=>{class t extends yh{constructor(e){super(),this._doc=e,this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Nr().getBaseHref(this._doc)}onPopState(e){const i=Nr().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",e,!1),()=>i.removeEventListener("popstate",e)}onHashChange(e){const i=Nr().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",e,!1),()=>i.removeEventListener("hashchange",e)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(e){this._location.pathname=e}pushState(e,i,r){nM()?this._history.pushState(e,i,r):this._location.hash=r}replaceState(e,i,r){nM()?this._history.replaceState(e,i,r):this._location.hash=r}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:function(){return function kU(){return new tM(_(ge))}()},providedIn:"platform"}),t})();function nM(){return!!window.history.pushState}function wb(t,n){if(0==t.length)return n;if(0==n.length)return t;let e=0;return t.endsWith("/")&&e++,n.startsWith("/")&&e++,2==e?t+n.substring(1):1==e?t+n:t+"/"+n}function iM(t){const n=t.match(/#|\?|$/),e=n&&n.index||t.length;return t.slice(0,e-("/"===t[e-1]?1:0))+t.slice(e)}function Lr(t){return t&&"?"!==t[0]?"?"+t:t}let yo=(()=>{class t{historyGo(e){throw new Error("Not implemented")}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return R(rM)},providedIn:"root"}),t})();const xb=new k("appBaseHref");let rM=(()=>{class t extends yo{constructor(e,i){super(),this._platformLocation=e,this._removeListenerFns=[],this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??R(ge).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return wb(this._baseHref,e)}path(e=!1){const i=this._platformLocation.pathname+Lr(this._platformLocation.search),r=this._platformLocation.hash;return r&&e?`${i}${r}`:i}pushState(e,i,r,o){const s=this.prepareExternalUrl(r+Lr(o));this._platformLocation.pushState(e,i,s)}replaceState(e,i,r,o){const s=this.prepareExternalUrl(r+Lr(o));this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}}return t.\u0275fac=function(e){return new(e||t)(_(yh),_(xb,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),MU=(()=>{class t extends yo{constructor(e,i){super(),this._platformLocation=e,this._baseHref="",this._removeListenerFns=[],null!=i&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){let i=this._platformLocation.hash;return null==i&&(i="#"),i.length>0?i.substring(1):i}prepareExternalUrl(e){const i=wb(this._baseHref,e);return i.length>0?"#"+i:i}pushState(e,i,r,o){let s=this.prepareExternalUrl(r+Lr(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(e,i,s)}replaceState(e,i,r,o){let s=this.prepareExternalUrl(r+Lr(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}}return t.\u0275fac=function(e){return new(e||t)(_(yh),_(xb,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),gc=(()=>{class t{constructor(e){this._subject=new Q,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=e;const i=this._locationStrategy.getBaseHref();this._basePath=function IU(t){if(new RegExp("^(https?:)?//").test(t)){const[,e]=t.split(/\/\/[^\/]+/);return e}return t}(iM(oM(i))),this._locationStrategy.onPopState(r=>{this._subject.emit({url:this.path(!0),pop:!0,state:r.state,type:r.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,i=""){return this.path()==this.normalize(e+Lr(i))}normalize(e){return t.stripTrailingSlash(function AU(t,n){if(!t||!n.startsWith(t))return n;const e=n.substring(t.length);return""===e||["/",";","?","#"].includes(e[0])?e:n}(this._basePath,oM(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,i="",r=null){this._locationStrategy.pushState(r,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Lr(i)),r)}replaceState(e,i="",r=null){this._locationStrategy.replaceState(r,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Lr(i)),r)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)})),()=>{const i=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(i,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",i){this._urlChangeListeners.forEach(r=>r(e,i))}subscribe(e,i,r){return this._subject.subscribe({next:e,error:i,complete:r})}}return t.normalizeQueryParams=Lr,t.joinWithSlash=wb,t.stripTrailingSlash=iM,t.\u0275fac=function(e){return new(e||t)(_(yo))},t.\u0275prov=T({token:t,factory:function(){return function TU(){return new gc(_(yo))}()},providedIn:"root"}),t})();function oM(t){return t.replace(/\/index.html$/,"")}var jn=(()=>((jn=jn||{})[jn.Decimal=0]="Decimal",jn[jn.Percent=1]="Percent",jn[jn.Currency=2]="Currency",jn[jn.Scientific=3]="Scientific",jn))(),ce=(()=>((ce=ce||{})[ce.Decimal=0]="Decimal",ce[ce.Group=1]="Group",ce[ce.List=2]="List",ce[ce.PercentSign=3]="PercentSign",ce[ce.PlusSign=4]="PlusSign",ce[ce.MinusSign=5]="MinusSign",ce[ce.Exponential=6]="Exponential",ce[ce.SuperscriptingExponent=7]="SuperscriptingExponent",ce[ce.PerMille=8]="PerMille",ce[ce.Infinity=9]="Infinity",ce[ce.NaN=10]="NaN",ce[ce.TimeSeparator=11]="TimeSeparator",ce[ce.CurrencyDecimal=12]="CurrencyDecimal",ce[ce.CurrencyGroup=13]="CurrencyGroup",ce))();function vi(t,n){const e=Mn(t),i=e[U.NumberSymbols][n];if(typeof i>"u"){if(n===ce.CurrencyDecimal)return e[U.NumberSymbols][ce.Decimal];if(n===ce.CurrencyGroup)return e[U.NumberSymbols][ce.Group]}return i}const i$=/^(\d+)?\.((\d+)(-(\d+))?)?$/,uM=22,Th=".",bc="0",r$=";",o$=",",kb="#";function Ab(t){const n=parseInt(t);if(isNaN(n))throw new Error("Invalid integer literal when parsing "+t);return n}function mM(t,n){n=encodeURIComponent(n);for(const e of t.split(";")){const i=e.indexOf("="),[r,o]=-1==i?[e,""]:[e.slice(0,i),e.slice(i+1)];if(r.trim()===n)return decodeURIComponent(o)}return null}const Ob=/\s+/,pM=[];let gM=(()=>{class t{constructor(e,i,r,o){this._iterableDiffers=e,this._keyValueDiffers=i,this._ngEl=r,this._renderer=o,this.initialClasses=pM,this.stateMap=new Map}set klass(e){this.initialClasses=null!=e?e.trim().split(Ob):pM}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(Ob):e}ngDoCheck(){for(const i of this.initialClasses)this._updateState(i,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const i of e)this._updateState(i,!0);else if(null!=e)for(const i of Object.keys(e))this._updateState(i,Boolean(e[i]));this._applyStateDiff()}_updateState(e,i){const r=this.stateMap.get(e);void 0!==r?(r.enabled!==i&&(r.changed=!0,r.enabled=i),r.touched=!0):this.stateMap.set(e,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const i=e[0],r=e[1];r.changed?(this._toggleClass(i,r.enabled),r.changed=!1):r.touched||(r.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),r.touched=!1}}_toggleClass(e,i){(e=e.trim()).length>0&&e.split(Ob).forEach(r=>{i?this._renderer.addClass(this._ngEl.nativeElement,r):this._renderer.removeClass(this._ngEl.nativeElement,r)})}}return t.\u0275fac=function(e){return new(e||t)(m(bi),m(pc),m(H),m(gi))},t.\u0275dir=M({type:t,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"},standalone:!0}),t})();class p${constructor(n,e,i,r){this.$implicit=n,this.ngForOf=e,this.index=i,this.count=r}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let cs=(()=>{class t{set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}constructor(e,i,r){this._viewContainer=e,this._template=i,this._differs=r,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const i=this._viewContainer;e.forEachOperation((r,o,s)=>{if(null==r.previousIndex)i.createEmbeddedView(this._template,new p$(r.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===o?void 0:o);else if(null!==o){const a=i.get(o);i.move(a,s),vM(a,r)}});for(let r=0,o=i.length;r{vM(i.get(r.currentIndex),r)})}static ngTemplateContextGuard(e,i){return!0}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(bt),m(bi))},t.\u0275dir=M({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0}),t})();function vM(t,n){t.context.$implicit=n.item}let An=(()=>{class t{constructor(e,i){this._viewContainer=e,this._context=new _$,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=i}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){yM("ngIfThen",e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){yM("ngIfElse",e),this._elseTemplateRef=e,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(e,i){return!0}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(bt))},t.\u0275dir=M({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),t})();class _${constructor(){this.$implicit=null,this.ngIf=null}}function yM(t,n){if(n&&!n.createEmbeddedView)throw new Error(`${t} must be a TemplateRef, but received '${ut(n)}'.`)}class Rb{constructor(n,e){this._viewContainerRef=n,this._templateRef=e,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(n){n&&!this._created?this.create():!n&&this._created&&this.destroy()}}let Ah=(()=>{class t{constructor(){this._defaultViews=[],this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(e){this._ngSwitch=e,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(e){this._defaultViews.push(e)}_matchCase(e){const i=e==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||i,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),i}_updateDefaultCases(e){if(this._defaultViews.length>0&&e!==this._defaultUsed){this._defaultUsed=e;for(const i of this._defaultViews)i.enforceState(e)}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0}),t})(),wM=(()=>{class t{constructor(e,i,r){this.ngSwitch=r,r._addCase(),this._view=new Rb(e,i)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(bt),m(Ah,9))},t.\u0275dir=M({type:t,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0}),t})(),Ih=(()=>{class t{constructor(e){this._viewContainerRef=e,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(e){if(e.ngTemplateOutlet||e.ngTemplateOutletInjector){const i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),this.ngTemplateOutlet){const{ngTemplateOutlet:r,ngTemplateOutletContext:o,ngTemplateOutletInjector:s}=this;this._viewRef=i.createEmbeddedView(r,o,s?{injector:s}:void 0)}else this._viewRef=null}else this._viewRef&&e.ngTemplateOutletContext&&this.ngTemplateOutletContext&&(this._viewRef.context=this.ngTemplateOutletContext)}}return t.\u0275fac=function(e){return new(e||t)(m(it))},t.\u0275dir=M({type:t,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[st]}),t})();function zi(t,n){return new A(2100,!1)}class w${createSubscription(n,e){return n.subscribe({next:e,error:i=>{throw i}})}dispose(n){n.unsubscribe()}}class x${createSubscription(n,e){return n.then(e,i=>{throw i})}dispose(n){}}const C$=new x$,D$=new w$;let Pb=(()=>{class t{constructor(e){this._latestValue=null,this._subscription=null,this._obj=null,this._strategy=null,this._ref=e}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(e){return this._obj?e!==this._obj?(this._dispose(),this.transform(e)):this._latestValue:(e&&this._subscribe(e),this._latestValue)}_subscribe(e){this._obj=e,this._strategy=this._selectStrategy(e),this._subscription=this._strategy.createSubscription(e,i=>this._updateLatestValue(e,i))}_selectStrategy(e){if(rc(e))return C$;if(CE(e))return D$;throw zi()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(e,i){e===this._obj&&(this._latestValue=i,this._ref.markForCheck())}}return t.\u0275fac=function(e){return new(e||t)(m(tn,16))},t.\u0275pipe=hn({name:"async",type:t,pure:!1,standalone:!0}),t})(),DM=(()=>{class t{constructor(e){this._locale=e}transform(e,i,r){if(!function Fb(t){return!(null==t||""===t||t!=t)}(e))return null;r=r||this._locale;try{return function c$(t,n,e){return function Mb(t,n,e,i,r,o,s=!1){let a="",l=!1;if(isFinite(t)){let c=function u$(t){let i,r,o,s,a,n=Math.abs(t)+"",e=0;for((r=n.indexOf(Th))>-1&&(n=n.replace(Th,"")),(o=n.search(/e/i))>0?(r<0&&(r=o),r+=+n.slice(o+1),n=n.substring(0,o)):r<0&&(r=n.length),o=0;n.charAt(o)===bc;o++);if(o===(a=n.length))i=[0],r=1;else{for(a--;n.charAt(a)===bc;)a--;for(r-=o,i=[],s=0;o<=a;o++,s++)i[s]=Number(n.charAt(o))}return r>uM&&(i=i.splice(0,uM-1),e=r-1,r=1),{digits:i,exponent:e,integerLen:r}}(t);s&&(c=function d$(t){if(0===t.digits[0])return t;const n=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===n?t.digits.push(0,0):1===n&&t.digits.push(0),t.integerLen+=2),t}(c));let d=n.minInt,u=n.minFrac,h=n.maxFrac;if(o){const w=o.match(i$);if(null===w)throw new Error(`${o} is not a valid digit info`);const C=w[1],P=w[3],ye=w[5];null!=C&&(d=Ab(C)),null!=P&&(u=Ab(P)),null!=ye?h=Ab(ye):null!=P&&u>h&&(h=u)}!function h$(t,n,e){if(n>e)throw new Error(`The minimum number of digits after fraction (${n}) is higher than the maximum (${e}).`);let i=t.digits,r=i.length-t.integerLen;const o=Math.min(Math.max(n,r),e);let s=o+t.integerLen,a=i[s];if(s>0){i.splice(Math.max(t.integerLen,s));for(let u=s;u=5)if(s-1<0){for(let u=0;u>s;u--)i.unshift(0),t.integerLen++;i.unshift(1),t.integerLen++}else i[s-1]++;for(;r=c?p.pop():l=!1),h>=10?1:0},0);d&&(i.unshift(d),t.integerLen++)}(c,u,h);let f=c.digits,p=c.integerLen;const g=c.exponent;let b=[];for(l=f.every(w=>!w);p0?b=f.splice(p,f.length):(b=f,f=[0]);const v=[];for(f.length>=n.lgSize&&v.unshift(f.splice(-n.lgSize,f.length).join(""));f.length>n.gSize;)v.unshift(f.splice(-n.gSize,f.length).join(""));f.length&&v.unshift(f.join("")),a=v.join(vi(e,i)),b.length&&(a+=vi(e,r)+b.join("")),g&&(a+=vi(e,ce.Exponential)+"+"+g)}else a=vi(e,ce.Infinity);return a=t<0&&!l?n.negPre+a+n.negSuf:n.posPre+a+n.posSuf,a}(t,function Tb(t,n="-"){const e={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},i=t.split(r$),r=i[0],o=i[1],s=-1!==r.indexOf(Th)?r.split(Th):[r.substring(0,r.lastIndexOf(bc)+1),r.substring(r.lastIndexOf(bc)+1)],a=s[0],l=s[1]||"";e.posPre=a.substring(0,a.indexOf(kb));for(let d=0;d{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})();const EM="browser",H$="server";function ar(t){return t===EM}function vc(t){return t===H$}let $$=(()=>{class t{}return t.\u0275prov=T({token:t,providedIn:"root",factory:()=>new G$(_(ge),window)}),t})();class G${constructor(n,e){this.document=n,this.window=e,this.offset=()=>[0,0]}setOffset(n){this.offset=Array.isArray(n)?()=>n:n}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(n){this.supportsScrolling()&&this.window.scrollTo(n[0],n[1])}scrollToAnchor(n){if(!this.supportsScrolling())return;const e=function W$(t,n){const e=t.getElementById(n)||t.getElementsByName(n)[0];if(e)return e;if("function"==typeof t.createTreeWalker&&t.body&&(t.body.createShadowRoot||t.body.attachShadow)){const i=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT);let r=i.currentNode;for(;r;){const o=r.shadowRoot;if(o){const s=o.getElementById(n)||o.querySelector(`[name="${n}"]`);if(s)return s}r=i.nextNode()}}return null}(this.document,n);e&&(this.scrollToElement(e),e.focus())}setHistoryScrollRestoration(n){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=n)}}scrollToElement(n){const e=n.getBoundingClientRect(),i=e.left+this.window.pageXOffset,r=e.top+this.window.pageYOffset,o=this.offset();this.window.scrollTo(i-o[0],r-o[1])}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const n=SM(this.window.history)||SM(Object.getPrototypeOf(this.window.history));return!(!n||!n.writable&&!n.set)}catch{return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch{return!1}}}function SM(t){return Object.getOwnPropertyDescriptor(t,"scrollRestoration")}class kM{}class y4 extends DU{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class Vb extends y4{static makeCurrent(){!function CU(t){yb||(yb=t)}(new Vb)}onAndCancel(n,e,i){return n.addEventListener(e,i,!1),()=>{n.removeEventListener(e,i,!1)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.parentNode&&n.parentNode.removeChild(n)}createElement(n,e){return(e=e||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,e){return"window"===e?window:"document"===e?n:"body"===e?n.body:null}getBaseHref(n){const e=function w4(){return wc=wc||document.querySelector("base"),wc?wc.getAttribute("href"):null}();return null==e?null:function x4(t){Ph=Ph||document.createElement("a"),Ph.setAttribute("href",t);const n=Ph.pathname;return"/"===n.charAt(0)?n:`/${n}`}(e)}resetBaseElement(){wc=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return mM(document.cookie,n)}}let Ph,wc=null;const OM=new k("TRANSITION_ID"),D4=[{provide:Sa,useFactory:function C4(t,n,e){return()=>{e.get(fh).donePromise.then(()=>{const i=Nr(),r=n.querySelectorAll(`style[ng-transition="${t}"]`);for(let o=0;o{class t{build(){return new XMLHttpRequest}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const Fh=new k("EventManagerPlugins");let Nh=(()=>{class t{constructor(e,i){this._zone=i,this._eventNameToPlugin=new Map,e.forEach(r=>{r.manager=this}),this._plugins=e.slice().reverse()}addEventListener(e,i,r){return this._findPluginFor(i).addEventListener(e,i,r)}addGlobalEventListener(e,i,r){return this._findPluginFor(i).addGlobalEventListener(e,i,r)}getZone(){return this._zone}_findPluginFor(e){const i=this._eventNameToPlugin.get(e);if(i)return i;const r=this._plugins;for(let o=0;o{class t{constructor(){this.usageCount=new Map}addStyles(e){for(const i of e)1===this.changeUsageCount(i,1)&&this.onStyleAdded(i)}removeStyles(e){for(const i of e)0===this.changeUsageCount(i,-1)&&this.onStyleRemoved(i)}onStyleRemoved(e){}onStyleAdded(e){}getAllStyles(){return this.usageCount.keys()}changeUsageCount(e,i){const r=this.usageCount;let o=r.get(e)??0;return o+=i,o>0?r.set(e,o):r.delete(e),o}ngOnDestroy(){for(const e of this.getAllStyles())this.onStyleRemoved(e);this.usageCount.clear()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),xc=(()=>{class t extends PM{constructor(e){super(),this.doc=e,this.styleRef=new Map,this.hostNodes=new Set,this.resetHostNodes()}onStyleAdded(e){for(const i of this.hostNodes)this.addStyleToHost(i,e)}onStyleRemoved(e){const i=this.styleRef;i.get(e)?.forEach(o=>o.remove()),i.delete(e)}ngOnDestroy(){super.ngOnDestroy(),this.styleRef.clear(),this.resetHostNodes()}addHost(e){this.hostNodes.add(e);for(const i of this.getAllStyles())this.addStyleToHost(e,i)}removeHost(e){this.hostNodes.delete(e)}addStyleToHost(e,i){const r=this.doc.createElement("style");r.textContent=i,e.appendChild(r);const o=this.styleRef.get(i);o?o.push(r):this.styleRef.set(i,[r])}resetHostNodes(){const e=this.hostNodes;e.clear(),e.add(this.doc.head)}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const jb={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Hb=/%COMP%/g,LM=new k("RemoveStylesOnCompDestory",{providedIn:"root",factory:()=>!1});function BM(t,n){return n.flat(100).map(e=>e.replace(Hb,t))}function VM(t){return n=>{if("__ngUnwrap__"===n)return t;!1===t(n)&&(n.preventDefault(),n.returnValue=!1)}}let Lh=(()=>{class t{constructor(e,i,r,o){this.eventManager=e,this.sharedStylesHost=i,this.appId=r,this.removeStylesOnCompDestory=o,this.rendererByCompId=new Map,this.defaultRenderer=new zb(e)}createRenderer(e,i){if(!e||!i)return this.defaultRenderer;const r=this.getOrCreateRenderer(e,i);return r instanceof zM?r.applyToHost(e):r instanceof Ub&&r.applyStyles(),r}getOrCreateRenderer(e,i){const r=this.rendererByCompId;let o=r.get(i.id);if(!o){const s=this.eventManager,a=this.sharedStylesHost,l=this.removeStylesOnCompDestory;switch(i.encapsulation){case Ii.Emulated:o=new zM(s,a,i,this.appId,l);break;case Ii.ShadowDom:return new R4(s,a,e,i);default:o=new Ub(s,a,i,l)}o.onDestroy=()=>r.delete(i.id),r.set(i.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}begin(){}end(){}}return t.\u0275fac=function(e){return new(e||t)(_(Nh),_(xc),_(mc),_(LM))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();class zb{constructor(n){this.eventManager=n,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(n,e){return e?document.createElementNS(jb[e]||e,n):document.createElement(n)}createComment(n){return document.createComment(n)}createText(n){return document.createTextNode(n)}appendChild(n,e){(HM(n)?n.content:n).appendChild(e)}insertBefore(n,e,i){n&&(HM(n)?n.content:n).insertBefore(e,i)}removeChild(n,e){n&&n.removeChild(e)}selectRootElement(n,e){let i="string"==typeof n?document.querySelector(n):n;if(!i)throw new Error(`The selector "${n}" did not match any elements`);return e||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,i,r){if(r){e=r+":"+e;const o=jb[r];o?n.setAttributeNS(o,e,i):n.setAttribute(e,i)}else n.setAttribute(e,i)}removeAttribute(n,e,i){if(i){const r=jb[i];r?n.removeAttributeNS(r,e):n.removeAttribute(`${i}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,i,r){r&(kn.DashCase|kn.Important)?n.style.setProperty(e,i,r&kn.Important?"important":""):n.style[e]=i}removeStyle(n,e,i){i&kn.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,i){n[e]=i}setValue(n,e){n.nodeValue=e}listen(n,e,i){return"string"==typeof n?this.eventManager.addGlobalEventListener(n,e,VM(i)):this.eventManager.addEventListener(n,e,VM(i))}}function HM(t){return"TEMPLATE"===t.tagName&&void 0!==t.content}class R4 extends zb{constructor(n,e,i,r){super(n),this.sharedStylesHost=e,this.hostEl=i,this.shadowRoot=i.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const o=BM(r.id,r.styles);for(const s of o){const a=document.createElement("style");a.textContent=s,this.shadowRoot.appendChild(a)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,i){return super.insertBefore(this.nodeOrShadowRoot(n),e,i)}removeChild(n,e){return super.removeChild(this.nodeOrShadowRoot(n),e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class Ub extends zb{constructor(n,e,i,r,o=i.id){super(n),this.sharedStylesHost=e,this.removeStylesOnCompDestory=r,this.rendererUsageCount=0,this.styles=BM(o,i.styles)}applyStyles(){this.sharedStylesHost.addStyles(this.styles),this.rendererUsageCount++}destroy(){this.removeStylesOnCompDestory&&(this.sharedStylesHost.removeStyles(this.styles),this.rendererUsageCount--,0===this.rendererUsageCount&&this.onDestroy?.())}}class zM extends Ub{constructor(n,e,i,r,o){const s=r+"-"+i.id;super(n,e,i,o,s),this.contentAttr=function A4(t){return"_ngcontent-%COMP%".replace(Hb,t)}(s),this.hostAttr=function I4(t){return"_nghost-%COMP%".replace(Hb,t)}(s)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){const i=super.createElement(n,e);return super.setAttribute(i,this.contentAttr,""),i}}let P4=(()=>{class t extends RM{constructor(e){super(e)}supports(e){return!0}addEventListener(e,i,r){return e.addEventListener(i,r,!1),()=>this.removeEventListener(e,i,r)}removeEventListener(e,i,r){return e.removeEventListener(i,r)}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const UM=["alt","control","meta","shift"],F4={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},N4={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};let L4=(()=>{class t extends RM{constructor(e){super(e)}supports(e){return null!=t.parseEventName(e)}addEventListener(e,i,r){const o=t.parseEventName(i),s=t.eventCallback(o.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Nr().onAndCancel(e,o.domEventName,s))}static parseEventName(e){const i=e.toLowerCase().split("."),r=i.shift();if(0===i.length||"keydown"!==r&&"keyup"!==r)return null;const o=t._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),UM.forEach(c=>{const d=i.indexOf(c);d>-1&&(i.splice(d,1),s+=c+".")}),s+=o,0!=i.length||0===o.length)return null;const l={};return l.domEventName=r,l.fullKey=s,l}static matchEventFullKeyCode(e,i){let r=F4[e.key]||e.key,o="";return i.indexOf("code.")>-1&&(r=e.code,o="code."),!(null==r||!r)&&(r=r.toLowerCase()," "===r?r="space":"."===r&&(r="dot"),UM.forEach(s=>{s!==r&&(0,N4[s])(e)&&(o+=s+".")}),o+=r,o===i)}static eventCallback(e,i,r){return o=>{t.matchEventFullKeyCode(o,e)&&r.runGuarded(()=>i(o))}}static _normalizeKey(e){return"esc"===e?"escape":e}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const GM=[{provide:ss,useValue:EM},{provide:Mk,useValue:function B4(){Vb.makeCurrent()},multi:!0},{provide:ge,useFactory:function j4(){return function EB(t){Zg=t}(document),document},deps:[]}],H4=Bk(yU,"browser",GM),WM=new k(""),qM=[{provide:mh,useClass:class E4{addToWindow(n){ht.getAngularTestability=(i,r=!0)=>{const o=n.findTestabilityInTree(i,r);if(null==o)throw new Error("Could not find testability for element.");return o},ht.getAllAngularTestabilities=()=>n.getAllTestabilities(),ht.getAllAngularRootElements=()=>n.getAllRootElements(),ht.frameworkStabilizers||(ht.frameworkStabilizers=[]),ht.frameworkStabilizers.push(i=>{const r=ht.getAllAngularTestabilities();let o=r.length,s=!1;const a=function(l){s=s||l,o--,0==o&&i(s)};r.forEach(function(l){l.whenStable(a)})})}findTestabilityInTree(n,e,i){return null==e?null:n.getTestability(e)??(i?Nr().isShadowRoot(e)?this.findTestabilityInTree(n,e.host,!0):this.findTestabilityInTree(n,e.parentElement,!0):null)}},deps:[]},{provide:Pk,useClass:ub,deps:[Z,hb,mh]},{provide:ub,useClass:ub,deps:[Z,hb,mh]}],YM=[{provide:o_,useValue:"root"},{provide:Ji,useFactory:function V4(){return new Ji},deps:[]},{provide:Fh,useClass:P4,multi:!0,deps:[ge,Z,ss]},{provide:Fh,useClass:L4,multi:!0,deps:[ge]},{provide:Lh,useClass:Lh,deps:[Nh,xc,mc,LM]},{provide:po,useExisting:Lh},{provide:PM,useExisting:xc},{provide:xc,useClass:xc,deps:[ge]},{provide:Nh,useClass:Nh,deps:[Fh,Z]},{provide:kM,useClass:S4,deps:[]},[]];let ZM=(()=>{class t{constructor(e){}static withServerTransition(e){return{ngModule:t,providers:[{provide:mc,useValue:e.appId},{provide:OM,useExisting:mc},D4]}}}return t.\u0275fac=function(e){return new(e||t)(_(WM,12))},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:[...YM,...qM],imports:[Re,wU]}),t})(),KM=(()=>{class t{constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:function(e){let i=null;return i=e?new e:function U4(){return new KM(_(ge))}(),i},providedIn:"root"}),t})();typeof window<"u"&&window;let Ma=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(e){let i=null;return i=e?new(e||t):_(JM),i},providedIn:"root"}),t})(),JM=(()=>{class t extends Ma{constructor(e){super(),this._doc=e}sanitize(e,i){if(null==i)return null;switch(e){case $e.NONE:return i;case $e.HTML:return Xi(i,"HTML")?Qn(i):_D(this._doc,String(i)).toString();case $e.STYLE:return Xi(i,"Style")?Qn(i):i;case $e.SCRIPT:if(Xi(i,"Script"))return Qn(i);throw new Error("unsafe value used in a script context");case $e.URL:return Xi(i,"URL")?Qn(i):zu(String(i));case $e.RESOURCE_URL:if(Xi(i,"ResourceURL"))return Qn(i);throw new Error(`unsafe value used in a resource URL context (see ${lu})`);default:throw new Error(`Unexpected SecurityContext ${e} (see ${lu})`)}}bypassSecurityTrustHtml(e){return function OB(t){return new SB(t)}(e)}bypassSecurityTrustStyle(e){return function RB(t){return new kB(t)}(e)}bypassSecurityTrustScript(e){return function PB(t){return new MB(t)}(e)}bypassSecurityTrustUrl(e){return function FB(t){return new TB(t)}(e)}bypassSecurityTrustResourceUrl(e){return function NB(t){return new AB(t)}(e)}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:function(e){let i=null;return i=e?new e:function Y4(t){return new JM(t.get(ge))}(_(xt)),i},providedIn:"root"}),t})();function j(...t){return yt(t,Al(t))}function xo(t,n){return qe(n)?Ot(t,n,1):Ot(t,1)}function mt(t,n){return gt((e,i)=>{let r=0;e.subscribe(ot(i,o=>t.call(n,o,r++)&&i.next(o)))})}class Bh{}class Vh{}class Vr{constructor(n){this.normalizedNames=new Map,this.lazyUpdate=null,n?this.lazyInit="string"==typeof n?()=>{this.headers=new Map,n.split("\n").forEach(e=>{const i=e.indexOf(":");if(i>0){const r=e.slice(0,i),o=r.toLowerCase(),s=e.slice(i+1).trim();this.maybeSetNormalizedName(r,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:()=>{this.headers=new Map,Object.keys(n).forEach(e=>{let i=n[e];const r=e.toLowerCase();"string"==typeof i&&(i=[i]),i.length>0&&(this.headers.set(r,i),this.maybeSetNormalizedName(e,r))})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const e=this.headers.get(n.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,e){return this.clone({name:n,value:e,op:"a"})}set(n,e){return this.clone({name:n,value:e,op:"s"})}delete(n,e){return this.clone({name:n,value:e,op:"d"})}maybeSetNormalizedName(n,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,n)}init(){this.lazyInit&&(this.lazyInit instanceof Vr?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(e=>{this.headers.set(e,n.headers.get(e)),this.normalizedNames.set(e,n.normalizedNames.get(e))})}clone(n){const e=new Vr;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof Vr?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([n]),e}applyUpdate(n){const e=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,e);const r=("a"===n.op?this.headers.get(e):void 0)||[];r.push(...i),this.headers.set(e,r);break;case"d":const o=n.value;if(o){let s=this.headers.get(e);if(!s)return;s=s.filter(a=>-1===o.indexOf(a)),0===s.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,s)}else this.headers.delete(e),this.normalizedNames.delete(e)}}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>n(this.normalizedNames.get(e),this.headers.get(e)))}}class Z4{encodeKey(n){return eT(n)}encodeValue(n){return eT(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const X4=/%(\d[a-f0-9])/gi,Q4={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function eT(t){return encodeURIComponent(t).replace(X4,(n,e)=>Q4[e]??n)}function jh(t){return`${t}`}class Co{constructor(n={}){if(this.updates=null,this.cloneFrom=null,this.encoder=n.encoder||new Z4,n.fromString){if(n.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function K4(t,n){const e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(r=>{const o=r.indexOf("="),[s,a]=-1==o?[n.decodeKey(r),""]:[n.decodeKey(r.slice(0,o)),n.decodeValue(r.slice(o+1))],l=e.get(s)||[];l.push(a),e.set(s,l)}),e}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(e=>{const i=n.fromObject[e],r=Array.isArray(i)?i.map(jh):[jh(i)];this.map.set(e,r)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const e=this.map.get(n);return e?e[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,e){return this.clone({param:n,value:e,op:"a"})}appendAll(n){const e=[];return Object.keys(n).forEach(i=>{const r=n[i];Array.isArray(r)?r.forEach(o=>{e.push({param:i,value:o,op:"a"})}):e.push({param:i,value:r,op:"a"})}),this.clone(e)}set(n,e){return this.clone({param:n,value:e,op:"s"})}delete(n,e){return this.clone({param:n,value:e,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const e=this.encoder.encodeKey(n);return this.map.get(n).map(i=>e+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const e=new Co({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(n),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const e=("a"===n.op?this.map.get(n.param):void 0)||[];e.push(jh(n.value)),this.map.set(n.param,e);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const r=i.indexOf(jh(n.value));-1!==r&&i.splice(r,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}}class J4{constructor(){this.map=new Map}set(n,e){return this.map.set(n,e),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}}function tT(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function nT(t){return typeof Blob<"u"&&t instanceof Blob}function iT(t){return typeof FormData<"u"&&t instanceof FormData}class Cc{constructor(n,e,i,r){let o;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=n.toUpperCase(),function e5(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||r?(this.body=void 0!==i?i:null,o=r):o=i,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params)),this.headers||(this.headers=new Vr),this.context||(this.context=new J4),this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=e;else{const a=e.indexOf("?");this.urlWithParams=e+(-1===a?"?":au.set(h,n.setHeaders[h]),l)),n.setParams&&(c=Object.keys(n.setParams).reduce((u,h)=>u.set(h,n.setParams[h]),c)),new Cc(e,i,o,{params:c,headers:l,context:d,reportProgress:a,responseType:r,withCredentials:s})}}var Ht=(()=>((Ht=Ht||{})[Ht.Sent=0]="Sent",Ht[Ht.UploadProgress=1]="UploadProgress",Ht[Ht.ResponseHeader=2]="ResponseHeader",Ht[Ht.DownloadProgress=3]="DownloadProgress",Ht[Ht.Response=4]="Response",Ht[Ht.User=5]="User",Ht))();class Wb{constructor(n,e=200,i="OK"){this.headers=n.headers||new Vr,this.status=void 0!==n.status?n.status:e,this.statusText=n.statusText||i,this.url=n.url||null,this.ok=this.status>=200&&this.status<300}}class qb extends Wb{constructor(n={}){super(n),this.type=Ht.ResponseHeader}clone(n={}){return new qb({headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class Hh extends Wb{constructor(n={}){super(n),this.type=Ht.Response,this.body=void 0!==n.body?n.body:null}clone(n={}){return new Hh({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class rT extends Wb{constructor(n){super(n,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${n.url||"(unknown url)"}`:`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}}function Yb(t,n){return{body:n,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}let wi=(()=>{class t{constructor(e){this.handler=e}request(e,i,r={}){let o;if(e instanceof Cc)o=e;else{let l,c;l=r.headers instanceof Vr?r.headers:new Vr(r.headers),r.params&&(c=r.params instanceof Co?r.params:new Co({fromObject:r.params})),o=new Cc(e,i,void 0!==r.body?r.body:null,{headers:l,context:r.context,params:c,reportProgress:r.reportProgress,responseType:r.responseType||"json",withCredentials:r.withCredentials})}const s=j(o).pipe(xo(l=>this.handler.handle(l)));if(e instanceof Cc||"events"===r.observe)return s;const a=s.pipe(mt(l=>l instanceof Hh));switch(r.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return a.pipe(B(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return l.body}));case"blob":return a.pipe(B(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new Error("Response is not a Blob.");return l.body}));case"text":return a.pipe(B(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new Error("Response is not a string.");return l.body}));default:return a.pipe(B(l=>l.body))}case"response":return a;default:throw new Error(`Unreachable: unhandled observe type ${r.observe}}`)}}delete(e,i={}){return this.request("DELETE",e,i)}get(e,i={}){return this.request("GET",e,i)}head(e,i={}){return this.request("HEAD",e,i)}jsonp(e,i){return this.request("JSONP",e,{params:(new Co).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,i={}){return this.request("OPTIONS",e,i)}patch(e,i,r={}){return this.request("PATCH",e,Yb(r,i))}post(e,i,r={}){return this.request("POST",e,Yb(r,i))}put(e,i,r={}){return this.request("PUT",e,Yb(r,i))}}return t.\u0275fac=function(e){return new(e||t)(_(Bh))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function oT(t,n){return n(t)}function n5(t,n){return(e,i)=>n.intercept(e,{handle:r=>t(r,i)})}const o5=new k("HTTP_INTERCEPTORS"),Dc=new k("HTTP_INTERCEPTOR_FNS");function s5(){let t=null;return(n,e)=>(null===t&&(t=(R(o5,{optional:!0})??[]).reduceRight(n5,oT)),t(n,e))}let sT=(()=>{class t extends Bh{constructor(e,i){super(),this.backend=e,this.injector=i,this.chain=null}handle(e){if(null===this.chain){const i=Array.from(new Set(this.injector.get(Dc)));this.chain=i.reduceRight((r,o)=>function r5(t,n,e){return(i,r)=>e.runInContext(()=>n(i,o=>t(o,r)))}(r,o,this.injector),oT)}return this.chain(e,i=>this.backend.handle(i))}}return t.\u0275fac=function(e){return new(e||t)(_(Vh),_(Qi))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const d5=/^\)\]\}',?\n/;let lT=(()=>{class t{constructor(e){this.xhrFactory=e}handle(e){if("JSONP"===e.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new xe(i=>{const r=this.xhrFactory.build();if(r.open(e.method,e.urlWithParams),e.withCredentials&&(r.withCredentials=!0),e.headers.forEach((f,p)=>r.setRequestHeader(f,p.join(","))),e.headers.has("Accept")||r.setRequestHeader("Accept","application/json, text/plain, */*"),!e.headers.has("Content-Type")){const f=e.detectContentTypeHeader();null!==f&&r.setRequestHeader("Content-Type",f)}if(e.responseType){const f=e.responseType.toLowerCase();r.responseType="json"!==f?f:"text"}const o=e.serializeBody();let s=null;const a=()=>{if(null!==s)return s;const f=r.statusText||"OK",p=new Vr(r.getAllResponseHeaders()),g=function u5(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(r)||e.url;return s=new qb({headers:p,status:r.status,statusText:f,url:g}),s},l=()=>{let{headers:f,status:p,statusText:g,url:b}=a(),v=null;204!==p&&(v=typeof r.response>"u"?r.responseText:r.response),0===p&&(p=v?200:0);let w=p>=200&&p<300;if("json"===e.responseType&&"string"==typeof v){const C=v;v=v.replace(d5,"");try{v=""!==v?JSON.parse(v):null}catch(P){v=C,w&&(w=!1,v={error:P,text:v})}}w?(i.next(new Hh({body:v,headers:f,status:p,statusText:g,url:b||void 0})),i.complete()):i.error(new rT({error:v,headers:f,status:p,statusText:g,url:b||void 0}))},c=f=>{const{url:p}=a(),g=new rT({error:f,status:r.status||0,statusText:r.statusText||"Unknown Error",url:p||void 0});i.error(g)};let d=!1;const u=f=>{d||(i.next(a()),d=!0);let p={type:Ht.DownloadProgress,loaded:f.loaded};f.lengthComputable&&(p.total=f.total),"text"===e.responseType&&r.responseText&&(p.partialText=r.responseText),i.next(p)},h=f=>{let p={type:Ht.UploadProgress,loaded:f.loaded};f.lengthComputable&&(p.total=f.total),i.next(p)};return r.addEventListener("load",l),r.addEventListener("error",c),r.addEventListener("timeout",c),r.addEventListener("abort",c),e.reportProgress&&(r.addEventListener("progress",u),null!==o&&r.upload&&r.upload.addEventListener("progress",h)),r.send(o),i.next({type:Ht.Sent}),()=>{r.removeEventListener("error",c),r.removeEventListener("abort",c),r.removeEventListener("load",l),r.removeEventListener("timeout",c),e.reportProgress&&(r.removeEventListener("progress",u),null!==o&&r.upload&&r.upload.removeEventListener("progress",h)),r.readyState!==r.DONE&&r.abort()}})}}return t.\u0275fac=function(e){return new(e||t)(_(kM))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const Zb=new k("XSRF_ENABLED"),cT=new k("XSRF_COOKIE_NAME",{providedIn:"root",factory:()=>"XSRF-TOKEN"}),dT=new k("XSRF_HEADER_NAME",{providedIn:"root",factory:()=>"X-XSRF-TOKEN"});class uT{}let m5=(()=>{class t{constructor(e,i,r){this.doc=e,this.platform=i,this.cookieName=r,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=mM(e,this.cookieName),this.lastCookieString=e),this.lastToken}}return t.\u0275fac=function(e){return new(e||t)(_(ge),_(ss),_(cT))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function p5(t,n){const e=t.url.toLowerCase();if(!R(Zb)||"GET"===t.method||"HEAD"===t.method||e.startsWith("http://")||e.startsWith("https://"))return n(t);const i=R(uT).getToken(),r=R(dT);return null!=i&&!t.headers.has(r)&&(t=t.clone({headers:t.headers.set(r,i)})),n(t)}var Lt=(()=>((Lt=Lt||{})[Lt.Interceptors=0]="Interceptors",Lt[Lt.LegacyInterceptors=1]="LegacyInterceptors",Lt[Lt.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",Lt[Lt.NoXsrfProtection=3]="NoXsrfProtection",Lt[Lt.JsonpSupport=4]="JsonpSupport",Lt[Lt.RequestsMadeViaParent=5]="RequestsMadeViaParent",Lt))();function Ta(t,n){return{\u0275kind:t,\u0275providers:n}}function g5(...t){const n=[wi,lT,sT,{provide:Bh,useExisting:sT},{provide:Vh,useExisting:lT},{provide:Dc,useValue:p5,multi:!0},{provide:Zb,useValue:!0},{provide:uT,useClass:m5}];for(const e of t)n.push(...e.\u0275providers);return function QB(t){return{\u0275providers:t}}(n)}const hT=new k("LEGACY_INTERCEPTOR_FN");let b5=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:[g5(Ta(Lt.LegacyInterceptors,[{provide:hT,useFactory:s5},{provide:Dc,useExisting:hT,multi:!0}]))]}),t})();class fT{}class v5{}const jr="*";function Aa(t,n){return{type:7,name:t,definitions:n,options:{}}}function Hr(t,n=null){return{type:4,styles:n,timings:t}}function pT(t,n=null){return{type:2,steps:t,options:n}}function qt(t){return{type:6,styles:t,offset:null}}function xi(t,n,e){return{type:0,name:t,styles:n,options:e}}function zr(t,n,e=null){return{type:1,expr:t,animation:n,options:e}}function bT(t){Promise.resolve().then(t)}class Ec{constructor(n=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=n+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){bT(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class vT{constructor(n){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=n;let e=0,i=0,r=0;const o=this.players.length;0==o?bT(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++e==o&&this._onFinish()}),s.onDestroy(()=>{++i==o&&this._onDestroy()}),s.onStart(()=>{++r==o&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){const e=n*this.totalTime;this.players.forEach(i=>{const r=i.totalTime?Math.min(1,e/i.totalTime):1;i.setPosition(r)})}getPosition(){const n=this.players.reduce((e,i)=>null===e||i.totalTime>e.totalTime?i:e,null);return null!=n?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}const Kb="!";function yT(t){return new A(3e3,!1)}function e8(){return typeof window<"u"&&typeof window.document<"u"}function Xb(){return typeof process<"u"&&"[object process]"==={}.toString.call(process)}function Do(t){switch(t.length){case 0:return new Ec;case 1:return t[0];default:return new vT(t)}}function wT(t,n,e,i,r=new Map,o=new Map){const s=[],a=[];let l=-1,c=null;if(i.forEach(d=>{const u=d.get("offset"),h=u==l,f=h&&c||new Map;d.forEach((p,g)=>{let b=g,v=p;if("offset"!==g)switch(b=n.normalizePropertyName(b,s),v){case Kb:v=r.get(g);break;case jr:v=o.get(g);break;default:v=n.normalizeStyleValue(g,b,v,s)}f.set(b,v)}),h||a.push(f),c=f,l=u}),s.length)throw function z5(t){return new A(3502,!1)}();return a}function Qb(t,n,e,i){switch(n){case"start":t.onStart(()=>i(e&&Jb(e,"start",t)));break;case"done":t.onDone(()=>i(e&&Jb(e,"done",t)));break;case"destroy":t.onDestroy(()=>i(e&&Jb(e,"destroy",t)))}}function Jb(t,n,e){const o=ev(t.element,t.triggerName,t.fromState,t.toState,n||t.phaseName,e.totalTime??t.totalTime,!!e.disabled),s=t._data;return null!=s&&(o._data=s),o}function ev(t,n,e,i,r="",o=0,s){return{element:t,triggerName:n,fromState:e,toState:i,phaseName:r,totalTime:o,disabled:!!s}}function ti(t,n,e){let i=t.get(n);return i||t.set(n,i=e),i}function xT(t){const n=t.indexOf(":");return[t.substring(1,n),t.slice(n+1)]}let tv=(t,n)=>!1,CT=(t,n,e)=>[],DT=null;function nv(t){const n=t.parentNode||t.host;return n===DT?null:n}(Xb()||typeof Element<"u")&&(e8()?(DT=(()=>document.documentElement)(),tv=(t,n)=>{for(;n;){if(n===t)return!0;n=nv(n)}return!1}):tv=(t,n)=>t.contains(n),CT=(t,n,e)=>{if(e)return Array.from(t.querySelectorAll(n));const i=t.querySelector(n);return i?[i]:[]});let ds=null,ET=!1;const ST=tv,kT=CT;let MT=(()=>{class t{validateStyleProperty(e){return function n8(t){ds||(ds=function i8(){return typeof document<"u"?document.body:null}()||{},ET=!!ds.style&&"WebkitAppearance"in ds.style);let n=!0;return ds.style&&!function t8(t){return"ebkit"==t.substring(1,6)}(t)&&(n=t in ds.style,!n&&ET&&(n="Webkit"+t.charAt(0).toUpperCase()+t.slice(1)in ds.style)),n}(e)}matchesElement(e,i){return!1}containsElement(e,i){return ST(e,i)}getParentElement(e){return nv(e)}query(e,i,r){return kT(e,i,r)}computeStyle(e,i,r){return r||""}animate(e,i,r,o,s,a=[],l){return new Ec(r,o)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),iv=(()=>{class t{}return t.NOOP=new MT,t})();const r8=1e3,rv="ng-enter",zh="ng-leave",Uh="ng-trigger",$h=".ng-trigger",AT="ng-animating",ov=".ng-animating";function Ur(t){if("number"==typeof t)return t;const n=t.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:sv(parseFloat(n[1]),n[2])}function sv(t,n){return"s"===n?t*r8:t}function Gh(t,n,e){return t.hasOwnProperty("duration")?t:function s8(t,n,e){let r,o=0,s="";if("string"==typeof t){const a=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===a)return n.push(yT()),{duration:0,delay:0,easing:""};r=sv(parseFloat(a[1]),a[2]);const l=a[3];null!=l&&(o=sv(parseFloat(l),a[4]));const c=a[5];c&&(s=c)}else r=t;if(!e){let a=!1,l=n.length;r<0&&(n.push(function y5(){return new A(3100,!1)}()),a=!0),o<0&&(n.push(function w5(){return new A(3101,!1)}()),a=!0),a&&n.splice(l,0,yT())}return{duration:r,delay:o,easing:s}}(t,n,e)}function Sc(t,n={}){return Object.keys(t).forEach(e=>{n[e]=t[e]}),n}function IT(t){const n=new Map;return Object.keys(t).forEach(e=>{n.set(e,t[e])}),n}function Eo(t,n=new Map,e){if(e)for(let[i,r]of e)n.set(i,r);for(let[i,r]of t)n.set(i,r);return n}function RT(t,n,e){return e?n+":"+e+";":""}function PT(t){let n="";for(let e=0;e{const o=lv(r);e&&!e.has(r)&&e.set(r,t.style[o]),t.style[o]=i}),Xb()&&PT(t))}function us(t,n){t.style&&(n.forEach((e,i)=>{const r=lv(i);t.style[r]=""}),Xb()&&PT(t))}function kc(t){return Array.isArray(t)?1==t.length?t[0]:pT(t):t}const av=new RegExp("{{\\s*(.+?)\\s*}}","g");function FT(t){let n=[];if("string"==typeof t){let e;for(;e=av.exec(t);)n.push(e[1]);av.lastIndex=0}return n}function Mc(t,n,e){const i=t.toString(),r=i.replace(av,(o,s)=>{let a=n[s];return null==a&&(e.push(function C5(t){return new A(3003,!1)}()),a=""),a.toString()});return r==i?t:r}function Wh(t){const n=[];let e=t.next();for(;!e.done;)n.push(e.value),e=t.next();return n}const c8=/-+([a-z0-9])/g;function lv(t){return t.replace(c8,(...n)=>n[1].toUpperCase())}function d8(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function ni(t,n,e){switch(n.type){case 7:return t.visitTrigger(n,e);case 0:return t.visitState(n,e);case 1:return t.visitTransition(n,e);case 2:return t.visitSequence(n,e);case 3:return t.visitGroup(n,e);case 4:return t.visitAnimate(n,e);case 5:return t.visitKeyframes(n,e);case 6:return t.visitStyle(n,e);case 8:return t.visitReference(n,e);case 9:return t.visitAnimateChild(n,e);case 10:return t.visitAnimateRef(n,e);case 11:return t.visitQuery(n,e);case 12:return t.visitStagger(n,e);default:throw function D5(t){return new A(3004,!1)}()}}function NT(t,n){return window.getComputedStyle(t)[n]}const Zh="*";function g8(t,n){const e=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(i=>function _8(t,n,e){if(":"==t[0]){const l=function b8(t,n){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,i)=>parseFloat(i)>parseFloat(e);case":decrement":return(e,i)=>parseFloat(i) *"}}(t,e);if("function"==typeof l)return void n.push(l);t=l}const i=t.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==i||i.length<4)return e.push(function L5(t){return new A(3015,!1)}()),n;const r=i[1],o=i[2],s=i[3];n.push(LT(r,s));"<"==o[0]&&!(r==Zh&&s==Zh)&&n.push(LT(s,r))}(i,e,n)):e.push(t),e}const Kh=new Set(["true","1"]),Xh=new Set(["false","0"]);function LT(t,n){const e=Kh.has(t)||Xh.has(t),i=Kh.has(n)||Xh.has(n);return(r,o)=>{let s=t==Zh||t==r,a=n==Zh||n==o;return!s&&e&&"boolean"==typeof r&&(s=r?Kh.has(t):Xh.has(t)),!a&&i&&"boolean"==typeof o&&(a=o?Kh.has(n):Xh.has(n)),s&&a}}const v8=new RegExp("s*:selfs*,?","g");function cv(t,n,e,i){return new y8(t).build(n,e,i)}class y8{constructor(n){this._driver=n}build(n,e,i){const r=new C8(e);return this._resetContextStyleTimingState(r),ni(this,kc(n),r)}_resetContextStyleTimingState(n){n.currentQuerySelector="",n.collectedStyles=new Map,n.collectedStyles.set("",new Map),n.currentTime=0}visitTrigger(n,e){let i=e.queryCount=0,r=e.depCount=0;const o=[],s=[];return"@"==n.name.charAt(0)&&e.errors.push(function S5(){return new A(3006,!1)}()),n.definitions.forEach(a=>{if(this._resetContextStyleTimingState(e),0==a.type){const l=a,c=l.name;c.toString().split(/\s*,\s*/).forEach(d=>{l.name=d,o.push(this.visitState(l,e))}),l.name=c}else if(1==a.type){const l=this.visitTransition(a,e);i+=l.queryCount,r+=l.depCount,s.push(l)}else e.errors.push(function k5(){return new A(3007,!1)}())}),{type:7,name:n.name,states:o,transitions:s,queryCount:i,depCount:r,options:null}}visitState(n,e){const i=this.visitStyle(n.styles,e),r=n.options&&n.options.params||null;if(i.containsDynamicStyles){const o=new Set,s=r||{};i.styles.forEach(a=>{a instanceof Map&&a.forEach(l=>{FT(l).forEach(c=>{s.hasOwnProperty(c)||o.add(c)})})}),o.size&&(Wh(o.values()),e.errors.push(function M5(t,n){return new A(3008,!1)}()))}return{type:0,name:n.name,style:i,options:r?{params:r}:null}}visitTransition(n,e){e.queryCount=0,e.depCount=0;const i=ni(this,kc(n.animation),e);return{type:1,matchers:g8(n.expr,e.errors),animation:i,queryCount:e.queryCount,depCount:e.depCount,options:hs(n.options)}}visitSequence(n,e){return{type:2,steps:n.steps.map(i=>ni(this,i,e)),options:hs(n.options)}}visitGroup(n,e){const i=e.currentTime;let r=0;const o=n.steps.map(s=>{e.currentTime=i;const a=ni(this,s,e);return r=Math.max(r,e.currentTime),a});return e.currentTime=r,{type:3,steps:o,options:hs(n.options)}}visitAnimate(n,e){const i=function E8(t,n){if(t.hasOwnProperty("duration"))return t;if("number"==typeof t)return dv(Gh(t,n).duration,0,"");const e=t;if(e.split(/\s+/).some(o=>"{"==o.charAt(0)&&"{"==o.charAt(1))){const o=dv(0,0,"");return o.dynamic=!0,o.strValue=e,o}const r=Gh(e,n);return dv(r.duration,r.delay,r.easing)}(n.timings,e.errors);e.currentAnimateTimings=i;let r,o=n.styles?n.styles:qt({});if(5==o.type)r=this.visitKeyframes(o,e);else{let s=n.styles,a=!1;if(!s){a=!0;const c={};i.easing&&(c.easing=i.easing),s=qt(c)}e.currentTime+=i.duration+i.delay;const l=this.visitStyle(s,e);l.isEmptyStep=a,r=l}return e.currentAnimateTimings=null,{type:4,timings:i,style:r,options:null}}visitStyle(n,e){const i=this._makeStyleAst(n,e);return this._validateStyleAst(i,e),i}_makeStyleAst(n,e){const i=[],r=Array.isArray(n.styles)?n.styles:[n.styles];for(let a of r)"string"==typeof a?a===jr?i.push(a):e.errors.push(new A(3002,!1)):i.push(IT(a));let o=!1,s=null;return i.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!o))for(let l of a.values())if(l.toString().indexOf("{{")>=0){o=!0;break}}),{type:6,styles:i,easing:s,offset:n.offset,containsDynamicStyles:o,options:null}}_validateStyleAst(n,e){const i=e.currentAnimateTimings;let r=e.currentTime,o=e.currentTime;i&&o>0&&(o-=i.duration+i.delay),n.styles.forEach(s=>{"string"!=typeof s&&s.forEach((a,l)=>{const c=e.collectedStyles.get(e.currentQuerySelector),d=c.get(l);let u=!0;d&&(o!=r&&o>=d.startTime&&r<=d.endTime&&(e.errors.push(function A5(t,n,e,i,r){return new A(3010,!1)}()),u=!1),o=d.startTime),u&&c.set(l,{startTime:o,endTime:r}),e.options&&function l8(t,n,e){const i=n.params||{},r=FT(t);r.length&&r.forEach(o=>{i.hasOwnProperty(o)||e.push(function x5(t){return new A(3001,!1)}())})}(a,e.options,e.errors)})})}visitKeyframes(n,e){const i={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(function I5(){return new A(3011,!1)}()),i;let o=0;const s=[];let a=!1,l=!1,c=0;const d=n.steps.map(v=>{const w=this._makeStyleAst(v,e);let C=null!=w.offset?w.offset:function D8(t){if("string"==typeof t)return null;let n=null;if(Array.isArray(t))t.forEach(e=>{if(e instanceof Map&&e.has("offset")){const i=e;n=parseFloat(i.get("offset")),i.delete("offset")}});else if(t instanceof Map&&t.has("offset")){const e=t;n=parseFloat(e.get("offset")),e.delete("offset")}return n}(w.styles),P=0;return null!=C&&(o++,P=w.offset=C),l=l||P<0||P>1,a=a||P0&&o{const C=h>0?w==f?1:h*w:s[w],P=C*b;e.currentTime=p+g.delay+P,g.duration=P,this._validateStyleAst(v,e),v.offset=C,i.styles.push(v)}),i}visitReference(n,e){return{type:8,animation:ni(this,kc(n.animation),e),options:hs(n.options)}}visitAnimateChild(n,e){return e.depCount++,{type:9,options:hs(n.options)}}visitAnimateRef(n,e){return{type:10,animation:this.visitReference(n.animation,e),options:hs(n.options)}}visitQuery(n,e){const i=e.currentQuerySelector,r=n.options||{};e.queryCount++,e.currentQuery=n;const[o,s]=function w8(t){const n=!!t.split(/\s*,\s*/).find(e=>":self"==e);return n&&(t=t.replace(v8,"")),t=t.replace(/@\*/g,$h).replace(/@\w+/g,e=>$h+"-"+e.slice(1)).replace(/:animating/g,ov),[t,n]}(n.selector);e.currentQuerySelector=i.length?i+" "+o:o,ti(e.collectedStyles,e.currentQuerySelector,new Map);const a=ni(this,kc(n.animation),e);return e.currentQuery=null,e.currentQuerySelector=i,{type:11,selector:o,limit:r.limit||0,optional:!!r.optional,includeSelf:s,animation:a,originalSelector:n.selector,options:hs(n.options)}}visitStagger(n,e){e.currentQuery||e.errors.push(function F5(){return new A(3013,!1)}());const i="full"===n.timings?{duration:0,delay:0,easing:"full"}:Gh(n.timings,e.errors,!0);return{type:12,animation:ni(this,kc(n.animation),e),timings:i,options:null}}}class C8{constructor(n){this.errors=n,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}}function hs(t){return t?(t=Sc(t)).params&&(t.params=function x8(t){return t?Sc(t):null}(t.params)):t={},t}function dv(t,n,e){return{duration:t,delay:n,easing:e}}function uv(t,n,e,i,r,o,s=null,a=!1){return{type:1,element:t,keyframes:n,preStyleProps:e,postStyleProps:i,duration:r,delay:o,totalTime:r+o,easing:s,subTimeline:a}}class Qh{constructor(){this._map=new Map}get(n){return this._map.get(n)||[]}append(n,e){let i=this._map.get(n);i||this._map.set(n,i=[]),i.push(...e)}has(n){return this._map.has(n)}clear(){this._map.clear()}}const M8=new RegExp(":enter","g"),A8=new RegExp(":leave","g");function hv(t,n,e,i,r,o=new Map,s=new Map,a,l,c=[]){return(new I8).buildKeyframes(t,n,e,i,r,o,s,a,l,c)}class I8{buildKeyframes(n,e,i,r,o,s,a,l,c,d=[]){c=c||new Qh;const u=new fv(n,e,c,r,o,d,[]);u.options=l;const h=l.delay?Ur(l.delay):0;u.currentTimeline.delayNextStep(h),u.currentTimeline.setStyles([s],null,u.errors,l),ni(this,i,u);const f=u.timelines.filter(p=>p.containsAnimation());if(f.length&&a.size){let p;for(let g=f.length-1;g>=0;g--){const b=f[g];if(b.element===e){p=b;break}}p&&!p.allowOnlyTimelineStyles()&&p.setStyles([a],null,u.errors,l)}return f.length?f.map(p=>p.buildKeyframes()):[uv(e,[],[],[],0,h,"",!1)]}visitTrigger(n,e){}visitState(n,e){}visitTransition(n,e){}visitAnimateChild(n,e){const i=e.subInstructions.get(e.element);if(i){const r=e.createSubContext(n.options),o=e.currentTimeline.currentTime,s=this._visitSubInstructions(i,r,r.options);o!=s&&e.transformIntoNewTimeline(s)}e.previousNode=n}visitAnimateRef(n,e){const i=e.createSubContext(n.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],e,i),this.visitReference(n.animation,i),e.transformIntoNewTimeline(i.currentTimeline.currentTime),e.previousNode=n}_applyAnimationRefDelays(n,e,i){for(const r of n){const o=r?.delay;if(o){const s="number"==typeof o?o:Ur(Mc(o,r?.params??{},e.errors));i.delayNextStep(s)}}}_visitSubInstructions(n,e,i){let o=e.currentTimeline.currentTime;const s=null!=i.duration?Ur(i.duration):null,a=null!=i.delay?Ur(i.delay):null;return 0!==s&&n.forEach(l=>{const c=e.appendInstructionToTimeline(l,s,a);o=Math.max(o,c.duration+c.delay)}),o}visitReference(n,e){e.updateOptions(n.options,!0),ni(this,n.animation,e),e.previousNode=n}visitSequence(n,e){const i=e.subContextCount;let r=e;const o=n.options;if(o&&(o.params||o.delay)&&(r=e.createSubContext(o),r.transformIntoNewTimeline(),null!=o.delay)){6==r.previousNode.type&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=Jh);const s=Ur(o.delay);r.delayNextStep(s)}n.steps.length&&(n.steps.forEach(s=>ni(this,s,r)),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>i&&r.transformIntoNewTimeline()),e.previousNode=n}visitGroup(n,e){const i=[];let r=e.currentTimeline.currentTime;const o=n.options&&n.options.delay?Ur(n.options.delay):0;n.steps.forEach(s=>{const a=e.createSubContext(n.options);o&&a.delayNextStep(o),ni(this,s,a),r=Math.max(r,a.currentTimeline.currentTime),i.push(a.currentTimeline)}),i.forEach(s=>e.currentTimeline.mergeTimelineCollectedStyles(s)),e.transformIntoNewTimeline(r),e.previousNode=n}_visitTiming(n,e){if(n.dynamic){const i=n.strValue;return Gh(e.params?Mc(i,e.params,e.errors):i,e.errors)}return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,e){const i=e.currentAnimateTimings=this._visitTiming(n.timings,e),r=e.currentTimeline;i.delay&&(e.incrementTime(i.delay),r.snapshotCurrentStyles());const o=n.style;5==o.type?this.visitKeyframes(o,e):(e.incrementTime(i.duration),this.visitStyle(o,e),r.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=n}visitStyle(n,e){const i=e.currentTimeline,r=e.currentAnimateTimings;!r&&i.hasCurrentStyleProperties()&&i.forwardFrame();const o=r&&r.easing||n.easing;n.isEmptyStep?i.applyEmptyStep(o):i.setStyles(n.styles,o,e.errors,e.options),e.previousNode=n}visitKeyframes(n,e){const i=e.currentAnimateTimings,r=e.currentTimeline.duration,o=i.duration,a=e.createSubContext().currentTimeline;a.easing=i.easing,n.styles.forEach(l=>{a.forwardTime((l.offset||0)*o),a.setStyles(l.styles,l.easing,e.errors,e.options),a.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(a),e.transformIntoNewTimeline(r+o),e.previousNode=n}visitQuery(n,e){const i=e.currentTimeline.currentTime,r=n.options||{},o=r.delay?Ur(r.delay):0;o&&(6===e.previousNode.type||0==i&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=Jh);let s=i;const a=e.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!r.optional,e.errors);e.currentQueryTotal=a.length;let l=null;a.forEach((c,d)=>{e.currentQueryIndex=d;const u=e.createSubContext(n.options,c);o&&u.delayNextStep(o),c===e.element&&(l=u.currentTimeline),ni(this,n.animation,u),u.currentTimeline.applyStylesToKeyframe(),s=Math.max(s,u.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(s),l&&(e.currentTimeline.mergeTimelineCollectedStyles(l),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=n}visitStagger(n,e){const i=e.parentContext,r=e.currentTimeline,o=n.timings,s=Math.abs(o.duration),a=s*(e.currentQueryTotal-1);let l=s*e.currentQueryIndex;switch(o.duration<0?"reverse":o.easing){case"reverse":l=a-l;break;case"full":l=i.currentStaggerTime}const d=e.currentTimeline;l&&d.delayNextStep(l);const u=d.currentTime;ni(this,n.animation,e),e.previousNode=n,i.currentStaggerTime=r.currentTime-u+(r.startTime-i.currentTimeline.startTime)}}const Jh={};class fv{constructor(n,e,i,r,o,s,a,l){this._driver=n,this.element=e,this.subInstructions=i,this._enterClassName=r,this._leaveClassName=o,this.errors=s,this.timelines=a,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Jh,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=l||new ef(this._driver,e,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,e){if(!n)return;const i=n;let r=this.options;null!=i.duration&&(r.duration=Ur(i.duration)),null!=i.delay&&(r.delay=Ur(i.delay));const o=i.params;if(o){let s=r.params;s||(s=this.options.params={}),Object.keys(o).forEach(a=>{(!e||!s.hasOwnProperty(a))&&(s[a]=Mc(o[a],s,this.errors))})}}_copyOptions(){const n={};if(this.options){const e=this.options.params;if(e){const i=n.params={};Object.keys(e).forEach(r=>{i[r]=e[r]})}}return n}createSubContext(n=null,e,i){const r=e||this.element,o=new fv(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,i||0));return o.previousNode=this.previousNode,o.currentAnimateTimings=this.currentAnimateTimings,o.options=this._copyOptions(),o.updateOptions(n),o.currentQueryIndex=this.currentQueryIndex,o.currentQueryTotal=this.currentQueryTotal,o.parentContext=this,this.subContextCount++,o}transformIntoNewTimeline(n){return this.previousNode=Jh,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,e,i){const r={duration:e??n.duration,delay:this.currentTimeline.currentTime+(i??0)+n.delay,easing:""},o=new O8(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,r,n.stretchStartingKeyframe);return this.timelines.push(o),r}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,e,i,r,o,s){let a=[];if(r&&a.push(this.element),n.length>0){n=(n=n.replace(M8,"."+this._enterClassName)).replace(A8,"."+this._leaveClassName);let c=this._driver.query(this.element,n,1!=i);0!==i&&(c=i<0?c.slice(c.length+i,c.length):c.slice(0,i)),a.push(...c)}return!o&&0==a.length&&s.push(function N5(t){return new A(3014,!1)}()),a}}class ef{constructor(n,e,i,r){this._driver=n,this.element=e,this.startTime=i,this._elementTimelineStylesLookup=r,this.duration=0,this.easing=null,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+n),e&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,e){return this.applyStylesToKeyframe(),new ef(this._driver,n,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,e){this._localTimelineStyles.set(n,e),this._globalTimelineStyles.set(n,e),this._styleSummary.set(n,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[e,i]of this._globalTimelineStyles)this._backFill.set(e,i||jr),this._currentKeyframe.set(e,jr);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,e,i,r){e&&this._previousKeyframe.set("easing",e);const o=r&&r.params||{},s=function R8(t,n){const e=new Map;let i;return t.forEach(r=>{if("*"===r){i=i||n.keys();for(let o of i)e.set(o,jr)}else Eo(r,e)}),e}(n,this._globalTimelineStyles);for(let[a,l]of s){const c=Mc(l,o,i);this._pendingStyles.set(a,c),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??jr),this._updateStyle(a,c)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((n,e)=>{this._currentKeyframe.set(e,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,n)}))}snapshotCurrentStyles(){for(let[n,e]of this._localTimelineStyles)this._pendingStyles.set(n,e),this._updateStyle(n,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const n=[];for(let e in this._currentKeyframe)n.push(e);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((e,i)=>{const r=this._styleSummary.get(i);(!r||e.time>r.time)&&this._updateStyle(i,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const n=new Set,e=new Set,i=1===this._keyframes.size&&0===this.duration;let r=[];this._keyframes.forEach((a,l)=>{const c=Eo(a,new Map,this._backFill);c.forEach((d,u)=>{d===Kb?n.add(u):d===jr&&e.add(u)}),i||c.set("offset",l/this.duration),r.push(c)});const o=n.size?Wh(n.values()):[],s=e.size?Wh(e.values()):[];if(i){const a=r[0],l=new Map(a);a.set("offset",0),l.set("offset",1),r=[a,l]}return uv(this.element,r,o,s,this.duration,this.startTime,this.easing,!1)}}class O8 extends ef{constructor(n,e,i,r,o,s,a=!1){super(n,e,s.delay),this.keyframes=i,this.preStyleProps=r,this.postStyleProps=o,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:e,duration:i,easing:r}=this.timings;if(this._stretchStartingKeyframe&&e){const o=[],s=i+e,a=e/s,l=Eo(n[0]);l.set("offset",0),o.push(l);const c=Eo(n[0]);c.set("offset",jT(a)),o.push(c);const d=n.length-1;for(let u=1;u<=d;u++){let h=Eo(n[u]);const f=h.get("offset");h.set("offset",jT((e+f*i)/s)),o.push(h)}i=s,e=0,r="",n=o}return uv(this.element,n,this.preStyleProps,this.postStyleProps,i,e,r,!0)}}function jT(t,n=3){const e=Math.pow(10,n-1);return Math.round(t*e)/e}class mv{}const P8=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class F8 extends mv{normalizePropertyName(n,e){return lv(n)}normalizeStyleValue(n,e,i,r){let o="";const s=i.toString().trim();if(P8.has(e)&&0!==i&&"0"!==i)if("number"==typeof i)o="px";else{const a=i.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&0==a[1].length&&r.push(function E5(t,n){return new A(3005,!1)}())}return s+o}}function HT(t,n,e,i,r,o,s,a,l,c,d,u,h){return{type:0,element:t,triggerName:n,isRemovalTransition:r,fromState:e,fromStyles:o,toState:i,toStyles:s,timelines:a,queriedElements:l,preStyleProps:c,postStyleProps:d,totalTime:u,errors:h}}const pv={};class zT{constructor(n,e,i){this._triggerName=n,this.ast=e,this._stateStyles=i}match(n,e,i,r){return function N8(t,n,e,i,r){return t.some(o=>o(n,e,i,r))}(this.ast.matchers,n,e,i,r)}buildStyles(n,e,i){let r=this._stateStyles.get("*");return void 0!==n&&(r=this._stateStyles.get(n?.toString())||r),r?r.buildStyles(e,i):new Map}build(n,e,i,r,o,s,a,l,c,d){const u=[],h=this.ast.options&&this.ast.options.params||pv,p=this.buildStyles(i,a&&a.params||pv,u),g=l&&l.params||pv,b=this.buildStyles(r,g,u),v=new Set,w=new Map,C=new Map,P="void"===r,ye={params:L8(g,h),delay:this.ast.options?.delay},Te=d?[]:hv(n,e,this.ast.animation,o,s,p,b,ye,c,u);let It=0;if(Te.forEach(co=>{It=Math.max(co.duration+co.delay,It)}),u.length)return HT(e,this._triggerName,i,r,P,p,b,[],[],w,C,It,u);Te.forEach(co=>{const uo=co.element,AN=ti(w,uo,new Set);co.preStyleProps.forEach(Ps=>AN.add(Ps));const nu=ti(C,uo,new Set);co.postStyleProps.forEach(Ps=>nu.add(Ps)),uo!==e&&v.add(uo)});const Ti=Wh(v.values());return HT(e,this._triggerName,i,r,P,p,b,Te,Ti,w,C,It)}}function L8(t,n){const e=Sc(n);for(const i in t)t.hasOwnProperty(i)&&null!=t[i]&&(e[i]=t[i]);return e}class B8{constructor(n,e,i){this.styles=n,this.defaultParams=e,this.normalizer=i}buildStyles(n,e){const i=new Map,r=Sc(this.defaultParams);return Object.keys(n).forEach(o=>{const s=n[o];null!==s&&(r[o]=s)}),this.styles.styles.forEach(o=>{"string"!=typeof o&&o.forEach((s,a)=>{s&&(s=Mc(s,r,e));const l=this.normalizer.normalizePropertyName(a,e);s=this.normalizer.normalizeStyleValue(a,l,s,e),i.set(a,s)})}),i}}class j8{constructor(n,e,i){this.name=n,this.ast=e,this._normalizer=i,this.transitionFactories=[],this.states=new Map,e.states.forEach(r=>{this.states.set(r.name,new B8(r.style,r.options&&r.options.params||{},i))}),UT(this.states,"true","1"),UT(this.states,"false","0"),e.transitions.forEach(r=>{this.transitionFactories.push(new zT(n,r,this.states))}),this.fallbackTransition=function H8(t,n,e){return new zT(t,{type:1,animation:{type:2,steps:[],options:null},matchers:[(s,a)=>!0],options:null,queryCount:0,depCount:0},n)}(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,e,i,r){return this.transitionFactories.find(s=>s.match(n,e,i,r))||null}matchStyles(n,e,i){return this.fallbackTransition.buildStyles(n,e,i)}}function UT(t,n,e){t.has(n)?t.has(e)||t.set(e,t.get(n)):t.has(e)&&t.set(n,t.get(e))}const z8=new Qh;class U8{constructor(n,e,i){this.bodyNode=n,this._driver=e,this._normalizer=i,this._animations=new Map,this._playersById=new Map,this.players=[]}register(n,e){const i=[],r=[],o=cv(this._driver,e,i,r);if(i.length)throw function U5(t){return new A(3503,!1)}();this._animations.set(n,o)}_buildPlayer(n,e,i){const r=n.element,o=wT(0,this._normalizer,0,n.keyframes,e,i);return this._driver.animate(r,o,n.duration,n.delay,n.easing,[],!0)}create(n,e,i={}){const r=[],o=this._animations.get(n);let s;const a=new Map;if(o?(s=hv(this._driver,e,o,rv,zh,new Map,new Map,i,z8,r),s.forEach(d=>{const u=ti(a,d.element,new Map);d.postStyleProps.forEach(h=>u.set(h,null))})):(r.push(function $5(){return new A(3300,!1)}()),s=[]),r.length)throw function G5(t){return new A(3504,!1)}();a.forEach((d,u)=>{d.forEach((h,f)=>{d.set(f,this._driver.computeStyle(u,f,jr))})});const c=Do(s.map(d=>{const u=a.get(d.element);return this._buildPlayer(d,new Map,u)}));return this._playersById.set(n,c),c.onDestroy(()=>this.destroy(n)),this.players.push(c),c}destroy(n){const e=this._getPlayer(n);e.destroy(),this._playersById.delete(n);const i=this.players.indexOf(e);i>=0&&this.players.splice(i,1)}_getPlayer(n){const e=this._playersById.get(n);if(!e)throw function W5(t){return new A(3301,!1)}();return e}listen(n,e,i,r){const o=ev(e,"","","");return Qb(this._getPlayer(n),i,o,r),()=>{}}command(n,e,i,r){if("register"==i)return void this.register(n,r[0]);if("create"==i)return void this.create(n,e,r[0]||{});const o=this._getPlayer(n);switch(i){case"play":o.play();break;case"pause":o.pause();break;case"reset":o.reset();break;case"restart":o.restart();break;case"finish":o.finish();break;case"init":o.init();break;case"setPosition":o.setPosition(parseFloat(r[0]));break;case"destroy":this.destroy(n)}}}const $T="ng-animate-queued",gv="ng-animate-disabled",Y8=[],GT={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},Z8={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Ci="__ng_removed";class _v{get params(){return this.options.params}constructor(n,e=""){this.namespaceId=e;const i=n&&n.hasOwnProperty("value");if(this.value=function J8(t){return t??null}(i?n.value:n),i){const o=Sc(n);delete o.value,this.options=o}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){const e=n.params;if(e){const i=this.options.params;Object.keys(e).forEach(r=>{null==i[r]&&(i[r]=e[r])})}}}const Tc="void",bv=new _v(Tc);class K8{constructor(n,e,i){this.id=n,this.hostElement=e,this._engine=i,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+n,Di(e,this._hostClassName)}listen(n,e,i,r){if(!this._triggers.has(e))throw function q5(t,n){return new A(3302,!1)}();if(null==i||0==i.length)throw function Y5(t){return new A(3303,!1)}();if(!function e6(t){return"start"==t||"done"==t}(i))throw function Z5(t,n){return new A(3400,!1)}();const o=ti(this._elementListeners,n,[]),s={name:e,phase:i,callback:r};o.push(s);const a=ti(this._engine.statesByElement,n,new Map);return a.has(e)||(Di(n,Uh),Di(n,Uh+"-"+e),a.set(e,bv)),()=>{this._engine.afterFlush(()=>{const l=o.indexOf(s);l>=0&&o.splice(l,1),this._triggers.has(e)||a.delete(e)})}}register(n,e){return!this._triggers.has(n)&&(this._triggers.set(n,e),!0)}_getTrigger(n){const e=this._triggers.get(n);if(!e)throw function K5(t){return new A(3401,!1)}();return e}trigger(n,e,i,r=!0){const o=this._getTrigger(e),s=new vv(this.id,e,n);let a=this._engine.statesByElement.get(n);a||(Di(n,Uh),Di(n,Uh+"-"+e),this._engine.statesByElement.set(n,a=new Map));let l=a.get(e);const c=new _v(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&l&&c.absorbOptions(l.options),a.set(e,c),l||(l=bv),c.value!==Tc&&l.value===c.value){if(!function i6(t,n){const e=Object.keys(t),i=Object.keys(n);if(e.length!=i.length)return!1;for(let r=0;r{us(n,b),lr(n,v)})}return}const h=ti(this._engine.playersByElement,n,[]);h.forEach(g=>{g.namespaceId==this.id&&g.triggerName==e&&g.queued&&g.destroy()});let f=o.matchTransition(l.value,c.value,n,c.params),p=!1;if(!f){if(!r)return;f=o.fallbackTransition,p=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:e,transition:f,fromState:l,toState:c,player:s,isFallbackTransition:p}),p||(Di(n,$T),s.onStart(()=>{Ia(n,$T)})),s.onDone(()=>{let g=this.players.indexOf(s);g>=0&&this.players.splice(g,1);const b=this._engine.playersByElement.get(n);if(b){let v=b.indexOf(s);v>=0&&b.splice(v,1)}}),this.players.push(s),h.push(s),s}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(e=>e.delete(n)),this._elementListeners.forEach((e,i)=>{this._elementListeners.set(i,e.filter(r=>r.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);const e=this._engine.playersByElement.get(n);e&&(e.forEach(i=>i.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,e){const i=this._engine.driver.query(n,$h,!0);i.forEach(r=>{if(r[Ci])return;const o=this._engine.fetchNamespacesByElement(r);o.size?o.forEach(s=>s.triggerLeaveAnimation(r,e,!1,!0)):this.clearElementCache(r)}),this._engine.afterFlushAnimationsDone(()=>i.forEach(r=>this.clearElementCache(r)))}triggerLeaveAnimation(n,e,i,r){const o=this._engine.statesByElement.get(n),s=new Map;if(o){const a=[];if(o.forEach((l,c)=>{if(s.set(c,l.value),this._triggers.has(c)){const d=this.trigger(n,c,Tc,r);d&&a.push(d)}}),a.length)return this._engine.markElementAsRemoved(this.id,n,!0,e,s),i&&Do(a).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){const e=this._elementListeners.get(n),i=this._engine.statesByElement.get(n);if(e&&i){const r=new Set;e.forEach(o=>{const s=o.name;if(r.has(s))return;r.add(s);const l=this._triggers.get(s).fallbackTransition,c=i.get(s)||bv,d=new _v(Tc),u=new vv(this.id,s,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:s,transition:l,fromState:c,toState:d,player:u,isFallbackTransition:!0})})}}removeNode(n,e){const i=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,e),this.triggerLeaveAnimation(n,e,!0))return;let r=!1;if(i.totalAnimations){const o=i.players.length?i.playersByQueriedElement.get(n):[];if(o&&o.length)r=!0;else{let s=n;for(;s=s.parentNode;)if(i.statesByElement.get(s)){r=!0;break}}}if(this.prepareLeaveAnimationListeners(n),r)i.markElementAsRemoved(this.id,n,!1,e);else{const o=n[Ci];(!o||o===GT)&&(i.afterFlush(()=>this.clearElementCache(n)),i.destroyInnerAnimations(n),i._onRemovalComplete(n,e))}}insertNode(n,e){Di(n,this._hostClassName)}drainQueuedTransitions(n){const e=[];return this._queue.forEach(i=>{const r=i.player;if(r.destroyed)return;const o=i.element,s=this._elementListeners.get(o);s&&s.forEach(a=>{if(a.name==i.triggerName){const l=ev(o,i.triggerName,i.fromState.value,i.toState.value);l._data=n,Qb(i.player,a.phase,l,a.callback)}}),r.markedForDestroy?this._engine.afterFlush(()=>{r.destroy()}):e.push(i)}),this._queue=[],e.sort((i,r)=>{const o=i.transition.ast.depCount,s=r.transition.ast.depCount;return 0==o||0==s?o-s:this._engine.driver.containsElement(i.element,r.element)?1:-1})}destroy(n){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}elementContainsData(n){let e=!1;return this._elementListeners.has(n)&&(e=!0),e=!!this._queue.find(i=>i.element===n)||e,e}}class X8{_onRemovalComplete(n,e){this.onRemovalComplete(n,e)}constructor(n,e,i){this.bodyNode=n,this.driver=e,this._normalizer=i,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(r,o)=>{}}get queuedPlayers(){const n=[];return this._namespaceList.forEach(e=>{e.players.forEach(i=>{i.queued&&n.push(i)})}),n}createNamespace(n,e){const i=new K8(n,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(i,e):(this.newHostElements.set(e,i),this.collectEnterElement(e)),this._namespaceLookup[n]=i}_balanceNamespaceList(n,e){const i=this._namespaceList,r=this.namespacesByHostElement;if(i.length-1>=0){let s=!1,a=this.driver.getParentElement(e);for(;a;){const l=r.get(a);if(l){const c=i.indexOf(l);i.splice(c+1,0,n),s=!0;break}a=this.driver.getParentElement(a)}s||i.unshift(n)}else i.push(n);return r.set(e,n),n}register(n,e){let i=this._namespaceLookup[n];return i||(i=this.createNamespace(n,e)),i}registerTrigger(n,e,i){let r=this._namespaceLookup[n];r&&r.register(e,i)&&this.totalAnimations++}destroy(n,e){if(!n)return;const i=this._fetchNamespace(n);this.afterFlush(()=>{this.namespacesByHostElement.delete(i.hostElement),delete this._namespaceLookup[n];const r=this._namespaceList.indexOf(i);r>=0&&this._namespaceList.splice(r,1)}),this.afterFlushAnimationsDone(()=>i.destroy(e))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){const e=new Set,i=this.statesByElement.get(n);if(i)for(let r of i.values())if(r.namespaceId){const o=this._fetchNamespace(r.namespaceId);o&&e.add(o)}return e}trigger(n,e,i,r){if(tf(e)){const o=this._fetchNamespace(n);if(o)return o.trigger(e,i,r),!0}return!1}insertNode(n,e,i,r){if(!tf(e))return;const o=e[Ci];if(o&&o.setForRemoval){o.setForRemoval=!1,o.setForMove=!0;const s=this.collectedLeaveElements.indexOf(e);s>=0&&this.collectedLeaveElements.splice(s,1)}if(n){const s=this._fetchNamespace(n);s&&s.insertNode(e,i)}r&&this.collectEnterElement(e)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,e){e?this.disabledNodes.has(n)||(this.disabledNodes.add(n),Di(n,gv)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),Ia(n,gv))}removeNode(n,e,i,r){if(tf(e)){const o=n?this._fetchNamespace(n):null;if(o?o.removeNode(e,r):this.markElementAsRemoved(n,e,!1,r),i){const s=this.namespacesByHostElement.get(e);s&&s.id!==n&&s.removeNode(e,r)}}else this._onRemovalComplete(e,r)}markElementAsRemoved(n,e,i,r,o){this.collectedLeaveElements.push(e),e[Ci]={namespaceId:n,setForRemoval:r,hasAnimation:i,removedBeforeQueried:!1,previousTriggersValues:o}}listen(n,e,i,r,o){return tf(e)?this._fetchNamespace(n).listen(e,i,r,o):()=>{}}_buildInstruction(n,e,i,r,o){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,i,r,n.fromState.options,n.toState.options,e,o)}destroyInnerAnimations(n){let e=this.driver.query(n,$h,!0);e.forEach(i=>this.destroyActiveAnimationsForElement(i)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(n,ov,!0),e.forEach(i=>this.finishActiveQueriedAnimationOnElement(i)))}destroyActiveAnimationsForElement(n){const e=this.playersByElement.get(n);e&&e.forEach(i=>{i.queued?i.markedForDestroy=!0:i.destroy()})}finishActiveQueriedAnimationOnElement(n){const e=this.playersByQueriedElement.get(n);e&&e.forEach(i=>i.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return Do(this.players).onDone(()=>n());n()})}processLeaveNode(n){const e=n[Ci];if(e&&e.setForRemoval){if(n[Ci]=GT,e.namespaceId){this.destroyInnerAnimations(n);const i=this._fetchNamespace(e.namespaceId);i&&i.clearElementCache(n)}this._onRemovalComplete(n,e.setForRemoval)}n.classList?.contains(gv)&&this.markElementAsDisabled(n,!1),this.driver.query(n,".ng-animate-disabled",!0).forEach(i=>{this.markElementAsDisabled(i,!1)})}flush(n=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((i,r)=>this._balanceNamespaceList(i,r)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let i=0;ii()),this._flushFns=[],this._whenQuietFns.length){const i=this._whenQuietFns;this._whenQuietFns=[],e.length?Do(e).onDone(()=>{i.forEach(r=>r())}):i.forEach(r=>r())}}reportError(n){throw function X5(t){return new A(3402,!1)}()}_flushAnimations(n,e){const i=new Qh,r=[],o=new Map,s=[],a=new Map,l=new Map,c=new Map,d=new Set;this.disabledNodes.forEach(ne=>{d.add(ne);const ae=this.driver.query(ne,".ng-animate-queued",!0);for(let ve=0;ve{const ve=rv+g++;p.set(ae,ve),ne.forEach(Ye=>Di(Ye,ve))});const b=[],v=new Set,w=new Set;for(let ne=0;nev.add(Ye)):w.add(ae))}const C=new Map,P=YT(h,Array.from(v));P.forEach((ne,ae)=>{const ve=zh+g++;C.set(ae,ve),ne.forEach(Ye=>Di(Ye,ve))}),n.push(()=>{f.forEach((ne,ae)=>{const ve=p.get(ae);ne.forEach(Ye=>Ia(Ye,ve))}),P.forEach((ne,ae)=>{const ve=C.get(ae);ne.forEach(Ye=>Ia(Ye,ve))}),b.forEach(ne=>{this.processLeaveNode(ne)})});const ye=[],Te=[];for(let ne=this._namespaceList.length-1;ne>=0;ne--)this._namespaceList[ne].drainQueuedTransitions(e).forEach(ve=>{const Ye=ve.player,nn=ve.element;if(ye.push(Ye),this.collectedEnterElements.length){const xn=nn[Ci];if(xn&&xn.setForMove){if(xn.previousTriggersValues&&xn.previousTriggersValues.has(ve.triggerName)){const Fs=xn.previousTriggersValues.get(ve.triggerName),Ai=this.statesByElement.get(ve.element);if(Ai&&Ai.has(ve.triggerName)){const Lp=Ai.get(ve.triggerName);Lp.value=Fs,Ai.set(ve.triggerName,Lp)}}return void Ye.destroy()}}const xr=!u||!this.driver.containsElement(u,nn),ci=C.get(nn),$o=p.get(nn),St=this._buildInstruction(ve,i,$o,ci,xr);if(St.errors&&St.errors.length)return void Te.push(St);if(xr)return Ye.onStart(()=>us(nn,St.fromStyles)),Ye.onDestroy(()=>lr(nn,St.toStyles)),void r.push(Ye);if(ve.isFallbackTransition)return Ye.onStart(()=>us(nn,St.fromStyles)),Ye.onDestroy(()=>lr(nn,St.toStyles)),void r.push(Ye);const RN=[];St.timelines.forEach(xn=>{xn.stretchStartingKeyframe=!0,this.disabledNodes.has(xn.element)||RN.push(xn)}),St.timelines=RN,i.append(nn,St.timelines),s.push({instruction:St,player:Ye,element:nn}),St.queriedElements.forEach(xn=>ti(a,xn,[]).push(Ye)),St.preStyleProps.forEach((xn,Fs)=>{if(xn.size){let Ai=l.get(Fs);Ai||l.set(Fs,Ai=new Set),xn.forEach((Lp,Jw)=>Ai.add(Jw))}}),St.postStyleProps.forEach((xn,Fs)=>{let Ai=c.get(Fs);Ai||c.set(Fs,Ai=new Set),xn.forEach((Lp,Jw)=>Ai.add(Jw))})});if(Te.length){const ne=[];Te.forEach(ae=>{ne.push(function Q5(t,n){return new A(3505,!1)}())}),ye.forEach(ae=>ae.destroy()),this.reportError(ne)}const It=new Map,Ti=new Map;s.forEach(ne=>{const ae=ne.element;i.has(ae)&&(Ti.set(ae,ae),this._beforeAnimationBuild(ne.player.namespaceId,ne.instruction,It))}),r.forEach(ne=>{const ae=ne.element;this._getPreviousPlayers(ae,!1,ne.namespaceId,ne.triggerName,null).forEach(Ye=>{ti(It,ae,[]).push(Ye),Ye.destroy()})});const co=b.filter(ne=>KT(ne,l,c)),uo=new Map;qT(uo,this.driver,w,c,jr).forEach(ne=>{KT(ne,l,c)&&co.push(ne)});const nu=new Map;f.forEach((ne,ae)=>{qT(nu,this.driver,new Set(ne),l,Kb)}),co.forEach(ne=>{const ae=uo.get(ne),ve=nu.get(ne);uo.set(ne,new Map([...Array.from(ae?.entries()??[]),...Array.from(ve?.entries()??[])]))});const Ps=[],IN=[],ON={};s.forEach(ne=>{const{element:ae,player:ve,instruction:Ye}=ne;if(i.has(ae)){if(d.has(ae))return ve.onDestroy(()=>lr(ae,Ye.toStyles)),ve.disabled=!0,ve.overrideTotalTime(Ye.totalTime),void r.push(ve);let nn=ON;if(Ti.size>1){let ci=ae;const $o=[];for(;ci=ci.parentNode;){const St=Ti.get(ci);if(St){nn=St;break}$o.push(ci)}$o.forEach(St=>Ti.set(St,nn))}const xr=this._buildAnimation(ve.namespaceId,Ye,It,o,nu,uo);if(ve.setRealPlayer(xr),nn===ON)Ps.push(ve);else{const ci=this.playersByElement.get(nn);ci&&ci.length&&(ve.parentPlayer=Do(ci)),r.push(ve)}}else us(ae,Ye.fromStyles),ve.onDestroy(()=>lr(ae,Ye.toStyles)),IN.push(ve),d.has(ae)&&r.push(ve)}),IN.forEach(ne=>{const ae=o.get(ne.element);if(ae&&ae.length){const ve=Do(ae);ne.setRealPlayer(ve)}}),r.forEach(ne=>{ne.parentPlayer?ne.syncPlayerEvents(ne.parentPlayer):ne.destroy()});for(let ne=0;ne!xr.destroyed);nn.length?t6(this,ae,nn):this.processLeaveNode(ae)}return b.length=0,Ps.forEach(ne=>{this.players.push(ne),ne.onDone(()=>{ne.destroy();const ae=this.players.indexOf(ne);this.players.splice(ae,1)}),ne.play()}),Ps}elementContainsData(n,e){let i=!1;const r=e[Ci];return r&&r.setForRemoval&&(i=!0),this.playersByElement.has(e)&&(i=!0),this.playersByQueriedElement.has(e)&&(i=!0),this.statesByElement.has(e)&&(i=!0),this._fetchNamespace(n).elementContainsData(e)||i}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,e,i,r,o){let s=[];if(e){const a=this.playersByQueriedElement.get(n);a&&(s=a)}else{const a=this.playersByElement.get(n);if(a){const l=!o||o==Tc;a.forEach(c=>{c.queued||!l&&c.triggerName!=r||s.push(c)})}}return(i||r)&&(s=s.filter(a=>!(i&&i!=a.namespaceId||r&&r!=a.triggerName))),s}_beforeAnimationBuild(n,e,i){const o=e.element,s=e.isRemovalTransition?void 0:n,a=e.isRemovalTransition?void 0:e.triggerName;for(const l of e.timelines){const c=l.element,d=c!==o,u=ti(i,c,[]);this._getPreviousPlayers(c,d,s,a,e.toState).forEach(f=>{const p=f.getRealPlayer();p.beforeDestroy&&p.beforeDestroy(),f.destroy(),u.push(f)})}us(o,e.fromStyles)}_buildAnimation(n,e,i,r,o,s){const a=e.triggerName,l=e.element,c=[],d=new Set,u=new Set,h=e.timelines.map(p=>{const g=p.element;d.add(g);const b=g[Ci];if(b&&b.removedBeforeQueried)return new Ec(p.duration,p.delay);const v=g!==l,w=function n6(t){const n=[];return ZT(t,n),n}((i.get(g)||Y8).map(It=>It.getRealPlayer())).filter(It=>!!It.element&&It.element===g),C=o.get(g),P=s.get(g),ye=wT(0,this._normalizer,0,p.keyframes,C,P),Te=this._buildPlayer(p,ye,w);if(p.subTimeline&&r&&u.add(g),v){const It=new vv(n,a,g);It.setRealPlayer(Te),c.push(It)}return Te});c.forEach(p=>{ti(this.playersByQueriedElement,p.element,[]).push(p),p.onDone(()=>function Q8(t,n,e){let i=t.get(n);if(i){if(i.length){const r=i.indexOf(e);i.splice(r,1)}0==i.length&&t.delete(n)}return i}(this.playersByQueriedElement,p.element,p))}),d.forEach(p=>Di(p,AT));const f=Do(h);return f.onDestroy(()=>{d.forEach(p=>Ia(p,AT)),lr(l,e.toStyles)}),u.forEach(p=>{ti(r,p,[]).push(f)}),f}_buildPlayer(n,e,i){return e.length>0?this.driver.animate(n.element,e,n.duration,n.delay,n.easing,i):new Ec(n.duration,n.delay)}}class vv{constructor(n,e,i){this.namespaceId=n,this.triggerName=e,this.element=i,this._player=new Ec,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.parentPlayer=null,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((e,i)=>{e.forEach(r=>Qb(n,i,void 0,r))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){const e=this._player;e.triggerCallback&&n.onStart(()=>e.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,e){ti(this._queuedCallbacks,n,[]).push(e)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){const e=this._player;e.triggerCallback&&e.triggerCallback(n)}}function tf(t){return t&&1===t.nodeType}function WT(t,n){const e=t.style.display;return t.style.display=n??"none",e}function qT(t,n,e,i,r){const o=[];e.forEach(l=>o.push(WT(l)));const s=[];i.forEach((l,c)=>{const d=new Map;l.forEach(u=>{const h=n.computeStyle(c,u,r);d.set(u,h),(!h||0==h.length)&&(c[Ci]=Z8,s.push(c))}),t.set(c,d)});let a=0;return e.forEach(l=>WT(l,o[a++])),s}function YT(t,n){const e=new Map;if(t.forEach(a=>e.set(a,[])),0==n.length)return e;const i=1,r=new Set(n),o=new Map;function s(a){if(!a)return i;let l=o.get(a);if(l)return l;const c=a.parentNode;return l=e.has(c)?c:r.has(c)?i:s(c),o.set(a,l),l}return n.forEach(a=>{const l=s(a);l!==i&&e.get(l).push(a)}),e}function Di(t,n){t.classList?.add(n)}function Ia(t,n){t.classList?.remove(n)}function t6(t,n,e){Do(e).onDone(()=>t.processLeaveNode(n))}function ZT(t,n){for(let e=0;er.add(o)):n.set(t,i),e.delete(t),!0}class nf{constructor(n,e,i){this.bodyNode=n,this._driver=e,this._normalizer=i,this._triggerCache={},this.onRemovalComplete=(r,o)=>{},this._transitionEngine=new X8(n,e,i),this._timelineEngine=new U8(n,e,i),this._transitionEngine.onRemovalComplete=(r,o)=>this.onRemovalComplete(r,o)}registerTrigger(n,e,i,r,o){const s=n+"-"+r;let a=this._triggerCache[s];if(!a){const l=[],c=[],d=cv(this._driver,o,l,c);if(l.length)throw function H5(t,n){return new A(3404,!1)}();a=function V8(t,n,e){return new j8(t,n,e)}(r,d,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(e,r,a)}register(n,e){this._transitionEngine.register(n,e)}destroy(n,e){this._transitionEngine.destroy(n,e)}onInsert(n,e,i,r){this._transitionEngine.insertNode(n,e,i,r)}onRemove(n,e,i,r){this._transitionEngine.removeNode(n,e,r||!1,i)}disableAnimations(n,e){this._transitionEngine.markElementAsDisabled(n,e)}process(n,e,i,r){if("@"==i.charAt(0)){const[o,s]=xT(i);this._timelineEngine.command(o,e,s,r)}else this._transitionEngine.trigger(n,e,i,r)}listen(n,e,i,r,o){if("@"==i.charAt(0)){const[s,a]=xT(i);return this._timelineEngine.listen(s,e,a,o)}return this._transitionEngine.listen(n,e,i,r,o)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}let o6=(()=>{class t{constructor(e,i,r){this._element=e,this._startStyles=i,this._endStyles=r,this._state=0;let o=t.initialStylesByElement.get(e);o||t.initialStylesByElement.set(e,o=new Map),this._initialStyles=o}start(){this._state<1&&(this._startStyles&&lr(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(lr(this._element,this._initialStyles),this._endStyles&&(lr(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(us(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(us(this._element,this._endStyles),this._endStyles=null),lr(this._element,this._initialStyles),this._state=3)}}return t.initialStylesByElement=new WeakMap,t})();function yv(t){let n=null;return t.forEach((e,i)=>{(function s6(t){return"display"===t||"position"===t})(i)&&(n=n||new Map,n.set(i,e))}),n}class XT{constructor(n,e,i,r){this.element=n,this.keyframes=e,this.options=i,this._specialStyles=r,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const n=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,n,this.options),this._finalKeyframe=n.length?n[n.length-1]:new Map,this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(n){const e=[];return n.forEach(i=>{e.push(Object.fromEntries(i))}),e}_triggerWebAnimation(n,e,i){return n.animate(this._convertKeyframesToObject(e),i)}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(n=>n()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=n*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((i,r)=>{"offset"!==r&&n.set(r,this._finished?i:NT(this.element,r))}),this.currentSnapshot=n}triggerCallback(n){const e="start"===n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class a6{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}matchesElement(n,e){return!1}containsElement(n,e){return ST(n,e)}getParentElement(n){return nv(n)}query(n,e,i){return kT(n,e,i)}computeStyle(n,e,i){return window.getComputedStyle(n)[e]}animate(n,e,i,r,o,s=[]){const l={duration:i,delay:r,fill:0==r?"both":"forwards"};o&&(l.easing=o);const c=new Map,d=s.filter(f=>f instanceof XT);(function u8(t,n){return 0===t||0===n})(i,r)&&d.forEach(f=>{f.currentSnapshot.forEach((p,g)=>c.set(g,p))});let u=function a8(t){return t.length?t[0]instanceof Map?t:t.map(n=>IT(n)):[]}(e).map(f=>Eo(f));u=function h8(t,n,e){if(e.size&&n.length){let i=n[0],r=[];if(e.forEach((o,s)=>{i.has(s)||r.push(s),i.set(s,o)}),r.length)for(let o=1;os.set(a,NT(t,a)))}}return n}(n,u,c);const h=function r6(t,n){let e=null,i=null;return Array.isArray(n)&&n.length?(e=yv(n[0]),n.length>1&&(i=yv(n[n.length-1]))):n instanceof Map&&(e=yv(n)),e||i?new o6(t,e,i):null}(n,u);return new XT(n,u,l,h)}}let l6=(()=>{class t extends fT{constructor(e,i){super(),this._nextAnimationId=0,this._renderer=e.createRenderer(i.body,{id:"0",encapsulation:Ii.None,styles:[],data:{animation:[]}})}build(e){const i=this._nextAnimationId.toString();this._nextAnimationId++;const r=Array.isArray(e)?pT(e):e;return QT(this._renderer,null,i,"register",[r]),new c6(i,this._renderer)}}return t.\u0275fac=function(e){return new(e||t)(_(po),_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();class c6 extends v5{constructor(n,e){super(),this._id=n,this._renderer=e}create(n,e){return new d6(this._id,n,e||{},this._renderer)}}class d6{constructor(n,e,i,r){this.id=n,this.element=e,this._renderer=r,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",i)}_listen(n,e){return this._renderer.listen(this.element,`@@${this.id}:${n}`,e)}_command(n,...e){return QT(this._renderer,this.element,this.id,n,e)}onDone(n){this._listen("done",n)}onStart(n){this._listen("start",n)}onDestroy(n){this._listen("destroy",n)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset"),this._started=!1}setPosition(n){this._command("setPosition",n)}getPosition(){return this._renderer.engine.players[+this.id]?.getPosition()??0}}function QT(t,n,e,i,r){return t.setProperty(n,`@@${e}:${i}`,r)}const JT="@.disabled";let u6=(()=>{class t{constructor(e,i,r){this.delegate=e,this.engine=i,this._zone=r,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),i.onRemovalComplete=(o,s)=>{const a=s?.parentNode(o);a&&s.removeChild(a,o)}}createRenderer(e,i){const o=this.delegate.createRenderer(e,i);if(!(e&&i&&i.data&&i.data.animation)){let d=this._rendererCache.get(o);return d||(d=new eA("",o,this.engine,()=>this._rendererCache.delete(o)),this._rendererCache.set(o,d)),d}const s=i.id,a=i.id+"-"+this._currentId;this._currentId++,this.engine.register(a,e);const l=d=>{Array.isArray(d)?d.forEach(l):this.engine.registerTrigger(s,a,e,d.name,d)};return i.data.animation.forEach(l),new h6(this,a,o,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(e,i,r){e>=0&&ei(r)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(o=>{const[s,a]=o;s(a)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([i,r]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}return t.\u0275fac=function(e){return new(e||t)(_(po),_(nf),_(Z))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();class eA{constructor(n,e,i,r){this.namespaceId=n,this.delegate=e,this.engine=i,this._onDestroy=r,this.destroyNode=this.delegate.destroyNode?o=>e.destroyNode(o):null}get data(){return this.delegate.data}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy(),this._onDestroy?.()}createElement(n,e){return this.delegate.createElement(n,e)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,e){this.delegate.appendChild(n,e),this.engine.onInsert(this.namespaceId,e,n,!1)}insertBefore(n,e,i,r=!0){this.delegate.insertBefore(n,e,i),this.engine.onInsert(this.namespaceId,e,n,r)}removeChild(n,e,i){this.engine.onRemove(this.namespaceId,e,this.delegate,i)}selectRootElement(n,e){return this.delegate.selectRootElement(n,e)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,e,i,r){this.delegate.setAttribute(n,e,i,r)}removeAttribute(n,e,i){this.delegate.removeAttribute(n,e,i)}addClass(n,e){this.delegate.addClass(n,e)}removeClass(n,e){this.delegate.removeClass(n,e)}setStyle(n,e,i,r){this.delegate.setStyle(n,e,i,r)}removeStyle(n,e,i){this.delegate.removeStyle(n,e,i)}setProperty(n,e,i){"@"==e.charAt(0)&&e==JT?this.disableAnimations(n,!!i):this.delegate.setProperty(n,e,i)}setValue(n,e){this.delegate.setValue(n,e)}listen(n,e,i){return this.delegate.listen(n,e,i)}disableAnimations(n,e){this.engine.disableAnimations(n,e)}}class h6 extends eA{constructor(n,e,i,r,o){super(e,i,r,o),this.factory=n,this.namespaceId=e}setProperty(n,e,i){"@"==e.charAt(0)?"."==e.charAt(1)&&e==JT?this.disableAnimations(n,i=void 0===i||!!i):this.engine.process(this.namespaceId,n,e.slice(1),i):this.delegate.setProperty(n,e,i)}listen(n,e,i){if("@"==e.charAt(0)){const r=function f6(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(n);let o=e.slice(1),s="";return"@"!=o.charAt(0)&&([o,s]=function m6(t){const n=t.indexOf(".");return[t.substring(0,n),t.slice(n+1)]}(o)),this.engine.listen(this.namespaceId,r,o,s,a=>{this.factory.scheduleListenerCallback(a._data||-1,i,a)})}return this.delegate.listen(n,e,i)}}let p6=(()=>{class t extends nf{constructor(e,i,r,o){super(e.body,i,r)}ngOnDestroy(){this.flush()}}return t.\u0275fac=function(e){return new(e||t)(_(ge),_(iv),_(mv),_(as))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const tA=[{provide:fT,useClass:l6},{provide:mv,useFactory:function g6(){return new F8}},{provide:nf,useClass:p6},{provide:po,useFactory:function _6(t,n,e){return new u6(t,n,e)},deps:[Lh,nf,Z]}],wv=[{provide:iv,useFactory:()=>new a6},{provide:en,useValue:"BrowserAnimations"},...tA],nA=[{provide:iv,useClass:MT},{provide:en,useValue:"NoopAnimations"},...tA];let b6=(()=>{class t{static withConfig(e){return{ngModule:t,providers:e.disableAnimations?nA:wv}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:wv,imports:[ZM]}),t})();const xv={now:()=>(xv.delegate||Date).now(),delegate:void 0};class sf extends te{constructor(n=1/0,e=1/0,i=xv){super(),this._bufferSize=n,this._windowTime=e,this._timestampProvider=i,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=e===1/0,this._bufferSize=Math.max(1,n),this._windowTime=Math.max(1,e)}next(n){const{isStopped:e,_buffer:i,_infiniteTimeWindow:r,_timestampProvider:o,_windowTime:s}=this;e||(i.push(n),!r&&i.push(o.now()+s)),this._trimBuffer(),super.next(n)}_subscribe(n){this._throwIfClosed(),this._trimBuffer();const e=this._innerSubscribe(n),{_infiniteTimeWindow:i,_buffer:r}=this,o=r.slice();for(let s=0;s{class t{constructor(){this.bootstrap$=new sf(1)}get appBootstrapped$(){return this.bootstrap$.asObservable()}bootstrap(){this.bootstrap$.next(!0),this.bootstrap$.complete()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function v6(t,n){return t===n}function Dv(t,n=v6){let e=null,i=null;function r(){return function y6(t,n,e){if(null===n||null===e||n.length!==e.length)return!1;const i=n.length;for(let r=0;r{class t{static set(e){this.value=e}static pop(){const e=this.value;return this.value={},e}}return t.value={},t})();const x6=new k("\u0275NGXS_STATE_FACTORY"),C6=new k("\u0275NGXS_STATE_CONTEXT_FACTORY");class Tt extends te{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const e=super._subscribe(n);return!e.closed&&n.next(this._value),e}getValue(){const{hasError:n,thrownError:e,_value:i}=this;if(n)throw e;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}}const{isArray:D6}=Array,{getPrototypeOf:E6,prototype:S6,keys:k6}=Object;function iA(t){if(1===t.length){const n=t[0];if(D6(n))return{args:n,keys:null};if(function M6(t){return t&&"object"==typeof t&&E6(t)===S6}(n)){const e=k6(n);return{args:e.map(i=>n[i]),keys:e}}}return{args:t,keys:null}}const{isArray:T6}=Array;function af(t){return B(n=>function A6(t,n){return T6(n)?t(...n):t(n)}(t,n))}function rA(t,n){return t.reduce((e,i,r)=>(e[i]=n[r],e),{})}function Ac(...t){const n=wx(t),{args:e,keys:i}=iA(t),r=new xe(o=>{const{length:s}=e;if(!s)return void o.complete();const a=new Array(s);let l=s,c=s;for(let d=0;d{u||(u=!0,c--),a[d]=h},()=>l--,void 0,()=>{(!l||!u)&&(c||o.next(i?rA(i,a):a),o.complete())}))}});return n?r.pipe(af(n)):r}function cr(t,n){const e=qe(t)?t:()=>t,i=r=>r.error(e());return new xe(n?r=>n.schedule(i,0,r):i)}function Ic(t){return!!t&&(t instanceof xe||qe(t.lift)&&qe(t.subscribe))}function Oa(t,n,e){let i,r=!1;return t&&"object"==typeof t?({bufferSize:i=1/0,windowTime:n=1/0,refCount:r=!1,scheduler:e}=t):i=t??1/0,Il({connector:()=>new sf(i,n,e),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:r})}function Yt(t){return t<=0?()=>Cn:gt((n,e)=>{let i=0;n.subscribe(ot(e,r=>{++i<=t&&(e.next(r),t<=i&&e.complete())}))})}function oA(t,n){return n?e=>e.pipe(oA((i,r)=>Qt(t(i,r)).pipe(B((o,s)=>n(i,o,r,s))))):gt((e,i)=>{let r=0,o=null,s=!1;e.subscribe(ot(i,a=>{o||(o=ot(i,void 0,()=>{o=null,s&&i.complete()}),Qt(t(a,r++)).subscribe(o))},()=>{s=!0,!o&&i.complete()}))})}function Ra(t){return gt((n,e)=>{let i=!1;n.subscribe(ot(e,r=>{i=!0,e.next(r)},()=>{i||e.next(t),e.complete()}))})}function ii(t){return gt((n,e)=>{let o,i=null,r=!1;i=n.subscribe(ot(e,void 0,void 0,s=>{o=Qt(t(s,ii(t)(n))),i?(i.unsubscribe(),i=null,o.subscribe(e)):r=!0})),r&&(i.unsubscribe(),i=null,o.subscribe(e))})}function ze(t){return gt((n,e)=>{Qt(t).subscribe(ot(e,()=>e.complete(),ou)),!e.closed&&n.subscribe(e)})}function lf(t,n=ho){return t=t??I6,gt((e,i)=>{let r,o=!0;e.subscribe(ot(i,s=>{const a=n(s);(o||!t(r,a))&&(o=!1,r=a,i.next(s))}))})}function I6(t,n){return t===n}function We(t,n,e){const i=qe(t)||n||e?{next:t,error:n,complete:e}:t;return i?gt((r,o)=>{var s;null===(s=i.subscribe)||void 0===s||s.call(i);let a=!0;r.subscribe(ot(o,l=>{var c;null===(c=i.next)||void 0===c||c.call(i,l),o.next(l)},()=>{var l;a=!1,null===(l=i.complete)||void 0===l||l.call(i),o.complete()},l=>{var c;a=!1,null===(c=i.error)||void 0===c||c.call(i,l),o.error(l)},()=>{var l,c;a&&(null===(l=i.unsubscribe)||void 0===l||l.call(i)),null===(c=i.finalize)||void 0===c||c.call(i)}))}):ho}function cf(...t){return function O6(){return Ls(1)}()(yt(t,Al(t)))}function dr(...t){const n=Al(t);return gt((e,i)=>{(n?cf(t,e,n):cf(t,e)).subscribe(i)})}let sA=(()=>{class t{constructor(e,i){this._ngZone=e,this._platformId=i}enter(e){return vc(this._platformId)?this.runInsideAngular(e):this.runOutsideAngular(e)}leave(e){return this.runInsideAngular(e)}runInsideAngular(e){return Z.isInAngularZone()?e():this._ngZone.run(e)}runOutsideAngular(e){return Z.isInAngularZone()?this._ngZone.runOutsideAngular(e):e()}}return t.\u0275fac=function(e){return new(e||t)(_(Z),_(ss))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const aA=new k("ROOT_STATE_TOKEN"),lA=new k("FEATURE_STATE_TOKEN"),Sv=new k("NGXS_PLUGINS"),$r="NGXS_META",cA="NGXS_OPTIONS_META",kv="NGXS_SELECTOR_META";let Pa=(()=>{class t{constructor(){this.defaultsState={},this.selectorOptions={injectContainerState:!0,suppressErrors:!0},this.compatibility={strictContentSecurityPolicy:!1},this.executionStrategy=sA}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();class H6{constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}}let z6=(()=>{class t{enter(e){return e()}leave(e){return e()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const dA=new k("USER_PROVIDED_NGXS_EXECUTION_STRATEGY"),U6=new k("NGXS_EXECUTION_STRATEGY",{providedIn:"root",factory:()=>{const t=R(t_),n=t.get(dA);return t.get(n||(typeof ht.Zone<"u"?sA:z6))}});function Mv(t){if(!t.hasOwnProperty($r)){const n={name:null,actions:{},defaults:{},path:null,makeRootSelector:e=>e.getStateGetter(n.name),children:[]};Object.defineProperty(t,$r,{value:n})}return fs(t)}function fs(t){return t[$r]}function df(t){return t[kv]}function So(t){return t.constructor&&t.constructor.type?t.constructor.type:t.type}const hA=(t,n,e)=>{t=Object.assign({},t);const i=n.split("."),r=i.length-1;return i.reduce((o,s,a)=>(o[s]=a===r?e:Array.isArray(o[s])?o[s].slice():Object.assign({},o[s]),o&&o[s]),t),t},Av=(t,n)=>n.split(".").reduce((e,i)=>e&&e[i],t),Iv=t=>t&&"object"==typeof t&&!Array.isArray(t),Ov=(t,...n)=>{if(!n.length)return t;const e=n.shift();if(Iv(t)&&Iv(e))for(const i in e)Iv(e[i])?(t[i]||Object.assign(t,{[i]:{}}),Ov(t[i],e[i])):Object.assign(t,{[i]:e[i]});return Ov(t,...n)};function X6(...t){return function Fa(t,n,e=eG){const i=function tG(t){return t.reduce((n,e)=>(n[So(e)]=!0,n),{})}(t),r=n&&function nG(t){return t.reduce((n,e)=>(n[e]=!0,n),{})}(n);return function(o){return o.pipe(function Q6(t,n){return mt(e=>{const i=So(e.action);return t[i]&&(!n||n[e.status])})}(i,r),e())}}(t,["DISPATCHED"])}function eG(){return B(t=>t.action)}function Oc(t){return n=>new xe(e=>n.subscribe({next(i){t.leave(()=>e.next(i))},error(i){t.leave(()=>e.error(i))},complete(){t.leave(()=>e.complete())}}))}let uf=(()=>{class t{constructor(e){this._executionStrategy=e}enter(e){return this._executionStrategy.enter(e)}leave(e){return this._executionStrategy.leave(e)}}return t.\u0275fac=function(e){return new(e||t)(_(U6))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function fA(t){const n=[];let e=!1;return function(...r){if(e)n.unshift(r);else{for(e=!0,t(...r);n.length>0;){const o=n.pop();o&&t(...o)}e=!1}}}class iG extends te{constructor(){super(...arguments),this.next=fA(n=>super.next(n))}}class rG extends Tt{constructor(){super(...arguments),this.next=fA(n=>super.next(n))}}let hf=(()=>{class t extends iG{ngOnDestroy(){this.complete()}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),oG=(()=>{class t extends xe{constructor(e,i){const r=e.pipe(Oc(i),Il());super(o=>{const s=r.subscribe({next:a=>o.next(a),error:a=>o.error(a),complete:()=>o.complete()});o.add(s)})}}return t.\u0275fac=function(e){return new(e||t)(_(hf),_(uf))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();const mA=t=>(...n)=>t.shift()(...n,(...i)=>mA(t)(...i));let pA=(()=>{class t{constructor(e){this._injector=e,this._errorHandler=null}reportErrorSafely(e){null===this._errorHandler&&(this._errorHandler=this._injector.get(Ji));try{this._errorHandler.handleError(e)}catch{}}}return t.\u0275fac=function(e){return new(e||t)(_(xt))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),ff=(()=>{class t extends rG{constructor(){super({})}ngOnDestroy(){this.complete()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Rv=(()=>{class t{constructor(e,i){this._parentManager=e,this._pluginHandlers=i,this.plugins=[],this.registerHandlers()}get rootPlugins(){return this._parentManager&&this._parentManager.plugins||this.plugins}registerHandlers(){const e=this.getPluginHandlers();this.rootPlugins.push(...e)}getPluginHandlers(){return(this._pluginHandlers||[]).map(i=>i.handle?i.handle.bind(i):i)}}return t.\u0275fac=function(e){return new(e||t)(_(t,12),_(Sv,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Pv=(()=>{class t extends te{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),gA=(()=>{class t{constructor(e,i,r,o,s,a){this._actions=e,this._actionResults=i,this._pluginManager=r,this._stateStream=o,this._ngxsExecutionStrategy=s,this._internalErrorReporter=a}dispatch(e){return this._ngxsExecutionStrategy.enter(()=>this.dispatchByEvents(e)).pipe(function sG(t,n){return e=>{let i=!1;return e.subscribe({error:r=>{n.enter(()=>Promise.resolve().then(()=>{i||n.leave(()=>t.reportErrorSafely(r))}))}}),new xe(r=>(i=!0,e.pipe(Oc(n)).subscribe(r)))}}(this._internalErrorReporter,this._ngxsExecutionStrategy))}dispatchByEvents(e){return Array.isArray(e)?0===e.length?j(this._stateStream.getValue()):Ac(e.map(i=>this.dispatchSingle(i))):this.dispatchSingle(e)}dispatchSingle(e){const i=this._stateStream.getValue();return mA([...this._pluginManager.plugins,(o,s)=>{o!==i&&this._stateStream.next(o);const a=this.getActionResultStream(s);return a.subscribe(l=>this._actions.next(l)),this._actions.next({action:s,status:"DISPATCHED"}),this.createDispatchObservable(a)}])(i,e).pipe(Oa())}getActionResultStream(e){return this._actionResults.pipe(mt(i=>i.action===e&&"DISPATCHED"!==i.status),Yt(1),Oa())}createDispatchObservable(e){return e.pipe(oA(i=>{switch(i.status){case"SUCCESSFUL":return j(this._stateStream.getValue());case"ERRORED":return cr(i.error);default:return Cn}})).pipe(Oa())}}return t.\u0275fac=function(e){return new(e||t)(_(hf),_(Pv),_(Rv),_(ff),_(uf),_(pA))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Na=(()=>{class t{constructor(e,i,r){this._stateStream=e,this._dispatcher=i,this._config=r}getRootStateOperations(){return{getState:()=>this._stateStream.getValue(),setState:i=>this._stateStream.next(i),dispatch:i=>this._dispatcher.dispatch(i)}}setStateToTheCurrentWithNew(e){const i=this.getRootStateOperations(),r=i.getState();i.setState(Object.assign(Object.assign({},r),e.defaults))}}return t.\u0275fac=function(e){return new(e||t)(_(ff),_(gA),_(Pa))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),mf=(()=>{class t{constructor(e){this._internalStateOperations=e}createStateContext(e){const i=this._internalStateOperations.getRootStateOperations();function r(l){return Av(l,e.path)}function o(l,c){const d=hA(l,e.path,c);return i.setState(d),d}function s(l,c){return o(l,c(r(l)))}return{getState:()=>r(i.getState()),patchState(l){const c=i.getState(),d=function aG(t){return n=>{const e=Object.assign({},n);for(const i in t)e[i]=t[i];return e}}(l);return s(c,d)},setState(l){const c=i.getState();return function a(l){return"function"==typeof l}(l)?s(c,l):o(c,l)},dispatch:l=>i.dispatch(l)}}}return t.\u0275fac=function(e){return new(e||t)(_(Na))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();new RegExp("^[a-zA-Z0-9_]+$");class bA{static get type(){return"@@INIT"}}class vA{constructor(n){this.addedStates=n}static get type(){return"@@UPDATE_STATE"}}new k("NGXS_DEVELOPMENT_OPTIONS",{providedIn:"root",factory:()=>({warnOnUnhandledActions:!0})});let La=(()=>{class t{constructor(e,i,r,o,s,a,l){this._injector=e,this._config=i,this._parentFactory=r,this._actions=o,this._actionResults=s,this._stateContextFactory=a,this._initialState=l,this._actionsSubscription=null,this._states=[],this._statesByName={},this._statePaths={},this.getRuntimeSelectorContext=Dv(()=>{const c=this;function d(h){const f=c.statePaths[h];return f?function uA(t,n){return n&&n.compatibility&&n.compatibility.strictContentSecurityPolicy?function $6(t){const n=t.slice();return e=>n.reduce((i,r)=>i&&i[r],e)}(t):function G6(t){const n=t;let e="store."+n[0],i=0;const r=n.length;let o=e;for(;++i(f||(f=d(h)),f?f(...p):void 0))},getSelectorOptions:h=>Object.assign(Object.assign({},c._config.selectorOptions),h||{})}})}get states(){return this._parentFactory?this._parentFactory.states:this._states}get statesByName(){return this._parentFactory?this._parentFactory.statesByName:this._statesByName}get statePaths(){return this._parentFactory?this._parentFactory.statePaths:this._statePaths}static cloneDefaults(e){let i={};return i=Array.isArray(e)?e.slice():function K6(t){return"object"==typeof t&&null!==t||"function"==typeof t}(e)?Object.assign({},e):void 0===e?{}:e,i}ngOnDestroy(){this._actionsSubscription.unsubscribe()}add(e){const{newStates:i}=this.addToStatesMap(e);if(!i.length)return[];const r=function W6(t){const n=e=>t.find(r=>r===e)[$r].name;return t.reduce((e,i)=>{const{name:r,children:o}=i[$r];return e[r]=(o||[]).map(n),e},{})}(i),o=function Z6(t){const n=[],e={},i=(r,o=[])=>{Array.isArray(o)||(o=[]),o.push(r),e[r]=!0,t[r].forEach(s=>{e[s]||i(s,o.slice(0))}),n.indexOf(r)<0&&n.push(r)};return Object.keys(t).forEach(r=>i(r)),n.reverse()}(r),s=function Y6(t,n={}){const e=(i,r)=>{for(const o in i)if(i.hasOwnProperty(o)&&i[o].indexOf(r)>=0){const s=e(i,o);return null!==s?`${s}.${o}`:o}return null};for(const i in t)if(t.hasOwnProperty(i)){const r=e(t,i);n[i]=r?`${r}.${i}`:i}return n}(r),a=function q6(t){return t.reduce((n,e)=>(n[e[$r].name]=e,n),{})}(i),l=[];for(const c of o){const d=a[c],u=s[c],h=d[$r];this.addRuntimeInfoToMeta(h,u);const f={name:c,path:u,isInitialised:!1,actions:h.actions,instance:this._injector.get(d),defaults:t.cloneDefaults(h.defaults)};this.hasBeenMountedAndBootstrapped(c,u)||l.push(f),this.states.push(f)}return l}addAndReturnDefaults(e){const r=this.add(e||[]);return{defaults:r.reduce((s,a)=>hA(s,a.path,a.defaults),{}),states:r}}connectActionHandlers(){if(null!==this._actionsSubscription)return;const e=new te;this._actionsSubscription=this._actions.pipe(mt(i=>"DISPATCHED"===i.status),Ot(i=>{e.next(i);const r=i.action;return this.invokeActions(e,r).pipe(B(()=>({action:r,status:"SUCCESSFUL"})),Ra({action:r,status:"CANCELED"}),ii(o=>j({action:r,status:"ERRORED",error:o})))})).subscribe(i=>this._actionResults.next(i))}invokeActions(e,i){const r=So(i),o=[];let s=!1;for(const a of this.states){const l=a.actions[r];if(l)for(const c of l){const d=this._stateContextFactory.createStateContext(a);try{let u=a.instance[c.fn](d,i);u instanceof Promise&&(u=yt(u)),Ic(u)?(u=u.pipe(Ot(h=>h instanceof Promise?yt(h):Ic(h)?h:j(h)),Ra({})),c.options.cancelUncompleted&&(u=u.pipe(ze(e.pipe(X6(i)))))):u=j({}).pipe(Oa()),o.push(u)}catch(u){o.push(cr(u))}s=!0}}return o.length||o.push(j({})),Ac(o)}addToStatesMap(e){const i=[],r=this.statesByName;for(const o of e){const s=fs(o).name;!r[s]&&(i.push(o),r[s]=o)}return{newStates:i}}addRuntimeInfoToMeta(e,i){this.statePaths[e.name]=i,e.path=i}hasBeenMountedAndBootstrapped(e,i){const r=void 0!==Av(this._initialState,i);return this.statesByName[e]&&r}}return t.\u0275fac=function(e){return new(e||t)(_(xt),_(Pa),_(t,12),_(hf),_(Pv),_(mf),_(Ev,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function yA(t){const n=df(t)||fs(t);return n&&n.makeRootSelector||(()=>t)}let ms=(()=>{class t{constructor(e,i,r,o,s,a){this._stateStream=e,this._internalStateOperations=i,this._config=r,this._internalExecutionStrategy=o,this._stateFactory=s,this._selectableStateStream=this._stateStream.pipe(Oc(this._internalExecutionStrategy),Oa({bufferSize:1,refCount:!0})),this.initStateStream(a)}dispatch(e){return this._internalStateOperations.getRootStateOperations().dispatch(e)}select(e){const i=this.getStoreBoundSelectorFn(e);return this._selectableStateStream.pipe(B(i),ii(r=>{const{suppressErrors:o}=this._config.selectorOptions;return r instanceof TypeError&&o?j(void 0):cr(r)}),lf(),Oc(this._internalExecutionStrategy))}selectOnce(e){return this.select(e).pipe(Yt(1))}selectSnapshot(e){return this.getStoreBoundSelectorFn(e)(this._stateStream.getValue())}subscribe(e){return this._selectableStateStream.pipe(Oc(this._internalExecutionStrategy)).subscribe(e)}snapshot(){return this._internalStateOperations.getRootStateOperations().getState()}reset(e){return this._internalStateOperations.getRootStateOperations().setState(e)}getStoreBoundSelectorFn(e){return yA(e)(this._stateFactory.getRuntimeSelectorContext())}initStateStream(e){const i=this._stateStream.value;if(!i||0===Object.keys(i).length){const s=Object.keys(this._config.defaultsState).length>0?Object.assign(Object.assign({},this._config.defaultsState),e):e;this._stateStream.next(s)}}}return t.\u0275fac=function(e){return new(e||t)(_(ff),_(Na),_(Pa),_(uf),_(La),_(Ev,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Fv=(()=>{class t{constructor(e,i,r,o,s){this._store=e,this._internalErrorReporter=i,this._internalStateOperations=r,this._stateContextFactory=o,this._bootstrapper=s,this._destroy$=new te}ngOnDestroy(){this._destroy$.next()}ngxsBootstrap(e,i){this._internalStateOperations.getRootStateOperations().dispatch(e).pipe(mt(()=>!!i),We(()=>this._invokeInitOnStates(i.states)),Ot(()=>this._bootstrapper.appBootstrapped$),mt(r=>!!r),ii(r=>(this._internalErrorReporter.reportErrorSafely(r),Cn)),ze(this._destroy$)).subscribe(()=>this._invokeBootstrapOnStates(i.states))}_invokeInitOnStates(e){for(const i of e){const r=i.instance;r.ngxsOnChanges&&this._store.select(o=>Av(o,i.path)).pipe(dr(void 0),gt((t,n)=>{let e,i=!1;t.subscribe(ot(n,r=>{const o=e;e=r,i&&n.next([o,r]),i=!0}))}),ze(this._destroy$)).subscribe(([o,s])=>{const a=new H6(o,s,!i.isInitialised);r.ngxsOnChanges(a)}),r.ngxsOnInit&&r.ngxsOnInit(this._getStateContext(i)),i.isInitialised=!0}}_invokeBootstrapOnStates(e){for(const i of e){const r=i.instance;r.ngxsAfterBootstrap&&r.ngxsAfterBootstrap(this._getStateContext(i))}}_getStateContext(e){return this._stateContextFactory.createStateContext(e)}}return t.\u0275fac=function(e){return new(e||t)(_(ms),_(pA),_(Na),_(mf),_(Cv))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Rc=(()=>{class t{constructor(e,i){t.store=e,t.config=i}ngOnDestroy(){t.store=null,t.config=null}}return t.store=null,t.config=null,t.\u0275fac=function(e){return new(e||t)(_(ms),_(Pa))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),mG=(()=>{class t{constructor(e,i,r,o,s=[],a){const l=e.addAndReturnDefaults(s);i.setStateToTheCurrentWithNew(l),e.connectActionHandlers(),a.ngxsBootstrap(new bA,l)}}return t.\u0275fac=function(e){return new(e||t)(_(La),_(Na),_(ms),_(Rc),_(aA,8),_(Fv))},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})(),pG=(()=>{class t{constructor(e,i,r,o=[],s){const a=t.flattenStates(o),l=r.addAndReturnDefaults(a);l.states.length&&(i.setStateToTheCurrentWithNew(l),s.ngxsBootstrap(new vA(l.defaults),l))}static flattenStates(e=[]){return e.reduce((i,r)=>i.concat(r),[])}}return t.\u0275fac=function(e){return new(e||t)(_(ms),_(Na),_(La),_(lA,8),_(Fv))},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})();class sn{static forRoot(n=[],e={}){return{ngModule:mG,providers:[La,mf,oG,hf,Cv,Fv,gA,Pv,Na,uf,ms,ff,Rc,Rv,...n,...sn.ngxsTokenProviders(n,e)]}}static forFeature(n=[]){return{ngModule:pG,providers:[La,Rv,...n,{provide:lA,multi:!0,useValue:n}]}}static ngxsTokenProviders(n,e){return[{provide:dA,useValue:e.executionStrategy},{provide:aA,useValue:n},{provide:sn.ROOT_OPTIONS,useValue:e},{provide:Pa,useFactory:sn.ngxsConfigFactory,deps:[sn.ROOT_OPTIONS]},{provide:ph,useFactory:sn.appBootstrapListenerFactory,multi:!0,deps:[Cv]},{provide:Ev,useFactory:sn.getInitialState},{provide:C6,useExisting:mf},{provide:x6,useExisting:La}]}static ngxsConfigFactory(n){return Ov(new Pa,n)}static appBootstrapListenerFactory(n){return()=>n.bootstrap()}static getInitialState(){return w6.pop()}}function He(t,n){return(e,i)=>{const r=Mv(e.constructor);Array.isArray(t)||(t=[t]);for(const o of t){const s=o.type;r.actions[s]||(r.actions[s]=[]),r.actions[s].push({fn:i,options:n||{},type:s})}}}function Ei(t){return i=>{const r=i,o=Mv(r),s=Object.getPrototypeOf(r),a=function n(i){return Object.assign(Object.assign({},i[cA]||{}),t)}(s);(function e(i){const{meta:r,inheritedStateClass:o,optionsWithInheritance:s}=i,{children:a,defaults:l,name:c}=s,d="string"==typeof c?c:c&&c.getName()||null;if(o.hasOwnProperty($r)){const u=o[$r]||{};r.actions=Object.assign(Object.assign({},r.actions),u.actions)}r.children=a,r.defaults=l,r.name=d})({meta:o,inheritedStateClass:s,optionsWithInheritance:a}),r[cA]=a}}sn.ROOT_OPTIONS=new k("ROOT_OPTIONS"),sn.\u0275fac=function(n){return new(n||sn)},sn.\u0275mod=pe({type:sn}),sn.\u0275inj=ue({});const wA="NGXS_SELECTOR_OPTIONS_META",pf={getOptions:t=>t&&t[wA]||{},defineOptions:(t,n)=>{t&&(t[wA]=n)}};function yG(t,n){const e=function Tv(t){return t.hasOwnProperty(kv)||Object.defineProperty(t,kv,{value:{makeRootSelector:null,originalFn:null,containerClass:null,selectorName:null,getSelectorOptions:()=>({})}}),df(t)}(t);e.originalFn=t;let i=()=>({});n&&(e.containerClass=n.containerClass,e.selectorName=n.selectorName||null,i=n.getSelectorOptions||i);const r=Object.assign({},e);return e.getSelectorOptions=()=>function wG(t,n){return Object.assign(Object.assign(Object.assign(Object.assign({},pf.getOptions(t.containerClass)||{}),pf.getOptions(t.originalFn)||{}),t.getSelectorOptions()||{}),n)}(r,i()),e}function Pc(t,n,e){const i=function uG(t,n){const e=n&&n.containerClass,r=Dv(function(...s){const a=t.apply(e,s);return a instanceof Function?Dv.apply(null,[a]):a});return Object.setPrototypeOf(r,t),r}(n,e),r=yG(n,e);return r.makeRootSelector=function dG(t,n,e){return i=>{const{argumentSelectorFunctions:r,selectorOptions:o}=function hG(t,n,e=[]){const i=n.getSelectorOptions(),r=t.getSelectorOptions(i),s=function fG(t=[],n,e){const i=[];return e&&(0===t.length||n.injectContainerState)&&fs(e)&&i.push(e),t&&i.push(...t),i}(e,r,n.containerClass).map(a=>yA(a)(t));return{selectorOptions:r,argumentSelectorFunctions:s}}(i,t,n);return function(a){const l=r.map(c=>c(a));try{return e(...l)}catch(c){if(c instanceof TypeError&&o.suppressErrors)return;throw c}}}}(r,t,i),i}function Dt(t){return(n,e,i)=>{i||(i=Object.getOwnPropertyDescriptor(n,e));const r=i?.value,o=Pc(t,r,{containerClass:n,selectorName:e.toString(),getSelectorOptions:()=>({})}),s={configurable:!0,get:()=>o};return s.originalFn=r,s}}function xA(t,n,e,i,r,o,s){try{var a=t[o](s),l=a.value}catch(c){return void e(c)}a.done?n(l):Promise.resolve(l).then(i,r)}function Si(t){return function(){var n=this,e=arguments;return new Promise(function(i,r){var o=t.apply(n,e);function s(l){xA(o,i,r,s,a,"next",l)}function a(l){xA(o,i,r,s,a,"throw",l)}s(void 0)})}}const Fc=Vp(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function Ba(...t){const n=Al(t),e=wx(t),{args:i,keys:r}=iA(t);if(0===i.length)return yt([],n);const o=new xe(function CG(t,n,e=ho){return i=>{CA(n,()=>{const{length:r}=t,o=new Array(r);let s=r,a=r;for(let l=0;l{const c=yt(t[l],n);let d=!1;c.subscribe(ot(i,u=>{o[l]=u,d||(d=!0,a--),a||i.next(e(o.slice()))},()=>{--s||i.complete()}))},i)},i)}}(i,n,r?s=>rA(r,s):ho));return e?o.pipe(af(e)):o}function CA(t,n,e){t?Cr(e,t,n):n()}function _f(t){return new xe(n=>{Qt(t()).subscribe(n)})}function Lv(){return gt((t,n)=>{let e=null;t._refCount++;const i=ot(n,void 0,void 0,void 0,()=>{if(!t||t._refCount<=0||0<--t._refCount)return void(e=null);const r=t._connection,o=e;e=null,r&&(!o||r===o)&&r.unsubscribe(),n.unsubscribe()});t.subscribe(i),i.closed||(e=t.connect())})}class Bv extends xe{constructor(n,e){super(),this.source=n,this.subjectFactory=e,this._subject=null,this._refCount=0,this._connection=null,ax(n)&&(this.lift=n.lift)}_subscribe(n){return this.getSubject().subscribe(n)}getSubject(){const n=this._subject;return(!n||n.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:n}=this;this._subject=this._connection=null,n?.unsubscribe()}connect(){let n=this._connection;if(!n){n=this._connection=new rt;const e=this.getSubject();n.add(this.source.subscribe(ot(e,void 0,()=>{this._teardown(),e.complete()},i=>{this._teardown(),e.error(i)},()=>this._teardown()))),n.closed&&(this._connection=null,n=rt.EMPTY)}return n}refCount(){return Lv()(this)}}function Hn(t,n){return gt((e,i)=>{let r=null,o=0,s=!1;const a=()=>s&&!r&&i.complete();e.subscribe(ot(i,l=>{r?.unsubscribe();let c=0;const d=o++;Qt(t(l,d)).subscribe(r=ot(i,u=>i.next(n?n(l,u,d,c++):u),()=>{r=null,a()}))},()=>{s=!0,a()}))})}function DA(t=DG){return gt((n,e)=>{let i=!1;n.subscribe(ot(e,r=>{i=!0,e.next(r)},()=>i?e.complete():e.error(t())))})}function DG(){return new Fc}function Gr(t,n){const e=arguments.length>=2;return i=>i.pipe(t?mt((r,o)=>t(r,o,i)):ho,Yt(1),e?Ra(n):DA(()=>new Fc))}function EA(t,n){return gt(function EG(t,n,e,i,r){return(o,s)=>{let a=e,l=n,c=0;o.subscribe(ot(s,d=>{const u=c++;l=a?t(l,d,u):(a=!0,d),i&&s.next(l)},r&&(()=>{a&&s.next(l),s.complete()})))}}(t,n,arguments.length>=2,!0))}function Vv(t){return t<=0?()=>Cn:gt((n,e)=>{let i=[];n.subscribe(ot(e,r=>{i.push(r),t{for(const r of i)e.next(r);e.complete()},void 0,()=>{i=null}))})}function SA(t,n){const e=arguments.length>=2;return i=>i.pipe(t?mt((r,o)=>t(r,o,i)):ho,Vv(1),e?Ra(n):DA(()=>new Fc))}function kA(t,n=!1){return gt((e,i)=>{let r=0;e.subscribe(ot(i,o=>{const s=t(o,r++);(s||n)&&i.next(o),!s&&i.complete()}))})}function MA(t){return B(()=>t)}function bf(t){return gt((n,e)=>{try{n.subscribe(e)}finally{e.add(t)}})}const Me="primary",Nc=Symbol("RouteTitle");class SG{constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function Va(t){return new SG(t)}function kG(t,n,e){const i=e.path.split("/");if(i.length>t.length||"full"===e.pathMatch&&(n.hasChildren()||i.lengthi[o]===r)}return t===n}function AA(t){return Array.prototype.concat.apply([],t)}function IA(t){return t.length>0?t[t.length-1]:null}function an(t,n){for(const e in t)t.hasOwnProperty(e)&&n(t[e],e)}function ko(t){return O_(t)?t:rc(t)?yt(Promise.resolve(t)):j(t)}const vf=!1,TG={exact:function PA(t,n,e){if(!ps(t.segments,n.segments)||!yf(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(const i in n.children)if(!t.children[i]||!PA(t.children[i],n.children[i],e))return!1;return!0},subset:FA},OA={exact:function AG(t,n){return ur(t,n)},subset:function IG(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>TA(t[e],n[e]))},ignored:()=>!0};function RA(t,n,e){return TG[e.paths](t.root,n.root,e.matrixParams)&&OA[e.queryParams](t.queryParams,n.queryParams)&&!("exact"===e.fragment&&t.fragment!==n.fragment)}function FA(t,n,e){return NA(t,n,n.segments,e)}function NA(t,n,e,i){if(t.segments.length>e.length){const r=t.segments.slice(0,e.length);return!(!ps(r,e)||n.hasChildren()||!yf(r,e,i))}if(t.segments.length===e.length){if(!ps(t.segments,e)||!yf(t.segments,e,i))return!1;for(const r in n.children)if(!t.children[r]||!FA(t.children[r],n.children[r],i))return!1;return!0}{const r=e.slice(0,t.segments.length),o=e.slice(t.segments.length);return!!(ps(t.segments,r)&&yf(t.segments,r,i)&&t.children[Me])&&NA(t.children[Me],n,o,i)}}function yf(t,n,e){return n.every((i,r)=>OA[e](t[r].parameters,i.parameters))}class Mo{constructor(n=new Ne([],{}),e={},i=null){this.root=n,this.queryParams=e,this.fragment=i}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Va(this.queryParams)),this._queryParamMap}toString(){return PG.serialize(this)}}class Ne{constructor(n,e){this.segments=n,this.children=e,this.parent=null,an(e,(i,r)=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return wf(this)}}class Lc{constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=Va(this.parameters)),this._parameterMap}toString(){return VA(this)}}function ps(t,n){return t.length===n.length&&t.every((e,i)=>e.path===n[i].path)}let Bc=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return new jv},providedIn:"root"}),t})();class jv{parse(n){const e=new UG(n);return new Mo(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){const e=`/${Vc(n.root,!0)}`,i=function LG(t){const n=Object.keys(t).map(e=>{const i=t[e];return Array.isArray(i)?i.map(r=>`${xf(e)}=${xf(r)}`).join("&"):`${xf(e)}=${xf(i)}`}).filter(e=>!!e);return n.length?`?${n.join("&")}`:""}(n.queryParams);return`${e}${i}${"string"==typeof n.fragment?`#${function FG(t){return encodeURI(t)}(n.fragment)}`:""}`}}const PG=new jv;function wf(t){return t.segments.map(n=>VA(n)).join("/")}function Vc(t,n){if(!t.hasChildren())return wf(t);if(n){const e=t.children[Me]?Vc(t.children[Me],!1):"",i=[];return an(t.children,(r,o)=>{o!==Me&&i.push(`${o}:${Vc(r,!1)}`)}),i.length>0?`${e}(${i.join("//")})`:e}{const e=function RG(t,n){let e=[];return an(t.children,(i,r)=>{r===Me&&(e=e.concat(n(i,r)))}),an(t.children,(i,r)=>{r!==Me&&(e=e.concat(n(i,r)))}),e}(t,(i,r)=>r===Me?[Vc(t.children[Me],!1)]:[`${r}:${Vc(i,!1)}`]);return 1===Object.keys(t.children).length&&null!=t.children[Me]?`${wf(t)}/${e[0]}`:`${wf(t)}/(${e.join("//")})`}}function LA(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function xf(t){return LA(t).replace(/%3B/gi,";")}function Hv(t){return LA(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Cf(t){return decodeURIComponent(t)}function BA(t){return Cf(t.replace(/\+/g,"%20"))}function VA(t){return`${Hv(t.path)}${function NG(t){return Object.keys(t).map(n=>`;${Hv(n)}=${Hv(t[n])}`).join("")}(t.parameters)}`}const BG=/^[^\/()?;=#]+/;function Df(t){const n=t.match(BG);return n?n[0]:""}const VG=/^[^=?&#]+/,HG=/^[^&#]+/;class UG{constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new Ne([],{}):new Ne([],this.parseChildren())}parseQueryParams(){const n={};if(this.consumeOptional("?"))do{this.parseQueryParam(n)}while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1)),(n.length>0||Object.keys(e).length>0)&&(i[Me]=new Ne(n,e)),i}parseSegment(){const n=Df(this.remaining);if(""===n&&this.peekStartsWith(";"))throw new A(4009,vf);return this.capture(n),new Lc(Cf(n),this.parseMatrixParams())}parseMatrixParams(){const n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){const e=Df(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const r=Df(this.remaining);r&&(i=r,this.capture(i))}n[Cf(e)]=Cf(i)}parseQueryParam(n){const e=function jG(t){const n=t.match(VG);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const s=function zG(t){const n=t.match(HG);return n?n[0]:""}(this.remaining);s&&(i=s,this.capture(i))}const r=BA(e),o=BA(i);if(n.hasOwnProperty(r)){let s=n[r];Array.isArray(s)||(s=[s],n[r]=s),s.push(o)}else n[r]=o}parseParens(n){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const i=Df(this.remaining),r=this.remaining[i.length];if("/"!==r&&")"!==r&&";"!==r)throw new A(4010,vf);let o;i.indexOf(":")>-1?(o=i.slice(0,i.indexOf(":")),this.capture(o),this.capture(":")):n&&(o=Me);const s=this.parseChildren();e[o]=1===Object.keys(s).length?s[Me]:new Ne([],s),this.consumeOptional("//")}return e}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return!!this.peekStartsWith(n)&&(this.remaining=this.remaining.substring(n.length),!0)}capture(n){if(!this.consumeOptional(n))throw new A(4011,vf)}}function zv(t){return t.segments.length>0?new Ne([],{[Me]:t}):t}function Ef(t){const n={};for(const i of Object.keys(t.children)){const o=Ef(t.children[i]);(o.segments.length>0||o.hasChildren())&&(n[i]=o)}return function $G(t){if(1===t.numberOfChildren&&t.children[Me]){const n=t.children[Me];return new Ne(t.segments.concat(n.segments),n.children)}return t}(new Ne(t.segments,n))}function gs(t){return t instanceof Mo}const Uv=!1;function GG(t,n,e,i,r){if(0===e.length)return ja(n.root,n.root,n.root,i,r);const o=function $A(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new UA(!0,0,t);let n=0,e=!1;const i=t.reduce((r,o,s)=>{if("object"==typeof o&&null!=o){if(o.outlets){const a={};return an(o.outlets,(l,c)=>{a[c]="string"==typeof l?l.split("/"):l}),[...r,{outlets:a}]}if(o.segmentPath)return[...r,o.segmentPath]}return"string"!=typeof o?[...r,o]:0===s?(o.split("/").forEach((a,l)=>{0==l&&"."===a||(0==l&&""===a?e=!0:".."===a?n++:""!=a&&r.push(a))}),r):[...r,o]},[]);return new UA(e,n,i)}(e);return o.toRoot()?ja(n.root,n.root,new Ne([],{}),i,r):function s(l){const c=function qG(t,n,e,i){if(t.isAbsolute)return new Ha(n.root,!0,0);if(-1===i)return new Ha(e,e===n.root,0);return function GA(t,n,e){let i=t,r=n,o=e;for(;o>r;){if(o-=r,i=i.parent,!i)throw new A(4005,Uv&&"Invalid number of '../'");r=i.segments.length}return new Ha(i,!1,r-o)}(e,i+(jc(t.commands[0])?0:1),t.numberOfDoubleDots)}(o,n,t.snapshot?._urlSegment,l),d=c.processChildren?za(c.segmentGroup,c.index,o.commands):$v(c.segmentGroup,c.index,o.commands);return ja(n.root,c.segmentGroup,d,i,r)}(t.snapshot?._lastPathIndex)}function jc(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function Hc(t){return"object"==typeof t&&null!=t&&t.outlets}function ja(t,n,e,i,r){let s,o={};i&&an(i,(l,c)=>{o[c]=Array.isArray(l)?l.map(d=>`${d}`):`${l}`}),s=t===n?e:zA(t,n,e);const a=zv(Ef(s));return new Mo(a,o,r)}function zA(t,n,e){const i={};return an(t.children,(r,o)=>{i[o]=r===n?e:zA(r,n,e)}),new Ne(t.segments,i)}class UA{constructor(n,e,i){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=i,n&&i.length>0&&jc(i[0]))throw new A(4003,Uv&&"Root segment cannot have matrix parameters");const r=i.find(Hc);if(r&&r!==IA(i))throw new A(4004,Uv&&"{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Ha{constructor(n,e,i){this.segmentGroup=n,this.processChildren=e,this.index=i}}function $v(t,n,e){if(t||(t=new Ne([],{})),0===t.segments.length&&t.hasChildren())return za(t,n,e);const i=function ZG(t,n,e){let i=0,r=n;const o={match:!1,pathIndex:0,commandIndex:0};for(;r=e.length)return o;const s=t.segments[r],a=e[i];if(Hc(a))break;const l=`${a}`,c=i0&&void 0===l)break;if(l&&c&&"object"==typeof c&&void 0===c.outlets){if(!qA(l,c,s))return o;i+=2}else{if(!qA(l,{},s))return o;i++}r++}return{match:!0,pathIndex:r,commandIndex:i}}(t,n,e),r=e.slice(i.commandIndex);if(i.match&&i.pathIndex{"string"==typeof o&&(o=[o]),null!==o&&(r[s]=$v(t.children[s],n,o))}),an(t.children,(o,s)=>{void 0===i[s]&&(r[s]=o)}),new Ne(t.segments,r)}}function Gv(t,n,e){const i=t.segments.slice(0,n);let r=0;for(;r{"string"==typeof e&&(e=[e]),null!==e&&(n[i]=Gv(new Ne([],{}),0,e))}),n}function WA(t){const n={};return an(t,(e,i)=>n[i]=`${e}`),n}function qA(t,n,e){return t==e.path&&ur(n,e.parameters)}const zc="imperative";class hr{constructor(n,e){this.id=n,this.url=e}}class Wv extends hr{constructor(n,e,i="imperative",r=null){super(n,e),this.type=0,this.navigationTrigger=i,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class To extends hr{constructor(n,e,i){super(n,e),this.urlAfterRedirects=i,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Sf extends hr{constructor(n,e,i,r){super(n,e),this.reason=i,this.code=r,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class kf extends hr{constructor(n,e,i,r){super(n,e),this.reason=i,this.code=r,this.type=16}}class qv extends hr{constructor(n,e,i,r){super(n,e),this.error=i,this.target=r,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class XG extends hr{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class QG extends hr{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class JG extends hr{constructor(n,e,i,r,o){super(n,e),this.urlAfterRedirects=i,this.state=r,this.shouldActivate=o,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class eW extends hr{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class tW extends hr{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class nW{constructor(n){this.route=n,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class iW{constructor(n){this.route=n,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class rW{constructor(n){this.snapshot=n,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class oW{constructor(n){this.snapshot=n,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class sW{constructor(n){this.snapshot=n,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class aW{constructor(n){this.snapshot=n,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class YA{constructor(n,e,i){this.routerEvent=n,this.position=e,this.anchor=i,this.type=15}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}let dW=(()=>{class t{createUrlTree(e,i,r,o,s,a){return GG(e||i.root,r,o,s,a)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),hW=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(n){return dW.\u0275fac(n)},providedIn:"root"}),t})();class ZA{constructor(n){this._root=n}get root(){return this._root.value}parent(n){const e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){const e=Yv(n,this._root);return e?e.children.map(i=>i.value):[]}firstChild(n){const e=Yv(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){const e=Zv(n,this._root);return e.length<2?[]:e[e.length-2].children.map(r=>r.value).filter(r=>r!==n)}pathFromRoot(n){return Zv(n,this._root).map(e=>e.value)}}function Yv(t,n){if(t===n.value)return n;for(const e of n.children){const i=Yv(t,e);if(i)return i}return null}function Zv(t,n){if(t===n.value)return[n];for(const e of n.children){const i=Zv(t,e);if(i.length)return i.unshift(n),i}return[]}class Wr{constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}}function Ua(t){const n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}class KA extends ZA{constructor(n,e){super(n),this.snapshot=e,Kv(this,n)}toString(){return this.snapshot.toString()}}function XA(t,n){const e=function fW(t,n){const s=new Mf([],{},{},"",{},Me,n,null,t.root,-1,{});return new JA("",new Wr(s,[]))}(t,n),i=new Tt([new Lc("",{})]),r=new Tt({}),o=new Tt({}),s=new Tt({}),a=new Tt(""),l=new Ao(i,r,s,a,o,Me,n,e.root);return l.snapshot=e.root,new KA(new Wr(l,[]),e)}class Ao{constructor(n,e,i,r,o,s,a,l){this.url=n,this.params=e,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.title=this.data?.pipe(B(c=>c[Nc]))??j(void 0),this._futureSnapshot=l}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(B(n=>Va(n)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(B(n=>Va(n)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function QA(t,n="emptyOnly"){const e=t.pathFromRoot;let i=0;if("always"!==n)for(i=e.length-1;i>=1;){const r=e[i],o=e[i-1];if(r.routeConfig&&""===r.routeConfig.path)i--;else{if(o.component)break;i--}}return function mW(t){return t.reduce((n,e)=>({params:{...n.params,...e.params},data:{...n.data,...e.data},resolve:{...e.data,...n.resolve,...e.routeConfig?.data,...e._resolvedData}}),{params:{},data:{},resolve:{}})}(e.slice(i))}class Mf{get title(){return this.data?.[Nc]}constructor(n,e,i,r,o,s,a,l,c,d,u){this.url=n,this.params=e,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.routeConfig=l,this._urlSegment=c,this._lastPathIndex=d,this._resolve=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=Va(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=Va(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(i=>i.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class JA extends ZA{constructor(n,e){super(e),this.url=n,Kv(this,e)}toString(){return e1(this._root)}}function Kv(t,n){n.value._routerState=t,n.children.forEach(e=>Kv(t,e))}function e1(t){const n=t.children.length>0?` { ${t.children.map(e1).join(", ")} } `:"";return`${t.value}${n}`}function Xv(t){if(t.snapshot){const n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,ur(n.queryParams,e.queryParams)||t.queryParams.next(e.queryParams),n.fragment!==e.fragment&&t.fragment.next(e.fragment),ur(n.params,e.params)||t.params.next(e.params),function MG(t,n){if(t.length!==n.length)return!1;for(let e=0;eur(e.parameters,n[i].parameters))}(t.url,n.url);return e&&!(!t.parent!=!n.parent)&&(!t.parent||Qv(t.parent,n.parent))}function Uc(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){const i=e.value;i._futureSnapshot=n.value;const r=function gW(t,n,e){return n.children.map(i=>{for(const r of e.children)if(t.shouldReuseRoute(i.value,r.value.snapshot))return Uc(t,i,r);return Uc(t,i)})}(t,n,e);return new Wr(i,r)}{if(t.shouldAttach(n.value)){const o=t.retrieve(n.value);if(null!==o){const s=o.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Uc(t,a)),s}}const i=function _W(t){return new Ao(new Tt(t.url),new Tt(t.params),new Tt(t.queryParams),new Tt(t.fragment),new Tt(t.data),t.outlet,t.component,t)}(n.value),r=n.children.map(o=>Uc(t,o));return new Wr(i,r)}}const Jv="ngNavigationCancelingError";function t1(t,n){const{redirectTo:e,navigationBehaviorOptions:i}=gs(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,r=n1(!1,0,n);return r.url=e,r.navigationBehaviorOptions=i,r}function n1(t,n,e){const i=new Error("NavigationCancelingError: "+(t||""));return i[Jv]=!0,i.cancellationCode=n,e&&(i.url=e),i}function r1(t){return o1(t)&&gs(t.url)}function o1(t){return t&&t[Jv]}class bW{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new $c,this.attachRef=null}}let $c=(()=>{class t{constructor(){this.contexts=new Map}onChildOutletCreated(e,i){const r=this.getOrCreateContext(e);r.outlet=i,this.contexts.set(e,r)}onChildOutletDestroyed(e){const i=this.getContext(e);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let i=this.getContext(e);return i||(i=new bW,this.contexts.set(e,i)),i}getContext(e){return this.contexts.get(e)||null}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const Tf=!1;let ey=(()=>{class t{constructor(){this.activated=null,this._activatedRoute=null,this.name=Me,this.activateEvents=new Q,this.deactivateEvents=new Q,this.attachEvents=new Q,this.detachEvents=new Q,this.parentContexts=R($c),this.location=R(it),this.changeDetector=R(tn),this.environmentInjector=R(Qi)}ngOnChanges(e){if(e.name){const{firstChange:i,previousValue:r}=e.name;if(i)return;this.isTrackedInParentContexts(r)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(r)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new A(4012,Tf);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new A(4012,Tf);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new A(4012,Tf);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,i){this.activated=e,this._activatedRoute=i,this.location.insert(e.hostView),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,i){if(this.isActivated)throw new A(4013,Tf);this._activatedRoute=e;const r=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,l=new vW(e,a,r.injector);if(i&&function yW(t){return!!t.resolveComponentFactory}(i)){const c=i.resolveComponentFactory(s);this.activated=r.createComponent(c,r.length,l)}else this.activated=r.createComponent(s,{index:r.length,injector:l,environmentInjector:i??this.environmentInjector});this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[st]}),t})();class vW{constructor(n,e,i){this.route=n,this.childContexts=e,this.parent=i}get(n,e){return n===Ao?this.route:n===$c?this.childContexts:this.parent.get(n,e)}}let ty=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=$({type:t,selectors:[["ng-component"]],standalone:!0,features:[Be],decls:1,vars:0,template:function(e,i){1&e&&G(0,"router-outlet")},dependencies:[ey],encapsulation:2}),t})();function s1(t,n){return t.providers&&!t._injector&&(t._injector=lh(t.providers,n,`Route: ${t.path}`)),t._injector??n}function iy(t){const n=t.children&&t.children.map(iy),e=n?{...t,children:n}:{...t};return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==Me&&(e.component=ty),e}function ki(t){return t.outlet||Me}function a1(t,n){const e=t.filter(i=>ki(i)===n);return e.push(...t.filter(i=>ki(i)!==n)),e}function Gc(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let n=t.parent;n;n=n.parent){const e=n.routeConfig;if(e?._loadedInjector)return e._loadedInjector;if(e?._injector)return e._injector}return null}class EW{constructor(n,e,i,r){this.routeReuseStrategy=n,this.futureState=e,this.currState=i,this.forwardEvent=r}activate(n){const e=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,i,n),Xv(this.futureState.root),this.activateChildRoutes(e,i,n)}deactivateChildRoutes(n,e,i){const r=Ua(e);n.children.forEach(o=>{const s=o.value.outlet;this.deactivateRoutes(o,r[s],i),delete r[s]}),an(r,(o,s)=>{this.deactivateRouteAndItsChildren(o,i)})}deactivateRoutes(n,e,i){const r=n.value,o=e?e.value:null;if(r===o)if(r.component){const s=i.getContext(r.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,i);else o&&this.deactivateRouteAndItsChildren(e,i)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){const i=e.getContext(n.value.outlet),r=i&&n.value.component?i.children:e,o=Ua(n);for(const s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);if(i&&i.outlet){const s=i.outlet.detach(),a=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){const i=e.getContext(n.value.outlet),r=i&&n.value.component?i.children:e,o=Ua(n);for(const s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);i&&(i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated()),i.attachRef=null,i.resolver=null,i.route=null)}activateChildRoutes(n,e,i){const r=Ua(e);n.children.forEach(o=>{this.activateRoutes(o,r[o.value.outlet],i),this.forwardEvent(new aW(o.value.snapshot))}),n.children.length&&this.forwardEvent(new oW(n.value.snapshot))}activateRoutes(n,e,i){const r=n.value,o=e?e.value:null;if(Xv(r),r===o)if(r.component){const s=i.getOrCreateContext(r.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,i);else if(r.component){const s=i.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){const a=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),Xv(a.route.value),this.activateChildRoutes(n,null,s.children)}else{const a=Gc(r.snapshot),l=a?.get(Ni)??null;s.attachRef=null,s.route=r,s.resolver=l,s.injector=a,s.outlet&&s.outlet.activateWith(r,s.injector),this.activateChildRoutes(n,null,s.children)}}else this.activateChildRoutes(n,null,i)}}class l1{constructor(n){this.path=n,this.route=this.path[this.path.length-1]}}class Af{constructor(n,e){this.component=n,this.route=e}}function SW(t,n,e){const i=t._root;return Wc(i,n?n._root:null,e,[i.value])}function $a(t,n){const e=Symbol(),i=n.get(t,e);return i===e?"function"!=typeof t||function yL(t){return null!==uu(t)}(t)?n.get(t):t:i}function Wc(t,n,e,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=Ua(n);return t.children.forEach(s=>{(function MW(t,n,e,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){const l=function TW(t,n,e){if("function"==typeof e)return e(t,n);switch(e){case"pathParamsChange":return!ps(t.url,n.url);case"pathParamsOrQueryParamsChange":return!ps(t.url,n.url)||!ur(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Qv(t,n)||!ur(t.queryParams,n.queryParams);default:return!Qv(t,n)}}(s,o,o.routeConfig.runGuardsAndResolvers);l?r.canActivateChecks.push(new l1(i)):(o.data=s.data,o._resolvedData=s._resolvedData),Wc(t,n,o.component?a?a.children:null:e,i,r),l&&a&&a.outlet&&a.outlet.isActivated&&r.canDeactivateChecks.push(new Af(a.outlet.component,s))}else s&&qc(n,a,r),r.canActivateChecks.push(new l1(i)),Wc(t,null,o.component?a?a.children:null:e,i,r)})(s,o[s.value.outlet],e,i.concat([s.value]),r),delete o[s.value.outlet]}),an(o,(s,a)=>qc(s,e.getContext(a),r)),r}function qc(t,n,e){const i=Ua(t),r=t.value;an(i,(o,s)=>{qc(o,r.component?n?n.children.getContext(s):null:n,e)}),e.canDeactivateChecks.push(new Af(r.component&&n&&n.outlet&&n.outlet.isActivated?n.outlet.component:null,r))}function Yc(t){return"function"==typeof t}function ry(t){return t instanceof Fc||"EmptyError"===t?.name}const If=Symbol("INITIAL_VALUE");function Ga(){return Hn(t=>Ba(t.map(n=>n.pipe(Yt(1),dr(If)))).pipe(B(n=>{for(const e of n)if(!0!==e){if(e===If)return If;if(!1===e||e instanceof Mo)return e}return!0}),mt(n=>n!==If),Yt(1)))}function c1(t){return function zN(...t){return rx(t)}(We(n=>{if(gs(n))throw t1(0,n)}),B(n=>!0===n))}const oy={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function d1(t,n,e,i,r){const o=sy(t,n,e);return o.matched?function WW(t,n,e,i){const r=n.canMatch;return r&&0!==r.length?j(r.map(s=>{const a=$a(s,t);return ko(function FW(t){return t&&Yc(t.canMatch)}(a)?a.canMatch(n,e):t.runInContext(()=>a(n,e)))})).pipe(Ga(),c1()):j(!0)}(i=s1(n,i),n,e).pipe(B(s=>!0===s?o:{...oy})):j(o)}function sy(t,n,e){if(""===n.path)return"full"===n.pathMatch&&(t.hasChildren()||e.length>0)?{...oy}:{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};const r=(n.matcher||kG)(e,t,n);if(!r)return{...oy};const o={};an(r.posParams,(a,l)=>{o[l]=a.path});const s=r.consumed.length>0?{...o,...r.consumed[r.consumed.length-1].parameters}:o;return{matched:!0,consumedSegments:r.consumed,remainingSegments:e.slice(r.consumed.length),parameters:s,positionalParamSegments:r.posParams??{}}}function Of(t,n,e,i){if(e.length>0&&function ZW(t,n,e){return e.some(i=>Rf(t,n,i)&&ki(i)!==Me)}(t,e,i)){const o=new Ne(n,function YW(t,n,e,i){const r={};r[Me]=i,i._sourceSegment=t,i._segmentIndexShift=n.length;for(const o of e)if(""===o.path&&ki(o)!==Me){const s=new Ne([],{});s._sourceSegment=t,s._segmentIndexShift=n.length,r[ki(o)]=s}return r}(t,n,i,new Ne(e,t.children)));return o._sourceSegment=t,o._segmentIndexShift=n.length,{segmentGroup:o,slicedSegments:[]}}if(0===e.length&&function KW(t,n,e){return e.some(i=>Rf(t,n,i))}(t,e,i)){const o=new Ne(t.segments,function qW(t,n,e,i,r){const o={};for(const s of i)if(Rf(t,e,s)&&!r[ki(s)]){const a=new Ne([],{});a._sourceSegment=t,a._segmentIndexShift=n.length,o[ki(s)]=a}return{...r,...o}}(t,n,e,i,t.children));return o._sourceSegment=t,o._segmentIndexShift=n.length,{segmentGroup:o,slicedSegments:e}}const r=new Ne(t.segments,t.children);return r._sourceSegment=t,r._segmentIndexShift=n.length,{segmentGroup:r,slicedSegments:e}}function Rf(t,n,e){return(!(t.hasChildren()||n.length>0)||"full"!==e.pathMatch)&&""===e.path}function u1(t,n,e,i){return!!(ki(t)===i||i!==Me&&Rf(n,e,t))&&("**"===t.path||sy(n,t,e).matched)}function h1(t,n,e){return 0===n.length&&!t.children[e]}const Pf=!1;class Ff{constructor(n){this.segmentGroup=n||null}}class f1{constructor(n){this.urlTree=n}}function Zc(t){return cr(new Ff(t))}function m1(t){return cr(new f1(t))}class e9{constructor(n,e,i,r,o){this.injector=n,this.configLoader=e,this.urlSerializer=i,this.urlTree=r,this.config=o,this.allowRedirects=!0}apply(){const n=Of(this.urlTree.root,[],[],this.config).segmentGroup,e=new Ne(n.segments,n.children);return this.expandSegmentGroup(this.injector,this.config,e,Me).pipe(B(o=>this.createUrlTree(Ef(o),this.urlTree.queryParams,this.urlTree.fragment))).pipe(ii(o=>{if(o instanceof f1)return this.allowRedirects=!1,this.match(o.urlTree);throw o instanceof Ff?this.noMatchError(o):o}))}match(n){return this.expandSegmentGroup(this.injector,this.config,n.root,Me).pipe(B(r=>this.createUrlTree(Ef(r),n.queryParams,n.fragment))).pipe(ii(r=>{throw r instanceof Ff?this.noMatchError(r):r}))}noMatchError(n){return new A(4002,Pf)}createUrlTree(n,e,i){const r=zv(n);return new Mo(r,e,i)}expandSegmentGroup(n,e,i,r){return 0===i.segments.length&&i.hasChildren()?this.expandChildren(n,e,i).pipe(B(o=>new Ne([],o))):this.expandSegment(n,i,e,i.segments,r,!0)}expandChildren(n,e,i){const r=[];for(const o of Object.keys(i.children))"primary"===o?r.unshift(o):r.push(o);return yt(r).pipe(xo(o=>{const s=i.children[o],a=a1(e,o);return this.expandSegmentGroup(n,a,s,o).pipe(B(l=>({segment:l,outlet:o})))}),EA((o,s)=>(o[s.outlet]=s.segment,o),{}),SA())}expandSegment(n,e,i,r,o,s){return yt(i).pipe(xo(a=>this.expandSegmentAgainstRoute(n,e,i,a,r,o,s).pipe(ii(c=>{if(c instanceof Ff)return j(null);throw c}))),Gr(a=>!!a),ii((a,l)=>{if(ry(a))return h1(e,r,o)?j(new Ne([],{})):Zc(e);throw a}))}expandSegmentAgainstRoute(n,e,i,r,o,s,a){return u1(r,e,o,s)?void 0===r.redirectTo?this.matchSegmentAgainstRoute(n,e,r,o,s):a&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s):Zc(e):Zc(e)}expandSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s){return"**"===r.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(n,i,r,s):this.expandRegularSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s)}expandWildCardWithParamsAgainstRouteUsingRedirect(n,e,i,r){const o=this.applyRedirectCommands([],i.redirectTo,{});return i.redirectTo.startsWith("/")?m1(o):this.lineralizeSegments(i,o).pipe(Ot(s=>{const a=new Ne(s,{});return this.expandSegment(n,a,e,s,r,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s){const{matched:a,consumedSegments:l,remainingSegments:c,positionalParamSegments:d}=sy(e,r,o);if(!a)return Zc(e);const u=this.applyRedirectCommands(l,r.redirectTo,d);return r.redirectTo.startsWith("/")?m1(u):this.lineralizeSegments(r,u).pipe(Ot(h=>this.expandSegment(n,e,i,h.concat(c),s,!1)))}matchSegmentAgainstRoute(n,e,i,r,o){return"**"===i.path?(n=s1(i,n),i.loadChildren?(i._loadedRoutes?j({routes:i._loadedRoutes,injector:i._loadedInjector}):this.configLoader.loadChildren(n,i)).pipe(B(a=>(i._loadedRoutes=a.routes,i._loadedInjector=a.injector,new Ne(r,{})))):j(new Ne(r,{}))):d1(e,i,r,n).pipe(Hn(({matched:s,consumedSegments:a,remainingSegments:l})=>s?this.getChildConfig(n=i._injector??n,i,r).pipe(Ot(d=>{const u=d.injector??n,h=d.routes,{segmentGroup:f,slicedSegments:p}=Of(e,a,l,h),g=new Ne(f.segments,f.children);if(0===p.length&&g.hasChildren())return this.expandChildren(u,h,g).pipe(B(C=>new Ne(a,C)));if(0===h.length&&0===p.length)return j(new Ne(a,{}));const b=ki(i)===o;return this.expandSegment(u,g,h,p,b?Me:o,!0).pipe(B(w=>new Ne(a.concat(w.segments),w.children)))})):Zc(e)))}getChildConfig(n,e,i){return e.children?j({routes:e.children,injector:n}):e.loadChildren?void 0!==e._loadedRoutes?j({routes:e._loadedRoutes,injector:e._loadedInjector}):function GW(t,n,e,i){const r=n.canLoad;return void 0===r||0===r.length?j(!0):j(r.map(s=>{const a=$a(s,t);return ko(function IW(t){return t&&Yc(t.canLoad)}(a)?a.canLoad(n,e):t.runInContext(()=>a(n,e)))})).pipe(Ga(),c1())}(n,e,i).pipe(Ot(r=>r?this.configLoader.loadChildren(n,e).pipe(We(o=>{e._loadedRoutes=o.routes,e._loadedInjector=o.injector})):function QW(t){return cr(n1(Pf,3))}())):j({routes:[],injector:n})}lineralizeSegments(n,e){let i=[],r=e.root;for(;;){if(i=i.concat(r.segments),0===r.numberOfChildren)return j(i);if(r.numberOfChildren>1||!r.children[Me])return n.redirectTo,cr(new A(4e3,Pf));r=r.children[Me]}}applyRedirectCommands(n,e,i){return this.applyRedirectCreateUrlTree(e,this.urlSerializer.parse(e),n,i)}applyRedirectCreateUrlTree(n,e,i,r){const o=this.createSegmentGroup(n,e.root,i,r);return new Mo(o,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){const i={};return an(n,(r,o)=>{if("string"==typeof r&&r.startsWith(":")){const a=r.substring(1);i[o]=e[a]}else i[o]=r}),i}createSegmentGroup(n,e,i,r){const o=this.createSegments(n,e.segments,i,r);let s={};return an(e.children,(a,l)=>{s[l]=this.createSegmentGroup(n,a,i,r)}),new Ne(o,s)}createSegments(n,e,i,r){return e.map(o=>o.path.startsWith(":")?this.findPosParam(n,o,r):this.findOrReturn(o,i))}findPosParam(n,e,i){const r=i[e.path.substring(1)];if(!r)throw new A(4001,Pf);return r}findOrReturn(n,e){let i=0;for(const r of e){if(r.path===n.path)return e.splice(i),r;i++}return n}}class n9{}class o9{constructor(n,e,i,r,o,s,a){this.injector=n,this.rootComponentType=e,this.config=i,this.urlTree=r,this.url=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a}recognize(){const n=Of(this.urlTree.root,[],[],this.config.filter(e=>void 0===e.redirectTo)).segmentGroup;return this.processSegmentGroup(this.injector,this.config,n,Me).pipe(B(e=>{if(null===e)return null;const i=new Mf([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},Me,this.rootComponentType,null,this.urlTree.root,-1,{}),r=new Wr(i,e),o=new JA(this.url,r);return this.inheritParamsAndData(o._root),o}))}inheritParamsAndData(n){const e=n.value,i=QA(e,this.paramsInheritanceStrategy);e.params=Object.freeze(i.params),e.data=Object.freeze(i.data),n.children.forEach(r=>this.inheritParamsAndData(r))}processSegmentGroup(n,e,i,r){return 0===i.segments.length&&i.hasChildren()?this.processChildren(n,e,i):this.processSegment(n,e,i,i.segments,r)}processChildren(n,e,i){return yt(Object.keys(i.children)).pipe(xo(r=>{const o=i.children[r],s=a1(e,r);return this.processSegmentGroup(n,s,o,r)}),EA((r,o)=>r&&o?(r.push(...o),r):null),kA(r=>null!==r),Ra(null),SA(),B(r=>{if(null===r)return null;const o=g1(r);return function s9(t){t.sort((n,e)=>n.value.outlet===Me?-1:e.value.outlet===Me?1:n.value.outlet.localeCompare(e.value.outlet))}(o),o}))}processSegment(n,e,i,r,o){return yt(e).pipe(xo(s=>this.processSegmentAgainstRoute(s._injector??n,s,i,r,o)),Gr(s=>!!s),ii(s=>{if(ry(s))return h1(i,r,o)?j([]):j(null);throw s}))}processSegmentAgainstRoute(n,e,i,r,o){if(e.redirectTo||!u1(e,i,r,o))return j(null);let s;if("**"===e.path){const a=r.length>0?IA(r).parameters:{},l=b1(i)+r.length;s=j({snapshot:new Mf(r,a,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,v1(e),ki(e),e.component??e._loadedComponent??null,e,_1(i),l,y1(e)),consumedSegments:[],remainingSegments:[]})}else s=d1(i,e,r,n).pipe(B(({matched:a,consumedSegments:l,remainingSegments:c,parameters:d})=>{if(!a)return null;const u=b1(i)+l.length;return{snapshot:new Mf(l,d,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,v1(e),ki(e),e.component??e._loadedComponent??null,e,_1(i),u,y1(e)),consumedSegments:l,remainingSegments:c}}));return s.pipe(Hn(a=>{if(null===a)return j(null);const{snapshot:l,consumedSegments:c,remainingSegments:d}=a;n=e._injector??n;const u=e._loadedInjector??n,h=function a9(t){return t.children?t.children:t.loadChildren?t._loadedRoutes:[]}(e),{segmentGroup:f,slicedSegments:p}=Of(i,c,d,h.filter(b=>void 0===b.redirectTo));if(0===p.length&&f.hasChildren())return this.processChildren(u,h,f).pipe(B(b=>null===b?null:[new Wr(l,b)]));if(0===h.length&&0===p.length)return j([new Wr(l,[])]);const g=ki(e)===o;return this.processSegment(u,h,f,p,g?Me:o).pipe(B(b=>null===b?null:[new Wr(l,b)]))}))}}function l9(t){const n=t.value.routeConfig;return n&&""===n.path&&void 0===n.redirectTo}function g1(t){const n=[],e=new Set;for(const i of t){if(!l9(i)){n.push(i);continue}const r=n.find(o=>i.value.routeConfig===o.value.routeConfig);void 0!==r?(r.children.push(...i.children),e.add(r)):n.push(i)}for(const i of e){const r=g1(i.children);n.push(new Wr(i.value,r))}return n.filter(i=>!e.has(i))}function _1(t){let n=t;for(;n._sourceSegment;)n=n._sourceSegment;return n}function b1(t){let n=t,e=n._segmentIndexShift??0;for(;n._sourceSegment;)n=n._sourceSegment,e+=n._segmentIndexShift??0;return e-1}function v1(t){return t.data||{}}function y1(t){return t.resolve||{}}function w1(t){return"string"==typeof t.title||null===t.title}function ay(t){return Hn(n=>{const e=t(n);return e?yt(e).pipe(B(()=>n)):j(n)})}const Wa=new k("ROUTES");let ly=(()=>{class t{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=R(Tk)}loadComponent(e){if(this.componentLoaders.get(e))return this.componentLoaders.get(e);if(e._loadedComponent)return j(e._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(e);const i=ko(e.loadComponent()).pipe(B(C1),We(o=>{this.onLoadEndListener&&this.onLoadEndListener(e),e._loadedComponent=o}),bf(()=>{this.componentLoaders.delete(e)})),r=new Bv(i,()=>new te).pipe(Lv());return this.componentLoaders.set(e,r),r}loadChildren(e,i){if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return j({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);const o=this.loadModuleFactoryOrRoutes(i.loadChildren).pipe(B(a=>{this.onLoadEndListener&&this.onLoadEndListener(i);let l,c,d=!1;Array.isArray(a)?c=a:(l=a.create(e).injector,c=AA(l.get(Wa,[],he.Self|he.Optional)));return{routes:c.map(iy),injector:l}}),bf(()=>{this.childrenLoaders.delete(i)})),s=new Bv(o,()=>new te).pipe(Lv());return this.childrenLoaders.set(i,s),s}loadModuleFactoryOrRoutes(e){return ko(e()).pipe(B(C1),Ot(i=>i instanceof US||Array.isArray(i)?j(i):yt(this.compiler.compileModuleAsync(i))))}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function C1(t){return function g9(t){return t&&"object"==typeof t&&"default"in t}(t)?t.default:t}let Lf=(()=>{class t{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.lastSuccessfulNavigation=null,this.events=new te,this.configLoader=R(ly),this.environmentInjector=R(Qi),this.urlSerializer=R(Bc),this.rootContexts=R($c),this.navigationId=0,this.afterPreactivation=()=>j(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=r=>this.events.next(new iW(r)),this.configLoader.onLoadStartListener=r=>this.events.next(new nW(r))}complete(){this.transitions?.complete()}handleNavigationRequest(e){const i=++this.navigationId;this.transitions?.next({...this.transitions.value,...e,id:i})}setupNavigations(e){return this.transitions=new Tt({id:0,targetPageId:0,currentUrlTree:e.currentUrlTree,currentRawUrl:e.currentUrlTree,extractedUrl:e.urlHandlingStrategy.extract(e.currentUrlTree),urlAfterRedirects:e.urlHandlingStrategy.extract(e.currentUrlTree),rawUrl:e.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:zc,restoredState:null,currentSnapshot:e.routerState.snapshot,targetSnapshot:null,currentRouterState:e.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(mt(i=>0!==i.id),B(i=>({...i,extractedUrl:e.urlHandlingStrategy.extract(i.rawUrl)})),Hn(i=>{let r=!1,o=!1;return j(i).pipe(We(s=>{this.currentNavigation={id:s.id,initialUrl:s.rawUrl,extractedUrl:s.extractedUrl,trigger:s.source,extras:s.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}}),Hn(s=>{const a=e.browserUrlTree.toString(),l=!e.navigated||s.extractedUrl.toString()!==a||a!==e.currentUrlTree.toString();if(!l&&"reload"!==(s.extras.onSameUrlNavigation??e.onSameUrlNavigation)){const d="";return this.events.next(new kf(s.id,e.serializeUrl(i.rawUrl),d,0)),e.rawUrlTree=s.rawUrl,s.resolve(null),Cn}if(e.urlHandlingStrategy.shouldProcessUrl(s.rawUrl))return D1(s.source)&&(e.browserUrlTree=s.extractedUrl),j(s).pipe(Hn(d=>{const u=this.transitions?.getValue();return this.events.next(new Wv(d.id,this.urlSerializer.serialize(d.extractedUrl),d.source,d.restoredState)),u!==this.transitions?.getValue()?Cn:Promise.resolve(d)}),function t9(t,n,e,i){return Hn(r=>function JW(t,n,e,i,r){return new e9(t,n,e,i,r).apply()}(t,n,e,r.extractedUrl,i).pipe(B(o=>({...r,urlAfterRedirects:o}))))}(this.environmentInjector,this.configLoader,this.urlSerializer,e.config),We(d=>{this.currentNavigation={...this.currentNavigation,finalUrl:d.urlAfterRedirects},i.urlAfterRedirects=d.urlAfterRedirects}),function d9(t,n,e,i,r){return Ot(o=>function r9(t,n,e,i,r,o,s="emptyOnly"){return new o9(t,n,e,i,r,s,o).recognize().pipe(Hn(a=>null===a?function i9(t){return new xe(n=>n.error(t))}(new n9):j(a)))}(t,n,e,o.urlAfterRedirects,i.serialize(o.urlAfterRedirects),i,r).pipe(B(s=>({...o,targetSnapshot:s}))))}(this.environmentInjector,this.rootComponentType,e.config,this.urlSerializer,e.paramsInheritanceStrategy),We(d=>{if(i.targetSnapshot=d.targetSnapshot,"eager"===e.urlUpdateStrategy){if(!d.extras.skipLocationChange){const h=e.urlHandlingStrategy.merge(d.urlAfterRedirects,d.rawUrl);e.setBrowserUrl(h,d)}e.browserUrlTree=d.urlAfterRedirects}const u=new XG(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(u)}));if(l&&e.urlHandlingStrategy.shouldProcessUrl(e.rawUrlTree)){const{id:d,extractedUrl:u,source:h,restoredState:f,extras:p}=s,g=new Wv(d,this.urlSerializer.serialize(u),h,f);this.events.next(g);const b=XA(u,this.rootComponentType).snapshot;return j(i={...s,targetSnapshot:b,urlAfterRedirects:u,extras:{...p,skipLocationChange:!1,replaceUrl:!1}})}{const d="";return this.events.next(new kf(s.id,e.serializeUrl(i.extractedUrl),d,1)),e.rawUrlTree=s.rawUrl,s.resolve(null),Cn}}),We(s=>{const a=new QG(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(a)}),B(s=>i={...s,guards:SW(s.targetSnapshot,s.currentSnapshot,this.rootContexts)}),function LW(t,n){return Ot(e=>{const{targetSnapshot:i,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:s}}=e;return 0===s.length&&0===o.length?j({...e,guardsResult:!0}):function BW(t,n,e,i){return yt(t).pipe(Ot(r=>function $W(t,n,e,i,r){const o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;return o&&0!==o.length?j(o.map(a=>{const l=Gc(n)??r,c=$a(a,l);return ko(function PW(t){return t&&Yc(t.canDeactivate)}(c)?c.canDeactivate(t,n,e,i):l.runInContext(()=>c(t,n,e,i))).pipe(Gr())})).pipe(Ga()):j(!0)}(r.component,r.route,e,n,i)),Gr(r=>!0!==r,!0))}(s,i,r,t).pipe(Ot(a=>a&&function AW(t){return"boolean"==typeof t}(a)?function VW(t,n,e,i){return yt(n).pipe(xo(r=>cf(function HW(t,n){return null!==t&&n&&n(new rW(t)),j(!0)}(r.route.parent,i),function jW(t,n){return null!==t&&n&&n(new sW(t)),j(!0)}(r.route,i),function UW(t,n,e){const i=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(s=>function kW(t){const n=t.routeConfig?t.routeConfig.canActivateChild:null;return n&&0!==n.length?{node:t,guards:n}:null}(s)).filter(s=>null!==s).map(s=>_f(()=>j(s.guards.map(l=>{const c=Gc(s.node)??e,d=$a(l,c);return ko(function RW(t){return t&&Yc(t.canActivateChild)}(d)?d.canActivateChild(i,t):c.runInContext(()=>d(i,t))).pipe(Gr())})).pipe(Ga())));return j(o).pipe(Ga())}(t,r.path,e),function zW(t,n,e){const i=n.routeConfig?n.routeConfig.canActivate:null;if(!i||0===i.length)return j(!0);const r=i.map(o=>_f(()=>{const s=Gc(n)??e,a=$a(o,s);return ko(function OW(t){return t&&Yc(t.canActivate)}(a)?a.canActivate(n,t):s.runInContext(()=>a(n,t))).pipe(Gr())}));return j(r).pipe(Ga())}(t,r.route,e))),Gr(r=>!0!==r,!0))}(i,o,t,n):j(a)),B(a=>({...e,guardsResult:a})))})}(this.environmentInjector,s=>this.events.next(s)),We(s=>{if(i.guardsResult=s.guardsResult,gs(s.guardsResult))throw t1(0,s.guardsResult);const a=new JG(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot,!!s.guardsResult);this.events.next(a)}),mt(s=>!!s.guardsResult||(e.restoreHistory(s),this.cancelNavigationTransition(s,"",3),!1)),ay(s=>{if(s.guards.canActivateChecks.length)return j(s).pipe(We(a=>{const l=new eW(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(l)}),Hn(a=>{let l=!1;return j(a).pipe(function u9(t,n){return Ot(e=>{const{targetSnapshot:i,guards:{canActivateChecks:r}}=e;if(!r.length)return j(e);let o=0;return yt(r).pipe(xo(s=>function h9(t,n,e,i){const r=t.routeConfig,o=t._resolve;return void 0!==r?.title&&!w1(r)&&(o[Nc]=r.title),function f9(t,n,e,i){const r=function m9(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}(t);if(0===r.length)return j({});const o={};return yt(r).pipe(Ot(s=>function p9(t,n,e,i){const r=Gc(n)??i,o=$a(t,r);return ko(o.resolve?o.resolve(n,e):r.runInContext(()=>o(n,e)))}(t[s],n,e,i).pipe(Gr(),We(a=>{o[s]=a}))),Vv(1),MA(o),ii(s=>ry(s)?Cn:cr(s)))}(o,t,n,i).pipe(B(s=>(t._resolvedData=s,t.data=QA(t,e).resolve,r&&w1(r)&&(t.data[Nc]=r.title),null)))}(s.route,i,t,n)),We(()=>o++),Vv(1),Ot(s=>o===r.length?j(e):Cn))})}(e.paramsInheritanceStrategy,this.environmentInjector),We({next:()=>l=!0,complete:()=>{l||(e.restoreHistory(a),this.cancelNavigationTransition(a,"",2))}}))}),We(a=>{const l=new tW(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(l)}))}),ay(s=>{const a=l=>{const c=[];l.routeConfig?.loadComponent&&!l.routeConfig._loadedComponent&&c.push(this.configLoader.loadComponent(l.routeConfig).pipe(We(d=>{l.component=d}),B(()=>{})));for(const d of l.children)c.push(...a(d));return c};return Ba(a(s.targetSnapshot.root)).pipe(Ra(),Yt(1))}),ay(()=>this.afterPreactivation()),B(s=>{const a=function pW(t,n,e){const i=Uc(t,n._root,e?e._root:void 0);return new KA(i,n)}(e.routeReuseStrategy,s.targetSnapshot,s.currentRouterState);return i={...s,targetRouterState:a}}),We(s=>{e.currentUrlTree=s.urlAfterRedirects,e.rawUrlTree=e.urlHandlingStrategy.merge(s.urlAfterRedirects,s.rawUrl),e.routerState=s.targetRouterState,"deferred"===e.urlUpdateStrategy&&(s.extras.skipLocationChange||e.setBrowserUrl(e.rawUrlTree,s),e.browserUrlTree=s.urlAfterRedirects)}),((t,n,e)=>B(i=>(new EW(n,i.targetRouterState,i.currentRouterState,e).activate(t),i)))(this.rootContexts,e.routeReuseStrategy,s=>this.events.next(s)),Yt(1),We({next:s=>{r=!0,this.lastSuccessfulNavigation=this.currentNavigation,e.navigated=!0,this.events.next(new To(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(e.currentUrlTree))),e.titleStrategy?.updateTitle(s.targetRouterState.snapshot),s.resolve(!0)},complete:()=>{r=!0}}),bf(()=>{r||o||this.cancelNavigationTransition(i,"",1),this.currentNavigation?.id===i.id&&(this.currentNavigation=null)}),ii(s=>{if(o=!0,o1(s)){r1(s)||(e.navigated=!0,e.restoreHistory(i,!0));const a=new Sf(i.id,this.urlSerializer.serialize(i.extractedUrl),s.message,s.cancellationCode);if(this.events.next(a),r1(s)){const l=e.urlHandlingStrategy.merge(s.url,e.rawUrlTree),c={skipLocationChange:i.extras.skipLocationChange,replaceUrl:"eager"===e.urlUpdateStrategy||D1(i.source)};e.scheduleNavigation(l,zc,null,c,{resolve:i.resolve,reject:i.reject,promise:i.promise})}else i.resolve(!1)}else{e.restoreHistory(i,!0);const a=new qv(i.id,this.urlSerializer.serialize(i.extractedUrl),s,i.targetSnapshot??void 0);this.events.next(a);try{i.resolve(e.errorHandler(s))}catch(l){i.reject(l)}}return Cn}))}))}cancelNavigationTransition(e,i,r){const o=new Sf(e.id,this.urlSerializer.serialize(e.extractedUrl),i,r);this.events.next(o),e.resolve(!1)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function D1(t){return t!==zc}let E1=(()=>{class t{buildTitle(e){let i,r=e.root;for(;void 0!==r;)i=this.getResolvedTitleForRoute(r)??i,r=r.children.find(o=>o.outlet===Me);return i}getResolvedTitleForRoute(e){return e.data[Nc]}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return R(_9)},providedIn:"root"}),t})(),_9=(()=>{class t extends E1{constructor(e){super(),this.title=e}updateTitle(e){const i=this.buildTitle(e);void 0!==i&&this.title.setTitle(i)}}return t.\u0275fac=function(e){return new(e||t)(_(KM))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),b9=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return R(y9)},providedIn:"root"}),t})();class v9{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}}let y9=(()=>{class t extends v9{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const Bf=new k("",{providedIn:"root",factory:()=>({})});let x9=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:function(){return R(C9)},providedIn:"root"}),t})(),C9=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,i){return e}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function D9(t){throw t}function E9(t,n,e){return n.parse("/")}const S9={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},k9={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let ln=(()=>{class t{get navigationId(){return this.navigationTransitions.navigationId}get browserPageId(){return this.location.getState()?.\u0275routerPageId}get events(){return this.navigationTransitions.events}constructor(){this.disposed=!1,this.currentPageId=0,this.console=R(Hz),this.isNgZoneEnabled=!1,this.options=R(Bf,{optional:!0})||{},this.errorHandler=this.options.errorHandler||D9,this.malformedUriErrorHandler=this.options.malformedUriErrorHandler||E9,this.navigated=!1,this.lastSuccessfulId=-1,this.urlHandlingStrategy=R(x9),this.routeReuseStrategy=R(b9),this.urlCreationStrategy=R(hW),this.titleStrategy=R(E1),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.config=AA(R(Wa,{optional:!0})??[]),this.navigationTransitions=R(Lf),this.urlSerializer=R(Bc),this.location=R(gc),this.isNgZoneEnabled=R(Z)instanceof Z&&Z.isInAngularZone(),this.resetConfig(this.config),this.currentUrlTree=new Mo,this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=XA(this.currentUrlTree,null),this.navigationTransitions.setupNavigations(this).subscribe(e=>{this.lastSuccessfulId=e.id,this.currentPageId=e.targetPageId},e=>{this.console.warn(`Unhandled Navigation Error: ${e}`)})}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){if(this.setUpLocationChangeListener(),!this.navigationTransitions.hasRequestedNavigation){const e=this.location.getState();this.navigateToSyncWithBrowser(this.location.path(!0),zc,e)}}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(e=>{const i="popstate"===e.type?"popstate":"hashchange";"popstate"===i&&setTimeout(()=>{this.navigateToSyncWithBrowser(e.url,i,e.state)},0)}))}navigateToSyncWithBrowser(e,i,r){const o={replaceUrl:!0},s=r?.navigationId?r:null;if(r){const l={...r};delete l.navigationId,delete l.\u0275routerPageId,0!==Object.keys(l).length&&(o.state=l)}const a=this.parseUrl(e);this.scheduleNavigation(a,i,s,o)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}resetConfig(e){this.config=e.map(iy),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(e,i={}){const{relativeTo:r,queryParams:o,fragment:s,queryParamsHandling:a,preserveFragment:l}=i,c=l?this.currentUrlTree.fragment:s;let d=null;switch(a){case"merge":d={...this.currentUrlTree.queryParams,...o};break;case"preserve":d=this.currentUrlTree.queryParams;break;default:d=o||null}return null!==d&&(d=this.removeEmptyProps(d)),this.urlCreationStrategy.createUrlTree(r,this.routerState,this.currentUrlTree,e,d,c??null)}navigateByUrl(e,i={skipLocationChange:!1}){const r=gs(e)?e:this.parseUrl(e),o=this.urlHandlingStrategy.merge(r,this.rawUrlTree);return this.scheduleNavigation(o,zc,null,i)}navigate(e,i={skipLocationChange:!1}){return function M9(t){for(let n=0;n{const o=e[r];return null!=o&&(i[r]=o),i},{})}scheduleNavigation(e,i,r,o,s){if(this.disposed)return Promise.resolve(!1);let a,l,c,d;return s?(a=s.resolve,l=s.reject,c=s.promise):c=new Promise((u,h)=>{a=u,l=h}),d="computed"===this.canceledNavigationResolution?r&&r.\u0275routerPageId?r.\u0275routerPageId:o.replaceUrl||o.skipLocationChange?this.browserPageId??0:(this.browserPageId??0)+1:0,this.navigationTransitions.handleNavigationRequest({targetPageId:d,source:i,restoredState:r,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:o,resolve:a,reject:l,promise:c,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),c.catch(u=>Promise.reject(u))}setBrowserUrl(e,i){const r=this.urlSerializer.serialize(e),o={...i.extras.state,...this.generateNgRouterState(i.id,i.targetPageId)};this.location.isCurrentPathEqualTo(r)||i.extras.replaceUrl?this.location.replaceState(r,"",o):this.location.go(r,"",o)}restoreHistory(e,i=!1){if("computed"===this.canceledNavigationResolution){const r=this.currentPageId-e.targetPageId;"popstate"!==e.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==this.getCurrentNavigation()?.finalUrl||0===r?this.currentUrlTree===this.getCurrentNavigation()?.finalUrl&&0===r&&(this.resetState(e),this.browserUrlTree=e.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(r)}else"replace"===this.canceledNavigationResolution&&(i&&this.resetState(e),this.resetUrlToCurrentUrlTree())}resetState(e){this.routerState=e.currentRouterState,this.currentUrlTree=e.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,i){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:i}:{navigationId:e}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();class S1{}let I9=(()=>{class t{constructor(e,i,r,o,s){this.router=e,this.injector=r,this.preloadingStrategy=o,this.loader=s}setUpPreloading(){this.subscription=this.router.events.pipe(mt(e=>e instanceof To),xo(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(e,i){const r=[];for(const o of i){o.providers&&!o._injector&&(o._injector=lh(o.providers,e,`Route: ${o.path}`));const s=o._injector??e,a=o._loadedInjector??s;(o.loadChildren&&!o._loadedRoutes&&void 0===o.canLoad||o.loadComponent&&!o._loadedComponent)&&r.push(this.preloadConfig(s,o)),(o.children||o._loadedRoutes)&&r.push(this.processRoutes(a,o.children??o._loadedRoutes))}return yt(r).pipe(Ls())}preloadConfig(e,i){return this.preloadingStrategy.preload(i,()=>{let r;r=i.loadChildren&&void 0===i.canLoad?this.loader.loadChildren(e,i):j(null);const o=r.pipe(Ot(s=>null===s?j(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,this.processRoutes(s.injector??e,s.routes))));return i.loadComponent&&!i._loadedComponent?yt([o,this.loader.loadComponent(i)]).pipe(Ls()):o})}}return t.\u0275fac=function(e){return new(e||t)(_(ln),_(Tk),_(Qi),_(S1),_(ly))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const uy=new k("");let k1=(()=>{class t{constructor(e,i,r,o,s={}){this.urlSerializer=e,this.transitions=i,this.viewportScroller=r,this.zone=o,this.options=s,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},s.scrollPositionRestoration=s.scrollPositionRestoration||"disabled",s.anchorScrolling=s.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof Wv?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof To&&(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof YA&&(e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(e,i){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new YA(e,"popstate"===this.lastSource?this.store[this.restoredId]:null,i))})},0)})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}}return t.\u0275fac=function(e){Jl()},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();var ri=(()=>((ri=ri||{})[ri.COMPLETE=0]="COMPLETE",ri[ri.FAILED=1]="FAILED",ri[ri.REDIRECTING=2]="REDIRECTING",ri))();const qa=!1;function Io(t,n){return{\u0275kind:t,\u0275providers:n}}const hy=new k("",{providedIn:"root",factory:()=>!1});function T1(){const t=R(xt);return n=>{const e=t.get(as);if(n!==e.components[0])return;const i=t.get(ln),r=t.get(A1);1===t.get(fy)&&i.initialNavigation(),t.get(I1,null,he.Optional)?.setUpPreloading(),t.get(uy,null,he.Optional)?.init(),i.resetRootComponentType(e.componentTypes[0]),r.closed||(r.next(),r.complete(),r.unsubscribe())}}const A1=new k(qa?"bootstrap done indicator":"",{factory:()=>new te}),fy=new k(qa?"initial navigation":"",{providedIn:"root",factory:()=>1});function N9(){let t=[];return t=qa?[{provide:$u,multi:!0,useFactory:()=>{const n=R(ln);return()=>n.events.subscribe(e=>{console.group?.(`Router Event: ${e.constructor.name}`),console.log(function lW(t){if(!("type"in t))return`Unknown Router Event: ${t.constructor.name}`;switch(t.type){case 14:return`ActivationEnd(path: '${t.snapshot.routeConfig?.path||""}')`;case 13:return`ActivationStart(path: '${t.snapshot.routeConfig?.path||""}')`;case 12:return`ChildActivationEnd(path: '${t.snapshot.routeConfig?.path||""}')`;case 11:return`ChildActivationStart(path: '${t.snapshot.routeConfig?.path||""}')`;case 8:return`GuardsCheckEnd(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state}, shouldActivate: ${t.shouldActivate})`;case 7:return`GuardsCheckStart(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state})`;case 2:return`NavigationCancel(id: ${t.id}, url: '${t.url}')`;case 16:return`NavigationSkipped(id: ${t.id}, url: '${t.url}')`;case 1:return`NavigationEnd(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}')`;case 3:return`NavigationError(id: ${t.id}, url: '${t.url}', error: ${t.error})`;case 0:return`NavigationStart(id: ${t.id}, url: '${t.url}')`;case 6:return`ResolveEnd(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state})`;case 5:return`ResolveStart(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state})`;case 10:return`RouteConfigLoadEnd(path: ${t.route.path})`;case 9:return`RouteConfigLoadStart(path: ${t.route.path})`;case 4:return`RoutesRecognized(id: ${t.id}, url: '${t.url}', urlAfterRedirects: '${t.urlAfterRedirects}', state: ${t.state})`;case 15:return`Scroll(anchor: '${t.anchor}', position: '${t.position?`${t.position[0]}, ${t.position[1]}`:null}')`}}(e)),console.log(e),console.groupEnd?.()})}}]:[],Io(1,t)}const I1=new k(qa?"router preloader":"");function L9(t){return Io(0,[{provide:I1,useExisting:I9},{provide:S1,useExisting:t}])}const Kc=!1,O1=new k(Kc?"router duplicate forRoot guard":"ROUTER_FORROOT_GUARD"),B9=[gc,{provide:Bc,useClass:jv},ln,$c,{provide:Ao,useFactory:function M1(t){return t.routerState.root},deps:[ln]},ly,Kc?{provide:hy,useValue:!0}:[]];function V9(){return new Nk("Router",ln)}let R1=(()=>{class t{constructor(e){}static forRoot(e,i){return{ngModule:t,providers:[B9,Kc&&i?.enableTracing?N9().\u0275providers:[],{provide:Wa,multi:!0,useValue:e},{provide:O1,useFactory:U9,deps:[[ln,new Ir,new Js]]},{provide:Bf,useValue:i||{}},i?.useHash?{provide:yo,useClass:MU}:{provide:yo,useClass:rM},{provide:uy,useFactory:()=>{const t=R($$),n=R(Z),e=R(Bf),i=R(Lf),r=R(Bc);return e.scrollOffset&&t.setOffset(e.scrollOffset),new k1(r,i,t,n,e)}},i?.preloadingStrategy?L9(i.preloadingStrategy).\u0275providers:[],{provide:Nk,multi:!0,useFactory:V9},i?.initialNavigation?$9(i):[],[{provide:P1,useFactory:T1},{provide:ph,multi:!0,useExisting:P1}]]}}static forChild(e){return{ngModule:t,providers:[{provide:Wa,multi:!0,useValue:e}]}}}return t.\u0275fac=function(e){return new(e||t)(_(O1,8))},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[ty]}),t})();function U9(t){if(Kc&&t)throw new A(4007,"The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function $9(t){return["disabled"===t.initialNavigation?Io(3,[{provide:Sa,multi:!0,useFactory:()=>{const n=R(ln);return()=>{n.setUpLocationChangeListener()}}},{provide:fy,useValue:2}]).\u0275providers:[],"enabledBlocking"===t.initialNavigation?Io(2,[{provide:fy,useValue:0},{provide:Sa,multi:!0,deps:[xt],useFactory:n=>{const e=n.get(SU,Promise.resolve());return()=>e.then(()=>new Promise(i=>{const r=n.get(ln),o=n.get(A1);(function O9(t,n){t.events.pipe(mt(e=>e instanceof To||e instanceof Sf||e instanceof qv||e instanceof kf),B(e=>e instanceof To||e instanceof kf?ri.COMPLETE:e instanceof Sf&&(0===e.code||1===e.code)?ri.REDIRECTING:ri.FAILED),mt(e=>e!==ri.REDIRECTING),Yt(1)).subscribe(()=>{n()})})(r,()=>{i(!0)}),n.get(Lf).afterPreactivation=()=>(i(!0),o.closed?j(void 0):o),r.initialNavigation()}))}}]).\u0275providers:[]]}const P1=new k(Kc?"Router Initializer":"");function F1(t,n){for(const[e,i]of Object.entries(n??{}))null!=i&&t.set(e,`${i}`)}function W9(t,n,e,i){const r=t.get(ln,null),o=t.get(yo,null),s=t.get(Ma),a=e.relativeTo??t.get(Ao,null),l=i?$e.RESOURCE_URL:$e.URL;if(!r||!o)return;const c=r.createUrlTree(n,{...e,relativeTo:a}),d=o.prepareExternalUrl(r.serializeUrl(c));return s.sanitize(l,d)??void 0}function N1(t,n){const{fragment:e,preserveFragment:i,queryParams:r,queryParamsHandling:o}=n,s=new URL(t);return(void 0!==e||!1===i)&&(s.hash=e??""),""===o?(s.search="",F1(s.searchParams,r)):"preserve"!==o&&F1(s.searchParams,r),s.toString()}function L1(t){return typeof t>"u"||null===t}var Zt={isNothing:L1,isObject:function q9(t){return"object"==typeof t&&null!==t},toArray:function Y9(t){return Array.isArray(t)?t:L1(t)?[]:[t]},repeat:function K9(t,n){var i,e="";for(i=0;ia&&(n=i-a+(o=" ... ").length),e-i>a&&(e=i+a-(s=" ...").length),{str:o+t.slice(n,e).replace(/\t/g,"\u2192")+s,pos:i-n+o.length}}function py(t,n){return Zt.repeat(" ",n-t.length)+t}var oq=function rq(t,n){if(n=Object.create(n||null),!t.buffer)return null;n.maxLength||(n.maxLength=79),"number"!=typeof n.indent&&(n.indent=1),"number"!=typeof n.linesBefore&&(n.linesBefore=3),"number"!=typeof n.linesAfter&&(n.linesAfter=2);for(var o,e=/\r?\n|\r|\0/g,i=[0],r=[],s=-1;o=e.exec(t.buffer);)r.push(o.index),i.push(o.index+o[0].length),t.position<=o.index&&s<0&&(s=i.length-2);s<0&&(s=i.length-1);var l,c,a="",d=Math.min(t.line+n.linesAfter,r.length).toString().length,u=n.maxLength-(n.indent+d+3);for(l=1;l<=n.linesBefore&&!(s-l<0);l++)c=my(t.buffer,i[s-l],r[s-l],t.position-(i[s]-i[s-l]),u),a=Zt.repeat(" ",n.indent)+py((t.line-l+1).toString(),d)+" | "+c.str+"\n"+a;for(c=my(t.buffer,i[s],r[s],t.position,u),a+=Zt.repeat(" ",n.indent)+py((t.line+1).toString(),d)+" | "+c.str+"\n",a+=Zt.repeat("-",n.indent+d+3+c.pos)+"^\n",l=1;l<=n.linesAfter&&!(s+l>=r.length);l++)c=my(t.buffer,i[s+l],r[s+l],t.position-(i[s]-i[s+l]),u),a+=Zt.repeat(" ",n.indent)+py((t.line+l+1).toString(),d)+" | "+c.str+"\n";return a.replace(/\n$/,"")},sq=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],aq=["scalar","sequence","mapping"],cn=function cq(t,n){if(n=n||{},Object.keys(n).forEach(function(e){if(-1===sq.indexOf(e))throw new In('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')}),this.options=n,this.tag=t,this.kind=n.kind||null,this.resolve=n.resolve||function(){return!0},this.construct=n.construct||function(e){return e},this.instanceOf=n.instanceOf||null,this.predicate=n.predicate||null,this.represent=n.represent||null,this.representName=n.representName||null,this.defaultStyle=n.defaultStyle||null,this.multi=n.multi||!1,this.styleAliases=function lq(t){var n={};return null!==t&&Object.keys(t).forEach(function(e){t[e].forEach(function(i){n[String(i)]=e})}),n}(n.styleAliases||null),-1===aq.indexOf(this.kind))throw new In('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function V1(t,n){var e=[];return t[n].forEach(function(i){var r=e.length;e.forEach(function(o,s){o.tag===i.tag&&o.kind===i.kind&&o.multi===i.multi&&(r=s)}),e[r]=i}),e}function gy(t){return this.extend(t)}gy.prototype.extend=function(n){var e=[],i=[];if(n instanceof cn)i.push(n);else if(Array.isArray(n))i=i.concat(n);else{if(!n||!Array.isArray(n.implicit)&&!Array.isArray(n.explicit))throw new In("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");n.implicit&&(e=e.concat(n.implicit)),n.explicit&&(i=i.concat(n.explicit))}e.forEach(function(o){if(!(o instanceof cn))throw new In("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(o.loadKind&&"scalar"!==o.loadKind)throw new In("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(o.multi)throw new In("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),i.forEach(function(o){if(!(o instanceof cn))throw new In("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var r=Object.create(gy.prototype);return r.implicit=(this.implicit||[]).concat(e),r.explicit=(this.explicit||[]).concat(i),r.compiledImplicit=V1(r,"implicit"),r.compiledExplicit=V1(r,"explicit"),r.compiledTypeMap=function dq(){var n,e,t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(r){r.multi?(t.multi[r.kind].push(r),t.multi.fallback.push(r)):t[r.kind][r.tag]=t.fallback[r.tag]=r}for(n=0,e=arguments.length;n=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Cq=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),Sq=/^[-+]?[0-9]+e/,Y1=new cn("tag:yaml.org,2002:float",{kind:"scalar",resolve:function Dq(t){return!(null===t||!Cq.test(t)||"_"===t[t.length-1])},construct:function Eq(t){var n,e;return e="-"===(n=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(n[0])>=0&&(n=n.slice(1)),".inf"===n?1===e?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===n?NaN:e*parseFloat(n,10)},predicate:function Mq(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||Zt.isNegativeZero(t))},represent:function kq(t,n){var e;if(isNaN(t))switch(n){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(n){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(n){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Zt.isNegativeZero(t))return"-0.0";return e=t.toString(10),Sq.test(e)?e.replace("e",".e"):e},defaultStyle:"lowercase"}),K1=$1.extend({implicit:[G1,W1,q1,Y1]}),X1=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Q1=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),J1=new cn("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function Tq(t){return null!==t&&(null!==X1.exec(t)||null!==Q1.exec(t))},construct:function Aq(t){var n,e,i,r,o,s,a,h,l=0,c=null;if(null===(n=X1.exec(t))&&(n=Q1.exec(t)),null===n)throw new Error("Date resolve error");if(e=+n[1],i=+n[2]-1,r=+n[3],!n[4])return new Date(Date.UTC(e,i,r));if(o=+n[4],s=+n[5],a=+n[6],n[7]){for(l=n[7].slice(0,3);l.length<3;)l+="0";l=+l}return n[9]&&(c=6e4*(60*+n[10]+ +(n[11]||0)),"-"===n[9]&&(c=-c)),h=new Date(Date.UTC(e,i,r,o,s,a,l)),c&&h.setTime(h.getTime()-c),h},instanceOf:Date,represent:function Iq(t){return t.toISOString()}}),eI=new cn("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function Oq(t){return"<<"===t||null===t}}),_y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",tI=new cn("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function Rq(t){if(null===t)return!1;var n,e,i=0,r=t.length,o=_y;for(e=0;e64)){if(n<0)return!1;i+=6}return i%8==0},construct:function Pq(t){var n,e,i=t.replace(/[\r\n=]/g,""),r=i.length,o=_y,s=0,a=[];for(n=0;n>16&255),a.push(s>>8&255),a.push(255&s)),s=s<<6|o.indexOf(i.charAt(n));return 0==(e=r%4*6)?(a.push(s>>16&255),a.push(s>>8&255),a.push(255&s)):18===e?(a.push(s>>10&255),a.push(s>>2&255)):12===e&&a.push(s>>4&255),new Uint8Array(a)},predicate:function Nq(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function Fq(t){var i,r,n="",e=0,o=t.length,s=_y;for(i=0;i>18&63],n+=s[e>>12&63],n+=s[e>>6&63],n+=s[63&e]),e=(e<<8)+t[i];return 0==(r=o%3)?(n+=s[e>>18&63],n+=s[e>>12&63],n+=s[e>>6&63],n+=s[63&e]):2===r?(n+=s[e>>10&63],n+=s[e>>4&63],n+=s[e<<2&63],n+=s[64]):1===r&&(n+=s[e>>2&63],n+=s[e<<4&63],n+=s[64],n+=s[64]),n}}),Lq=Object.prototype.hasOwnProperty,Bq=Object.prototype.toString,nI=new cn("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function Vq(t){if(null===t)return!0;var e,i,r,o,s,n=[],a=t;for(e=0,i=a.length;e>10),56320+(t-65536&1023))}for(var hI=new Array(256),fI=new Array(256),Za=0;Za<256;Za++)hI[Za]=uI(Za)?1:0,fI[Za]=uI(Za);function t7(t,n){this.input=t,this.filename=n.filename||null,this.schema=n.schema||by,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function mI(t,n){var e={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return e.snippet=oq(e),new In(n,e)}function oe(t,n){throw mI(t,n)}function Hf(t,n){t.onWarning&&t.onWarning.call(null,mI(t,n))}var pI={YAML:function(n,e,i){var r,o,s;null!==n.version&&oe(n,"duplication of %YAML directive"),1!==i.length&&oe(n,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(i[0]))&&oe(n,"ill-formed argument of the YAML directive"),o=parseInt(r[1],10),s=parseInt(r[2],10),1!==o&&oe(n,"unacceptable YAML version of the document"),n.version=i[0],n.checkLineBreaks=s<2,1!==s&&2!==s&&Hf(n,"unsupported YAML version of the document")},TAG:function(n,e,i){var r,o;2!==i.length&&oe(n,"TAG directive accepts exactly two arguments"),o=i[1],lI.test(r=i[0])||oe(n,"ill-formed tag handle (first argument) of the TAG directive"),Oo.call(n.tagMap,r)&&oe(n,'there is a previously declared suffix for "'+r+'" tag handle'),cI.test(o)||oe(n,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch{oe(n,"tag prefix is malformed: "+o)}n.tagMap[r]=o}};function Ro(t,n,e,i){var r,o,s,a;if(n1&&(t.result+=Zt.repeat("\n",n-1))}function _I(t,n){var e,l,i=t.tag,r=t.anchor,o=[],a=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),l=t.input.charCodeAt(t.position);0!==l&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,oe(t,"tab characters must not be used in indentation")),45===l&&zn(t.input.charCodeAt(t.position+1)));)if(a=!0,t.position++,zt(t,!0,-1)&&t.lineIndent<=n)o.push(null),l=t.input.charCodeAt(t.position);else if(e=t.line,Xa(t,n,sI,!1,!0),o.push(t.result),zt(t,!0,-1),l=t.input.charCodeAt(t.position),(t.line===e||t.lineIndent>n)&&0!==l)oe(t,"bad indentation of a sequence entry");else if(t.lineIndentn?l=1:t.lineIndent===n?l=0:t.lineIndentn?l=1:t.lineIndent===n?l=0:t.lineIndentn)&&(b&&(s=t.line,a=t.lineStart,l=t.position),Xa(t,n,jf,!0,r)&&(b?p=t.result:g=t.result),b||(Ka(t,u,h,f,p,g,s,a,l),f=p=g=null),zt(t,!0,-1),w=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>n)&&0!==w)oe(t,"bad indentation of a mapping entry");else if(t.lineIndent=0))break;0===d?oe(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?oe(t,"repeat of an indentation width identifier"):(a=n+d-1,s=!0)}if(_s(u)){do{u=t.input.charCodeAt(++t.position)}while(_s(u));if(35===u)do{u=t.input.charCodeAt(++t.position)}while(!fr(u)&&0!==u)}for(;0!==u;){for(yy(t),t.lineIndent=0,u=t.input.charCodeAt(t.position);(!s||t.lineIndenta&&(a=t.lineIndent),fr(u))l++;else{if(t.lineIndent0){for(r=s,o=0;r>0;r--)(s=Xq(a=t.input.charCodeAt(++t.position)))>=0?o=(o<<4)+s:oe(t,"expected hexadecimal character");t.result+=e7(o),t.position++}else oe(t,"unknown escape sequence");e=i=t.position}else fr(a)?(Ro(t,e,i,!0),wy(t,zt(t,!1,n)),e=i=t.position):t.position===t.lineStart&&zf(t)?oe(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}oe(t,"unexpected end of the stream within a double quoted scalar")}(t,g)?d=!0:function d7(t){var n,e,i;if(42!==(i=t.input.charCodeAt(t.position)))return!1;for(i=t.input.charCodeAt(++t.position),n=t.position;0!==i&&!zn(i)&&!Ya(i);)i=t.input.charCodeAt(++t.position);return t.position===n&&oe(t,"name of an alias node must contain at least one character"),e=t.input.slice(n,t.position),Oo.call(t.anchorMap,e)||oe(t,'unidentified alias "'+e+'"'),t.result=t.anchorMap[e],zt(t,!0,-1),!0}(t)?(d=!0,(null!==t.tag||null!==t.anchor)&&oe(t,"alias node should not have any properties")):function n7(t,n,e){var r,o,s,a,l,c,d,f,u=t.kind,h=t.result;if(zn(f=t.input.charCodeAt(t.position))||Ya(f)||35===f||38===f||42===f||33===f||124===f||62===f||39===f||34===f||37===f||64===f||96===f||(63===f||45===f)&&(zn(r=t.input.charCodeAt(t.position+1))||e&&Ya(r)))return!1;for(t.kind="scalar",t.result="",o=s=t.position,a=!1;0!==f;){if(58===f){if(zn(r=t.input.charCodeAt(t.position+1))||e&&Ya(r))break}else if(35===f){if(zn(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&zf(t)||e&&Ya(f))break;if(fr(f)){if(l=t.line,c=t.lineStart,d=t.lineIndent,zt(t,!1,-1),t.lineIndent>=n){a=!0,f=t.input.charCodeAt(t.position);continue}t.position=s,t.line=l,t.lineStart=c,t.lineIndent=d;break}}a&&(Ro(t,o,s,!1),wy(t,t.line-l),o=s=t.position,a=!1),_s(f)||(s=t.position+1),f=t.input.charCodeAt(++t.position)}return Ro(t,o,s,!1),!!t.result||(t.kind=u,t.result=h,!1)}(t,g,Vf===e)&&(d=!0,null===t.tag&&(t.tag="?")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===l&&(d=a&&_I(t,b))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&oe(t,'unacceptable node kind for ! tag; it should be "scalar", not "'+t.kind+'"'),u=0,h=t.implicitTypes.length;u"),null!==t.result&&p.kind!==t.kind&&oe(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+p.kind+'", not "'+t.kind+'"'),p.resolve(t.result,t.tag)?(t.result=p.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):oe(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||d}function u7(t){var e,i,r,s,n=t.position,o=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(s=t.input.charCodeAt(t.position))&&(zt(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==s));){for(o=!0,s=t.input.charCodeAt(++t.position),e=t.position;0!==s&&!zn(s);)s=t.input.charCodeAt(++t.position);for(r=[],(i=t.input.slice(e,t.position)).length<1&&oe(t,"directive name must not be less than one character in length");0!==s;){for(;_s(s);)s=t.input.charCodeAt(++t.position);if(35===s){do{s=t.input.charCodeAt(++t.position)}while(0!==s&&!fr(s));break}if(fr(s))break;for(e=t.position;0!==s&&!zn(s);)s=t.input.charCodeAt(++t.position);r.push(t.input.slice(e,t.position))}0!==s&&yy(t),Oo.call(pI,i)?pI[i](t,i,r):Hf(t,'unknown document directive "'+i+'"')}zt(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,zt(t,!0,-1)):o&&oe(t,"directives end mark is expected"),Xa(t,t.lineIndent-1,jf,!1,!0),zt(t,!0,-1),t.checkLineBreaks&&Zq.test(t.input.slice(n,t.position))&&Hf(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&zf(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,zt(t,!0,-1)):t.positionnd(`[${t}] ${n}`)}function nd(t){var n;return function hY(t){(function uY(t){if(VI.has(t))throw new Error(`Action type '${t}' is not unique`)})(t),VI.add(t)}(t),(n=class{constructor(){this.type=t}}).type=t,n}const id=Po("LinkRegistry");class My extends(id("Add")){constructor(n,e){super(),this.id=n,this.entry=e}}class rd extends(id("Add Many")){constructor(n){super(),this.entries=n}}class Ty extends(id("Add from Yaml")){constructor(n){super(),this.yaml=n}}class Wf extends(id("Load from Yaml")){constructor(n){super(),this.url=n}}class Ja extends(id("Navigate")){constructor(n,e={}){super(),this.id=n,this.extras=e}}var Ke,t;(t=Ke||(Ke={})).assertEqual=r=>r,t.assertIs=function n(r){},t.assertNever=function e(r){throw new Error},t.arrayToEnum=r=>{const o={};for(const s of r)o[s]=s;return o},t.getValidEnumValues=r=>{const o=t.objectKeys(r).filter(a=>"number"!=typeof r[r[a]]),s={};for(const a of o)s[a]=r[a];return t.objectValues(s)},t.objectValues=r=>t.objectKeys(r).map(function(o){return r[o]}),t.objectKeys="function"==typeof Object.keys?r=>Object.keys(r):r=>{const o=[];for(const s in r)Object.prototype.hasOwnProperty.call(r,s)&&o.push(s);return o},t.find=(r,o)=>{for(const s of r)if(o(s))return s},t.isInteger="function"==typeof Number.isInteger?r=>Number.isInteger(r):r=>"number"==typeof r&&isFinite(r)&&Math.floor(r)===r,t.joinValues=function i(r,o=" | "){return r.map(s=>"string"==typeof s?`'${s}'`:s).join(o)},t.jsonStringifyReplacer=(r,o)=>"bigint"==typeof o?o.toString():o;var qf=(()=>(function(t){t.mergeShapes=(n,e)=>({...n,...e})}(qf||(qf={})),qf))();const q=Ke.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Fo=t=>{switch(typeof t){case"undefined":return q.undefined;case"string":return q.string;case"number":return isNaN(t)?q.nan:q.number;case"boolean":return q.boolean;case"function":return q.function;case"bigint":return q.bigint;case"symbol":return q.symbol;case"object":return Array.isArray(t)?q.array:null===t?q.null:t.then&&"function"==typeof t.then&&t.catch&&"function"==typeof t.catch?q.promise:typeof Map<"u"&&t instanceof Map?q.map:typeof Set<"u"&&t instanceof Set?q.set:typeof Date<"u"&&t instanceof Date?q.date:q.object;default:return q.unknown}},L=Ke.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);let Yr=(()=>{class t extends Error{constructor(e){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const i=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,i):this.__proto__=i,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const i=e||function(s){return s.message},r={_errors:[]},o=s=>{for(const a of s.issues)if("invalid_union"===a.code)a.unionErrors.map(o);else if("invalid_return_type"===a.code)o(a.returnTypeError);else if("invalid_arguments"===a.code)o(a.argumentsError);else if(0===a.path.length)r._errors.push(i(a));else{let l=r,c=0;for(;ci.message)){const i={},r=[];for(const o of this.issues)o.path.length>0?(i[o.path[0]]=i[o.path[0]]||[],i[o.path[0]].push(e(o))):r.push(e(o));return{formErrors:r,fieldErrors:i}}get formErrors(){return this.flatten()}}return t.create=n=>new t(n),t})();const od=(t,n)=>{let e;switch(t.code){case L.invalid_type:e=t.received===q.undefined?"Required":`Expected ${t.expected}, received ${t.received}`;break;case L.invalid_literal:e=`Invalid literal value, expected ${JSON.stringify(t.expected,Ke.jsonStringifyReplacer)}`;break;case L.unrecognized_keys:e=`Unrecognized key(s) in object: ${Ke.joinValues(t.keys,", ")}`;break;case L.invalid_union:e="Invalid input";break;case L.invalid_union_discriminator:e=`Invalid discriminator value. Expected ${Ke.joinValues(t.options)}`;break;case L.invalid_enum_value:e=`Invalid enum value. Expected ${Ke.joinValues(t.options)}, received '${t.received}'`;break;case L.invalid_arguments:e="Invalid function arguments";break;case L.invalid_return_type:e="Invalid function return type";break;case L.invalid_date:e="Invalid date";break;case L.invalid_string:"object"==typeof t.validation?"includes"in t.validation?(e=`Invalid input: must include "${t.validation.includes}"`,"number"==typeof t.validation.position&&(e=`${e} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?e=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?e=`Invalid input: must end with "${t.validation.endsWith}"`:Ke.assertNever(t.validation):e="regex"!==t.validation?`Invalid ${t.validation}`:"Invalid";break;case L.too_small:e="array"===t.type?`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:"string"===t.type?`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:"number"===t.type?`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:"date"===t.type?`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:"Invalid input";break;case L.too_big:e="array"===t.type?`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:"string"===t.type?`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:"number"===t.type?`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:"bigint"===t.type?`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:"date"===t.type?`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:"Invalid input";break;case L.custom:e="Invalid input";break;case L.invalid_intersection_types:e="Intersection results could not be merged";break;case L.not_multiple_of:e=`Number must be a multiple of ${t.multipleOf}`;break;case L.not_finite:e="Number must be finite";break;default:e=n.defaultError,Ke.assertNever(t)}return{message:e}};let jI=od;function Yf(){return jI}const Zf=t=>{const{data:n,path:e,errorMaps:i,issueData:r}=t,o=[...e,...r.path||[]],s={...r,path:o};let a="";const l=i.filter(c=>!!c).slice().reverse();for(const c of l)a=c(s,{data:n,defaultError:a}).message;return{...r,path:o,message:r.message||a}};function K(t,n){const e=Zf({issueData:n,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Yf(),od].filter(i=>!!i)});t.common.issues.push(e)}class vn{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(n,e){const i=[];for(const r of e){if("aborted"===r.status)return ke;"dirty"===r.status&&n.dirty(),i.push(r.value)}return{status:n.value,value:i}}static mergeObjectAsync(n,e){return Si(function*(){const i=[];for(const r of e)i.push({key:yield r.key,value:yield r.value});return vn.mergeObjectSync(n,i)})()}static mergeObjectSync(n,e){const i={};for(const r of e){const{key:o,value:s}=r;if("aborted"===o.status||"aborted"===s.status)return ke;"dirty"===o.status&&n.dirty(),"dirty"===s.status&&n.dirty(),(typeof s.value<"u"||r.alwaysSet)&&(i[o.value]=s.value)}return{status:n.value,value:i}}}const ke=Object.freeze({status:"aborted"}),HI=t=>({status:"dirty",value:t}),On=t=>({status:"valid",value:t}),Ay=t=>"aborted"===t.status,Iy=t=>"dirty"===t.status,Kf=t=>"valid"===t.status,Xf=t=>typeof Promise<"u"&&t instanceof Promise;var se=(()=>(function(t){t.errToObj=n=>"string"==typeof n?{message:n}:n||{},t.toString=n=>"string"==typeof n?n:n?.message}(se||(se={})),se))();class mr{constructor(n,e,i,r){this._cachedPath=[],this.parent=n,this.data=e,this._path=i,this._key=r}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const zI=(t,n)=>{if(Kf(n))return{success:!0,data:n.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const e=new Yr(t.common.issues);return this._error=e,this._error}}};function Pe(t){if(!t)return{};const{errorMap:n,invalid_type_error:e,required_error:i,description:r}=t;if(n&&(e||i))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return n?{errorMap:n,description:r}:{errorMap:(s,a)=>"invalid_type"!==s.code?{message:a.defaultError}:typeof a.data>"u"?{message:i??a.defaultError}:{message:e??a.defaultError},description:r}}class Le{constructor(n){this.spa=this.safeParseAsync,this._def=n,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(n){return Fo(n.data)}_getOrReturnCtx(n,e){return e||{common:n.parent.common,data:n.data,parsedType:Fo(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}_processInputParams(n){return{status:new vn,ctx:{common:n.parent.common,data:n.data,parsedType:Fo(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}}_parseSync(n){const e=this._parse(n);if(Xf(e))throw new Error("Synchronous parse encountered promise.");return e}_parseAsync(n){const e=this._parse(n);return Promise.resolve(e)}parse(n,e){const i=this.safeParse(n,e);if(i.success)return i.data;throw i.error}safeParse(n,e){var i;const r={common:{issues:[],async:null!==(i=e?.async)&&void 0!==i&&i,contextualErrorMap:e?.errorMap},path:e?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Fo(n)},o=this._parseSync({data:n,path:r.path,parent:r});return zI(r,o)}parseAsync(n,e){var i=this;return Si(function*(){const r=yield i.safeParseAsync(n,e);if(r.success)return r.data;throw r.error})()}safeParseAsync(n,e){var i=this;return Si(function*(){const r={common:{issues:[],contextualErrorMap:e?.errorMap,async:!0},path:e?.path||[],schemaErrorMap:i._def.errorMap,parent:null,data:n,parsedType:Fo(n)},o=i._parse({data:n,path:r.path,parent:r}),s=yield Xf(o)?o:Promise.resolve(o);return zI(r,s)})()}refine(n,e){const i=r=>"string"==typeof e||typeof e>"u"?{message:e}:"function"==typeof e?e(r):e;return this._refinement((r,o)=>{const s=n(r),a=()=>o.addIssue({code:L.custom,...i(r)});return typeof Promise<"u"&&s instanceof Promise?s.then(l=>!!l||(a(),!1)):!!s||(a(),!1)})}refinement(n,e){return this._refinement((i,r)=>!!n(i)||(r.addIssue("function"==typeof e?e(i,r):e),!1))}_refinement(n){return new vs({schema:this,typeName:be.ZodEffects,effect:{type:"refinement",refinement:n}})}superRefine(n){return this._refinement(n)}optional(){return ys.create(this,this._def)}nullable(){return cd.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ad.create(this,this._def)}promise(){return im.create(this,this._def)}or(n){return By.create([this,n],this._def)}and(n){return jy.create(this,n,this._def)}transform(n){return new vs({...Pe(this._def),schema:this,typeName:be.ZodEffects,effect:{type:"transform",transform:n}})}default(n){const e="function"==typeof n?n:()=>n;return new $y({...Pe(this._def),innerType:this,defaultValue:e,typeName:be.ZodDefault})}brand(){return new KI({typeName:be.ZodBranded,type:this,...Pe(this._def)})}catch(n){const e="function"==typeof n?n:()=>n;return new YI({...Pe(this._def),innerType:this,catchValue:e,typeName:be.ZodCatch})}describe(n){return new(0,this.constructor)({...this._def,description:n})}pipe(n){return dd.create(this,n)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const gY=/^c[^\s-]{8,}$/i,_Y=/^[a-z][a-z0-9]*$/,bY=/[0-9A-HJKMNP-TV-Z]{26}/,vY=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,yY=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/,wY=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,xY=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,CY=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,DY=t=>t.precision?t.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${t.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${t.precision}}Z$`):0===t.precision?t.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):t.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function EY(t,n){return!(("v4"!==n&&n||!xY.test(t))&&("v6"!==n&&n||!CY.test(t)))}let Qf=(()=>{class t extends Le{constructor(){super(...arguments),this._regex=(e,i,r)=>this.refinement(o=>e.test(o),{validation:i,code:L.invalid_string,...se.errToObj(r)}),this.nonempty=e=>this.min(1,se.errToObj(e)),this.trim=()=>new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==q.string){const s=this._getOrReturnCtx(e);return K(s,{code:L.invalid_type,expected:q.string,received:s.parsedType}),ke}const r=new vn;let o;for(const s of this._def.checks)if("min"===s.kind)e.data.lengths.value&&(o=this._getOrReturnCtx(e,o),K(o,{code:L.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if("length"===s.kind){const a=e.data.length>s.value,l=e.data.length"u"?null:e?.precision,offset:null!==(i=e?.offset)&&void 0!==i&&i,...se.errToObj(e?.message)})}regex(e,i){return this._addCheck({kind:"regex",regex:e,...se.errToObj(i)})}includes(e,i){return this._addCheck({kind:"includes",value:e,position:i?.position,...se.errToObj(i?.message)})}startsWith(e,i){return this._addCheck({kind:"startsWith",value:e,...se.errToObj(i)})}endsWith(e,i){return this._addCheck({kind:"endsWith",value:e,...se.errToObj(i)})}min(e,i){return this._addCheck({kind:"min",value:e,...se.errToObj(i)})}max(e,i){return this._addCheck({kind:"max",value:e,...se.errToObj(i)})}length(e,i){return this._addCheck({kind:"length",value:e,...se.errToObj(i)})}get isDatetime(){return!!this._def.checks.find(e=>"datetime"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>"email"===e.kind)}get isURL(){return!!this._def.checks.find(e=>"url"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>"emoji"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>"uuid"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>"cuid"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>"cuid2"===e.kind)}get isULID(){return!!this._def.checks.find(e=>"ulid"===e.kind)}get isIP(){return!!this._def.checks.find(e=>"ip"===e.kind)}get minLength(){let e=null;for(const i of this._def.checks)"min"===i.kind&&(null===e||i.value>e)&&(e=i.value);return e}get maxLength(){let e=null;for(const i of this._def.checks)"max"===i.kind&&(null===e||i.value{var e;return new t({checks:[],typeName:be.ZodString,coerce:null!==(e=n?.coerce)&&void 0!==e&&e,...Pe(n)})},t})();function SY(t,n){const e=(t.toString().split(".")[1]||"").length,i=(n.toString().split(".")[1]||"").length,r=e>i?e:i;return parseInt(t.toFixed(r).replace(".",""))%parseInt(n.toFixed(r).replace(".",""))/Math.pow(10,r)}let Oy=(()=>{class t extends Le{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==q.number){const s=this._getOrReturnCtx(e);return K(s,{code:L.invalid_type,expected:q.number,received:s.parsedType}),ke}let r;const o=new vn;for(const s of this._def.checks)"int"===s.kind?Ke.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),K(r,{code:L.invalid_type,expected:"integer",received:"float",message:s.message}),o.dirty()):"min"===s.kind?(s.inclusive?e.datas.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),K(r,{code:L.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),o.dirty()):"multipleOf"===s.kind?0!==SY(e.data,s.value)&&(r=this._getOrReturnCtx(e,r),K(r,{code:L.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):"finite"===s.kind?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),K(r,{code:L.not_finite,message:s.message}),o.dirty()):Ke.assertNever(s);return{status:o.value,value:e.data}}gte(e,i){return this.setLimit("min",e,!0,se.toString(i))}gt(e,i){return this.setLimit("min",e,!1,se.toString(i))}lte(e,i){return this.setLimit("max",e,!0,se.toString(i))}lt(e,i){return this.setLimit("max",e,!1,se.toString(i))}setLimit(e,i,r,o){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:i,inclusive:r,message:se.toString(o)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:se.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:se.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:se.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:se.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:se.toString(e)})}multipleOf(e,i){return this._addCheck({kind:"multipleOf",value:e,message:se.toString(i)})}finite(e){return this._addCheck({kind:"finite",message:se.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:se.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:se.toString(e)})}get minValue(){let e=null;for(const i of this._def.checks)"min"===i.kind&&(null===e||i.value>e)&&(e=i.value);return e}get maxValue(){let e=null;for(const i of this._def.checks)"max"===i.kind&&(null===e||i.value"int"===e.kind||"multipleOf"===e.kind&&Ke.isInteger(e.value))}get isFinite(){let e=null,i=null;for(const r of this._def.checks){if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;"min"===r.kind?(null===i||r.value>i)&&(i=r.value):"max"===r.kind&&(null===e||r.valuenew t({checks:[],typeName:be.ZodNumber,coerce:n?.coerce||!1,...Pe(n)}),t})(),Ry=(()=>{class t extends Le{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce&&(e.data=BigInt(e.data)),this._getType(e)!==q.bigint){const s=this._getOrReturnCtx(e);return K(s,{code:L.invalid_type,expected:q.bigint,received:s.parsedType}),ke}let r;const o=new vn;for(const s of this._def.checks)"min"===s.kind?(s.inclusive?e.datas.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),K(r,{code:L.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),o.dirty()):"multipleOf"===s.kind?e.data%s.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),K(r,{code:L.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):Ke.assertNever(s);return{status:o.value,value:e.data}}gte(e,i){return this.setLimit("min",e,!0,se.toString(i))}gt(e,i){return this.setLimit("min",e,!1,se.toString(i))}lte(e,i){return this.setLimit("max",e,!0,se.toString(i))}lt(e,i){return this.setLimit("max",e,!1,se.toString(i))}setLimit(e,i,r,o){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:i,inclusive:r,message:se.toString(o)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:se.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:se.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:se.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:se.toString(e)})}multipleOf(e,i){return this._addCheck({kind:"multipleOf",value:e,message:se.toString(i)})}get minValue(){let e=null;for(const i of this._def.checks)"min"===i.kind&&(null===e||i.value>e)&&(e=i.value);return e}get maxValue(){let e=null;for(const i of this._def.checks)"max"===i.kind&&(null===e||i.value{var e;return new t({checks:[],typeName:be.ZodBigInt,coerce:null!==(e=n?.coerce)&&void 0!==e&&e,...Pe(n)})},t})(),Py=(()=>{class t extends Le{_parse(e){if(this._def.coerce&&(e.data=Boolean(e.data)),this._getType(e)!==q.boolean){const r=this._getOrReturnCtx(e);return K(r,{code:L.invalid_type,expected:q.boolean,received:r.parsedType}),ke}return On(e.data)}}return t.create=n=>new t({typeName:be.ZodBoolean,coerce:n?.coerce||!1,...Pe(n)}),t})(),Fy=(()=>{class t extends Le{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==q.date){const s=this._getOrReturnCtx(e);return K(s,{code:L.invalid_type,expected:q.date,received:s.parsedType}),ke}if(isNaN(e.data.getTime()))return K(this._getOrReturnCtx(e),{code:L.invalid_date}),ke;const r=new vn;let o;for(const s of this._def.checks)"min"===s.kind?e.data.getTime()s.value&&(o=this._getOrReturnCtx(e,o),K(o,{code:L.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),r.dirty()):Ke.assertNever(s);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,i){return this._addCheck({kind:"min",value:e.getTime(),message:se.toString(i)})}max(e,i){return this._addCheck({kind:"max",value:e.getTime(),message:se.toString(i)})}get minDate(){let e=null;for(const i of this._def.checks)"min"===i.kind&&(null===e||i.value>e)&&(e=i.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(const i of this._def.checks)"max"===i.kind&&(null===e||i.valuenew t({checks:[],coerce:n?.coerce||!1,typeName:be.ZodDate,...Pe(n)}),t})(),UI=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==q.symbol){const r=this._getOrReturnCtx(e);return K(r,{code:L.invalid_type,expected:q.symbol,received:r.parsedType}),ke}return On(e.data)}}return t.create=n=>new t({typeName:be.ZodSymbol,...Pe(n)}),t})(),Ny=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==q.undefined){const r=this._getOrReturnCtx(e);return K(r,{code:L.invalid_type,expected:q.undefined,received:r.parsedType}),ke}return On(e.data)}}return t.create=n=>new t({typeName:be.ZodUndefined,...Pe(n)}),t})(),Ly=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==q.null){const r=this._getOrReturnCtx(e);return K(r,{code:L.invalid_type,expected:q.null,received:r.parsedType}),ke}return On(e.data)}}return t.create=n=>new t({typeName:be.ZodNull,...Pe(n)}),t})(),Jf=(()=>{class t extends Le{constructor(){super(...arguments),this._any=!0}_parse(e){return On(e.data)}}return t.create=n=>new t({typeName:be.ZodAny,...Pe(n)}),t})(),sd=(()=>{class t extends Le{constructor(){super(...arguments),this._unknown=!0}_parse(e){return On(e.data)}}return t.create=n=>new t({typeName:be.ZodUnknown,...Pe(n)}),t})(),bs=(()=>{class t extends Le{_parse(e){const i=this._getOrReturnCtx(e);return K(i,{code:L.invalid_type,expected:q.never,received:i.parsedType}),ke}}return t.create=n=>new t({typeName:be.ZodNever,...Pe(n)}),t})(),$I=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==q.undefined){const r=this._getOrReturnCtx(e);return K(r,{code:L.invalid_type,expected:q.void,received:r.parsedType}),ke}return On(e.data)}}return t.create=n=>new t({typeName:be.ZodVoid,...Pe(n)}),t})(),ad=(()=>{class t extends Le{_parse(e){const{ctx:i,status:r}=this._processInputParams(e),o=this._def;if(i.parsedType!==q.array)return K(i,{code:L.invalid_type,expected:q.array,received:i.parsedType}),ke;if(null!==o.exactLength){const a=i.data.length>o.exactLength.value,l=i.data.lengtho.maxLength.value&&(K(i,{code:L.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),r.dirty()),i.common.async)return Promise.all([...i.data].map((a,l)=>o.type._parseAsync(new mr(i,a,i.path,l)))).then(a=>vn.mergeArray(r,a));const s=[...i.data].map((a,l)=>o.type._parseSync(new mr(i,a,i.path,l)));return vn.mergeArray(r,s)}get element(){return this._def.type}min(e,i){return new t({...this._def,minLength:{value:e,message:se.toString(i)}})}max(e,i){return new t({...this._def,maxLength:{value:e,message:se.toString(i)}})}length(e,i){return new t({...this._def,exactLength:{value:e,message:se.toString(i)}})}nonempty(e){return this.min(1,e)}}return t.create=(n,e)=>new t({type:n,minLength:null,maxLength:null,exactLength:null,typeName:be.ZodArray,...Pe(e)}),t})();function el(t){if(t instanceof tl){const n={};for(const e in t.shape)n[e]=ys.create(el(t.shape[e]));return new tl({...t._def,shape:()=>n})}return t instanceof ad?new ad({...t._def,type:el(t.element)}):t instanceof ys?ys.create(el(t.unwrap())):t instanceof cd?cd.create(el(t.unwrap())):t instanceof nl?nl.create(t.items.map(n=>el(n))):t}let tl=(()=>{class t extends Le{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;const e=this._def.shape(),i=Ke.objectKeys(e);return this._cached={shape:e,keys:i}}_parse(e){if(this._getType(e)!==q.object){const d=this._getOrReturnCtx(e);return K(d,{code:L.invalid_type,expected:q.object,received:d.parsedType}),ke}const{status:r,ctx:o}=this._processInputParams(e),{shape:s,keys:a}=this._getCached(),l=[];if(!(this._def.catchall instanceof bs&&"strip"===this._def.unknownKeys))for(const d in o.data)a.includes(d)||l.push(d);const c=[];for(const d of a)c.push({key:{status:"valid",value:d},value:s[d]._parse(new mr(o,o.data[d],o.path,d)),alwaysSet:d in o.data});if(this._def.catchall instanceof bs){const d=this._def.unknownKeys;if("passthrough"===d)for(const u of l)c.push({key:{status:"valid",value:u},value:{status:"valid",value:o.data[u]}});else if("strict"===d)l.length>0&&(K(o,{code:L.unrecognized_keys,keys:l}),r.dirty());else if("strip"!==d)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const d=this._def.catchall;for(const u of l)c.push({key:{status:"valid",value:u},value:d._parse(new mr(o,o.data[u],o.path,u)),alwaysSet:u in o.data})}return o.common.async?Promise.resolve().then(Si(function*(){const d=[];for(const u of c){const h=yield u.key;d.push({key:h,value:yield u.value,alwaysSet:u.alwaysSet})}return d})).then(d=>vn.mergeObjectSync(r,d)):vn.mergeObjectSync(r,c)}get shape(){return this._def.shape()}strict(e){return new t({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(i,r)=>{var o,s,a,l;const c=null!==(a=null===(s=(o=this._def).errorMap)||void 0===s?void 0:s.call(o,i,r).message)&&void 0!==a?a:r.defaultError;return"unrecognized_keys"===i.code?{message:null!==(l=se.errToObj(e).message)&&void 0!==l?l:c}:{message:c}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:be.ZodObject})}setKey(e,i){return this.augment({[e]:i})}catchall(e){return new t({...this._def,catchall:e})}pick(e){const i={};return Ke.objectKeys(e).forEach(r=>{e[r]&&this.shape[r]&&(i[r]=this.shape[r])}),new t({...this._def,shape:()=>i})}omit(e){const i={};return Ke.objectKeys(this.shape).forEach(r=>{e[r]||(i[r]=this.shape[r])}),new t({...this._def,shape:()=>i})}deepPartial(){return el(this)}partial(e){const i={};return Ke.objectKeys(this.shape).forEach(r=>{const o=this.shape[r];i[r]=e&&!e[r]?o:o.optional()}),new t({...this._def,shape:()=>i})}required(e){const i={};return Ke.objectKeys(this.shape).forEach(r=>{if(e&&!e[r])i[r]=this.shape[r];else{let s=this.shape[r];for(;s instanceof ys;)s=s._def.innerType;i[r]=s}}),new t({...this._def,shape:()=>i})}keyof(){return qI(Ke.objectKeys(this.shape))}}return t.create=(n,e)=>new t({shape:()=>n,unknownKeys:"strip",catchall:bs.create(),typeName:be.ZodObject,...Pe(e)}),t.strictCreate=(n,e)=>new t({shape:()=>n,unknownKeys:"strict",catchall:bs.create(),typeName:be.ZodObject,...Pe(e)}),t.lazycreate=(n,e)=>new t({shape:n,unknownKeys:"strip",catchall:bs.create(),typeName:be.ZodObject,...Pe(e)}),t})(),By=(()=>{class t extends Le{_parse(e){const{ctx:i}=this._processInputParams(e),r=this._def.options;if(i.common.async)return Promise.all(r.map(function(){var s=Si(function*(a){const l={...i,common:{...i.common,issues:[]},parent:null};return{result:yield a._parseAsync({data:i.data,path:i.path,parent:l}),ctx:l}});return function(a){return s.apply(this,arguments)}}())).then(function o(s){for(const l of s)if("valid"===l.result.status)return l.result;for(const l of s)if("dirty"===l.result.status)return i.common.issues.push(...l.ctx.common.issues),l.result;const a=s.map(l=>new Yr(l.ctx.common.issues));return K(i,{code:L.invalid_union,unionErrors:a}),ke});{let s;const a=[];for(const c of r){const d={...i,common:{...i.common,issues:[]},parent:null},u=c._parseSync({data:i.data,path:i.path,parent:d});if("valid"===u.status)return u;"dirty"===u.status&&!s&&(s={result:u,ctx:d}),d.common.issues.length&&a.push(d.common.issues)}if(s)return i.common.issues.push(...s.ctx.common.issues),s.result;const l=a.map(c=>new Yr(c));return K(i,{code:L.invalid_union,unionErrors:l}),ke}}get options(){return this._def.options}}return t.create=(n,e)=>new t({options:n,typeName:be.ZodUnion,...Pe(e)}),t})();const em=t=>t instanceof Hy?em(t.schema):t instanceof vs?em(t.innerType()):t instanceof zy?[t.value]:t instanceof nm?t.options:t instanceof Uy?Object.keys(t.enum):t instanceof $y?em(t._def.innerType):t instanceof Ny?[void 0]:t instanceof Ly?[null]:null;class tm extends Le{_parse(n){const{ctx:e}=this._processInputParams(n);if(e.parsedType!==q.object)return K(e,{code:L.invalid_type,expected:q.object,received:e.parsedType}),ke;const i=this.discriminator,o=this.optionsMap.get(e.data[i]);return o?e.common.async?o._parseAsync({data:e.data,path:e.path,parent:e}):o._parseSync({data:e.data,path:e.path,parent:e}):(K(e,{code:L.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[i]}),ke)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(n,e,i){const r=new Map;for(const o of e){const s=em(o.shape[n]);if(!s)throw new Error(`A discriminator value for key \`${n}\` could not be extracted from all schema options`);for(const a of s){if(r.has(a))throw new Error(`Discriminator property ${String(n)} has duplicate value ${String(a)}`);r.set(a,o)}}return new tm({typeName:be.ZodDiscriminatedUnion,discriminator:n,options:e,optionsMap:r,...Pe(i)})}}function Vy(t,n){const e=Fo(t),i=Fo(n);if(t===n)return{valid:!0,data:t};if(e===q.object&&i===q.object){const r=Ke.objectKeys(n),o=Ke.objectKeys(t).filter(a=>-1!==r.indexOf(a)),s={...t,...n};for(const a of o){const l=Vy(t[a],n[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}if(e===q.array&&i===q.array){if(t.length!==n.length)return{valid:!1};const r=[];for(let o=0;o{class t extends Le{_parse(e){const{status:i,ctx:r}=this._processInputParams(e),o=(s,a)=>{if(Ay(s)||Ay(a))return ke;const l=Vy(s.value,a.value);return l.valid?((Iy(s)||Iy(a))&&i.dirty(),{status:i.value,value:l.data}):(K(r,{code:L.invalid_intersection_types}),ke)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([s,a])=>o(s,a)):o(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}return t.create=(n,e,i)=>new t({left:n,right:e,typeName:be.ZodIntersection,...Pe(i)}),t})(),nl=(()=>{class t extends Le{_parse(e){const{status:i,ctx:r}=this._processInputParams(e);if(r.parsedType!==q.array)return K(r,{code:L.invalid_type,expected:q.array,received:r.parsedType}),ke;if(r.data.lengththis._def.items.length&&(K(r,{code:L.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),i.dirty());const s=[...r.data].map((a,l)=>{const c=this._def.items[l]||this._def.rest;return c?c._parse(new mr(r,a,r.path,l)):null}).filter(a=>!!a);return r.common.async?Promise.all(s).then(a=>vn.mergeArray(i,a)):vn.mergeArray(i,s)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}}return t.create=(n,e)=>{if(!Array.isArray(n))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new t({items:n,typeName:be.ZodTuple,rest:null,...Pe(e)})},t})();class ld extends Le{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){const{status:e,ctx:i}=this._processInputParams(n);if(i.parsedType!==q.object)return K(i,{code:L.invalid_type,expected:q.object,received:i.parsedType}),ke;const r=[],o=this._def.keyType,s=this._def.valueType;for(const a in i.data)r.push({key:o._parse(new mr(i,a,i.path,a)),value:s._parse(new mr(i,i.data[a],i.path,a))});return i.common.async?vn.mergeObjectAsync(e,r):vn.mergeObjectSync(e,r)}get element(){return this._def.valueType}static create(n,e,i){return new ld(e instanceof Le?{keyType:n,valueType:e,typeName:be.ZodRecord,...Pe(i)}:{keyType:Qf.create(),valueType:n,typeName:be.ZodRecord,...Pe(e)})}}let GI=(()=>{class t extends Le{_parse(e){const{status:i,ctx:r}=this._processInputParams(e);if(r.parsedType!==q.map)return K(r,{code:L.invalid_type,expected:q.map,received:r.parsedType}),ke;const o=this._def.keyType,s=this._def.valueType,a=[...r.data.entries()].map(([l,c],d)=>({key:o._parse(new mr(r,l,r.path,[d,"key"])),value:s._parse(new mr(r,c,r.path,[d,"value"]))}));if(r.common.async){const l=new Map;return Promise.resolve().then(Si(function*(){for(const c of a){const d=yield c.key,u=yield c.value;if("aborted"===d.status||"aborted"===u.status)return ke;("dirty"===d.status||"dirty"===u.status)&&i.dirty(),l.set(d.value,u.value)}return{status:i.value,value:l}}))}{const l=new Map;for(const c of a){const d=c.key,u=c.value;if("aborted"===d.status||"aborted"===u.status)return ke;("dirty"===d.status||"dirty"===u.status)&&i.dirty(),l.set(d.value,u.value)}return{status:i.value,value:l}}}}return t.create=(n,e,i)=>new t({valueType:e,keyType:n,typeName:be.ZodMap,...Pe(i)}),t})(),WI=(()=>{class t extends Le{_parse(e){const{status:i,ctx:r}=this._processInputParams(e);if(r.parsedType!==q.set)return K(r,{code:L.invalid_type,expected:q.set,received:r.parsedType}),ke;const o=this._def;null!==o.minSize&&r.data.sizeo.maxSize.value&&(K(r,{code:L.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),i.dirty());const s=this._def.valueType;function a(c){const d=new Set;for(const u of c){if("aborted"===u.status)return ke;"dirty"===u.status&&i.dirty(),d.add(u.value)}return{status:i.value,value:d}}const l=[...r.data.values()].map((c,d)=>s._parse(new mr(r,c,r.path,d)));return r.common.async?Promise.all(l).then(c=>a(c)):a(l)}min(e,i){return new t({...this._def,minSize:{value:e,message:se.toString(i)}})}max(e,i){return new t({...this._def,maxSize:{value:e,message:se.toString(i)}})}size(e,i){return this.min(e,i).max(e,i)}nonempty(e){return this.min(1,e)}}return t.create=(n,e)=>new t({valueType:n,minSize:null,maxSize:null,typeName:be.ZodSet,...Pe(e)}),t})();class il extends Le{constructor(){super(...arguments),this.validate=this.implement}_parse(n){var e=this;const{ctx:i}=this._processInputParams(n);if(i.parsedType!==q.function)return K(i,{code:L.invalid_type,expected:q.function,received:i.parsedType}),ke;function r(l,c){return Zf({data:l,path:i.path,errorMaps:[i.common.contextualErrorMap,i.schemaErrorMap,Yf(),od].filter(d=>!!d),issueData:{code:L.invalid_arguments,argumentsError:c}})}function o(l,c){return Zf({data:l,path:i.path,errorMaps:[i.common.contextualErrorMap,i.schemaErrorMap,Yf(),od].filter(d=>!!d),issueData:{code:L.invalid_return_type,returnTypeError:c}})}const s={errorMap:i.common.contextualErrorMap},a=i.data;return On(this._def.returns instanceof im?Si(function*(...l){const c=new Yr([]),d=yield e._def.args.parseAsync(l,s).catch(f=>{throw c.addIssue(r(l,f)),c}),u=yield a(...d);return yield e._def.returns._def.type.parseAsync(u,s).catch(f=>{throw c.addIssue(o(u,f)),c})}):(...l)=>{const c=this._def.args.safeParse(l,s);if(!c.success)throw new Yr([r(l,c.error)]);const d=a(...c.data),u=this._def.returns.safeParse(d,s);if(!u.success)throw new Yr([o(d,u.error)]);return u.data})}parameters(){return this._def.args}returnType(){return this._def.returns}args(...n){return new il({...this._def,args:nl.create(n).rest(sd.create())})}returns(n){return new il({...this._def,returns:n})}implement(n){return this.parse(n)}strictImplement(n){return this.parse(n)}static create(n,e,i){return new il({args:n||nl.create([]).rest(sd.create()),returns:e||sd.create(),typeName:be.ZodFunction,...Pe(i)})}}let Hy=(()=>{class t extends Le{get schema(){return this._def.getter()}_parse(e){const{ctx:i}=this._processInputParams(e);return this._def.getter()._parse({data:i.data,path:i.path,parent:i})}}return t.create=(n,e)=>new t({getter:n,typeName:be.ZodLazy,...Pe(e)}),t})(),zy=(()=>{class t extends Le{_parse(e){if(e.data!==this._def.value){const i=this._getOrReturnCtx(e);return K(i,{received:i.data,code:L.invalid_literal,expected:this._def.value}),ke}return{status:"valid",value:e.data}}get value(){return this._def.value}}return t.create=(n,e)=>new t({value:n,typeName:be.ZodLiteral,...Pe(e)}),t})();function qI(t,n){return new nm({values:t,typeName:be.ZodEnum,...Pe(n)})}let nm=(()=>{class t extends Le{_parse(e){if("string"!=typeof e.data){const i=this._getOrReturnCtx(e);return K(i,{expected:Ke.joinValues(this._def.values),received:i.parsedType,code:L.invalid_type}),ke}if(-1===this._def.values.indexOf(e.data)){const i=this._getOrReturnCtx(e);return K(i,{received:i.data,code:L.invalid_enum_value,options:this._def.values}),ke}return On(e.data)}get options(){return this._def.values}get enum(){const e={};for(const i of this._def.values)e[i]=i;return e}get Values(){const e={};for(const i of this._def.values)e[i]=i;return e}get Enum(){const e={};for(const i of this._def.values)e[i]=i;return e}extract(e){return t.create(e)}exclude(e){return t.create(this.options.filter(i=>!e.includes(i)))}}return t.create=qI,t})(),Uy=(()=>{class t extends Le{_parse(e){const i=Ke.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==q.string&&r.parsedType!==q.number){const o=Ke.objectValues(i);return K(r,{expected:Ke.joinValues(o),received:r.parsedType,code:L.invalid_type}),ke}if(-1===i.indexOf(e.data)){const o=Ke.objectValues(i);return K(r,{received:r.data,code:L.invalid_enum_value,options:o}),ke}return On(e.data)}get enum(){return this._def.values}}return t.create=(n,e)=>new t({values:n,typeName:be.ZodNativeEnum,...Pe(e)}),t})(),im=(()=>{class t extends Le{unwrap(){return this._def.type}_parse(e){const{ctx:i}=this._processInputParams(e);if(i.parsedType!==q.promise&&!1===i.common.async)return K(i,{code:L.invalid_type,expected:q.promise,received:i.parsedType}),ke;const r=i.parsedType===q.promise?i.data:Promise.resolve(i.data);return On(r.then(o=>this._def.type.parseAsync(o,{path:i.path,errorMap:i.common.contextualErrorMap})))}}return t.create=(n,e)=>new t({type:n,typeName:be.ZodPromise,...Pe(e)}),t})(),vs=(()=>{class t extends Le{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===be.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:i,ctx:r}=this._processInputParams(e),o=this._def.effect||null;if("preprocess"===o.type){const a=o.transform(r.data);return r.common.async?Promise.resolve(a).then(l=>this._def.schema._parseAsync({data:l,path:r.path,parent:r})):this._def.schema._parseSync({data:a,path:r.path,parent:r})}const s={addIssue:a=>{K(r,a),a.fatal?i.abort():i.dirty()},get path(){return r.path}};if(s.addIssue=s.addIssue.bind(s),"refinement"===o.type){const a=l=>{const c=o.refinement(l,s);if(r.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return l};if(!1===r.common.async){const l=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===l.status?ke:("dirty"===l.status&&i.dirty(),a(l.value),{status:i.value,value:l.value})}return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(l=>"aborted"===l.status?ke:("dirty"===l.status&&i.dirty(),a(l.value).then(()=>({status:i.value,value:l.value}))))}if("transform"===o.type){if(!1===r.common.async){const a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Kf(a))return a;const l=o.transform(a.value,s);if(l instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:i.value,value:l}}return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>Kf(a)?Promise.resolve(o.transform(a.value,s)).then(l=>({status:i.value,value:l})):a)}Ke.assertNever(o)}}return t.create=(n,e,i)=>new t({schema:n,typeName:be.ZodEffects,effect:e,...Pe(i)}),t.createWithPreprocess=(n,e,i)=>new t({schema:e,effect:{type:"preprocess",transform:n},typeName:be.ZodEffects,...Pe(i)}),t})(),ys=(()=>{class t extends Le{_parse(e){return this._getType(e)===q.undefined?On(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}return t.create=(n,e)=>new t({innerType:n,typeName:be.ZodOptional,...Pe(e)}),t})(),cd=(()=>{class t extends Le{_parse(e){return this._getType(e)===q.null?On(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}return t.create=(n,e)=>new t({innerType:n,typeName:be.ZodNullable,...Pe(e)}),t})(),$y=(()=>{class t extends Le{_parse(e){const{ctx:i}=this._processInputParams(e);let r=i.data;return i.parsedType===q.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:i.path,parent:i})}removeDefault(){return this._def.innerType}}return t.create=(n,e)=>new t({innerType:n,typeName:be.ZodDefault,defaultValue:"function"==typeof e.default?e.default:()=>e.default,...Pe(e)}),t})(),YI=(()=>{class t extends Le{_parse(e){const{ctx:i}=this._processInputParams(e),r={...i,common:{...i.common,issues:[]}},o=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return Xf(o)?o.then(s=>({status:"valid",value:"valid"===s.status?s.value:this._def.catchValue({get error(){return new Yr(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===o.status?o.value:this._def.catchValue({get error(){return new Yr(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}return t.create=(n,e)=>new t({innerType:n,typeName:be.ZodCatch,catchValue:"function"==typeof e.catch?e.catch:()=>e.catch,...Pe(e)}),t})(),ZI=(()=>{class t extends Le{_parse(e){if(this._getType(e)!==q.nan){const r=this._getOrReturnCtx(e);return K(r,{code:L.invalid_type,expected:q.nan,received:r.parsedType}),ke}return{status:"valid",value:e.data}}}return t.create=n=>new t({typeName:be.ZodNaN,...Pe(n)}),t})();const kY=Symbol("zod_brand");class KI extends Le{_parse(n){const{ctx:e}=this._processInputParams(n);return this._def.type._parse({data:e.data,path:e.path,parent:e})}unwrap(){return this._def.type}}class dd extends Le{_parse(n){var e=this;const{status:i,ctx:r}=this._processInputParams(n);if(r.common.async)return function(){var s=Si(function*(){const a=yield e._def.in._parseAsync({data:r.data,path:r.path,parent:r});return"aborted"===a.status?ke:"dirty"===a.status?(i.dirty(),HI(a.value)):e._def.out._parseAsync({data:a.value,path:r.path,parent:r})});return function(){return s.apply(this,arguments)}}()();{const o=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===o.status?ke:"dirty"===o.status?(i.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:r.path,parent:r})}}static create(n,e){return new dd({in:n,out:e,typeName:be.ZodPipeline})}}const XI=(t,n={},e)=>t?Jf.create().superRefine((i,r)=>{var o,s;if(!t(i)){const a="function"==typeof n?n(i):"string"==typeof n?{message:n}:n,l=null===(s=null!==(o=a.fatal)&&void 0!==o?o:e)||void 0===s||s;r.addIssue({code:"custom",..."string"==typeof a?{message:a}:a,fatal:l})}}):Jf.create(),MY={object:tl.lazycreate};var be=(()=>(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline"}(be||(be={})),be))();const QI=Qf.create,JI=Oy.create,eO=Py.create,tO=vs.create;var V=Object.freeze({__proto__:null,defaultErrorMap:od,setErrorMap:function mY(t){jI=t},getErrorMap:Yf,makeIssue:Zf,EMPTY_PATH:[],addIssueToContext:K,ParseStatus:vn,INVALID:ke,DIRTY:HI,OK:On,isAborted:Ay,isDirty:Iy,isValid:Kf,isAsync:Xf,get util(){return Ke},get objectUtil(){return qf},ZodParsedType:q,getParsedType:Fo,ZodType:Le,ZodString:Qf,ZodNumber:Oy,ZodBigInt:Ry,ZodBoolean:Py,ZodDate:Fy,ZodSymbol:UI,ZodUndefined:Ny,ZodNull:Ly,ZodAny:Jf,ZodUnknown:sd,ZodNever:bs,ZodVoid:$I,ZodArray:ad,ZodObject:tl,ZodUnion:By,ZodDiscriminatedUnion:tm,ZodIntersection:jy,ZodTuple:nl,ZodRecord:ld,ZodMap:GI,ZodSet:WI,ZodFunction:il,ZodLazy:Hy,ZodLiteral:zy,ZodEnum:nm,ZodNativeEnum:Uy,ZodPromise:im,ZodEffects:vs,ZodTransformer:vs,ZodOptional:ys,ZodNullable:cd,ZodDefault:$y,ZodCatch:YI,ZodNaN:ZI,BRAND:kY,ZodBranded:KI,ZodPipeline:dd,custom:XI,Schema:Le,ZodSchema:Le,late:MY,get ZodFirstPartyTypeKind(){return be},coerce:{string:t=>Qf.create({...t,coerce:!0}),number:t=>Oy.create({...t,coerce:!0}),boolean:t=>Py.create({...t,coerce:!0}),bigint:t=>Ry.create({...t,coerce:!0}),date:t=>Fy.create({...t,coerce:!0})},any:Jf.create,array:ad.create,bigint:Ry.create,boolean:eO,date:Fy.create,discriminatedUnion:tm.create,effect:tO,enum:nm.create,function:il.create,instanceof:(t,n={message:`Input not instance of ${t.name}`})=>XI(e=>e instanceof t,n),intersection:jy.create,lazy:Hy.create,literal:zy.create,map:GI.create,nan:ZI.create,nativeEnum:Uy.create,never:bs.create,null:Ly.create,nullable:cd.create,number:JI,object:tl.create,oboolean:()=>eO().optional(),onumber:()=>JI().optional(),optional:ys.create,ostring:()=>QI().optional(),pipeline:dd.create,preprocess:vs.createWithPreprocess,promise:im.create,record:ld.create,set:WI.create,strictObject:tl.strictCreate,string:QI,symbol:UI.create,transformer:tO,tuple:nl.create,undefined:Ny.create,union:By.create,unknown:sd.create,void:$I.create,NEVER:ke,ZodIssueCode:L,quotelessJson:t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError:Yr}),oi=(()=>(function(t){t.Internal="internal",t.External="external"}(oi||(oi={})),oi))();const sZ=V.object({type:V.literal(oi.External),url:V.string(),rel:V.string().default("noopener"),target:V.string()}).partial({rel:!0,target:!0}),aZ=V.object({type:V.literal(oi.Internal),commands:V.any().array(),extras:V.object({queryParams:V.record(V.any()).nullable(),fragment:V.string(),queryParamsHandling:V.enum(["merge","preserve",""]).nullable(),preserveFragment:V.boolean(),onSameUrlNavigation:V.literal("reload"),skipLocationChange:V.boolean(),replaceUrl:V.boolean()}).partial()}).partial({extras:!0}),nO=V.record(V.string().transform(t=>`LinkId:'${t}'`).brand("LinkId"),V.discriminatedUnion("type",[sZ,aZ]));function Ui(t){return nO.keySchema.parse(t)}const Zr=Ui("@@__EMPTY__");let iO=(()=>{var t;let n=((t=class{constructor(){this.http=R(wi),this.router=R(ln,{optional:!0}),this.zone=R(Z)}addOne(i,{id:r,entry:o}){this.addMany(i,new rd({[r]:o}))}addMany(i,{entries:r}){i.patchState(r)}addYaml(i,{yaml:r},o){const s=Gf(r,{filename:o}),a=nO.parse(s);this.addMany(i,new rd(a))}loadYaml(i,{url:r}){return this.http.get(r,{responseType:"text"}).pipe(B(o=>this.addYaml(i,new Ty(o),r)))}navigate(i,{id:r,extras:o}){var s=this;return Si(function*(){const a=i.getState()[r];switch(a?.type){case oi.Internal:yield s.navigateToInternal(a,o);break;case oi.External:s.navigateToExternal(a,o);break;default:throw new Error(`Cannot navigate to non-existing link '${r}'`)}})()}navigateToInternal(i,r){var o=this;return Si(function*(){yield o.zone.run(()=>o.router?.navigate(i.commands,{...i.extras,...r}))})()}navigateToExternal(i,r){const o=N1(i.url,r);window.open(o,i.target,i.rel)}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(My),y("design:type",Function),y("design:paramtypes",[Object,My]),y("design:returntype",void 0)],n.prototype,"addOne",null),z([He(rd),y("design:type",Function),y("design:paramtypes",[Object,rd]),y("design:returntype",void 0)],n.prototype,"addMany",null),z([He(Ty),y("design:type",Function),y("design:paramtypes",[Object,Ty,String]),y("design:returntype",void 0)],n.prototype,"addYaml",null),z([He(Wf),y("design:type",Function),y("design:paramtypes",[Object,Wf]),y("design:returntype",xe)],n.prototype,"loadYaml",null),z([He(Ja),y("design:type",Function),y("design:paramtypes",[Object,Ja]),y("design:returntype",Promise)],n.prototype,"navigate",null),n=z([Ei({name:"linkRegistry",defaults:{}})],n),n})();const ud=Po("ResourceRegistry");class Gy extends(ud("Add")){constructor(n,e){super(),this.id=n,this.entry=e}}class rm extends(ud("Add Many")){constructor(n){super(),this.entries=n}}class Wy extends(ud("Add from Yaml")){constructor(n){super(),this.yaml=n}}class om extends(ud("Load from Yaml")){constructor(n){super(),this.url=n}}class rO extends(ud("Load Markdown")){constructor(n,e){super(),this.id=n,this.url=e}}const oO=V.string().transform(t=>`ResourceId:'${t}'`).brand("ResourceId");var No=(()=>(function(t){t.Markdown="markdown",t.Text="text",t.Url="url"}(No||(No={})),No))();const rl=No,lZ=V.object({type:V.literal(No.Markdown),markdown:V.string()}),cZ=V.object({type:V.literal(No.Text),text:V.string()}),dZ=V.object({type:V.literal(No.Url),url:V.string()}),uZ=V.discriminatedUnion("type",[lZ,cZ,dZ]),hZ=V.string().refine(t=>!function sO(t){return gZ.includes(t)}(t),"Invalid builtin resource format").transform(sm),fZ=V.object({type:hZ}).passthrough(),mZ=V.union([uZ,fZ]),pZ=V.record(oO,mZ),qy="custom:",gZ=Object.values(No);function At(t){return oO.parse(t)}function sm(t){return`${qy}${t}`}function am(t,n,e){const i=t[n];return void 0===e||i?.type===e?i:void 0}let hd=(()=>{var t;let n=((t=class{constructor(){this.http=R(wi)}addOne(i,{id:r,entry:o}){this.addMany(i,new rm({[r]:o}))}addMany(i,{entries:r}){i.patchState(r)}addYaml(i,{yaml:r},o){const s=Gf(r,{filename:o}),a=pZ.parse(s);this.addMany(i,new rm(a))}loadYaml(i,{url:r}){return this.http.get(r,{responseType:"text"}).pipe(B(o=>this.addYaml(i,new Wy(o),r)))}loadMarkdown(i,{id:r,url:o}){return this.http.get(o,{responseType:"text"}).pipe(B(s=>new Gy(r,{type:rl.Markdown,markdown:s})),B(s=>this.addOne(i,s)))}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(Gy),y("design:type",Function),y("design:paramtypes",[Object,Gy]),y("design:returntype",void 0)],n.prototype,"addOne",null),z([He(rm),y("design:type",Function),y("design:paramtypes",[Object,rm]),y("design:returntype",void 0)],n.prototype,"addMany",null),z([He(Wy),y("design:type",Function),y("design:paramtypes",[Object,Wy,String]),y("design:returntype",void 0)],n.prototype,"addYaml",null),z([He(om),y("design:type",Function),y("design:paramtypes",[Object,om]),y("design:returntype",xe)],n.prototype,"loadYaml",null),z([He(rO),y("design:type",Function),y("design:paramtypes",[Object,rO]),y("design:returntype",xe)],n.prototype,"loadMarkdown",null),n=z([Ei({name:"resourceRegistry",defaults:{}})],n),n})();function Kt(t){for(var n=arguments.length,e=Array(n>1?n-1:0),i=1;i3?n.i-4:n.i:Array.isArray(t)?1:cm(t)?2:dm(t)?3:0}function Bo(t,n){return 2===Lo(t)?t.has(n):Object.prototype.hasOwnProperty.call(t,n)}function aO(t,n,e){var i=Lo(t);2===i?t.set(n,e):3===i?t.add(e):t[n]=e}function cm(t){return CZ&&t instanceof Map}function dm(t){return DZ&&t instanceof Set}function Xt(t){return t.o||t.t}function Zy(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var n=pO(t);delete n[Ae];for(var e=ol(n),i=0;i1&&(t.set=t.add=t.clear=t.delete=_Z),Object.freeze(t),n&&Xr(t,function(e,i){return Ky(i,!0)},!0)),t}function _Z(){Kt(2)}function Xy(t){return null==t||"object"!=typeof t||Object.isFrozen(t)}function gr(t){var n=a0[t];return n||Kt(18,t),n}function fd(){return pd}function Jy(t,n){n&&(gr("Patches"),t.u=[],t.s=[],t.v=n)}function um(t){e0(t),t.p.forEach(bZ),t.p=null}function e0(t){t===pd&&(pd=t.l)}function cO(t){return pd={p:[],l:pd,h:t,m:!0,_:0}}function bZ(t){var n=t[Ae];0===n.i||1===n.i?n.j():n.g=!0}function t0(t,n){n._=n.p.length;var e=n.p[0],i=void 0!==t&&t!==e;return n.h.O||gr("ES5").S(n,t,i),i?(e[Ae].P&&(um(n),Kt(4)),pr(t)&&(t=hm(n,t),n.l||fm(n,t)),n.u&&gr("Patches").M(e[Ae].t,t,n.u,n.s)):t=hm(n,e,[]),um(n),n.u&&n.v(n.u,n.s),t!==s0?t:void 0}function hm(t,n,e){if(Xy(n))return n;var i=n[Ae];if(!i)return Xr(n,function(a,l){return dO(t,i,n,a,l,e)},!0),n;if(i.A!==t)return n;if(!i.P)return fm(t,i.t,!0),i.t;if(!i.I){i.I=!0,i.A._--;var r=4===i.i||5===i.i?i.o=Zy(i.k):i.o,o=r,s=!1;3===i.i&&(o=new Set(r),r.clear(),s=!0),Xr(o,function(a,l){return dO(t,i,r,a,l,e,s)}),fm(t,r,!1),e&&t.u&&gr("Patches").N(i,e,t.u,t.s)}return i.o}function dO(t,n,e,i,r,o,s){if(Kr(r)){var a=hm(t,r,o&&n&&3!==n.i&&!Bo(n.R,i)?o.concat(i):void 0);if(aO(e,i,a),!Kr(a))return;t.m=!1}else s&&e.add(r);if(pr(r)&&!Xy(r)){if(!t.h.D&&t._<1)return;hm(t,r),n&&n.A.l||fm(t,r)}}function fm(t,n,e){void 0===e&&(e=!1),!t.l&&t.h.D&&t.m&&Ky(n,e)}function n0(t,n){var e=t[Ae];return(e?Xt(e):t)[n]}function uO(t,n){if(n in t)for(var e=Object.getPrototypeOf(t);e;){var i=Object.getOwnPropertyDescriptor(e,n);if(i)return i;e=Object.getPrototypeOf(e)}}function Un(t){t.P||(t.P=!0,t.l&&Un(t.l))}function r0(t){t.o||(t.o=Zy(t.t))}function md(t,n,e){var i=cm(n)?gr("MapSet").F(n,e):dm(n)?gr("MapSet").T(n,e):t.O?function(r,o){var s=Array.isArray(r),a={i:s?1:0,A:o?o.A:fd(),P:!1,I:!1,R:{},l:o,t:r,k:null,o:null,j:null,C:!1},l=a,c=_d;s&&(l=[a],c=bd);var d=Proxy.revocable(l,c),u=d.revoke,h=d.proxy;return a.k=h,a.j=u,h}(n,e):gr("ES5").J(n,e);return(e?e.A:fd()).p.push(i),i}function hO(t,n){switch(n){case 2:return new Map(t);case 3:return Array.from(t)}return Zy(t)}var fO,pd,o0=typeof Symbol<"u"&&"symbol"==typeof Symbol("x"),CZ=typeof Map<"u",DZ=typeof Set<"u",mO=typeof Proxy<"u"&&void 0!==Proxy.revocable&&typeof Reflect<"u",s0=o0?Symbol.for("immer-nothing"):((fO={})["immer-nothing"]=!0,fO),gd=o0?Symbol.for("immer-draftable"):"__$immer_draftable",Ae=o0?Symbol.for("immer-state"):"__$immer_state",EZ=(typeof Symbol<"u"&&Symbol,""+Object.prototype.constructor),ol=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,pO=Object.getOwnPropertyDescriptors||function(t){var n={};return ol(t).forEach(function(e){n[e]=Object.getOwnPropertyDescriptor(t,e)}),n},a0={},_d={get:function(t,n){if(n===Ae)return t;var r,a,l,e=Xt(t);if(!Bo(e,n))return r=t,(l=uO(e,n))?"value"in l?l.value:null===(a=l.get)||void 0===a?void 0:a.call(r.k):void 0;var i=e[n];return t.I||!pr(i)?i:i===n0(t.t,n)?(r0(t),t.o[n]=md(t.A.h,i,t)):i},has:function(t,n){return n in Xt(t)},ownKeys:function(t){return Reflect.ownKeys(Xt(t))},set:function(t,n,e){var i=uO(Xt(t),n);if(i?.set)return i.set.call(t.k,e),!0;if(!t.P){var r=n0(Xt(t),n),o=r?.[Ae];if(o&&o.t===e)return t.o[n]=e,t.R[n]=!1,!0;if(function lO(t,n){return t===n?0!==t||1/t==1/n:t!=t&&n!=n}(e,r)&&(void 0!==e||Bo(t.t,n)))return!0;r0(t),Un(t)}return t.o[n]===e&&(void 0!==e||n in t.o)||Number.isNaN(e)&&Number.isNaN(t.o[n])||(t.o[n]=e,t.R[n]=!0),!0},deleteProperty:function(t,n){return void 0!==n0(t.t,n)||n in t.t?(t.R[n]=!1,r0(t),Un(t)):delete t.R[n],t.o&&delete t.o[n],!0},getOwnPropertyDescriptor:function(t,n){var e=Xt(t),i=Reflect.getOwnPropertyDescriptor(e,n);return i&&{writable:!0,configurable:1!==t.i||"length"!==n,enumerable:i.enumerable,value:e[n]}},defineProperty:function(){Kt(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){Kt(12)}},bd={};Xr(_d,function(t,n){bd[t]=function(){return arguments[0]=arguments[0][0],n.apply(this,arguments)}}),bd.deleteProperty=function(t,n){return bd.set.call(this,t,n,void 0)},bd.set=function(t,n,e){return _d.set.call(this,t[0],n,e,t[0])};var SZ=function(){function t(e){var i=this;this.O=mO,this.D=!0,this.produce=function(r,o,s){if("function"==typeof r&&"function"!=typeof o){var a=o;o=r;var l=i;return function(g){var b=this;void 0===g&&(g=a);for(var v=arguments.length,w=Array(v>1?v-1:0),C=1;C1?d-1:0),h=1;h=0;r--){var o=i[r];if(0===o.path.length&&"replace"===o.op){e=o.value;break}}r>-1&&(i=i.slice(r+1));var s=gr("Patches").$;return Kr(e)?s(e,i):this.produce(e,function(a){return s(a,i)})},t}(),si=new SZ,l0=si.produce;si.produceWithPatches.bind(si),si.setAutoFreeze.bind(si),si.setUseProxies.bind(si),si.applyPatches.bind(si),si.createDraft.bind(si),si.finishDraft.bind(si);const sl=l0;var Qr=(()=>(function(t){t.Local="local",t.Session="session"}(Qr||(Qr={})),Qr))();const c0=Po("Storage");class d0 extends(c0("Set")){constructor(n,e,i){super(),this.id=n,this.key=e,this.value=i}}class gO extends(c0("Delete")){constructor(n,e){super(),this.id=n,this.key=e}}class _O extends(c0("Clear")){constructor(n){super(),this.id=n}}var ws,vd;let _r=((ws=class{static getStorage(n){switch(n){case Qr.Local:return localStorage;case Qr.Session:return sessionStorage;default:throw new Error(`No such storage '${n}'`)}}set(n,{id:e,key:i,value:r}){vd.getStorage(e).setItem(i,r),this.increaseChangeCount(n,e)}delete(n,{id:e,key:i}){vd.getStorage(e).removeItem(i),this.increaseChangeCount(n,e)}clear(n,{id:e}){vd.getStorage(e).clear(),this.increaseChangeCount(n,e)}increaseChangeCount(n,e){n.setState(l0(i=>{i[e]+=1}))}}).\u0275fac=function(n){return new(n||ws)},ws.\u0275prov=T({token:ws,factory:ws.\u0275fac}),vd=ws);z([He(d0),y("design:type",Function),y("design:paramtypes",[Object,d0]),y("design:returntype",void 0)],_r.prototype,"set",null),z([He(gO),y("design:type",Function),y("design:paramtypes",[Object,gO]),y("design:returntype",void 0)],_r.prototype,"delete",null),z([He(_O),y("design:type",Function),y("design:paramtypes",[Object,_O]),y("design:returntype",void 0)],_r.prototype,"clear",null),_r=vd=z([Ei({name:"storage",defaults:{[Qr.Local]:0,[Qr.Session]:0}})],_r);let kZ=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[sn.forFeature([iO,hd,_r])]}),n})();const pm={schedule(t,n){const e=setTimeout(t,n);return()=>clearTimeout(e)},scheduleBeforeRender(t){if(typeof window>"u")return pm.schedule(t,0);if(typeof window.requestAnimationFrame>"u")return pm.schedule(t,16);const n=window.requestAnimationFrame(t);return()=>window.cancelAnimationFrame(n)}};let u0;function NZ(t,n,e){let i=e;return function TZ(t){return!!t&&t.nodeType===Node.ELEMENT_NODE}(t)&&n.some((r,o)=>!("*"===r||!function IZ(t,n){if(!u0){const e=Element.prototype;u0=e.matches||e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector}return t.nodeType===Node.ELEMENT_NODE&&u0.call(t,n)}(t,r)||(i=o,0))),i}class BZ{constructor(n,e){this.componentFactory=e.get(Ni).resolveComponentFactory(n)}create(n){return new VZ(this.componentFactory,n)}}class VZ{constructor(n,e){this.componentFactory=n,this.injector=e,this.eventEmitters=new sf(1),this.events=this.eventEmitters.pipe(Hn(i=>Gn(...i))),this.componentRef=null,this.viewChangeDetectorRef=null,this.inputChanges=null,this.hasInputChanges=!1,this.implementsOnChanges=!1,this.scheduledChangeDetectionFn=null,this.scheduledDestroyFn=null,this.initialInputValues=new Map,this.unchangedInputs=new Set(this.componentFactory.inputs.map(({propName:i})=>i)),this.ngZone=this.injector.get(Z),this.elementZone=typeof Zone>"u"?null:this.ngZone.run(()=>Zone.current)}connect(n){this.runInZone(()=>{if(null!==this.scheduledDestroyFn)return this.scheduledDestroyFn(),void(this.scheduledDestroyFn=null);null===this.componentRef&&this.initializeComponent(n)})}disconnect(){this.runInZone(()=>{null===this.componentRef||null!==this.scheduledDestroyFn||(this.scheduledDestroyFn=pm.schedule(()=>{null!==this.componentRef&&(this.componentRef.destroy(),this.componentRef=null,this.viewChangeDetectorRef=null)},10))})}getInputValue(n){return this.runInZone(()=>null===this.componentRef?this.initialInputValues.get(n):this.componentRef.instance[n])}setInputValue(n,e){this.runInZone(()=>{null!==this.componentRef?function OZ(t,n){return t===n||t!=t&&n!=n}(e,this.getInputValue(n))&&(void 0!==e||!this.unchangedInputs.has(n))||(this.recordInputChange(n,e),this.unchangedInputs.delete(n),this.hasInputChanges=!0,this.componentRef.instance[n]=e,this.scheduleDetectChanges()):this.initialInputValues.set(n,e)})}initializeComponent(n){const e=xt.create({providers:[],parent:this.injector}),i=function FZ(t,n){const e=t.childNodes,i=n.map(()=>[]);let r=-1;n.some((o,s)=>"*"===o&&(r=s,!0));for(let o=0,s=e.length;o{this.initialInputValues.has(n)&&this.setInputValue(n,this.initialInputValues.get(n))}),this.initialInputValues.clear()}initializeOutputs(n){const e=this.componentFactory.outputs.map(({propName:i,templateName:r})=>n.instance[i].pipe(B(s=>({name:r,value:s}))));this.eventEmitters.next(e)}callNgOnChanges(n){if(!this.implementsOnChanges||null===this.inputChanges)return;const e=this.inputChanges;this.inputChanges=null,n.instance.ngOnChanges(e)}markViewForCheck(n){this.hasInputChanges&&(this.hasInputChanges=!1,n.markForCheck())}scheduleDetectChanges(){this.scheduledChangeDetectionFn||(this.scheduledChangeDetectionFn=pm.scheduleBeforeRender(()=>{this.scheduledChangeDetectionFn=null,this.detectChanges()}))}recordInputChange(n,e){if(!this.implementsOnChanges)return;null===this.inputChanges&&(this.inputChanges={});const i=this.inputChanges[n];if(i)return void(i.currentValue=e);const r=this.unchangedInputs.has(n),o=r?void 0:this.getInputValue(n);this.inputChanges[n]=new jx(o,e,r)}detectChanges(){null!==this.componentRef&&(this.callNgOnChanges(this.componentRef),this.markViewForCheck(this.viewChangeDetectorRef),this.componentRef.changeDetectorRef.detectChanges())}runInZone(n){return this.elementZone&&Zone.current!==this.elementZone?this.ngZone.run(n):n()}}class jZ extends HTMLElement{constructor(){super(...arguments),this.ngElementEventsSubscription=null}}let zZ=(()=>{var t;class n{constructor(){this.el=R(H).nativeElement}static create(i){return i.createComponent(n,{index:0})}ngAfterViewInit(){this.el.remove()}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-destroy-host"]],standalone:!0,features:[Be],decls:0,vars:0,template:function(i,r){},styles:["[_nghost-%COMP%]{display:none}"]}),n})();class UZ extends sf{constructor(n){super(1),n.onDestroy(()=>{this.next(),this.complete()})}}const bO=new WeakMap;function vO(t){for(const n of t())if(null!=n)return n;throw new Error("Unreachable")}function al(){const t=function $Z(){return vO(function*(){yield R(H,{optional:!0})?.nativeElement,yield R(it,{optional:!0}),yield R(bo)})}();let n=bO.get(t);if(!n){const e=function GZ(){return vO(function*(){const t=R(it,{optional:!0});yield t&&zZ.create(t),yield R(bo)})}();n=new UZ(e).asObservable(),bO.set(t,n)}return n}function ll(t,n){return R(ms).select(t).pipe(ze(al()),function WZ(t){const n=t?.notifyOnChange??!0,e=R(tn,{optional:!0});if(n&&e){const i=()=>e.markForCheck();return We({next:i,error:i,complete:i})}return i=>i}(n))}const yO={};class qZ{constructor(){this.value=void 0,this.errorValue=yO}get(){if(this.errorValue!==yO)throw this.errorValue;return this.value}next(n){this.value=n}error(n){this.value=void 0,this.errorValue=n}}function $n(t){const n=ll(t,{notifyOnChange:!0}),e=new qZ;return n.subscribe(e),e.get.bind(e)}function ct(t,...n){const e=$n(t);return(...i)=>e()(...n,...i)}let h0,vt=(()=>{class t{static entry(e){return(i,r)=>am(e,i,r)}static anyEntry(e){return i=>am(e,i)}static field(e){return(i,r,o,s)=>am(e,i,r)?.[o]??s}static anyText(e){return i=>{const r=am(e,i);switch(r?.type){case rl.Markdown:return r.markdown;case rl.Text:return r.text;default:return""}}}static markdown(e){return i=>e(i,rl.Markdown,"markdown","")}static text(e){return i=>e(i,rl.Text,"text","")}static url(e){return i=>e(i,rl.Url,"url","")}}return z([Dt([hd]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"entry",null),z([Dt([hd]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"anyEntry",null),z([Dt([hd]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"field",null),z([Dt([hd]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"anyText",null),z([Dt([t.field]),y("design:type",Function),y("design:paramtypes",[Function]),y("design:returntype",Function)],t,"markdown",null),z([Dt([t.field]),y("design:type",Function),y("design:paramtypes",[Function]),y("design:returntype",Function)],t,"text",null),z([Dt([t.field]),y("design:type",Function),y("design:paramtypes",[Function]),y("design:returntype",Function)],t,"url",null),t})();try{h0=typeof Intl<"u"&&Intl.v8BreakIterator}catch{h0=!1}let cl,pt=(()=>{class t{constructor(e){this._platformId=e,this.isBrowser=this._platformId?ar(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!h0)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}}return t.\u0275fac=function(e){return new(e||t)(_(ss))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const wO=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function xO(){if(cl)return cl;if("object"!=typeof document||!document)return cl=new Set(wO),cl;let t=document.createElement("input");return cl=new Set(wO.filter(n=>(t.setAttribute("type",n),t.type===n))),cl}let yd,gm,xs,f0;function dl(t){return function YZ(){if(null==yd&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>yd=!0}))}finally{yd=yd||!1}return yd}()?t:!!t.capture}function CO(){if(null==xs){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return xs=!1,xs;if("scrollBehavior"in document.documentElement.style)xs=!0;else{const t=Element.prototype.scrollTo;xs=!!t&&!/\{\s*\[native code\]\s*\}/.test(t.toString())}}return xs}function wd(){if("object"!=typeof document||!document)return 0;if(null==gm){const t=document.createElement("div"),n=t.style;t.dir="rtl",n.width="1px",n.overflow="auto",n.visibility="hidden",n.pointerEvents="none",n.position="absolute";const e=document.createElement("div"),i=e.style;i.width="2px",i.height="1px",t.appendChild(e),document.body.appendChild(t),gm=0,0===t.scrollLeft&&(t.scrollLeft=1,gm=0===t.scrollLeft?1:2),t.remove()}return gm}function _m(){let t=typeof document<"u"&&document?document.activeElement:null;for(;t&&t.shadowRoot;){const n=t.shadowRoot.activeElement;if(n===t)break;t=n}return t}function Vo(t){return t.composedPath?t.composedPath()[0]:t.target}function m0(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}function ul(t,...n){return n.length?n.some(e=>t[e]):t.altKey||t.shiftKey||t.ctrlKey||t.metaKey}class mK extends rt{constructor(n,e){super()}schedule(n,e=0){return this}}const bm={setInterval(t,n,...e){const{delegate:i}=bm;return i?.setInterval?i.setInterval(t,n,...e):setInterval(t,n,...e)},clearInterval(t){const{delegate:n}=bm;return(n?.clearInterval||clearInterval)(t)},delegate:void 0};class g0 extends mK{constructor(n,e){super(n,e),this.scheduler=n,this.work=e,this.pending=!1}schedule(n,e=0){var i;if(this.closed)return this;this.state=n;const r=this.id,o=this.scheduler;return null!=r&&(this.id=this.recycleAsyncId(o,r,e)),this.pending=!0,this.delay=e,this.id=null!==(i=this.id)&&void 0!==i?i:this.requestAsyncId(o,this.id,e),this}requestAsyncId(n,e,i=0){return bm.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,e,i=0){if(null!=i&&this.delay===i&&!1===this.pending)return e;null!=e&&bm.clearInterval(e)}execute(n,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,e);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,e){let r,i=!1;try{this.work(n)}catch(o){i=!0,r=o||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),r}unsubscribe(){if(!this.closed){const{id:n,scheduler:e}=this,{actions:i}=e;this.work=this.state=this.scheduler=null,this.pending=!1,iu(i,this),null!=n&&(this.id=this.recycleAsyncId(e,n,null)),this.delay=null,super.unsubscribe()}}}class xd{constructor(n,e=xd.now){this.schedulerActionCtor=n,this.now=e}schedule(n,e=0,i){return new this.schedulerActionCtor(this,n).schedule(i,e)}}xd.now=xv.now;class _0 extends xd{constructor(n,e=xd.now){super(n,e),this.actions=[],this._active=!1}flush(n){const{actions:e}=this;if(this._active)return void e.push(n);let i;this._active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=e.shift());if(this._active=!1,i){for(;n=e.shift();)n.unsubscribe();throw i}}}const b0=new _0(g0),pK=b0;function v0(t,n=b0){return gt((e,i)=>{let r=null,o=null,s=null;const a=()=>{if(r){r.unsubscribe(),r=null;const c=o;o=null,i.next(c)}};function l(){const c=s+t,d=n.now();if(d{o=c,s=n.now(),r||(r=n.schedule(l,t),i.add(r))},()=>{a(),i.complete()},void 0,()=>{o=r=null}))})}function vm(t){return mt((n,e)=>t<=e)}function Ve(t){return null!=t&&"false"!=`${t}`}function ai(t,n=0){return kO(t)?Number(t):n}function kO(t){return!isNaN(parseFloat(t))&&!isNaN(Number(t))}function ym(t){return Array.isArray(t)?t:[t]}function Ut(t){return null==t?"":"string"==typeof t?t:`${t}px`}function Jr(t){return t instanceof H?t.nativeElement:t}let MO=(()=>{class t{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),gK=(()=>{class t{constructor(e){this._mutationObserverFactory=e,this._observedElements=new Map}ngOnDestroy(){this._observedElements.forEach((e,i)=>this._cleanupObserver(i))}observe(e){const i=Jr(e);return new xe(r=>{const s=this._observeElement(i).subscribe(r);return()=>{s.unsubscribe(),this._unobserveElement(i)}})}_observeElement(e){if(this._observedElements.has(e))this._observedElements.get(e).count++;else{const i=new te,r=this._mutationObserverFactory.create(o=>i.next(o));r&&r.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:r,stream:i,count:1})}return this._observedElements.get(e).stream}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){const{observer:i,stream:r}=this._observedElements.get(e);i&&i.disconnect(),r.complete(),this._observedElements.delete(e)}}}return t.\u0275fac=function(e){return new(e||t)(_(MO))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),wm=(()=>{class t{get disabled(){return this._disabled}set disabled(e){this._disabled=Ve(e),this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(e){this._debounce=ai(e),this._subscribe()}constructor(e,i,r){this._contentObserver=e,this._elementRef=i,this._ngZone=r,this.event=new Q,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const e=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular(()=>{this._currentSubscription=(this.debounce?e.pipe(v0(this.debounce)):e).subscribe(this.event)})}_unsubscribe(){this._currentSubscription?.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(m(gK),m(H),m(Z))},t.\u0275dir=M({type:t,selectors:[["","cdkObserveContent",""]],inputs:{disabled:["cdkObserveContentDisabled","disabled"],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]}),t})(),xm=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:[MO]}),t})();const TO=new Set;let hl,_K=(()=>{class t{constructor(e){this._platform=e,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):vK}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&function bK(t){if(!TO.has(t))try{hl||(hl=document.createElement("style"),hl.setAttribute("type","text/css"),document.head.appendChild(hl)),hl.sheet&&(hl.sheet.insertRule(`@media ${t} {body{ }}`,0),TO.add(t))}catch(n){console.error(n)}}(e),this._matchMedia(e)}}return t.\u0275fac=function(e){return new(e||t)(_(pt))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function vK(t){return{matches:"all"===t||""===t,media:t,addListener:()=>{},removeListener:()=>{}}}let yK=(()=>{class t{constructor(e,i){this._mediaMatcher=e,this._zone=i,this._queries=new Map,this._destroySubject=new te}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return AO(ym(e)).some(r=>this._registerQuery(r).mql.matches)}observe(e){let o=Ba(AO(ym(e)).map(s=>this._registerQuery(s).observable));return o=cf(o.pipe(Yt(1)),o.pipe(vm(1),v0(0))),o.pipe(B(s=>{const a={matches:!1,breakpoints:{}};return s.forEach(({matches:l,query:c})=>{a.matches=a.matches||l,a.breakpoints[c]=l}),a}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);const i=this._mediaMatcher.matchMedia(e),o={observable:new xe(s=>{const a=l=>this._zone.run(()=>s.next(l));return i.addListener(a),()=>{i.removeListener(a)}}).pipe(dr(i),B(({matches:s})=>({query:e,matches:s})),ze(this._destroySubject)),mql:i};return this._queries.set(e,o),o}}return t.\u0275fac=function(e){return new(e||t)(_(_K),_(Z))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function AO(t){return t.map(n=>n.split(",")).reduce((n,e)=>n.concat(e)).map(n=>n.trim())}class CK{constructor(n){this._items=n,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new te,this._typeaheadSubscription=rt.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=e=>e.disabled,this._pressedLetters=[],this.tabOut=new te,this.change=new te,n instanceof Ca&&(this._itemChangesSubscription=n.changes.subscribe(e=>{if(this._activeItem){const r=e.toArray().indexOf(this._activeItem);r>-1&&r!==this._activeItemIndex&&(this._activeItemIndex=r)}}))}skipPredicate(n){return this._skipPredicateFn=n,this}withWrap(n=!0){return this._wrap=n,this}withVerticalOrientation(n=!0){return this._vertical=n,this}withHorizontalOrientation(n){return this._horizontal=n,this}withAllowedModifierKeys(n){return this._allowedModifierKeys=n,this}withTypeAhead(n=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe(We(e=>this._pressedLetters.push(e)),v0(n),mt(()=>this._pressedLetters.length>0),B(()=>this._pressedLetters.join(""))).subscribe(e=>{const i=this._getItemsArray();for(let r=1;r!n[o]||this._allowedModifierKeys.indexOf(o)>-1);switch(e){case 9:return void this.tabOut.next();case 40:if(this._vertical&&r){this.setNextItemActive();break}return;case 38:if(this._vertical&&r){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&r){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&r){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&r){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&r){this.setLastItemActive();break}return;case 33:if(this._pageUpAndDown.enabled&&r){const o=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(o>0?o:0,1);break}return;case 34:if(this._pageUpAndDown.enabled&&r){const o=this._activeItemIndex+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(o=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))))}this._pressedLetters=[],n.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._items.length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(n){const e=this._getItemsArray(),i="number"==typeof n?n:e.indexOf(n);this._activeItem=e[i]??null,this._activeItemIndex=i}destroy(){this._typeaheadSubscription.unsubscribe(),this._itemChangesSubscription?.unsubscribe(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(n){this._wrap?this._setActiveInWrapMode(n):this._setActiveInDefaultMode(n)}_setActiveInWrapMode(n){const e=this._getItemsArray();for(let i=1;i<=e.length;i++){const r=(this._activeItemIndex+n*i+e.length)%e.length;if(!this._skipPredicateFn(e[r]))return void this.setActiveItem(r)}}_setActiveInDefaultMode(n){this._setActiveItemByIndex(this._activeItemIndex+n,n)}_setActiveItemByIndex(n,e){const i=this._getItemsArray();if(i[n]){for(;this._skipPredicateFn(i[n]);)if(!i[n+=e])return;this.setActiveItem(n)}}_getItemsArray(){return this._items instanceof Ca?this._items.toArray():this._items}}class RO extends CK{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(n){return this._origin=n,this}setActiveItem(n){super.setActiveItem(n),this.activeItem&&this.activeItem.focus(this._origin)}}let Cm=(()=>{class t{constructor(e){this._platform=e}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return function EK(t){return!!(t.offsetWidth||t.offsetHeight||"function"==typeof t.getClientRects&&t.getClientRects().length)}(e)&&"visible"===getComputedStyle(e).visibility}isTabbable(e){if(!this._platform.isBrowser)return!1;const i=function DK(t){try{return t.frameElement}catch{return null}}(function RK(t){return t.ownerDocument&&t.ownerDocument.defaultView||window}(e));if(i&&(-1===FO(i)||!this.isVisible(i)))return!1;let r=e.nodeName.toLowerCase(),o=FO(e);return e.hasAttribute("contenteditable")?-1!==o:!("iframe"===r||"object"===r||this._platform.WEBKIT&&this._platform.IOS&&!function IK(t){let n=t.nodeName.toLowerCase(),e="input"===n&&t.type;return"text"===e||"password"===e||"select"===n||"textarea"===n}(e))&&("audio"===r?!!e.hasAttribute("controls")&&-1!==o:"video"===r?-1!==o&&(null!==o||this._platform.FIREFOX||e.hasAttribute("controls")):e.tabIndex>=0)}isFocusable(e,i){return function OK(t){return!function kK(t){return function TK(t){return"input"==t.nodeName.toLowerCase()}(t)&&"hidden"==t.type}(t)&&(function SK(t){let n=t.nodeName.toLowerCase();return"input"===n||"select"===n||"button"===n||"textarea"===n}(t)||function MK(t){return function AK(t){return"a"==t.nodeName.toLowerCase()}(t)&&t.hasAttribute("href")}(t)||t.hasAttribute("contenteditable")||PO(t))}(e)&&!this.isDisabled(e)&&(i?.ignoreVisibility||this.isVisible(e))}}return t.\u0275fac=function(e){return new(e||t)(_(pt))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function PO(t){if(!t.hasAttribute("tabindex")||void 0===t.tabIndex)return!1;let n=t.getAttribute("tabindex");return!(!n||isNaN(parseInt(n,10)))}function FO(t){if(!PO(t))return null;const n=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(n)?-1:n}class PK{get enabled(){return this._enabled}set enabled(n){this._enabled=n,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}constructor(n,e,i,r,o=!1){this._element=n,this._checker=e,this._ngZone=i,this._document=r,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,o||this.attachAnchors()}destroy(){const n=this._startAnchor,e=this._endAnchor;n&&(n.removeEventListener("focus",this.startAnchorListener),n.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(n)))})}focusFirstTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(n)))})}focusLastTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(n)))})}_getRegionBoundary(n){const e=this._element.querySelectorAll(`[cdk-focus-region-${n}], [cdkFocusRegion${n}], [cdk-focus-${n}]`);return"start"==n?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(n){const e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){const i=this._getFirstTabbableElement(e);return i?.focus(n),!!i}return e.focus(n),!0}return this.focusFirstTabbableElement(n)}focusFirstTabbableElement(n){const e=this._getRegionBoundary("start");return e&&e.focus(n),!!e}focusLastTabbableElement(n){const e=this._getRegionBoundary("end");return e&&e.focus(n),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(n){if(this._checker.isFocusable(n)&&this._checker.isTabbable(n))return n;const e=n.children;for(let i=0;i=0;i--){const r=e[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[i]):null;if(r)return r}return null}_createAnchor(){const n=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,n),n.classList.add("cdk-visually-hidden"),n.classList.add("cdk-focus-trap-anchor"),n.setAttribute("aria-hidden","true"),n}_toggleAnchorTabIndex(n,e){n?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(n){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_executeOnStable(n){this._ngZone.isStable?n():this._ngZone.onStable.pipe(Yt(1)).subscribe(n)}}let y0=(()=>{class t{constructor(e,i,r){this._checker=e,this._ngZone=i,this._document=r}create(e,i=!1){return new PK(e,this._checker,this._ngZone,this._document,i)}}return t.\u0275fac=function(e){return new(e||t)(_(Cm),_(Z),_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();function NO(t){return 0===t.buttons||0===t.offsetX&&0===t.offsetY}function LO(t){const n=t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0];return!(!n||-1!==n.identifier||null!=n.radiusX&&1!==n.radiusX||null!=n.radiusY&&1!==n.radiusY)}const FK=new k("cdk-input-modality-detector-options"),NK={ignoreKeys:[18,17,224,91,16]},fl=dl({passive:!0,capture:!0});let LK=(()=>{class t{get mostRecentModality(){return this._modality.value}constructor(e,i,r,o){this._platform=e,this._mostRecentTarget=null,this._modality=new Tt(null),this._lastTouchMs=0,this._onKeydown=s=>{this._options?.ignoreKeys?.some(a=>a===s.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=Vo(s))},this._onMousedown=s=>{Date.now()-this._lastTouchMs<650||(this._modality.next(NO(s)?"keyboard":"mouse"),this._mostRecentTarget=Vo(s))},this._onTouchstart=s=>{LO(s)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=Vo(s))},this._options={...NK,...o},this.modalityDetected=this._modality.pipe(vm(1)),this.modalityChanged=this.modalityDetected.pipe(lf()),e.isBrowser&&i.runOutsideAngular(()=>{r.addEventListener("keydown",this._onKeydown,fl),r.addEventListener("mousedown",this._onMousedown,fl),r.addEventListener("touchstart",this._onTouchstart,fl)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,fl),document.removeEventListener("mousedown",this._onMousedown,fl),document.removeEventListener("touchstart",this._onTouchstart,fl))}}return t.\u0275fac=function(e){return new(e||t)(_(pt),_(Z),_(ge),_(FK,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const VK=new k("cdk-focus-monitor-default-options"),Dm=dl({passive:!0,capture:!0});let Cd=(()=>{class t{constructor(e,i,r,o,s){this._ngZone=e,this._platform=i,this._inputModalityDetector=r,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new te,this._rootNodeFocusAndBlurListener=a=>{for(let c=Vo(a);c;c=c.parentElement)"focus"===a.type?this._onFocus(a,c):this._onBlur(a,c)},this._document=o,this._detectionMode=s?.detectionMode||0}monitor(e,i=!1){const r=Jr(e);if(!this._platform.isBrowser||1!==r.nodeType)return j(null);const o=function KZ(t){if(function ZZ(){if(null==f0){const t=typeof document<"u"?document.head:null;f0=!(!t||!t.createShadowRoot&&!t.attachShadow)}return f0}()){const n=t.getRootNode?t.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}(r)||this._getDocument(),s=this._elementInfo.get(r);if(s)return i&&(s.checkChildren=!0),s.subject;const a={checkChildren:i,subject:new te,rootNode:o};return this._elementInfo.set(r,a),this._registerGlobalListeners(a),a.subject}stopMonitoring(e){const i=Jr(e),r=this._elementInfo.get(i);r&&(r.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(r))}focusVia(e,i,r){const o=Jr(e);o===this._getDocument().activeElement?this._getClosestElementsInfo(o).forEach(([a,l])=>this._originChanged(a,i,l)):(this._setOrigin(i),"function"==typeof o.focus&&o.focus(r))}ngOnDestroy(){this._elementInfo.forEach((e,i)=>this.stopMonitoring(i))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return 1===this._detectionMode||!!e?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(e,i){e.classList.toggle("cdk-focused",!!i),e.classList.toggle("cdk-touch-focused","touch"===i),e.classList.toggle("cdk-keyboard-focused","keyboard"===i),e.classList.toggle("cdk-mouse-focused","mouse"===i),e.classList.toggle("cdk-program-focused","program"===i)}_setOrigin(e,i=!1){this._ngZone.runOutsideAngular(()=>{this._origin=e,this._originFromTouchInteraction="touch"===e&&i,0===this._detectionMode&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(e,i){const r=this._elementInfo.get(i),o=Vo(e);!r||!r.checkChildren&&i!==o||this._originChanged(i,this._getFocusOrigin(o),r)}_onBlur(e,i){const r=this._elementInfo.get(i);!r||r.checkChildren&&e.relatedTarget instanceof Node&&i.contains(e.relatedTarget)||(this._setClasses(i),this._emitOrigin(r,null))}_emitOrigin(e,i){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(i))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;const i=e.rootNode,r=this._rootNodeFocusListenerCount.get(i)||0;r||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,Dm),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,Dm)}),this._rootNodeFocusListenerCount.set(i,r+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(ze(this._stopInputModalityDetector)).subscribe(o=>{this._setOrigin(o,!0)}))}_removeGlobalListeners(e){const i=e.rootNode;if(this._rootNodeFocusListenerCount.has(i)){const r=this._rootNodeFocusListenerCount.get(i);r>1?this._rootNodeFocusListenerCount.set(i,r-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,Dm),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,Dm),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,i,r){this._setClasses(e,i),this._emitOrigin(r,i),this._lastFocusOrigin=i}_getClosestElementsInfo(e){const i=[];return this._elementInfo.forEach((r,o)=>{(o===e||r.checkChildren&&o.contains(e))&&i.push([o,r])}),i}_isLastInteractionFromInputLabel(e){const{_mostRecentTarget:i,mostRecentModality:r}=this._inputModalityDetector;if("mouse"!==r||!i||i===e||"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.disabled)return!1;const o=e.labels;if(o)for(let s=0;s{class t{constructor(e,i){this._elementRef=e,this._focusMonitor=i,this._focusOrigin=null,this.cdkFocusChange=new Q}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){const e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,1===e.nodeType&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(i=>{this._focusOrigin=i,this.cdkFocusChange.emit(i)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription&&this._monitorSubscription.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Cd))},t.\u0275dir=M({type:t,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"]}),t})();const VO="cdk-high-contrast-black-on-white",jO="cdk-high-contrast-white-on-black",w0="cdk-high-contrast-active";let HO=(()=>{class t{constructor(e,i){this._platform=e,this._document=i,this._breakpointSubscription=R(yK).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return 0;const e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);const i=this._document.defaultView||window,r=i&&i.getComputedStyle?i.getComputedStyle(e):null,o=(r&&r.backgroundColor||"").replace(/ /g,"");switch(e.remove(),o){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return 2;case"rgb(255,255,255)":case"rgb(255,250,239)":return 1}return 0}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const e=this._document.body.classList;e.remove(w0,VO,jO),this._hasCheckedHighContrastMode=!0;const i=this.getHighContrastMode();1===i?e.add(w0,VO):2===i&&e.add(w0,jO)}}}return t.\u0275fac=function(e){return new(e||t)(_(pt),_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),zO=(()=>{class t{constructor(e){e._applyBodyHighContrastModeCssClasses()}}return t.\u0275fac=function(e){return new(e||t)(_(HO))},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[xm]}),t})();const HK=new k("cdk-dir-doc",{providedIn:"root",factory:function zK(){return R(ge)}}),UK=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let Rn=(()=>{class t{constructor(e){this.value="ltr",this.change=new Q,e&&(this.value=function $K(t){const n=t?.toLowerCase()||"";return"auto"===n&&typeof navigator<"u"&&navigator?.language?UK.test(navigator.language)?"rtl":"ltr":"rtl"===n?"rtl":"ltr"}((e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}}return t.\u0275fac=function(e){return new(e||t)(_(HK,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),Dd=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})();const WK=new k("mat-sanity-checks",{providedIn:"root",factory:function GK(){return!0}});let Et=(()=>{class t{constructor(e,i,r){this._sanityChecks=i,this._document=r,this._hasDoneGlobalChecks=!1,e._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(e){return!m0()&&("boolean"==typeof this._sanityChecks?this._sanityChecks:!!this._sanityChecks[e])}}return t.\u0275fac=function(e){return new(e||t)(_(HO),_(WK,8),_(ge))},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Dd,Dd]}),t})();function Em(t){return class extends t{get disabled(){return this._disabled}set disabled(n){this._disabled=Ve(n)}constructor(...n){super(...n),this._disabled=!1}}}function x0(t,n){return class extends t{get color(){return this._color}set color(e){const i=e||this.defaultColor;i!==this._color&&(this._color&&this._elementRef.nativeElement.classList.remove(`mat-${this._color}`),i&&this._elementRef.nativeElement.classList.add(`mat-${i}`),this._color=i)}constructor(...e){super(...e),this.defaultColor=n,this.color=n}}}function GO(t){return class extends t{get disableRipple(){return this._disableRipple}set disableRipple(n){this._disableRipple=Ve(n)}constructor(...n){super(...n),this._disableRipple=!1}}}function qK(t,n=0){return class extends t{get tabIndex(){return this.disabled?-1:this._tabIndex}set tabIndex(e){this._tabIndex=null!=e?ai(e):this.defaultTabIndex}constructor(...e){super(...e),this._tabIndex=n,this.defaultTabIndex=n}}}function YK(t){return class extends t{updateErrorState(){const n=this.errorState,o=(this.errorStateMatcher||this._defaultErrorStateMatcher).isErrorState(this.ngControl?this.ngControl.control:null,this._parentFormGroup||this._parentForm);o!==n&&(this.errorState=o,this.stateChanges.next())}constructor(...n){super(...n),this.errorState=!1}}}let KK=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.touched||i&&i.submitted))}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();class XK{constructor(n,e,i,r=!1){this._renderer=n,this.element=e,this.config=i,this._animationForciblyDisabledThroughCss=r,this.state=3}fadeOut(){this._renderer.fadeOutRipple(this)}}const WO=dl({passive:!0,capture:!0});class QK{constructor(){this._events=new Map,this._delegateEventHandler=n=>{const e=Vo(n);e&&this._events.get(n.type)?.forEach((i,r)=>{(r===e||r.contains(e))&&i.forEach(o=>o.handleEvent(n))})}}addHandler(n,e,i,r){const o=this._events.get(e);if(o){const s=o.get(i);s?s.add(r):o.set(i,new Set([r]))}else this._events.set(e,new Map([[i,new Set([r])]])),n.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,WO)})}removeHandler(n,e,i){const r=this._events.get(n);if(!r)return;const o=r.get(e);o&&(o.delete(i),0===o.size&&r.delete(e),0===r.size&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,WO)))}}const qO={enterDuration:225,exitDuration:150},YO=dl({passive:!0,capture:!0}),ZO=["mousedown","touchstart"],KO=["mouseup","mouseleave","touchend","touchcancel"];class ml{constructor(n,e,i,r){this._target=n,this._ngZone=e,this._platform=r,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,r.isBrowser&&(this._containerElement=Jr(i))}fadeInRipple(n,e,i={}){const r=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),o={...qO,...i.animation};i.centered&&(n=r.left+r.width/2,e=r.top+r.height/2);const s=i.radius||function eX(t,n,e){const i=Math.max(Math.abs(t-e.left),Math.abs(t-e.right)),r=Math.max(Math.abs(n-e.top),Math.abs(n-e.bottom));return Math.sqrt(i*i+r*r)}(n,e,r),a=n-r.left,l=e-r.top,c=o.enterDuration,d=document.createElement("div");d.classList.add("mat-ripple-element"),d.style.left=a-s+"px",d.style.top=l-s+"px",d.style.height=2*s+"px",d.style.width=2*s+"px",null!=i.color&&(d.style.backgroundColor=i.color),d.style.transitionDuration=`${c}ms`,this._containerElement.appendChild(d);const u=window.getComputedStyle(d),f=u.transitionDuration,p="none"===u.transitionProperty||"0s"===f||"0s, 0s"===f||0===r.width&&0===r.height,g=new XK(this,d,i,p);d.style.transform="scale3d(1, 1, 1)",g.state=0,i.persistent||(this._mostRecentTransientRipple=g);let b=null;return!p&&(c||o.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const v=()=>this._finishRippleTransition(g),w=()=>this._destroyRipple(g);d.addEventListener("transitionend",v),d.addEventListener("transitioncancel",w),b={onTransitionEnd:v,onTransitionCancel:w}}),this._activeRipples.set(g,b),(p||!c)&&this._finishRippleTransition(g),g}fadeOutRipple(n){if(2===n.state||3===n.state)return;const e=n.element,i={...qO,...n.config.animation};e.style.transitionDuration=`${i.exitDuration}ms`,e.style.opacity="0",n.state=2,(n._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){const e=Jr(n);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,ZO.forEach(i=>{ml._eventManager.addHandler(this._ngZone,i,e,this)}))}handleEvent(n){"mousedown"===n.type?this._onMousedown(n):"touchstart"===n.type?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{KO.forEach(e=>{this._triggerElement.addEventListener(e,this,YO)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){0===n.state?this._startFadeOutTransition(n):2===n.state&&this._destroyRipple(n)}_startFadeOutTransition(n){const e=n===this._mostRecentTransientRipple,{persistent:i}=n.config;n.state=1,!i&&(!e||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){const e=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=3,null!==e&&(n.element.removeEventListener("transitionend",e.onTransitionEnd),n.element.removeEventListener("transitioncancel",e.onTransitionCancel)),n.element.remove()}_onMousedown(n){const e=NO(n),i=this._lastTouchStartEvent&&Date.now(){!n.config.persistent&&(1===n.state||n.config.terminateOnPointerUp&&0===n.state)&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const n=this._triggerElement;n&&(ZO.forEach(e=>ml._eventManager.removeHandler(e,n,this)),this._pointerUpEventsRegistered&&KO.forEach(e=>n.removeEventListener(e,this,YO)))}}ml._eventManager=new QK;const Sm=new k("mat-ripple-global-options");let Cs=(()=>{class t{get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}constructor(e,i,r,o,s){this._elementRef=e,this._animationMode=s,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=o||{},this._rippleRenderer=new ml(this,i,e,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,i=0,r){return"number"==typeof e?this._rippleRenderer.fadeInRipple(e,i,{...this.rippleConfig,...r}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...e})}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Z),m(pt),m(Sm,8),m(en,8))},t.\u0275dir=M({type:t,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(e,i){2&e&&fe("mat-ripple-unbounded",i.unbounded)},inputs:{color:["matRippleColor","color"],unbounded:["matRippleUnbounded","unbounded"],centered:["matRippleCentered","centered"],radius:["matRippleRadius","radius"],animation:["matRippleAnimation","animation"],disabled:["matRippleDisabled","disabled"],trigger:["matRippleTrigger","trigger"]},exportAs:["matRipple"]}),t})(),Sd=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Et,Et]}),t})(),tX=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Et]}),t})();const XO=["mat-button",""],QO=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],JO=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],eR=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}",iX=["mat-icon-button",""],rX=["*"],oX=[{selector:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{selector:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{selector:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{selector:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{selector:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{selector:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{selector:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],sX=x0(Em(GO(class{constructor(t){this._elementRef=t}})));let C0=(()=>{class t extends sX{constructor(e,i,r,o){super(e),this._platform=i,this._ngZone=r,this._animationMode=o,this._focusMonitor=R(Cd),this._isFab=!1;const s=e.nativeElement.classList;for(const a of oX)this._hasHostAttributes(a.selector)&&a.mdcClasses.forEach(l=>{s.add(l)})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}focus(e="program",i){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,i):this._elementRef.nativeElement.focus(i)}_hasHostAttributes(...e){return e.some(i=>this._elementRef.nativeElement.hasAttribute(i))}_isRippleDisabled(){return this.disableRipple||this.disabled}}return t.\u0275fac=function(e){Jl()},t.\u0275dir=M({type:t,viewQuery:function(e,i){if(1&e&&Ge(Cs,5),2&e){let r;J(r=ee())&&(i.ripple=r.first)}},features:[F]}),t})(),lX=(()=>{class t extends C0{constructor(e,i,r,o){super(e,i,r,o),this._haltDisabledEvents=s=>{this.disabled&&(s.preventDefault(),s.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)})}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}}return t.\u0275fac=function(e){Jl()},t.\u0275dir=M({type:t,features:[F]}),t})(),pl=(()=>{class t extends C0{constructor(e,i,r,o){super(e,i,r,o)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(Z),m(en,8))},t.\u0275cmp=$({type:t,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:7,hostBindings:function(e,i){2&e&&(tt("disabled",i.disabled||null),fe("_mat-animation-noopable","NoopAnimations"===i._animationMode)("mat-unthemed",!i.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[F],attrs:XO,ngContentSelectors:JO,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,i){1&e&&(Bt(QO),G(0,"span",0),Se(1),x(2,"span",1),Se(3,1),D(),Se(4,2),G(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(fe("mdc-button__ripple",!i._isFab)("mdc-fab__ripple",i._isFab),E(6),S("matRippleDisabled",i._isRippleDisabled())("matRippleTrigger",i._elementRef.nativeElement))},dependencies:[Cs],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0}),t})(),tR=(()=>{class t extends lX{constructor(e,i,r,o){super(e,i,r,o)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(Z),m(en,8))},t.\u0275cmp=$({type:t,selectors:[["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostVars:9,hostBindings:function(e,i){2&e&&(tt("disabled",i.disabled||null)("tabindex",i.disabled?-1:i.tabIndex)("aria-disabled",i.disabled.toString()),fe("_mat-animation-noopable","NoopAnimations"===i._animationMode)("mat-unthemed",!i.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[F],attrs:XO,ngContentSelectors:JO,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,i){1&e&&(Bt(QO),G(0,"span",0),Se(1),x(2,"span",1),Se(3,1),D(),Se(4,2),G(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(fe("mdc-button__ripple",!i._isFab)("mdc-fab__ripple",i._isFab),E(6),S("matRippleDisabled",i._isRippleDisabled())("matRippleTrigger",i._elementRef.nativeElement))},dependencies:[Cs],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',eR],encapsulation:2,changeDetection:0}),t})(),km=(()=>{class t extends C0{constructor(e,i,r,o){super(e,i,r,o)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(Z),m(en,8))},t.\u0275cmp=$({type:t,selectors:[["button","mat-icon-button",""]],hostVars:7,hostBindings:function(e,i){2&e&&(tt("disabled",i.disabled||null),fe("_mat-animation-noopable","NoopAnimations"===i._animationMode)("mat-unthemed",!i.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[F],attrs:iX,ngContentSelectors:rX,decls:5,vars:3,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,i){1&e&&(Bt(),G(0,"span",0),Se(1),G(2,"span",1)(3,"span",2)(4,"span",3)),2&e&&(E(3),S("matRippleDisabled",i._isRippleDisabled())("matRippleCentered",!0)("matRippleTrigger",i._elementRef.nativeElement))},dependencies:[Cs],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',eR],encapsulation:2,changeDetection:0}),t})(),eo=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Et,Sd,Et]}),t})();const dX=["*"];let Mm;function kd(t){return function uX(){if(void 0===Mm&&(Mm=null,typeof window<"u")){const t=window;void 0!==t.trustedTypes&&(Mm=t.trustedTypes.createPolicy("angular#components",{createHTML:n=>n}))}return Mm}()?.createHTML(t)||t}function nR(t){return Error(`Unable to find icon with the name "${t}"`)}function iR(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function rR(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class Ds{constructor(n,e,i){this.url=n,this.svgText=e,this.options=i}}let Tm=(()=>{class t{constructor(e,i,r,o){this._httpClient=e,this._sanitizer=i,this._errorHandler=o,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=r}addSvgIcon(e,i,r){return this.addSvgIconInNamespace("",e,i,r)}addSvgIconLiteral(e,i,r){return this.addSvgIconLiteralInNamespace("",e,i,r)}addSvgIconInNamespace(e,i,r,o){return this._addSvgIconConfig(e,i,new Ds(r,null,o))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,i,r,o){const s=this._sanitizer.sanitize($e.HTML,r);if(!s)throw rR(r);const a=kd(s);return this._addSvgIconConfig(e,i,new Ds("",a,o))}addSvgIconSet(e,i){return this.addSvgIconSetInNamespace("",e,i)}addSvgIconSetLiteral(e,i){return this.addSvgIconSetLiteralInNamespace("",e,i)}addSvgIconSetInNamespace(e,i,r){return this._addSvgIconSetConfig(e,new Ds(i,null,r))}addSvgIconSetLiteralInNamespace(e,i,r){const o=this._sanitizer.sanitize($e.HTML,i);if(!o)throw rR(i);const s=kd(o);return this._addSvgIconSetConfig(e,new Ds("",s,r))}registerFontClassAlias(e,i=e){return this._fontCssClassesByAlias.set(e,i),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){const i=this._sanitizer.sanitize($e.RESOURCE_URL,e);if(!i)throw iR(e);const r=this._cachedIconsByUrl.get(i);return r?j(Am(r)):this._loadSvgIconFromConfig(new Ds(e,null)).pipe(We(o=>this._cachedIconsByUrl.set(i,o)),B(o=>Am(o)))}getNamedSvgIcon(e,i=""){const r=oR(i,e);let o=this._svgIconConfigs.get(r);if(o)return this._getSvgFromConfig(o);if(o=this._getIconConfigFromResolvers(i,e),o)return this._svgIconConfigs.set(r,o),this._getSvgFromConfig(o);const s=this._iconSetConfigs.get(i);return s?this._getSvgFromIconSetConfigs(e,s):cr(nR(r))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?j(Am(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(B(i=>Am(i)))}_getSvgFromIconSetConfigs(e,i){const r=this._extractIconWithNameFromAnySet(e,i);return r?j(r):Ac(i.filter(s=>!s.svgText).map(s=>this._loadSvgIconSetFromConfig(s).pipe(ii(a=>{const c=`Loading icon set URL: ${this._sanitizer.sanitize($e.RESOURCE_URL,s.url)} failed: ${a.message}`;return this._errorHandler.handleError(new Error(c)),j(null)})))).pipe(B(()=>{const s=this._extractIconWithNameFromAnySet(e,i);if(!s)throw nR(e);return s}))}_extractIconWithNameFromAnySet(e,i){for(let r=i.length-1;r>=0;r--){const o=i[r];if(o.svgText&&o.svgText.toString().indexOf(e)>-1){const s=this._svgElementFromConfig(o),a=this._extractSvgIconFromSet(s,e,o.options);if(a)return a}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(We(i=>e.svgText=i),B(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?j(null):this._fetchIcon(e).pipe(We(i=>e.svgText=i))}_extractSvgIconFromSet(e,i,r){const o=e.querySelector(`[id="${i}"]`);if(!o)return null;const s=o.cloneNode(!0);if(s.removeAttribute("id"),"svg"===s.nodeName.toLowerCase())return this._setSvgAttributes(s,r);if("symbol"===s.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(s),r);const a=this._svgElementFromString(kd(""));return a.appendChild(s),this._setSvgAttributes(a,r)}_svgElementFromString(e){const i=this._document.createElement("DIV");i.innerHTML=e;const r=i.querySelector("svg");if(!r)throw Error(" tag not found");return r}_toSvgElement(e){const i=this._svgElementFromString(kd("")),r=e.attributes;for(let o=0;okd(c)),bf(()=>this._inProgressUrlFetches.delete(s)),Il());return this._inProgressUrlFetches.set(s,l),l}_addSvgIconConfig(e,i,r){return this._svgIconConfigs.set(oR(e,i),r),this}_addSvgIconSetConfig(e,i){const r=this._iconSetConfigs.get(e);return r?r.push(i):this._iconSetConfigs.set(e,[i]),this}_svgElementFromConfig(e){if(!e.svgElement){const i=this._svgElementFromString(e.svgText);this._setSvgAttributes(i,e.options),e.svgElement=i}return e.svgElement}_getIconConfigFromResolvers(e,i){for(let r=0;rn?n.pathname+n.search:""}}}),sR=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],vX=sR.map(t=>`[${t}]`).join(", "),yX=/^url\(['"]?#(.*?)['"]?\)$/;let to=(()=>{class t extends pX{get inline(){return this._inline}set inline(e){this._inline=Ve(e)}get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}get fontSet(){return this._fontSet}set fontSet(e){const i=this._cleanupFontValue(e);i!==this._fontSet&&(this._fontSet=i,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(e){const i=this._cleanupFontValue(e);i!==this._fontIcon&&(this._fontIcon=i,this._updateFontIconClasses())}constructor(e,i,r,o,s,a){super(e),this._iconRegistry=i,this._location=o,this._errorHandler=s,this._inline=!1,this._previousFontSetClass=[],this._currentIconFetch=rt.EMPTY,a&&(a.color&&(this.color=this.defaultColor=a.color),a.fontSet&&(this.fontSet=a.fontSet)),r||e.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];const i=e.split(":");switch(i.length){case 1:return["",i[0]];case 2:return i;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const e=this._elementsWithExternalReferences;if(e&&e.size){const i=this._location.getPathname();i!==this._previousPath&&(this._previousPath=i,this._prependPathToReferences(i))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();const i=this._location.getPathname();this._previousPath=i,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(i),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){const e=this._elementRef.nativeElement;let i=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();i--;){const r=e.childNodes[i];(1!==r.nodeType||"svg"===r.nodeName.toLowerCase())&&r.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const e=this._elementRef.nativeElement,i=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(r=>r.length>0);this._previousFontSetClass.forEach(r=>e.classList.remove(r)),i.forEach(r=>e.classList.add(r)),this._previousFontSetClass=i,this.fontIcon!==this._previousFontIconClass&&!i.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return"string"==typeof e?e.trim().split(" ")[0]:e}_prependPathToReferences(e){const i=this._elementsWithExternalReferences;i&&i.forEach((r,o)=>{r.forEach(s=>{o.setAttribute(s.name,`url('${e}#${s.value}')`)})})}_cacheChildrenWithExternalReferences(e){const i=e.querySelectorAll(vX),r=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let o=0;o{const a=i[o],l=a.getAttribute(s),c=l?l.match(yX):null;if(c){let d=r.get(a);d||(d=[],r.set(a,d)),d.push({name:s,value:c[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){const[i,r]=this._splitIconName(e);i&&(this._svgNamespace=i),r&&(this._svgName=r),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(r,i).pipe(Yt(1)).subscribe(o=>this._setSvgElement(o),o=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${i}:${r}! ${o.message}`))})}}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Tm),Ar("aria-hidden"),m(_X),m(Ji),m(gX,8))},t.\u0275cmp=$({type:t,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:8,hostBindings:function(e,i){2&e&&(tt("data-mat-icon-type",i._usingFontIcon()?"font":"svg")("data-mat-icon-name",i._svgName||i.fontIcon)("data-mat-icon-namespace",i._svgNamespace||i.fontSet)("fontIcon",i._usingFontIcon()?i.fontIcon:null),fe("mat-icon-inline",i.inline)("mat-icon-no-color","primary"!==i.color&&"accent"!==i.color&&"warn"!==i.color))},inputs:{color:"color",inline:"inline",svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[F],ngContentSelectors:dX,decls:1,vars:0,template:function(e,i){1&e&&(Bt(),Se(0))},styles:[".mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0}),t})(),br=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Et,Et]}),t})();function Im(t){return t}function aR(t,n){return n.pipe(B(()=>t))}function lR(t,n){return(...e)=>new t(...n,...e)}function Om(t,n){const e=R(ms);return(...i)=>{const r=t(...i),o=e.dispatch(r);return n(r,o)}}function yn(t,...n){return Om(lR(t,n),Im)}let CX=(()=>{class t{static query(e){return(i,r)=>this.getEntry(e,i,r)}static getEntry(e,i,r){const o=e[i];return void 0===r||o?.type===r?o:void 0}}return z([Dt([iO]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Function)],t,"query",null),t})(),gl=(()=>{var t;class n{constructor(){this.linkId=Zr,this.injector=R(xt),this.tagName=R(H).nativeElement.tagName.toLowerCase(),this.queryLink=ct(CX.query),this.navigate=yn(Ja)}get isAnchorElement(){return["a","area"].includes(this.tagName)}get isResourceUrl(){return["base","link"].includes(this.tagName)}get extras(){const{link:i}=this;return this.mergeExtras(i?.type===oi.Internal?i.extras:void 0,this)}ngOnChanges(){this.updateLink()}onClick(i){const{link:r,linkId:o,isAnchorElement:s}=this;if(!r)return!0;if(s){const{button:a,ctrlKey:l,shiftKey:c,altKey:d,metaKey:u}=i;if(r.type===oi.External||0!==a||l||c||d||u)return!0}return this.navigate(o,this.extras),!s}updateLink(){const i=this.link=this.queryLink(this.linkId);({href:this.href,rel:this.rel,target:this.target}=this.getLinkAttributes(i))}getLinkAttributes(i){const{injector:r,extras:o,isResourceUrl:s}=this;switch(i?.type){case oi.Internal:return{href:W9(r,i.commands,o,s)};case oi.External:return{...i,href:N1(i.url,o)};default:return{}}}mergeExtras(i,r){const o={...i},s=a=>{void 0!==r[a]&&(o[a]=r[a])};return s("queryParams"),s("queryParamsHandling"),s("fragment"),s("preserveFragment"),s("relativeTo"),o}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275dir=M({type:t,selectors:[["","hraLink",""]],hostVars:3,hostBindings:function(i,r){1&i&&re("click",function(s){return r.onClick(s)}),2&i&&tt("href",r.href,e_)("rel",r.rel)("target",r.target)},inputs:{linkId:["hraLink","linkId"],queryParams:"queryParams",queryParamsHandling:"queryParamsHandling",fragment:"fragment",preserveFragment:"preserveFragment",relativeTo:"relativeTo"},standalone:!0,features:[st]}),n})(),DX=(()=>{var t;class n{constructor(){this.productLogoUrl="",this.productTitle="",this.appTitle="",this.productTitleLink=Zr,this.aboutLink=Zr}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-header"]],inputs:{productLogoUrl:"productLogoUrl",productTitle:"productTitle",appTitle:"appTitle",productTitleLink:"productTitleLink",aboutLink:"aboutLink"},standalone:!0,features:[Be],decls:12,vars:5,consts:[["matRipple","",1,"product",3,"hraLink"],["alt","Prodoct Logo","aria-hidden","true",1,"logo","image",3,"src"],[1,"text"],[1,"app","text"],[1,"filler"],["mat-flat-button","",1,"about",3,"hraLink"],[1,"icon"]],template:function(i,r){1&i&&(x(0,"a",0),G(1,"img",1),x(2,"h1",2),N(3),D()(),x(4,"h1",3),N(5),D(),G(6,"div",4),x(7,"a",5)(8,"mat-icon",6),N(9,"info_outlined"),D(),x(10,"span",2),N(11,"About"),D()()),2&i&&(S("hraLink",r.productTitleLink),E(1),S("src",r.productLogoUrl,Fi),E(2),Jt(r.productTitle),E(2),Jt(r.appTitle),E(2),S("hraLink",r.aboutLink))},dependencies:[Re,eo,tR,br,to,Sd,Cs,gl],styles:["[_nghost-%COMP%]{display:flex;align-items:center;height:5rem;padding:0 2rem 0 1rem}[_nghost-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}[_nghost-%COMP%] h1[_ngcontent-%COMP%]{margin:0}[_nghost-%COMP%] .product[_ngcontent-%COMP%]{display:flex;align-items:center;text-decoration:none;padding:0 1rem;border-radius:.25rem}[_nghost-%COMP%] .product[_ngcontent-%COMP%]:hover{cursor:pointer}[_nghost-%COMP%] .product[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{margin-left:1rem;font-weight:600;color:var(--palette-accent-A200-rgb)}[_nghost-%COMP%] .app[_ngcontent-%COMP%]{margin-left:.5rem}[_nghost-%COMP%] .about[_ngcontent-%COMP%]{width:9rem;height:3rem;text-decoration:none}[_nghost-%COMP%] .about[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{border-bottom:1px solid var(--palette-primary-500-rgb)}[_nghost-%COMP%] .about[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:1.5rem;height:1.5rem;font-size:1.5rem}@media (max-width: 30rem){[_nghost-%COMP%]{height:4.5rem}[_nghost-%COMP%] .product[_ngcontent-%COMP%] .text[_ngcontent-%COMP%], [_nghost-%COMP%] .about[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}[_nghost-%COMP%] .product[_ngcontent-%COMP%]{height:2.5rem;padding:0 .25rem}[_nghost-%COMP%] .product[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%]{width:1.5rem;height:1.5rem}[_nghost-%COMP%] .app[_ngcontent-%COMP%]{font-size:1rem;line-height:1.5rem}[_nghost-%COMP%] .about[_ngcontent-%COMP%]{min-width:2.5rem;width:2.5rem;height:2.5rem;padding:0}[_nghost-%COMP%] .about[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:0}}@media (max-width: 20rem){[_nghost-%COMP%]{padding:0}}"],changeDetection:0}),n})();const D0=At("ProductTitle"),E0=At("ProductLogoUrl"),EX=At("LandingPageIntroTitle"),SX=At("LandingPageIntroDescription"),kX=At("LandingPageIntroPartners"),MX=At("LandingPageIntroMoreText"),TX=(At("LandingPageIntroReadMore"),At("LandingPageIntroImg")),AX=At("MetricsLogo"),IX=At("MetricsTitle"),OX=At("LandingPageDepthTitle"),RX=At("LandingPageDepthImg"),PX=At("LandingPageDepthDescription"),FX=At("LandingPageDepthMoreText"),NX=At("Metrics"),LX=At("ContactAcknowledgement"),BX=At("AppTitle"),VX=At("GradientLegend"),jX=At("SizeLegend"),HX=At("GradientLegendInfo"),zX=At("SizeLegendInfo"),UX=At("ScreenSizeNoticeContent"),S0=Ui("LandingPage"),cR=Ui("ProductTitle"),dR=Ui("About"),k0=Ui("Portal"),M0=Ui("Illustration"),uR=Ui("Embed"),$X=Ui("ExploreFTU"),GX=Ui("LandingPageReadMore");let hR=(()=>{var t;class n{constructor(){this.productLogoUrl=ct(vt.url,E0),this.productTitle=ct(vt.anyText,D0),this.appTitle=ct(vt.anyText,BX),this.productTitleLink=cR,this.aboutLink=dR}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-header-behavior"]],standalone:!0,features:[Be],decls:1,vars:5,consts:[[3,"productLogoUrl","productTitle","appTitle","productTitleLink","aboutLink"]],template:function(i,r){1&i&&G(0,"hra-header",0),2&i&&S("productLogoUrl",r.productLogoUrl())("productTitle",r.productTitle())("appTitle",r.appTitle())("productTitleLink",r.productTitleLink)("aboutLink",r.aboutLink)},dependencies:[Re,DX],styles:["[_nghost-%COMP%]{display:block}"],changeDetection:0}),n})();class fR{}function Rm(t){return t&&"function"==typeof t.connect&&!(t instanceof Bv)}class mR{applyChanges(n,e,i,r,o){n.forEachOperation((s,a,l)=>{let c,d;if(null==s.previousIndex){const u=i(s,a,l);c=e.createEmbeddedView(u.templateRef,u.context,u.index),d=1}else null==l?(e.remove(a),d=3):(c=e.get(a),e.move(c,l),d=2);o&&o({context:c?.context,operation:d,record:s})})}detach(){}}class T0{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(n=!1,e,i=!0,r){this._multiple=n,this._emitChanges=i,this.compareWith=r,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new te,e&&e.length&&(n?e.forEach(o=>this._markSelected(o)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...n){this._verifyValueAssignment(n),n.forEach(i=>this._markSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...n){this._verifyValueAssignment(n),n.forEach(i=>this._unmarkSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...n){this._verifyValueAssignment(n);const e=this.selected,i=new Set(n);n.forEach(o=>this._markSelected(o)),e.filter(o=>!i.has(o)).forEach(o=>this._unmarkSelected(o));const r=this._hasQueuedChanges();return this._emitChangeEvent(),r}toggle(n){return this.isSelected(n)?this.deselect(n):this.select(n)}clear(n=!0){this._unmarkAll();const e=this._hasQueuedChanges();return n&&this._emitChangeEvent(),e}isSelected(n){return this._selection.has(this._getConcreteValue(n))}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(n){this._multiple&&this.selected&&this._selected.sort(n)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(n){n=this._getConcreteValue(n),this.isSelected(n)||(this._multiple||this._unmarkAll(),this.isSelected(n)||this._selection.add(n),this._emitChanges&&this._selectedToEmit.push(n))}_unmarkSelected(n){n=this._getConcreteValue(n),this.isSelected(n)&&(this._selection.delete(n),this._emitChanges&&this._deselectedToEmit.push(n))}_unmarkAll(){this.isEmpty()||this._selection.forEach(n=>this._unmarkSelected(n))}_verifyValueAssignment(n){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}_getConcreteValue(n){if(this.compareWith){for(let e of this._selection)if(this.compareWith(n,e))return e;return n}return n}}const Md=new k("_ViewRepeater");class WX{constructor(){this.expansionModel=new T0(!0)}toggle(n){this.expansionModel.toggle(this._trackByValue(n))}expand(n){this.expansionModel.select(this._trackByValue(n))}collapse(n){this.expansionModel.deselect(this._trackByValue(n))}isExpanded(n){return this.expansionModel.isSelected(this._trackByValue(n))}toggleDescendants(n){this.expansionModel.isSelected(this._trackByValue(n))?this.collapseDescendants(n):this.expandDescendants(n)}collapseAll(){this.expansionModel.clear()}expandDescendants(n){let e=[n];e.push(...this.getDescendants(n)),this.expansionModel.select(...e.map(i=>this._trackByValue(i)))}collapseDescendants(n){let e=[n];e.push(...this.getDescendants(n)),this.expansionModel.deselect(...e.map(i=>this._trackByValue(i)))}_trackByValue(n){return this.trackBy?this.trackBy(n):n}}class qX extends WX{constructor(n,e,i){super(),this.getLevel=n,this.isExpandable=e,this.options=i,this.options&&(this.trackBy=this.options.trackBy)}getDescendants(n){const i=[];for(let r=this.dataNodes.indexOf(n)+1;rthis._trackByValue(n)))}}const Pm=new k("CDK_TREE_NODE_OUTLET_NODE");let Td=(()=>{class t{constructor(e,i){this.viewContainer=e,this._node=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(Pm,8))},t.\u0275dir=M({type:t,selectors:[["","cdkTreeNodeOutlet",""]]}),t})();class YX{constructor(n){this.$implicit=n}}let Fm=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","cdkTreeNodeDef",""]],inputs:{when:["cdkTreeNodeDefWhen","when"]}}),t})(),no=(()=>{class t{get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}constructor(e,i){this._differs=e,this._changeDetectorRef=i,this._onDestroy=new te,this._levels=new Map,this.viewChange=new Tt({start:0,end:Number.MAX_VALUE})}ngOnInit(){this._dataDiffer=this._differs.find([]).create(this.trackBy)}ngOnDestroy(){this._nodeOutlet.viewContainer.clear(),this.viewChange.complete(),this._onDestroy.next(),this._onDestroy.complete(),this._dataSource&&"function"==typeof this._dataSource.disconnect&&this.dataSource.disconnect(this),this._dataSubscription&&(this._dataSubscription.unsubscribe(),this._dataSubscription=null)}ngAfterContentChecked(){const e=this._nodeDefs.filter(i=>!i.when);this._defaultNodeDef=e[0],this.dataSource&&this._nodeDefs&&!this._dataSubscription&&this._observeRenderChanges()}_switchDataSource(e){this._dataSource&&"function"==typeof this._dataSource.disconnect&&this.dataSource.disconnect(this),this._dataSubscription&&(this._dataSubscription.unsubscribe(),this._dataSubscription=null),e||this._nodeOutlet.viewContainer.clear(),this._dataSource=e,this._nodeDefs&&this._observeRenderChanges()}_observeRenderChanges(){let e;Rm(this._dataSource)?e=this._dataSource.connect(this):Ic(this._dataSource)?e=this._dataSource:Array.isArray(this._dataSource)&&(e=j(this._dataSource)),e&&(this._dataSubscription=e.pipe(ze(this._onDestroy)).subscribe(i=>this.renderNodeChanges(i)))}renderNodeChanges(e,i=this._dataDiffer,r=this._nodeOutlet.viewContainer,o){const s=i.diff(e);s&&(s.forEachOperation((a,l,c)=>{if(null==a.previousIndex)this.insertNode(e[c],c,r,o);else if(null==c)r.remove(l),this._levels.delete(a.item);else{const d=r.get(l);r.move(d,c)}}),this._changeDetectorRef.detectChanges())}_getNodeDef(e,i){return 1===this._nodeDefs.length?this._nodeDefs.first:this._nodeDefs.find(o=>o.when&&o.when(i,e))||this._defaultNodeDef}insertNode(e,i,r,o){const s=this._getNodeDef(e,i),a=new YX(e);a.level=this.treeControl.getLevel?this.treeControl.getLevel(e):typeof o<"u"&&this._levels.has(o)?this._levels.get(o)+1:0,this._levels.set(e,a.level),(r||this._nodeOutlet.viewContainer).createEmbeddedView(s.template,a,i),vr.mostRecentTreeNode&&(vr.mostRecentTreeNode.data=e)}}return t.\u0275fac=function(e){return new(e||t)(m(bi),m(tn))},t.\u0275cmp=$({type:t,selectors:[["cdk-tree"]],contentQueries:function(e,i,r){if(1&e&&Ze(r,Fm,5),2&e){let o;J(o=ee())&&(i._nodeDefs=o)}},viewQuery:function(e,i){if(1&e&&Ge(Td,7),2&e){let r;J(r=ee())&&(i._nodeOutlet=r.first)}},hostAttrs:["role","tree",1,"cdk-tree"],inputs:{dataSource:"dataSource",treeControl:"treeControl",trackBy:"trackBy"},exportAs:["cdkTree"],decls:1,vars:0,consts:[["cdkTreeNodeOutlet",""]],template:function(e,i){1&e&&Vn(0,0)},dependencies:[Td],encapsulation:2}),t})(),vr=(()=>{class t{get role(){return"treeitem"}set role(e){this._elementRef.nativeElement.setAttribute("role",e)}get data(){return this._data}set data(e){e!==this._data&&(this._data=e,this._setRoleFromData(),this._dataChanges.next())}get isExpanded(){return this._tree.treeControl.isExpanded(this._data)}get level(){return this._tree.treeControl.getLevel?this._tree.treeControl.getLevel(this._data):this._parentNodeAriaLevel}constructor(e,i){this._elementRef=e,this._tree=i,this._destroyed=new te,this._dataChanges=new te,t.mostRecentTreeNode=this,this.role="treeitem"}ngOnInit(){this._parentNodeAriaLevel=function ZX(t){let n=t.parentElement;for(;n&&!KX(n);)n=n.parentElement;return n?n.classList.contains("cdk-nested-tree-node")?ai(n.getAttribute("aria-level")):0:-1}(this._elementRef.nativeElement),this._elementRef.nativeElement.setAttribute("aria-level",`${this.level+1}`)}ngOnDestroy(){t.mostRecentTreeNode===this&&(t.mostRecentTreeNode=null),this._dataChanges.complete(),this._destroyed.next(),this._destroyed.complete()}focus(){this._elementRef.nativeElement.focus()}_setRoleFromData(){this.role="treeitem"}}return t.mostRecentTreeNode=null,t.\u0275fac=function(e){return new(e||t)(m(H),m(no))},t.\u0275dir=M({type:t,selectors:[["cdk-tree-node"]],hostAttrs:[1,"cdk-tree-node"],hostVars:1,hostBindings:function(e,i){2&e&&tt("aria-expanded",i.isExpanded)},inputs:{role:"role"},exportAs:["cdkTreeNode"]}),t})();function KX(t){const n=t.classList;return!(!n?.contains("cdk-nested-tree-node")&&!n?.contains("cdk-tree"))}const XX=/([A-Za-z%]+)$/;let I0=(()=>{class t{get level(){return this._level}set level(e){this._setLevelInput(e)}get indent(){return this._indent}set indent(e){this._setIndentInput(e)}constructor(e,i,r,o){this._treeNode=e,this._tree=i,this._element=r,this._dir=o,this._destroyed=new te,this.indentUnits="px",this._indent=40,this._setPadding(),o&&o.change.pipe(ze(this._destroyed)).subscribe(()=>this._setPadding(!0)),e._dataChanges.subscribe(()=>this._setPadding())}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}_paddingIndent(){const e=this._treeNode.data&&this._tree.treeControl.getLevel?this._tree.treeControl.getLevel(this._treeNode.data):null,i=null==this._level?e:this._level;return"number"==typeof i?`${i*this._indent}${this.indentUnits}`:null}_setPadding(e=!1){const i=this._paddingIndent();if(i!==this._currentPadding||e){const r=this._element.nativeElement,o=this._dir&&"rtl"===this._dir.value?"paddingRight":"paddingLeft",s="paddingLeft"===o?"paddingRight":"paddingLeft";r.style[o]=i||"",r.style[s]="",this._currentPadding=i}}_setLevelInput(e){this._level=ai(e,null),this._setPadding()}_setIndentInput(e){let i=e,r="px";if("string"==typeof e){const o=e.split(XX);i=o[0],r=o[1]||r}this.indentUnits=r,this._indent=ai(i),this._setPadding()}}return t.\u0275fac=function(e){return new(e||t)(m(vr),m(no),m(H),m(Rn,8))},t.\u0275dir=M({type:t,selectors:[["","cdkTreeNodePadding",""]],inputs:{level:["cdkTreeNodePadding","level"],indent:["cdkTreeNodePaddingIndent","indent"]}}),t})(),O0=(()=>{class t{get recursive(){return this._recursive}set recursive(e){this._recursive=Ve(e)}constructor(e,i){this._tree=e,this._treeNode=i,this._recursive=!1}_toggle(e){this.recursive?this._tree.treeControl.toggleDescendants(this._treeNode.data):this._tree.treeControl.toggle(this._treeNode.data),e.stopPropagation()}}return t.\u0275fac=function(e){return new(e||t)(m(no),m(vr))},t.\u0275dir=M({type:t,selectors:[["","cdkTreeNodeToggle",""]],hostBindings:function(e,i){1&e&&re("click",function(o){return i._toggle(o)})},inputs:{recursive:["cdkTreeNodeToggleRecursive","recursive"]}}),t})(),QX=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})(),JX=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})();class R0{attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;null!=n&&(this._attachedHost=null,n.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(n){this._attachedHost=n}}class P0 extends R0{constructor(n,e,i,r,o){super(),this.component=n,this.viewContainerRef=e,this.injector=i,this.componentFactoryResolver=r,this.projectableNodes=o}}class _l extends R0{constructor(n,e,i,r){super(),this.templateRef=n,this.viewContainerRef=e,this.context=i,this.injector=r}get origin(){return this.templateRef.elementRef}attach(n,e=this.context){return this.context=e,super.attach(n)}detach(){return this.context=void 0,super.detach()}}class eQ extends R0{constructor(n){super(),this.element=n instanceof H?n.nativeElement:n}}class F0{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(n){return n instanceof P0?(this._attachedPortal=n,this.attachComponentPortal(n)):n instanceof _l?(this._attachedPortal=n,this.attachTemplatePortal(n)):this.attachDomPortal&&n instanceof eQ?(this._attachedPortal=n,this.attachDomPortal(n)):void 0}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class tQ extends F0{constructor(n,e,i,r,o){super(),this.outletElement=n,this._componentFactoryResolver=e,this._appRef=i,this._defaultInjector=r,this.attachDomPortal=s=>{const a=s.element,l=this._document.createComment("dom-portal");a.parentNode.insertBefore(l,a),this.outletElement.appendChild(a),this._attachedPortal=s,super.setDisposeFn(()=>{l.parentNode&&l.parentNode.replaceChild(a,l)})},this._document=o}attachComponentPortal(n){const i=(n.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(n.component);let r;return n.viewContainerRef?(r=n.viewContainerRef.createComponent(i,n.viewContainerRef.length,n.injector||n.viewContainerRef.injector,n.projectableNodes||void 0),this.setDisposeFn(()=>r.destroy())):(r=i.create(n.injector||this._defaultInjector||xt.NULL),this._appRef.attachView(r.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(r.hostView),r.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(r)),this._attachedPortal=n,r}attachTemplatePortal(n){let e=n.viewContainerRef,i=e.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return i.rootNodes.forEach(r=>this.outletElement.appendChild(r)),i.detectChanges(),this.setDisposeFn(()=>{let r=e.indexOf(i);-1!==r&&e.remove(r)}),this._attachedPortal=n,i}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}}let nQ=(()=>{class t extends _l{constructor(e,i){super(e,i)}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(it))},t.\u0275dir=M({type:t,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[F]}),t})(),bl=(()=>{class t extends F0{constructor(e,i,r){super(),this._componentFactoryResolver=e,this._viewContainerRef=i,this._isInitialized=!1,this.attached=new Q,this.attachDomPortal=o=>{const s=o.element,a=this._document.createComment("dom-portal");o.setAttachedHost(this),s.parentNode.insertBefore(a,s),this._getRootNode().appendChild(s),this._attachedPortal=o,super.setDisposeFn(()=>{a.parentNode&&a.parentNode.replaceChild(s,a)})},this._document=r}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);const i=null!=e.viewContainerRef?e.viewContainerRef:this._viewContainerRef,o=(e.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(e.component),s=i.createComponent(o,i.length,e.injector||i.injector,e.projectableNodes||void 0);return i!==this._viewContainerRef&&this._getRootNode().appendChild(s.hostView.rootNodes[0]),super.setDisposeFn(()=>s.destroy()),this._attachedPortal=e,this._attachedRef=s,this.attached.emit(s),s}attachTemplatePortal(e){e.setAttachedHost(this);const i=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=i,this.attached.emit(i),i}_getRootNode(){const e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}}return t.\u0275fac=function(e){return new(e||t)(m(Ni),m(it),m(ge))},t.\u0275dir=M({type:t,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:["cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[F]}),t})(),vl=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})(),iQ=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Re,Et,JX,vl]}),t})();const rQ=qK(Em(vr));let _R=(()=>{class t extends rQ{constructor(e,i,r){super(e,i),this.tabIndex=Number(r)||0}ngOnInit(){super.ngOnInit()}ngOnDestroy(){super.ngOnDestroy()}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(no),Ar("tabindex"))},t.\u0275dir=M({type:t,selectors:[["mat-tree-node"]],hostAttrs:[1,"mat-tree-node"],inputs:{role:"role",disabled:"disabled",tabIndex:"tabIndex"},exportAs:["matTreeNode"],features:[ie([{provide:vr,useExisting:t}]),F]}),t})(),bR=(()=>{class t extends Fm{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matTreeNodeDef",""]],inputs:{when:["matTreeNodeDefWhen","when"],data:["matTreeNode","data"]},features:[ie([{provide:Fm,useExisting:t}]),F]}),t})(),vR=(()=>{class t extends I0{get level(){return this._level}set level(e){this._setLevelInput(e)}get indent(){return this._indent}set indent(e){this._setIndentInput(e)}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matTreeNodePadding",""]],inputs:{level:["matTreeNodePadding","level"],indent:["matTreeNodePaddingIndent","indent"]},features:[ie([{provide:I0,useExisting:t}]),F]}),t})(),N0=(()=>{class t{constructor(e,i){this.viewContainer=e,this._node=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(Pm,8))},t.\u0275dir=M({type:t,selectors:[["","matTreeNodeOutlet",""]],features:[ie([{provide:Td,useExisting:t}])]}),t})(),yR=(()=>{class t extends no{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=$({type:t,selectors:[["mat-tree"]],viewQuery:function(e,i){if(1&e&&Ge(N0,7),2&e){let r;J(r=ee())&&(i._nodeOutlet=r.first)}},hostAttrs:["role","tree",1,"mat-tree"],exportAs:["matTree"],features:[ie([{provide:no,useExisting:t}]),F],decls:1,vars:0,consts:[["matTreeNodeOutlet",""]],template:function(e,i){1&e&&Vn(0,0)},dependencies:[N0],styles:[".mat-tree{display:block}.mat-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word}.mat-nested-tree-node{border-bottom-width:0}"],encapsulation:2}),t})(),wR=(()=>{class t extends O0{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matTreeNodeToggle",""]],inputs:{recursive:["matTreeNodeToggleRecursive","recursive"]},features:[ie([{provide:O0,useExisting:t}]),F]}),t})(),sQ=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[QX,Et,Et]}),t})();class aQ{constructor(n,e,i,r){this.transformFunction=n,this.getLevel=e,this.isExpandable=i,this.getChildren=r}_flattenNode(n,e,i,r){const o=this.transformFunction(n,e);if(i.push(o),this.isExpandable(o)){const s=this.getChildren(n);s&&(Array.isArray(s)?this._flattenChildren(s,e,i,r):s.pipe(Yt(1)).subscribe(a=>{this._flattenChildren(a,e,i,r)}))}return i}_flattenChildren(n,e,i,r){n.forEach((o,s)=>{let a=r.slice();a.push(s!=n.length-1),this._flattenNode(o,e+1,i,a)})}flattenNodes(n){let e=[];return n.forEach(i=>this._flattenNode(i,0,e,[])),e}expandFlattenedNodes(n,e){let i=[],r=[];return r[0]=!0,n.forEach(o=>{let s=!0;for(let a=0;a<=this.getLevel(o);a++)s=s&&r[a];s&&i.push(o),this.isExpandable(o)&&(r[this.getLevel(o)+1]=e.isExpanded(o))}),i}}class lQ extends fR{get data(){return this._data.value}set data(n){this._data.next(n),this._flattenedData.next(this._treeFlattener.flattenNodes(this.data)),this._treeControl.dataNodes=this._flattenedData.value}constructor(n,e,i){super(),this._treeControl=n,this._treeFlattener=e,this._flattenedData=new Tt([]),this._expandedData=new Tt([]),this._data=new Tt([]),i&&(this.data=i)}connect(n){return Gn(n.viewChange,this._treeControl.expansionModel.changed,this._flattenedData).pipe(B(()=>(this._expandedData.next(this._treeFlattener.expandFlattenedNodes(this._flattenedData.value,this._treeControl)),this._expandedData.value)))}disconnect(){}}function cQ(t,n){if(1&t&&(x(0,"mat-tree-node",4),Vn(1,5),D()),2&t){const e=n.$implicit,i=n.level,r=W(),o=Pt(4);fe("selected",e.data===r.selected)("child",r.hasChild),S("matTreeNodePadding",i),E(1),S("ngTemplateOutlet",o)("ngTemplateOutletContext",e)}}function dQ(t,n){if(1&t&&(x(0,"mat-tree-node",6)(1,"button",7)(2,"mat-icon"),N(3),D()(),Vn(4,5),D()),2&t){const e=n.$implicit,i=W(),r=Pt(4);fe("selected",e.data===i.selected),E(1),tt("aria-label","Toggle "+e.label),E(2),nt(" ",i.control.isExpanded(e)?"keyboard_arrow_up":"chevron_right"," "),E(1),S("ngTemplateOutlet",r)("ngTemplateOutletContext",e)}}const uQ=function(t){return{id:t}};function hQ(t,n){if(1&t){const e=nr();x(0,"a",11),re("click",function(){fi(e);const r=W().data;return mi(W().selectNode(r))}),N(1),D()}if(2&t){const e=W(),i=e.data,r=e.label;S("hraLink",i.link)("queryParams",Y_(3,uQ,i.id)),E(1),nt(" ",r," ")}}function fQ(t,n){if(1&t&&(x(0,"span"),N(1),D()),2&t){const e=W().label;E(1),Jt(e)}}function mQ(t,n){if(1&t&&(x(0,"div",8),O(1,hQ,2,5,"a",9),O(2,fQ,2,1,"ng-template",null,10,ei),D()),2&t){const e=n.data,i=Pt(3);E(1),S("ngIf",e.link)("ngIfElse",i)}}let pQ=(()=>{var t;class n{constructor(){this.nodes={},this.selected=void 0,this.selectedChange=new Q,this.control=new qX(i=>i.level,i=>i.expandable),this.flattener=new aQ((i,r)=>({label:i.label,expandable:(i.children?.length??0)>0,level:r,data:i}),i=>i.level,i=>i.expandable,i=>i.children?.map(r=>this.nodes[r])),this.dataSource=new lQ(this.control,this.flattener)}ngOnChanges(i){if("nodes"in i&&(this.dataSource.data=this.findRootNodes()),"selected"in i){const r=this.selected?this.dfsFindPath(this.findRootNodes(),this.selected):[];this.expandPath(r)}}hasChild(i,r){return r.expandable}selectNode(i){this.selected!==i&&(this.selected=i,this.selectedChange.emit(this.selected))}resetSelection(){this.selected=void 0,this.control.collapseAll()}findRootNodes(){const{nodes:i}=this,r={...this.nodes};for(const o in i)for(const s of i[o].children??[])delete r[s];return Object.values(r)}expandPath(i){this.control.dataNodes.filter(o=>i.includes(o.data)).forEach(o=>this.control.expand(o))}dfsFindPath(i,r,o=[]){for(const s of i){if(o.push(s),s===r)return o;const a=o.length,l=s.children?.map(c=>this.nodes[c])??[];if(this.dfsFindPath(l,r,o).length>a)return o;o.pop()}return o}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-tissue-tree-list"]],inputs:{nodes:"nodes",selected:"selected"},outputs:{selectedChange:"selectedChange"},standalone:!0,features:[st,Be],decls:5,vars:3,consts:[[1,"tree",3,"dataSource","treeControl"],["matTreeNodePaddingIndent","64","class","row","tabIndex","0",3,"matTreeNodePadding","selected","child",4,"matTreeNodeDef"],["class","row",3,"selected",4,"matTreeNodeDef","matTreeNodeDefWhen"],["label",""],["matTreeNodePaddingIndent","64","tabIndex","0",1,"row",3,"matTreeNodePadding"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"row"],["mat-icon-button","","matTreeNodeToggle","",1,"toggle"],[1,"label-container"],["class","link",3,"hraLink","queryParams","click",4,"ngIf","ngIfElse"],["noLink",""],[1,"link",3,"hraLink","queryParams","click"]],template:function(i,r){1&i&&(x(0,"mat-tree",0),O(1,cQ,2,7,"mat-tree-node",1),O(2,dQ,5,6,"mat-tree-node",2),D(),O(3,mQ,4,2,"ng-template",null,3,ei)),2&i&&(S("dataSource",r.dataSource)("treeControl",r.control),E(2),S("matTreeNodeDefWhen",r.hasChild))},dependencies:[Re,An,Ih,eo,km,sQ,bR,vR,wR,yR,_R,br,to,iQ,Sd,gl],styles:["[_nghost-%COMP%]{display:block;max-height:calc(100% - 5rem);overflow-y:auto}[_nghost-%COMP%] .row[_ngcontent-%COMP%]{min-height:2rem}[_nghost-%COMP%] .row.child[_ngcontent-%COMP%]{padding:5px 0 5px 64px}[_nghost-%COMP%] .row.selected[_ngcontent-%COMP%]{background-color:var(--palette-accent-A100-rgb)}[_nghost-%COMP%] .row[_ngcontent-%COMP%] .toggle[_ngcontent-%COMP%]{width:2rem;height:2rem;padding:.25rem}[_nghost-%COMP%] .row[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%]{display:flex;align-items:center;height:2rem;padding:0 1rem;border-radius:.25rem}[_nghost-%COMP%] .row[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]{cursor:pointer;text-decoration:none;color:rgba(var(--dark-primary-text))}[_nghost-%COMP%] .row.selected[_ngcontent-%COMP%] .label-container[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]{color:var(--palette-accent-A200-rgb)}"],changeDetection:0}),n})(),Es=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),n})();class L0 extends(nd("[TissueLibrary] Load Tissue Data")){}let xR=(()=>{var t;let n=((t=class{constructor(){this.dataService=R(Es)}setActive(i){return this.dataService.getTissueLibrary().pipe(We(r=>i.setState(r)))}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(L0),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",xe)],n.prototype,"setActive",null),n=z([Ei({name:"tissueLibrary"})],n),n})(),Nm=(()=>{class t{static tissues(e){return e.nodes}}return z([Dt([xR]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"tissues",null),t})();const B0=Po("CellSummary");class V0 extends(B0("Load")){constructor(n){super(),this.iri=n}}class CR extends(B0("Compute Aggregates")){}class DR extends(B0("Reset")){}function gQ(t,n){return t.has(n)||t.set(n,t.size+2),t.get(n)}function _Q(t,n){return t.has(n)||t.set(n,["",0]),t.get(n)}function bQ(t,n){if(t.lengthi.id===n)?.label??``}function vQ(t){return t.reduce((n,e)=>n+("object"==typeof e?e.data.count:0),0)}function yQ(t){const{label:n,cells:e,biomarkers:i,summaries:r}=t,o=new Map,s=new Map;for(const l of r){const{biomarker:c,cell:d}=l,u=gQ(o,c),h=_Q(s,d);bQ(h,u),h[u]={color:l.meanExpression,size:l.percentage,data:l}}for(const[l,c]of s.entries())c[0]=ER(e,l,"cell"),c[1]=vQ(c);return{label:n,columns:Array.from(o.keys()).map(l=>ER(i,l,"biomarker")),rows:Array.from(s.values())}}let Lm=(()=>{var t;let n=((t=class{constructor(){this.dataService=R(Es)}load({patchState:i,dispatch:r},{iri:o}){return this.dataService.getCellSummaries(o).pipe(We(s=>i({summaries:s,aggregates:[]})),Hn(()=>r(new CR)))}computeAggregates({getState:i,patchState:r}){const{summaries:o}=i();r({aggregates:o.map(yQ)})}reset({patchState:i}){i({summaries:[],aggregates:[]})}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(V0,{cancelUncompleted:!0}),y("design:type",Function),y("design:paramtypes",[Object,V0]),y("design:returntype",xe)],n.prototype,"load",null),z([He(CR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"computeAggregates",null),z([He(DR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"reset",null),n=z([Ei({name:"cellSummary",defaults:{summaries:[],aggregates:[]}})],n),n})();const Ad=Po("Illustrator");class j0 extends(Ad("Load")){constructor(n){super(),this.iri=n}}class Bm extends(Ad("Set Selection on Hover")){constructor(n){super(),this.selectedOnHover=n}}class Vm extends(Ad("Set Selection on Clicked")){constructor(n){super(),this.selectedOnClick=n}}class wQ extends(Ad("Clear Selection")){}class SR extends(Ad("Reset")){}let yl=(()=>{var t;let n=((t=class{constructor(){this.dataService=R(Es)}load({patchState:i},{iri:r}){return Ac({url:this.dataService.getIllustrationUrl(r),mapping:this.dataService.getIllustrationMapping(r)}).pipe(We(l=>i({...l,selectedOnHover:void 0,selectedOnClick:void 0})))}SetHover({patchState:i},{selectedOnHover:r}){i({selectedOnHover:r})}SetClicked({patchState:i},{selectedOnClick:r}){i({selectedOnClick:r})}clearSelection({patchState:i}){i({selectedOnHover:void 0,selectedOnClick:void 0})}reset({setState:i}){i({mapping:[]})}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(j0,{cancelUncompleted:!0}),y("design:type",Function),y("design:paramtypes",[Object,j0]),y("design:returntype",xe)],n.prototype,"load",null),z([He(Bm),y("design:type",Function),y("design:paramtypes",[Object,Bm]),y("design:returntype",void 0)],n.prototype,"SetHover",null),z([He(Vm),y("design:type",Function),y("design:paramtypes",[Object,Vm]),y("design:returntype",void 0)],n.prototype,"SetClicked",null),z([He(wQ),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"clearSelection",null),z([He(SR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"reset",null),n=z([Ei({name:"illustrator",defaults:{mapping:[]}})],n),n})();const kR=Po("SourceRefs");class H0 extends(kR("Load")){constructor(n){super(),this.iri=n}}class MR extends(kR("Reset")){}let z0=(()=>{var t;let n=((t=class{constructor(){this.dataService=R(Es)}load({setState:i},{iri:r}){return this.dataService.getSourceReferences(r).pipe(We(i))}reset({setState:i}){i([])}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(H0),y("design:type",Function),y("design:paramtypes",[Object,H0]),y("design:returntype",xe)],n.prototype,"load",null),z([He(MR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"reset",null),n=z([Ei({name:"sourceReferences",defaults:[]})],n),n})();const jm=Po("ActiveFtu");class Id extends(jm("Load")){constructor(n){super(),this.iri=n}}class U0 extends(jm("Set Illustration Url")){constructor(n){super(),this.iri=n}}class xQ extends(jm("Clear")){}class Hm extends(jm("Reset")){}const Od=Po("Download");class zm extends(Od("Register Format")){constructor(n){super(),this.format=n}}class $0 extends(Od("Load")){constructor(n){super(),this.iri=n}}class TR extends(Od("Add")){constructor(n,e){super(),this.id=n,this.entry=e}}class AR extends(Od("Clear")){}class Um extends(Od("Download")){constructor(n){super(),this.format=n}}const $m=V.string().transform(t=>`DownloadFormatId:'${t}'`).brand("DownloadFormatId"),CQ=V.discriminatedUnion("type",[V.object({type:V.literal("url"),url:V.string()}),V.object({type:V.literal("data"),data:V.string()})]),DQ=V.object({id:$m,label:V.string(),extension:V.string()}).partial({extension:!0});function G0(t){return $m.parse(t)}V.object({formats:V.record($m,DQ),entries:V.record($m,CQ)});const EQ=G0("svg"),SQ=G0("png"),kQ={id:EQ,label:"Download SVG",extension:".svg"},MQ={id:SQ,label:"Download PNG",extension:".png"};let W0=(()=>{var t;let n=((t=class{constructor(){this.http=R(wi),this.dataService=R(Es)}ngxsOnInit(i){i.dispatch([new zm(kQ),new zm(MQ)])}registerFormat(i,{format:r}){i.setState(sl(o=>{o.formats[r.id]=r}))}load(i,{iri:r}){return this.dataService.getDataFileReferences(r).pipe(We(o=>i.setState(sl(s=>{s.entries={};for(const{format:a,url:l}of o)s.entries[G0(a)]={type:"url",url:l}}))))}addEntry(i,{id:r,entry:o}){i.setState(sl(s=>{s.entries[r]=o}))}clearEntries(i){i.setState(sl(r=>{r.entries={}}))}download(i,{format:r}){const{entries:o}=i.getState(),s=o[r];switch(s?.type){case"url":{const a=this.guessFilename(i,r,s.url);return this.downloadRemoteData(s.url).pipe(We(l=>this.downloadData(l,a)))}case"data":{const a=this.guessFilename(i,r,"");this.downloadData(new Blob([s.data]),a);break}default:throw new Error("Cannot download file without data")}}guessFilename(i,r,o){const{formats:s}=i.getState(),{extension:a=""}=s[r]??{},d=new URL(o,"https://base.com").pathname.split("/").filter(f=>""!==f),u=d.length>0?d[d.length-1]:"download";return u.includes(".")?u:`${u}${a}`}downloadData(i,r){const o=window.URL.createObjectURL(i),s=document.createElement("a");document.body.appendChild(s),s.download=r,s.href=o,s.click(),s.remove(),window.URL.revokeObjectURL(o)}downloadRemoteData(i){return this.http.get(i,{responseType:"blob"})}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(zm),y("design:type",Function),y("design:paramtypes",[Object,zm]),y("design:returntype",void 0)],n.prototype,"registerFormat",null),z([He($0),y("design:type",Function),y("design:paramtypes",[Object,$0]),y("design:returntype",xe)],n.prototype,"load",null),z([He(TR),y("design:type",Function),y("design:paramtypes",[Object,TR]),y("design:returntype",void 0)],n.prototype,"addEntry",null),z([He(AR),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"clearEntries",null),z([He(Um),y("design:type",Function),y("design:paramtypes",[Object,Um]),y("design:returntype",Object)],n.prototype,"download",null),n=z([Ei({name:"download",defaults:{formats:{},entries:{}}})],n),n})(),q0=(()=>{var t;let n=((t=class{load({getState:i,patchState:r,dispatch:o},{iri:s}){if(i().iri!==s)return o([new V0(s),new j0(s),new $0(s),new H0(s),new U0(s)]).pipe(We(()=>r({iri:s})))}setIllustrationUrl({dispatch:i},{iri:r}){const[s]=r.split("/").slice(-1);return i(new My(M0,{type:oi.External,url:`https://hubmapconsortium.github.io/ccf-releases/v1.4/docs/2d-ftu/2d-ftu-${s}.html`}))}clear({patchState:i}){i({iri:void 0})}reset({dispatch:i}){return i([new DR,new SR,new MR,new AR])}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(Id,{cancelUncompleted:!0}),y("design:type",Function),y("design:paramtypes",[Object,Id]),y("design:returntype",Object)],n.prototype,"load",null),z([He(U0),y("design:type",Function),y("design:paramtypes",[Object,U0]),y("design:returntype",Object)],n.prototype,"setIllustrationUrl",null),z([He([xQ,Hm]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",void 0)],n.prototype,"clear",null),z([He(Hm),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",xe)],n.prototype,"reset",null),n=z([Ei({name:"activeFtu",defaults:{},children:[Lm,W0,yl,z0]})],n),n})(),Gm=(()=>{class t{static isActive({iri:e}){return void 0!==e}static iri({iri:e}){return e}}return z([Dt([q0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Boolean)],t,"isActive",null),z([Dt([q0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"iri",null),t})();const TQ=["*",[["",8,"end"]]],AQ=["*",".end"];let Wm=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-label-box"]],standalone:!0,features:[Be],ngContentSelectors:AQ,decls:3,vars:0,consts:[[1,"filler"]],template:function(i,r){1&i&&(Bt(TQ),Se(0),G(1,"div",0),Se(2,1))},dependencies:[Re],styles:["[_nghost-%COMP%]{display:flex;align-items:center;padding:.75rem 2rem;background:#f8f9fa;font-family:Inter}[_nghost-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}"],changeDetection:0}),n})();const IQ=["list"];let IR=(()=>{var t;class n{constructor(){this.tissues=$n(Nm.tissues),ll(Gm.iri).subscribe(i=>{this.selected=i&&this.tissues()[i],void 0===i&&this.list?.resetSelection()})}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-tissue-library-behavior"]],viewQuery:function(i,r){if(1&i&&Ge(IQ,7),2&i){let o;J(o=ee())&&(r.list=o.first)}},standalone:!0,features:[Be],decls:4,vars:2,consts:[[1,"label"],[1,"tissue-tree",3,"nodes","selected","selectedChange"],["list",""]],template:function(i,r){1&i&&(x(0,"hra-label-box",0),N(1,"FTU Library"),D(),x(2,"hra-tissue-tree-list",1,2),re("selectedChange",function(s){return r.selected=s}),D()),2&i&&(E(2),S("nodes",r.tissues())("selected",r.selected))},dependencies:[Re,Wm,pQ],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .label[_ngcontent-%COMP%]{border-bottom:1px solid #e2e7e9;width:100%;height:3.5rem}"],changeDetection:0}),n})(),Y0=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),n})(),OQ=(()=>{var t;class n extends Y0{sendMessage(i){const r=document.createElement("a");document.body.appendChild(r),r.target="_blank",r.href=`mailto:${i.email}?subject=${i.subject}&body=${i.message}`,r.click(),r.remove()}}return(t=n).\u0275fac=function(){let e;return function(r){return(e||(e=we(t)))(r||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),n})();const OR=V.string().url().brand("URL"),Ss=OR.brand("IRI"),qm=new k("Endpoints"),PQ=new k("Mapping of file formats",{providedIn:"root",factory:()=>({"image/svg+xml":"svg","image/png":"png","application/pdf":"ai"})}),RR=V.object({"@id":Ss}),Z0=V.object({"@graph":RR.extend({"@id":Ss,label:V.string(),organ_id:V.string(),organ_label:V.string(),representation_of:V.string(),illustration_files:V.object({file:OR,file_format:V.string()}).array(),mapping:V.object({svg_id:V.string(),label:V.string(),representation_of:V.string()}).array()}).array()}),FQ=V.object({"@graph":RR.extend({"@id":Ss,data_sources:V.object({label:V.string(),description:V.string(),link:V.string()}).array()}).array()}),NQ=V.object({cell_source:Ss}),LQ=V.object({"@graph":NQ.extend({cell_source:Ss,biomarker_type:V.string(),summary:V.object({cell_id:Ss,cell_label:V.string(),gene_id:Ss,gene_label:V.string(),mean_expression:V.number(),count:V.number(),percentage:V.number(),dataset_count:V.number().optional()}).array()}).array()}),BQ=Ui("FTU"),K0="https://purl.humanatlas.io/2d-ftu/";function PR(t){return t.slice(0,1).toUpperCase()+t.slice(1)}let VQ=(()=>{var t;class n extends Es{constructor(){super(...arguments),this.http=R(wi),this.endpoints=R(qm),this.fileFormatMapping=R(PQ),this.cache=new Map}getTissueLibrary(){return this.fetchData(void 0,this.endpoints.illustrations,Z0).pipe(B(i=>this.constructTissueLibrary(i["@graph"])))}getIllustrationUrl(i){return this.getDataFileReferences(i).pipe(B(r=>this.findIllustrationUrl(r)))}getIllustrationMapping(i){return this.fetchData(i,this.endpoints.illustrations,Z0).pipe(B(r=>this.findGraphItem(r,i).mapping),B(r=>r?this.toIllustrationMapping(r):[]))}getCellSummaries(i){return this.fetchData(i,this.endpoints.summaries,LQ).pipe(B(r=>this.findCellSummaries(r,i)),B(r=>r?this.constructCellSummaries(r):[]))}getDataFileReferences(i){return this.fetchData(i,this.endpoints.illustrations,Z0).pipe(B(r=>this.findGraphItem(r,i).illustration_files),B(r=>r?this.toDataFileReferences(r):[]))}getSourceReferences(i){return this.fetchData(i,this.endpoints.datasets,FQ).pipe(B(r=>this.findGraphItem(r,i).data_sources),B(r=>r?this.toSourceReferences(r):[]))}fetchData(i,r,o){const{http:s,cachedIri:a,cache:l}=this;if(void 0!==i&&i!==a&&(this.cachedIri=i,this.cache=new Map),!l.has(r)){const d=s.get(r,{params:{id:i??""},responseType:"json"}).pipe(B(u=>o.parse(u)));l.set(r,function RQ(t,n){const e="object"==typeof n;return new Promise((i,r)=>{const o=new Ns({next:s=>{i(s),o.unsubscribe()},error:r,complete:()=>{e?i(n.defaultValue):r(new Fc)}});t.subscribe(o)})}(d))}return yt(l.get(r))}findGraphItem(i,r){const o=i["@graph"].find(({"@id":s})=>s===r);return void 0===o?(console.error(`Iri not found in data: ${r}`),{}):o}findCellSummaries(i,r){const o=i["@graph"].filter(({cell_source:s})=>s===r);return void 0===o||0==o.length?(console.error(`Cell Summary not found in data: ${r}`),[]):o}findIllustrationUrl(i){const{fileFormatMapping:r}=this,o=r["image/svg+xml"],s=i.find(({format:a})=>a===o);return void 0===s?(console.error("Illustration url not found"),""):s.url}toIllustrationMapping(i){const o=[];for(const{label:s,svg_id:a,representation_of:l}of i)o.push({label:s,id:a,ontologyId:l.slice("http://purl.obolibrary.org/obo/".length)});return o}toDataFileReferences(i){const{fileFormatMapping:r}=this,o=[];for(const{file:s,file_format:a}of i)a in r&&o.push({format:r[a],url:s});return o}toSourceReferences(i){const r=[];for(const{label:o,link:s,description:a}of i)r.push({label:o,link:s,title:a});return r}constructCellSummaries(i){const r=[],s=new Set(i.map(a=>a.biomarker_type.toLowerCase()));return i.forEach(a=>{const l=a.summary.map(u=>({id:u.cell_id,label:u.cell_label})),c=a.summary.map(u=>({id:u.gene_id,label:u.gene_label})),d=a.summary.map(u=>({cell:u.cell_id,biomarker:u.gene_id,count:u.count,percentage:u.percentage,meanExpression:u.mean_expression,dataset_count:u.dataset_count}));r.push({label:`${PR(a.biomarker_type)} Biomarkers`,cells:l,biomarkers:c,summaries:d})}),["gene","protein","lipid"].forEach(a=>{s.has(a)||r.push({label:`${PR(a)} Biomarkers`,cells:[],biomarkers:[],summaries:[]})}),r}constructTissueLibrary(i){const r={};for(const{"@id":o,label:s,organ_id:a,organ_label:l}of i){const c=K0+a;r[c]??={id:c,label:l,parent:K0,children:[]},r[o]={id:o,label:s.toLowerCase(),parent:c,children:[],link:BQ},r[c]?.children.push(o)}return{root:K0,nodes:r}}}return(t=n).\u0275fac=function(){let e;return function(r){return(e||(e=we(t)))(r||t)}}(),t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),n})(),jQ=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:[{provide:Y0,useExisting:OQ},{provide:Es,useExisting:VQ},{provide:qm,useValue:{illustrations:"assets/TEMP/2d-ftu-illustrations.jsonld",summaries:"assets/TEMP/ftu-cell-summaries.jsonld",datasets:"assets/TEMP/ftu-datasets.jsonld"}}]}),n})();class Ym extends(nd("[Contact] Send Message")){constructor(n){super(),this.message=n}}let HQ=(()=>{var t;let n=((t=class{constructor(){this.contact=R(Y0)}sendMessage(i,{message:r}){return this.contact.sendMessage(r)}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(Ym),y("design:type",Function),y("design:paramtypes",[Object,Ym]),y("design:returntype",Object)],n.prototype,"sendMessage",null),n=z([Ei({name:"contact"})],n),n})();class Zm extends(nd("[Screenmode] Set Screenmode")){constructor(n){super(),this.isFullScreen=n}}class X0 extends(nd("[Screenmode] Set Size")){constructor(n){super(),this.size=n}}let Q0=(()=>{var t;let n=((t=class{set({setState:i},{isFullScreen:r}){i(sl(o=>{o.isFullScreen=r}))}SetSize({setState:i},{size:r}){i(sl(o=>{o.size=r}))}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(Zm),y("design:type",Function),y("design:paramtypes",[Object,Zm]),y("design:returntype",void 0)],n.prototype,"set",null),z([He(X0),y("design:type",Function),y("design:paramtypes",[Object,X0]),y("design:returntype",void 0)],n.prototype,"SetSize",null),n=z([Ei({name:"screenmode",defaults:{isFullScreen:!1,size:"large"}})],n),n})();const J0=new k("ngx-google-analytics-settings",{factory:()=>({trackingCode:"",enableTracing:!1})}),FR=new k("ngx-window",{providedIn:"root",factory:()=>{const{defaultView:t}=R(ge);if(!t)throw new Error("Window is not available");return t}}),UQ=new k("ngx-data-layer",{providedIn:"root",factory:()=>function zQ(t){return t?t.dataLayer=t.dataLayer||[]:null}(R(FR))}),NR=new k("ngx-gtag-fn",{providedIn:"root",factory:()=>function $Q(t,n){return t?t.gtag=t.gtag||function(){n.push(arguments)}:null}(R(FR),R(UQ))});let LR=(()=>{class t{constructor(e,i,r){this.settings=e,this._document=i,this._gtag=r}get document(){return this._document}throw(e){this.settings.enableTracing&&console&&console.error&&console.error(e)}toKeyValue(e){return e.size>0?Array.from(e).reduce((i,[r,o])=>Object.defineProperty(i,r,{value:o,enumerable:!0}),{}):void 0}gtag(...e){try{this._gtag(...e.filter(i=>void 0!==i))}catch(i){this.throw(i)}}event(e,i,r,o,s,a){try{const l=new Map;i&&l.set("event_category",i),r&&l.set("event_label",r),o&&l.set("value",o),void 0!==s&&l.set("interaction",s),a&&Object.entries(a).map(([d,u])=>l.set(d,u));const c=this.toKeyValue(l);c?this.gtag("event",e,c):this.gtag("event",e)}catch(l){this.throw(l)}}pageView(e,i,r,o){try{const s=new Map([["page_path",e]]);i&&s.set("page_title",i),(r||this.document)&&s.set("page_location",r||this.document.location.href),o&&Object.entries(o).map(([a,l])=>s.set(a,l)),this.gtag("config",this.settings.trackingCode,this.toKeyValue(s))}catch(s){this.throw(s)}}appView(e,i,r,o,s){try{const a=new Map([["screen_name",e],["app_name",i]]);r&&a.set("app_id",r),o&&a.set("app_version",o),s&&a.set("app_installer_id",s),this.gtag("event","screen_view",this.toKeyValue(a))}catch(a){this.throw(a)}}set(...e){try{this._gtag("set",...e)}catch(i){this.throw(i)}}exception(e,i){try{const r=new Map;e&&r.set("description",e),i&&r.set("fatal",i),this.toKeyValue(r)?this.gtag("event","exception",this.toKeyValue(r)):this.gtag("event","exception")}catch(r){this.throw(r)}}}return t.\u0275fac=function(e){return new(e||t)(_(J0),_(ge),_(NR))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const GQ={provide:Sa,multi:!0,useFactory:function WQ(t,n,e){return Si(function*(){if(!t.trackingCode)return void console.error("Empty tracking code for Google Analytics. Make sure to provide one when initializing NgxGoogleAnalyticsModule.");if(!n)return void console.error("Was not possible create or read gtag() fn. Make sure this module is running on a Browser w/ access to Window interface.");e||console.error("Was not possible to access Document interface. Make sure this module is running on a Browser w/ access do Document interface."),t.uri=t.uri||`https://www.googletagmanager.com/gtag/js?id=${t.trackingCode}`,t.initCommands=t?.initCommands??[],t.initCommands.find(o=>"config"===o.command)||t.initCommands.unshift({command:"config",values:[t.trackingCode]}),t.initCommands.find(o=>"js"===o.command)||t.initCommands.unshift({command:"js",values:[new Date]});for(const o of t.initCommands)n(o.command,...o.values);const i=e.createElement("script");i.async=!0,i.src=t.uri,t.nonce&&i.setAttribute("nonce",t.nonce),e.getElementsByTagName("head")[0].appendChild(i)})},deps:[J0,NR,ge]};new k("ngx-google-analytics-routing-settings",{factory:()=>({})});let VR=(()=>{class t{static forRoot(e,i=[],r,o,s){return{ngModule:t,providers:[{provide:J0,useValue:{trackingCode:e,initCommands:i,uri:r,enableTracing:o,nonce:s}},GQ]}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})();const ZQ=[Ym,Um,Ja,Id,Bm,Vm,Zm],KQ=["bigint","boolean","number","string"];function jR(t){return null==t||KQ.includes(typeof t)}const XQ=new k("Loggable actions",{providedIn:"root",factory:()=>ZQ});let HR=(()=>{var t;class n{constructor(){this.ga=R(LR),this.loggableTypes=new Set(R(XQ).map(So))}handle(i,r,o){return this.logAction(r),o(i,r)}logAction(i){const r=So(i);if(r&&this.loggableTypes.has(r)){const o=JSON.stringify(i,this.serialize);this.ga.event(r,"action_log",o)}}serialize(i,r){return""===i&&"object"==typeof r?{...r,type:void 0}:jR(r)||Array.isArray(r)&&r.every(jR)?r:void 0}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),n})(),QQ=(()=>{var t;class n{static forRoot(i){const r=wD(VR.forRoot(i.googleAnalyticsToken));return{ngModule:n,providers:[r]}}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:[{provide:Sv,useExisting:HR,multi:!0}],imports:[sn.forFeature([q0,Lm,HQ,W0,yl,Q0,z0,xR]),VR]}),n})();function dn(t,n){(function JQ(t){return"string"==typeof t&&-1!==t.indexOf(".")&&1===parseFloat(t)})(t)&&(t="100%");var e=function eJ(t){return"string"==typeof t&&-1!==t.indexOf("%")}(t);return t=360===n?t:Math.min(n,Math.max(0,parseFloat(t))),e&&(t=parseInt(String(t*n),10)/100),Math.abs(t-n)<1e-6?1:t=360===n?(t<0?t%n+n:t%n)/parseFloat(String(n)):t%n/parseFloat(String(n))}function Km(t){return Math.min(1,Math.max(0,t))}function zR(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function Xm(t){return t<=1?"".concat(100*Number(t),"%"):t}function ks(t){return 1===t.length?"0"+t:String(t)}function UR(t,n,e){t=dn(t,255),n=dn(n,255),e=dn(e,255);var i=Math.max(t,n,e),r=Math.min(t,n,e),o=0,s=0,a=(i+r)/2;if(i===r)s=0,o=0;else{var l=i-r;switch(s=a>.5?l/(2-i-r):l/(i+r),i){case t:o=(n-e)/l+(n1&&(e-=1),e<1/6?t+6*e*(n-t):e<.5?n:e<2/3?t+(n-t)*(2/3-e)*6:t}function $R(t,n,e){t=dn(t,255),n=dn(n,255),e=dn(e,255);var i=Math.max(t,n,e),r=Math.min(t,n,e),o=0,s=i,a=i-r,l=0===i?0:a/i;if(i===r)o=0;else{switch(i){case t:o=(n-e)/a+(n>16,g:(65280&t)>>8,b:255&t}}(n)),this.originalInput=n;var r=function sJ(t){var n={r:0,g:0,b:0},e=1,i=null,r=null,o=null,s=!1,a=!1;return"string"==typeof t&&(t=function cJ(t){if(0===(t=t.trim().toLowerCase()).length)return!1;var n=!1;if(tw[t])t=tw[t],n=!0;else if("transparent"===t)return{r:0,g:0,b:0,a:0,format:"name"};var e=$i.rgb.exec(t);return e?{r:e[1],g:e[2],b:e[3]}:(e=$i.rgba.exec(t))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=$i.hsl.exec(t))?{h:e[1],s:e[2],l:e[3]}:(e=$i.hsla.exec(t))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=$i.hsv.exec(t))?{h:e[1],s:e[2],v:e[3]}:(e=$i.hsva.exec(t))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=$i.hex8.exec(t))?{r:li(e[1]),g:li(e[2]),b:li(e[3]),a:qR(e[4]),format:n?"name":"hex8"}:(e=$i.hex6.exec(t))?{r:li(e[1]),g:li(e[2]),b:li(e[3]),format:n?"name":"hex"}:(e=$i.hex4.exec(t))?{r:li(e[1]+e[1]),g:li(e[2]+e[2]),b:li(e[3]+e[3]),a:qR(e[4]+e[4]),format:n?"name":"hex8"}:!!(e=$i.hex3.exec(t))&&{r:li(e[1]+e[1]),g:li(e[2]+e[2]),b:li(e[3]+e[3]),format:n?"name":"hex"}}(t)),"object"==typeof t&&(io(t.r)&&io(t.g)&&io(t.b)?(n=function tJ(t,n,e){return{r:255*dn(t,255),g:255*dn(n,255),b:255*dn(e,255)}}(t.r,t.g,t.b),s=!0,a="%"===String(t.r).substr(-1)?"prgb":"rgb"):io(t.h)&&io(t.s)&&io(t.v)?(i=Xm(t.s),r=Xm(t.v),n=function iJ(t,n,e){t=6*dn(t,360),n=dn(n,100),e=dn(e,100);var i=Math.floor(t),r=t-i,o=e*(1-n),s=e*(1-r*n),a=e*(1-(1-r)*n),l=i%6;return{r:255*[e,s,o,o,a,e][l],g:255*[a,e,e,s,o,o][l],b:255*[o,o,a,e,e,s][l]}}(t.h,i,r),s=!0,a="hsv"):io(t.h)&&io(t.s)&&io(t.l)&&(i=Xm(t.s),o=Xm(t.l),n=function nJ(t,n,e){var i,r,o;if(t=dn(t,360),n=dn(n,100),e=dn(e,100),0===n)r=e,o=e,i=e;else{var s=e<.5?e*(1+n):e+n-e*n,a=2*e-s;i=ew(a,s,t+1/3),r=ew(a,s,t),o=ew(a,s,t-1/3)}return{r:255*i,g:255*r,b:255*o}}(t.h,i,o),s=!0,a="hsl"),Object.prototype.hasOwnProperty.call(t,"a")&&(e=t.a)),e=zR(e),{ok:s,format:t.format||a,r:Math.min(255,Math.max(n.r,0)),g:Math.min(255,Math.max(n.g,0)),b:Math.min(255,Math.max(n.b,0)),a:e}}(n);this.originalInput=n,this.r=r.r,this.g=r.g,this.b=r.b,this.a=r.a,this.roundA=Math.round(100*this.a)/100,this.format=null!==(i=e.format)&&void 0!==i?i:r.format,this.gradientType=e.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=r.ok}return t.prototype.isDark=function(){return this.getBrightness()<128},t.prototype.isLight=function(){return!this.isDark()},t.prototype.getBrightness=function(){var n=this.toRgb();return(299*n.r+587*n.g+114*n.b)/1e3},t.prototype.getLuminance=function(){var n=this.toRgb(),o=n.r/255,s=n.g/255,a=n.b/255;return.2126*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))+.7152*(s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4))+.0722*(a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4))},t.prototype.getAlpha=function(){return this.a},t.prototype.setAlpha=function(n){return this.a=zR(n),this.roundA=Math.round(100*this.a)/100,this},t.prototype.isMonochrome=function(){return 0===this.toHsl().s},t.prototype.toHsv=function(){var n=$R(this.r,this.g,this.b);return{h:360*n.h,s:n.s,v:n.v,a:this.a}},t.prototype.toHsvString=function(){var n=$R(this.r,this.g,this.b),e=Math.round(360*n.h),i=Math.round(100*n.s),r=Math.round(100*n.v);return 1===this.a?"hsv(".concat(e,", ").concat(i,"%, ").concat(r,"%)"):"hsva(".concat(e,", ").concat(i,"%, ").concat(r,"%, ").concat(this.roundA,")")},t.prototype.toHsl=function(){var n=UR(this.r,this.g,this.b);return{h:360*n.h,s:n.s,l:n.l,a:this.a}},t.prototype.toHslString=function(){var n=UR(this.r,this.g,this.b),e=Math.round(360*n.h),i=Math.round(100*n.s),r=Math.round(100*n.l);return 1===this.a?"hsl(".concat(e,", ").concat(i,"%, ").concat(r,"%)"):"hsla(".concat(e,", ").concat(i,"%, ").concat(r,"%, ").concat(this.roundA,")")},t.prototype.toHex=function(n){return void 0===n&&(n=!1),GR(this.r,this.g,this.b,n)},t.prototype.toHexString=function(n){return void 0===n&&(n=!1),"#"+this.toHex(n)},t.prototype.toHex8=function(n){return void 0===n&&(n=!1),function rJ(t,n,e,i,r){var o=[ks(Math.round(t).toString(16)),ks(Math.round(n).toString(16)),ks(Math.round(e).toString(16)),ks(WR(i))];return r&&o[0].startsWith(o[0].charAt(1))&&o[1].startsWith(o[1].charAt(1))&&o[2].startsWith(o[2].charAt(1))&&o[3].startsWith(o[3].charAt(1))?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0):o.join("")}(this.r,this.g,this.b,this.a,n)},t.prototype.toHex8String=function(n){return void 0===n&&(n=!1),"#"+this.toHex8(n)},t.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},t.prototype.toRgbString=function(){var n=Math.round(this.r),e=Math.round(this.g),i=Math.round(this.b);return 1===this.a?"rgb(".concat(n,", ").concat(e,", ").concat(i,")"):"rgba(".concat(n,", ").concat(e,", ").concat(i,", ").concat(this.roundA,")")},t.prototype.toPercentageRgb=function(){var n=function(e){return"".concat(Math.round(100*dn(e,255)),"%")};return{r:n(this.r),g:n(this.g),b:n(this.b),a:this.a}},t.prototype.toPercentageRgbString=function(){var n=function(e){return Math.round(100*dn(e,255))};return 1===this.a?"rgb(".concat(n(this.r),"%, ").concat(n(this.g),"%, ").concat(n(this.b),"%)"):"rgba(".concat(n(this.r),"%, ").concat(n(this.g),"%, ").concat(n(this.b),"%, ").concat(this.roundA,")")},t.prototype.toName=function(){if(0===this.a)return"transparent";if(this.a<1)return!1;for(var n="#"+GR(this.r,this.g,this.b,!1),e=0,i=Object.entries(tw);e=0&&(n.startsWith("hex")||"name"===n)?"name"===n&&0===this.a?this.toName():this.toRgbString():("rgb"===n&&(i=this.toRgbString()),"prgb"===n&&(i=this.toPercentageRgbString()),("hex"===n||"hex6"===n)&&(i=this.toHexString()),"hex3"===n&&(i=this.toHexString(!0)),"hex4"===n&&(i=this.toHex8String(!0)),"hex8"===n&&(i=this.toHex8String()),"name"===n&&(i=this.toName()),"hsl"===n&&(i=this.toHslString()),"hsv"===n&&(i=this.toHsvString()),i||this.toHexString())},t.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},t.prototype.clone=function(){return new t(this.toString())},t.prototype.lighten=function(n){void 0===n&&(n=10);var e=this.toHsl();return e.l+=n/100,e.l=Km(e.l),new t(e)},t.prototype.brighten=function(n){void 0===n&&(n=10);var e=this.toRgb();return e.r=Math.max(0,Math.min(255,e.r-Math.round(-n/100*255))),e.g=Math.max(0,Math.min(255,e.g-Math.round(-n/100*255))),e.b=Math.max(0,Math.min(255,e.b-Math.round(-n/100*255))),new t(e)},t.prototype.darken=function(n){void 0===n&&(n=10);var e=this.toHsl();return e.l-=n/100,e.l=Km(e.l),new t(e)},t.prototype.tint=function(n){return void 0===n&&(n=10),this.mix("white",n)},t.prototype.shade=function(n){return void 0===n&&(n=10),this.mix("black",n)},t.prototype.desaturate=function(n){void 0===n&&(n=10);var e=this.toHsl();return e.s-=n/100,e.s=Km(e.s),new t(e)},t.prototype.saturate=function(n){void 0===n&&(n=10);var e=this.toHsl();return e.s+=n/100,e.s=Km(e.s),new t(e)},t.prototype.greyscale=function(){return this.desaturate(100)},t.prototype.spin=function(n){var e=this.toHsl(),i=(e.h+n)%360;return e.h=i<0?360+i:i,new t(e)},t.prototype.mix=function(n,e){void 0===e&&(e=50);var i=this.toRgb(),r=new t(n).toRgb(),o=e/100;return new t({r:(r.r-i.r)*o+i.r,g:(r.g-i.g)*o+i.g,b:(r.b-i.b)*o+i.b,a:(r.a-i.a)*o+i.a})},t.prototype.analogous=function(n,e){void 0===n&&(n=6),void 0===e&&(e=30);var i=this.toHsl(),r=360/e,o=[this];for(i.h=(i.h-(r*n>>1)+720)%360;--n;)i.h=(i.h+r)%360,o.push(new t(i));return o},t.prototype.complement=function(){var n=this.toHsl();return n.h=(n.h+180)%360,new t(n)},t.prototype.monochromatic=function(n){void 0===n&&(n=6);for(var e=this.toHsv(),i=e.h,r=e.s,o=e.v,s=[],a=1/n;n--;)s.push(new t({h:i,s:r,v:o})),o=(o+a)%1;return s},t.prototype.splitcomplement=function(){var n=this.toHsl(),e=n.h;return[this,new t({h:(e+72)%360,s:n.s,l:n.l}),new t({h:(e+216)%360,s:n.s,l:n.l})]},t.prototype.onBackground=function(n){var e=this.toRgb(),i=new t(n).toRgb();return new t({r:i.r+(e.r-i.r)*e.a,g:i.g+(e.g-i.g)*e.a,b:i.b+(e.b-i.b)*e.a})},t.prototype.triad=function(){return this.polyad(3)},t.prototype.tetrad=function(){return this.polyad(4)},t.prototype.polyad=function(n){for(var e=this.toHsl(),i=e.h,r=[this],o=360/n,s=1;s(function(t){t.Primary="--palette-primary-",t.Accent="--palette-accent-",t.Warn="--palette-warn-"}(Mi||(Mi={})),Mi))(),Qm=(()=>(function(t){t.Primary50="--palette-primary-50",t.Primary100="--palette-primary-100",t.Primary200="--palette-primary-200",t.Primary300="--palette-primary-300",t.Primary400="--palette-primary-400",t.Primary500="--palette-primary-500",t.Primary600="--palette-primary-600",t.Primary700="--palette-primary-700",t.Primary800="--palette-primary-800",t.Primary900="--palette-primary-900",t.PrimaryA100="--palette-primary-A100",t.PrimaryA200="--palette-primary-A200",t.PrimaryA400="--palette-primary-A400",t.PrimaryA700="--palette-primary-A700",t.PrimaryContrast50="--palette-primary-contrast-50",t.PrimaryContrast100="--palette-primary-contrast-100",t.PrimaryContrast200="--palette-primary-contrast-200",t.PrimaryContrast300="--palette-primary-contrast-300",t.PrimaryContrast400="--palette-primary-contrast-400",t.PrimaryContrast500="--palette-primary-contrast-500",t.PrimaryContrast600="--palette-primary-contrast-600",t.PrimaryContrast700="--palette-primary-contrast-700",t.PrimaryContrast800="--palette-primary-contrast-800",t.PrimaryContrast900="--palette-primary-contrast-900",t.PrimaryContrastA100="--palette-primary-contrast-A100",t.PrimaryContrastA200="--palette-primary-contrast-A200",t.PrimaryContrastA400="--palette-primary-contrast-A400",t.PrimaryContrastA700="--palette-primary-contrast-A700",t.Accent50="--palette-accent-50",t.Accent100="--palette-accent-100",t.Accent200="--palette-accent-200",t.Accent300="--palette-accent-300",t.Accent400="--palette-accent-400",t.Accent500="--palette-accent-500",t.Accent600="--palette-accent-600",t.Accent700="--palette-accent-700",t.Accent800="--palette-accent-800",t.Accent900="--palette-accent-900",t.AccentA100="--palette-accent-A100",t.AccentA200="--palette-accent-A200",t.AccentA400="--palette-accent-A400",t.AccentA700="--palette-accent-A700",t.DarkAccentText="--dark-accent-text",t.LightAccentText="--light-accent-text",t.Warn50="--palette-warn-50",t.Warn100="--palette-warn-100",t.Warn200="--palette-warn-200",t.Warn300="--palette-warn-300",t.Warn400="--palette-warn-400",t.Warn500="--palette-warn-500",t.Warn600="--palette-warn-600",t.Warn700="--palette-warn-700",t.Warn800="--palette-warn-800",t.Warn900="--palette-warn-900",t.WarnA100="--palette-warn-A100",t.WarnA200="--palette-warn-A200",t.WarnA400="--palette-warn-A400",t.WarnA700="--palette-warn-A700",t.DarkWarnText="--dark-warn-text",t.LightWarnText="--light-warn-text",t.BackgroundStatusBar="--palette-background-status-bar",t.BackgroundAppBar="--palette-background-app-bar",t.BackgroundBackground="--palette-background-background",t.BackgroundHover="--palette-background-hover",t.BackgroundHoverAlpha="--palette-background-hover-alpha",t.BackgroundCard="--palette-background-card",t.BackgroundDialog="--palette-background-dialog",t.BackgroundDisabledButton="--palette-background-disabled-button",t.BackgroundDisabledButtonAlpha="--palette-background-disabled-button-alpha",t.BackgroundRaisedButton="--palette-background-raised-button",t.BackgroundFocusedButton="--palette-background-focused-button",t.BackgroundFocusedButtonAlpha="--palette-background-focused-button-alpha",t.BackgroundSelectedButton="--palette-background-selected-button",t.BackgroundSelectedDisabledButton="--palette-background-selected-disabled-button",t.BackgroundDisabledButtonToggle="--palette-background-disabled-button-toggle",t.BackgroundUnselectedChip="--palette-background-unselected-chip",t.BackgroundDisabledListOption="--palette-background-disabled-list-option",t.ForegroundBase="--palette-foreground-base",t.ForegroundDivider="--palette-foreground-divider",t.ForegroundDividerAlpha="--palette-foreground-divider-alpha",t.ForegroundDividers="--palette-foreground-dividers",t.ForegroundDividersAlpha="--palette-foreground-dividers-alpha",t.ForegroundDisabled="--palette-foreground-disabled",t.ForegroundDisabledAlpha="--palette-foreground-disabled-alpha",t.ForegroundDisabledButton="--palette-foreground-disabled-button",t.ForegroundDisabledButtonAlpha="--palette-foreground-disabled-button-alpha",t.ForegroundDisabledText="--palette-foreground-disabled-text",t.ForegroundDisabledTextAlpha="--palette-foreground-disabled-text-alpha",t.ForegroundElevation="--palette-foreground-elevation",t.ForegroundHintText="--palette-foreground-hint-text",t.ForegroundHintTextAlpha="--palette-foreground-hint-text-alpha",t.ForegroundSecondaryText="--palette-foreground-secondary-text",t.ForegroundSecondaryTextAlpha="--palette-foreground-secondary-text-alpha",t.ForegroundIcon="--palette-foreground-icon",t.ForegroundIconAlpha="--palette-foreground-icon-alpha",t.ForegroundIcons="--palette-foreground-icons",t.ForegroundIconsAlpha="--palette-foreground-icons-alpha",t.ForegroundText="--palette-foreground-text",t.ForegroundTextAlpha="--palette-foreground-text-alpha",t.ForegroundSliderMin="--palette-foreground-slider-min",t.ForegroundSliderMinAlpha="--palette-foreground-slider-min-alpha",t.ForegroundSliderOff="--palette-foreground-slider-off",t.ForegroundSliderOffAlpha="--palette-foreground-slider-off-alpha",t.ForegroundSliderOffActive="--palette-foreground-slider-off-active",t.ForegroundSliderOffActiveAlpha="--palette-foreground-slider-off-active-alpha",t.BackgroundStatusBarDark="--palette-background-status-bar-dark",t.BackgroundAppBarDark="--palette-background-app-bar-dark",t.BackgroundBackgroundDark="--palette-background-background-dark",t.BackgroundHoverDark="--palette-background-hover-dark",t.BackgroundHoverDarkAlpha="--palette-background-hover-dark-alpha",t.BackgroundCardDark="--palette-background-card-dark",t.BackgroundDialogDark="--palette-background-dialog-dark",t.BackgroundDisabledButtonDark="--palette-background-disabled-button-dark",t.BackgroundDisabledButtonDarkAlpha="--palette-background-disabled-button-dark-alpha",t.BackgroundRaisedButtonDark="--palette-background-raised-button-dark",t.BackgroundFocusedButtonDark="--palette-background-focused-button-dark",t.BackgroundFocusedButtonDarkAlpha="--palette-background-focused-button-dark-alpha",t.BackgroundSelectedButtonDark="--palette-background-selected-button-dark",t.BackgroundSelectedDisabledButtonDark="--palette-background-selected-disabled-button-dark",t.BackgroundDisabledButtonToggleDark="--palette-background-disabled-button-toggle-dark",t.BackgroundUnselectedChipDark="--palette-background-unselected-chip-dark",t.BackgroundDisabledListOptionDark="--palette-background-disabled-list-option-dark",t.ForegroundBaseDark="--palette-foreground-base-dark",t.ForegroundDividerDark="--palette-foreground-divider-dark",t.ForegroundDividerDarkAlpha="--palette-foreground-divider-dark-alpha",t.ForegroundDividersDark="--palette-foreground-dividers-dark",t.ForegroundDividersDarkAlpha="--palette-foreground-dividers-dark-alpha",t.ForegroundDisabledDark="--palette-foreground-disabled-dark",t.ForegroundDisabledDarkAlpha="--palette-foreground-disabled-dark-alpha",t.ForegroundDisabledButtonDark="--palette-foreground-disabled-button-dark",t.ForegroundDisabledButtonDarkAlpha="--palette-foreground-disabled-button-dark-alpha",t.ForegroundDisabledTextDark="--palette-foreground-disabled-text-dark",t.ForegroundDisabledTextDarkAlpha="--palette-foreground-disabled-text-dark-alpha",t.ForegroundElevationDark="--palette-foreground-elevation-dark",t.ForegroundHintTextDark="--palette-foreground-hint-text-dark",t.ForegroundHintTextDarkAlpha="--palette-foreground-hint-text-dark-alpha",t.ForegroundSecondaryTextDark="--palette-foreground-secondary-text-dark",t.ForegroundSecondaryTextAlphaDark="--palette-foreground-secondary-text-alpha-dark",t.ForegroundIconDark="--palette-foreground-icon-dark",t.ForegroundIconDarkAlpha="--palette-foreground-icon-dark-alpha",t.ForegroundIconsDark="--palette-foreground-icons-dark",t.ForegroundIconsDarkAlpha="--palette-foreground-icons-dark-alpha",t.ForegroundTextDark="--palette-foreground-text-dark",t.ForegroundTextDarkAlpha="--palette-foreground-text-dark-alpha",t.ForegroundSliderMinDark="--palette-foreground-slider-min-dark",t.ForegroundSliderMinDarkAlpha="--palette-foreground-slider-min-dark-alpha",t.ForegroundSliderOffDark="--palette-foreground-slider-off-dark",t.ForegroundSliderOffDarkAlpha="--palette-foreground-slider-off-dark-alpha",t.ForegroundSliderOffActiveDark="--palette-foreground-slider-off-active-dark",t.ForegroundSliderOffActiveDarkAlpha="--palette-foreground-slider-off-active-dark-alpha"}(Qm||(Qm={})),Qm))();const dJ={isAutoContrast:!0,isAlternativeColorAlgorithm:!1,darkThemeClass:"isDarkTheme",lightThemeClass:"isLightTheme",colorMap:[{name:"50",map:[52,0,0]},{name:"100",map:[37,0,0]},{name:"200",map:[26,0,0]},{name:"300",map:[12,0,0]},{name:"400",map:[6,0,0]},{name:"500",map:[0,0,0]},{name:"600",map:[0,6,0]},{name:"700",map:[0,12,0]},{name:"800",map:[0,18,0]},{name:"900",map:[0,24,0]},{name:"A100",map:[50,0,30]},{name:"A200",map:[30,0,30]},{name:"A400",map:[10,0,15]},{name:"A700",map:[5,0,5]}],sortedHues:["50","100","200","300","400","500","600","700","800","900"]},YR=new k("Mat Css Config");let uJ=(()=>{class t{constructor(e,i,r){this.document=i,this.contrastColorThresholdPrimary="400",this.contrastColorThresholdAccent="400",this.contrastColorThresholdWarn="400",this.isAutoContrast=!1,this.renderer=e.createRenderer(null,null),this.ROOT=this.document.documentElement,this.cfg={...dJ,...r},this.isAutoContrast=this.cfg.isAutoContrast,this.cfg.isDarkTheme&&this.setDarkTheme(this.cfg.isDarkTheme),this.cfg.primary&&this.setPrimaryColor(this.cfg.primary),this.cfg.accent&&this.setAccentColor(this.cfg.accent),this.cfg.warn&&this.setWarnColor(this.cfg.warn)}setPrimaryColor(e){this.primary=e;const i=Mi.Primary,r=this._computePaletteColors(i,this.primary);this._setStyle(r),this.isAutoContrast&&this._recalculateAndSetContrastColor(i)}setAccentColor(e){this.accent=e;const i=Mi.Accent,r=this._computePaletteColors(i,this.accent);this._setStyle(r),this.isAutoContrast&&this._recalculateAndSetContrastColor(i)}setWarnColor(e){this.warn=e;const i=Mi.Warn,r=this._computePaletteColors(i,this.warn);this._setStyle(r),this.isAutoContrast&&this._recalculateAndSetContrastColor(i)}setVariable(e,i){this._setStyle([{name:e,val:i}])}setDarkTheme(e){e?(this.document.body.classList.remove(this.cfg.lightThemeClass),this.document.body.classList.add(this.cfg.darkThemeClass)):(this.document.body.classList.remove(this.cfg.darkThemeClass),this.document.body.classList.add(this.cfg.lightThemeClass)),this.isDarkTheme=e}setAutoContrastEnabled(e){this.isAutoContrast=e,e?(this._recalculateAndSetContrastColor(Mi.Primary),this._recalculateAndSetContrastColor(Mi.Accent),this._recalculateAndSetContrastColor(Mi.Warn)):(this.setContrastColorThresholdPrimary(this.contrastColorThresholdPrimary),this.setContrastColorThresholdAccent(this.contrastColorThresholdAccent),this.setContrastColorThresholdWarn(this.contrastColorThresholdWarn))}setContrastColorThresholdPrimary(e){this.contrastColorThresholdPrimary=e,this.setContrastColorThreshold(e,Mi.Primary)}setContrastColorThresholdAccent(e){this.contrastColorThresholdAccent=e,this.setContrastColorThreshold(e,Mi.Accent)}setContrastColorThresholdWarn(e){this.contrastColorThresholdWarn=e,this.setContrastColorThreshold(e,Mi.Warn)}setContrastColorThreshold(e,i){let r=t.DARK_TEXT_VAR;const o=this.cfg.sortedHues.map(s=>(s===e&&(r=t.LIGHT_TEXT_VAR),{val:this._getCssVarValue(r),name:`${i+t.CONTRAST_PREFIX}${s}`}));this._setStyle(o)}setAlternativeColorAlgorithm(e){this.cfg.isAlternativeColorAlgorithm=e,this.setPrimaryColor(this.primary),this.setAccentColor(this.accent),this.setWarnColor(this.warn)}changeContrastColorThresholdPrimary(e){this.setContrastColorThresholdPrimary(e)}changeContrastColorThresholdAccent(e){this.setContrastColorThresholdAccent(e)}changeContrastColorThresholdWarn(e){this.setContrastColorThresholdWarn(e)}changeContrastColorThreshold(e,i){this.setContrastColorThreshold(e,i)}getPaletteForColor(e){return this.cfg.isAlternativeColorAlgorithm?this.getTraditionalPaletteForColor(e):this.getConstantinPaletteForColor(e)}getTraditionalPaletteForColor(e){return this.cfg.colorMap.map(i=>{const r=new yr(e).lighten(i.map[0]).darken(i.map[1]).saturate(i.map[2]),o=new yr(r);return{hue:i.name,isLight:o.isLight(),color:{...o.toRgb(),str:`rgb(${o.toRgb().r},${o.toRgb().g},${o.toRgb().b})`}}})}getConstantinPaletteForColor(e){return this.cfg.colorMap.map(i=>{const r=this.computePalletTriad(e,i.name);return{hue:i.name,isLight:r.isLight,color:{...r.rgb,str:`rgb(${r.rgb.r},${r.rgb.g},${r.rgb.b})`}}})}getPaletteWithContrastForColor(e){const i=this._getCssVarValue(t.LIGHT_TEXT_VAR),r=this._getCssVarValue(t.DARK_TEXT_VAR);return this.getPaletteForColor(e).map(s=>{const l=(s.isLight?i:r).split(",").map(d=>+d),c={r:l[0],g:l[1],b:l[2],a:1};return{...s,contrast:{...c,str:`${c.r},${c.g},${c.b}`}}})}_computePaletteColors(e,i){return this.getPaletteForColor(i).map(r=>{const o=r.color;return{name:`${e}${r.hue}`,val:`${o.r}, ${o.g}, ${o.b}`}})}_recalculateAndSetContrastColor(e){const i=this._calculateContrastColorsForCurrentValues(e).map(({contrastColorVar:r,hue:o})=>({val:this._getCssVarValue(r),name:`${e+t.CONTRAST_PREFIX}${o}`}));this._setStyle(i)}_calculateContrastColorsForCurrentValues(e){return this.cfg.sortedHues.map(i=>{const r=this._getCssVarValue(`${e}${i}`);return{contrastColorVar:new yr(`rgb(${r})`).isDark()?t.LIGHT_TEXT_VAR:t.DARK_TEXT_VAR,hue:i}})}_setStyle(e){e.forEach(i=>{this.renderer.setStyle(this.ROOT,i.name,i.val,kn.DashCase)})}_getCssVarValue(e){return getComputedStyle(this.ROOT).getPropertyValue(e)}computePalletTriad(e,i){const r=new yr("#ffffff"),o=this.multiply(new yr(e).toRgb(),new yr(e).toRgb()),s=new yr(e).tetrad();let a;switch(i){case"50":a=this.getColorObject(r.mix(e,12));break;case"100":a=this.getColorObject(r.mix(e,30));break;case"200":a=this.getColorObject(r.mix(e,50));break;case"300":a=this.getColorObject(r.mix(e,70));break;case"400":a=this.getColorObject(r.mix(e,85));break;case"500":a=this.getColorObject(r.mix(e,100));break;case"600":a=this.getColorObject(o.mix(e,87));break;case"700":a=this.getColorObject(o.mix(e,70));break;case"800":a=this.getColorObject(o.mix(e,54));break;case"900":a=this.getColorObject(o.mix(e,25));break;case"A100":a=this.getColorObject(o.mix(s[4],15).saturate(80).lighten(65));break;case"A200":a=this.getColorObject(o.mix(s[4],15).saturate(80).lighten(55));break;case"A400":a=this.getColorObject(o.mix(s[4],15).saturate(100).lighten(45));break;case"A700":a=this.getColorObject(o.mix(s[4],15).saturate(100).lighten(40))}return a}multiply(e,i){return e.b=Math.floor(e.b*i.b/255),e.g=Math.floor(e.g*i.g/255),e.r=Math.floor(e.r*i.r/255),new yr("rgb\xa0"+e.r+"\xa0"+e.g+"\xa0"+e.b)}getColorObject(e){const i=new yr(e);return{rgb:i.toRgb(),isLight:i.isLight()}}}return t.CONTRAST_PREFIX="contrast-",t.DARK_TEXT_VAR="--dark-primary-text",t.LIGHT_TEXT_VAR="--light-primary-text",t.\u0275fac=function(e){return new(e||t)(_(po),_(ge),_(YR))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),hJ=(()=>{class t{static forRoot(e){return{ngModule:t,providers:[{provide:YR,useValue:e}]}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Re]}),t})(),ZR=(()=>{class n{constructor(i){this.url=i,this.type=n.type}}return n.type="[Theming] Load Theming File",n})();const fJ=V.record(V.nativeEnum(Qm),V.string());let mJ=(()=>{var t;let n=((t=class{constructor(){this.http=R(wi),this.materialVars=R(uJ)}load(i,{url:r}){return this.http.get(r,{responseType:"text"}).pipe(B(o=>Gf(o,{filename:r})),B(o=>fJ.parse(o)),We(o=>i.setState(o)),We(o=>this.setVariables(o)))}setVariables(i){for(const[r,o]of Object.entries(i))this.materialVars.setVariable(r,o)}}).\u0275fac=function(i){return new(i||t)},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t);return z([He(ZR),y("design:type",Function),y("design:paramtypes",[Object,ZR]),y("design:returntype",xe)],n.prototype,"load",null),n=z([Ei({name:"theming",defaults:{}})],n),n})(),pJ=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[hJ.forRoot({}),sn.forFeature([mJ])]}),n})();var rw=function t(){},KR=function(){function t(n){this._ranScripts={},this._renderer=n.createRenderer(null,null)}return t.prototype.insertEl=function(n,e,i,r,o){if(r&&!o){var s=n._prevSVG&&n._prevSVG.parentNode;s&&this._renderer.removeChild(s,n._prevSVG),e.innerHTML=""}o?this._renderer.insertBefore(e,i,e.firstChild):this._renderer.appendChild(e,i),"svg"===i.nodeName&&(n._prevSVG=i)},t.prototype.evalScripts=function(n,e,i){for(var r=n.querySelectorAll("script"),o=[],s=0;s0&&("always"===i||"once"===i&&!this._ranScripts[e])){for(s=0;s-1}(e.inlineSVG)){var r=e.inlineSVG.split("#")[1];i=function bJ(t,n,e){var i=n.querySelector('[id="'.concat(e,'"]'));if(!i)throw new Error('Symbol "'.concat(e,'" not found'));var r=t.createElement("svg","svg");t.appendChild(r,i);var o=t.createElement("use","svg");return t.setAttribute(o,"href","#".concat(e),"xlink"),t.appendChild(r,o),r}(e._renderer,i,r)}e._processSvg(i)},function(i){e._fail(i)}))}},t.prototype._processSvg=function(n){if(n){if(this.removeSVGAttributes&&ar(this.platformId)&&JR(n,this.removeSVGAttributes),this.setSVGAttributes&&function vJ(t,n){for(var e in n)t.setAttribute(e,n[e])}(n,this.setSVGAttributes),this.onSVGLoaded&&(n=this.onSVGLoaded(n,this._el.nativeElement)),this._insertEl(n),ar(this.platformId)&&this._inlineSVGService.evalScripts(n,this.inlineSVG,this.evalScripts),this.forceEvalStyles){var e=n.querySelectorAll("style");Array.from(e).forEach(function(i){return i.textContent+=""})}this.onSVGInserted.emit(n)}},t.prototype._insertEl=function(n){if(this.injectComponent){if(!this._svgComp){var e=this._resolver.resolveComponentFactory(XR);this._svgComp=this._viewContainerRef.createComponent(e)}this._svgComp.instance.context=this,this._svgComp.instance.replaceContents=this.replaceContents,this._svgComp.instance.prepend=this.prepend,this._svgComp.instance.content=n,this._renderer.appendChild(this._el.nativeElement,this._svgComp.injector.get(XR)._el.nativeElement)}else this._inlineSVGService.insertEl(this,this._el.nativeElement,n,this.replaceContents,this.prepend)},t.prototype._fail=function(n){if(this.onSVGFailed.emit(n),this.fallbackImgUrl){var e=this._renderer.createElement("IMG");this._renderer.setAttribute(e,"src",this.fallbackImgUrl),this._insertEl(e)}else this.fallbackSVG&&this.fallbackSVG!==this.inlineSVG&&(this.inlineSVG=this.fallbackSVG,this._insertSVG())},t.prototype._isValidPlatform=function(){return vc(this.platformId)||ar(this.platformId)},t.prototype._isSSRDisabled=function(){return vc(this.platformId)&&this._config&&this._config.clientOnly},t.\u0275fac=function(e){return new(e||t)(m(H),m(it),m(Ni),m(QR),m(gi),m(KR),m(rw,8),m(ss))},t.\u0275dir=M({type:t,selectors:[["","inlineSVG",""]],inputs:{inlineSVG:"inlineSVG",resolveSVGUrl:"resolveSVGUrl",replaceContents:"replaceContents",prepend:"prepend",injectComponent:"injectComponent",cacheSVG:"cacheSVG",setSVGAttributes:"setSVGAttributes",removeSVGAttributes:"removeSVGAttributes",forceEvalStyles:"forceEvalStyles",evalScripts:"evalScripts",fallbackImgUrl:"fallbackImgUrl",fallbackSVG:"fallbackSVG",onSVGLoaded:"onSVGLoaded"},outputs:{onSVGInserted:"onSVGInserted",onSVGFailed:"onSVGFailed"},features:[ie([QR]),st]}),t}(),eP=function(){function t(){}return t.forRoot=function(n){return{ngModule:t,providers:[{provide:rw,useValue:n}]}},t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t}();function Jm(t=0,n,e=pK){let i=-1;return null!=n&&(yx(n)?e=n:i=n),new xe(r=>{let o=function wJ(t){return t instanceof Date&&!isNaN(t)}(t)?+t-e.now():t;o<0&&(o=0);let s=0;return e.schedule(function(){r.closed||(r.next(s++),0<=i?this.schedule(void 0,i):r.complete())},o)})}let wl={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};const nP=/[&<>"']/,CJ=new RegExp(nP.source,"g"),iP=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,DJ=new RegExp(iP.source,"g"),EJ={"&":"&","<":"<",">":">",'"':""","'":"'"},rP=t=>EJ[t];function un(t,n){if(n){if(nP.test(t))return t.replace(CJ,rP)}else if(iP.test(t))return t.replace(DJ,rP);return t}const SJ=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function oP(t){return t.replace(SJ,(n,e)=>"colon"===(e=e.toLowerCase())?":":"#"===e.charAt(0)?"x"===e.charAt(1)?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):"")}const kJ=/(^|[^\[])\^/g;function dt(t,n){t="string"==typeof t?t:t.source,n=n||"";const e={replace:(i,r)=>(r=(r=r.source||r).replace(kJ,"$1"),t=t.replace(i,r),e),getRegex:()=>new RegExp(t,n)};return e}const MJ=/[^\w:]/g,TJ=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function sP(t,n,e){if(t){let i;try{i=decodeURIComponent(oP(e)).replace(MJ,"").toLowerCase()}catch{return null}if(0===i.indexOf("javascript:")||0===i.indexOf("vbscript:")||0===i.indexOf("data:"))return null}n&&!TJ.test(e)&&(e=function RJ(t,n){ep[" "+t]||(ep[" "+t]=AJ.test(t)?t+"/":np(t,"/",!0));const e=-1===(t=ep[" "+t]).indexOf(":");return"//"===n.substring(0,2)?e?n:t.replace(IJ,"$1")+n:"/"===n.charAt(0)?e?n:t.replace(OJ,"$1")+n:t+n}(n,e));try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}const ep={},AJ=/^[^:]+:\/*[^/]*$/,IJ=/^([^:]+:)[\s\S]*$/,OJ=/^([^:]+:\/*[^/]*)[\s\S]*$/,tp={exec:function(){}};function Gi(t){let e,i,n=1;for(;n{let l=!1,c=s;for(;--c>=0&&"\\"===a[c];)l=!l;return l?"|":" |"}).split(/ \|/);let r=0;if(i[0].trim()||i.shift(),i.length>0&&!i[i.length-1].trim()&&i.pop(),i.length>n)i.splice(n);else for(;i.length1;)1&n&&(e+=t),n>>=1,t+=t;return e+t}function dP(t,n,e,i){const r=n.href,o=n.title?un(n.title):null,s=t[1].replace(/\\([\[\]])/g,"$1");if("!"!==t[0].charAt(0)){i.state.inLink=!0;const a={type:"link",raw:e,href:r,title:o,text:s,tokens:i.inlineTokens(s)};return i.state.inLink=!1,a}return{type:"image",raw:e,href:r,title:o,text:un(s)}}class ow{constructor(n){this.options=n||wl}space(n){const e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){const e=this.rules.block.code.exec(n);if(e){const i=e[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?i:np(i,"\n")}}}fences(n){const e=this.rules.block.fences.exec(n);if(e){const i=e[0],r=function FJ(t,n){const e=t.match(/^(\s+)(?:```)/);if(null===e)return n;const i=e[1];return n.split("\n").map(r=>{const o=r.match(/^\s+/);if(null===o)return r;const[s]=o;return s.length>=i.length?r.slice(i.length):r}).join("\n")}(i,e[3]||"");return{type:"code",raw:i,lang:e[2]?e[2].trim().replace(this.rules.inline._escapes,"$1"):e[2],text:r}}}heading(n){const e=this.rules.block.heading.exec(n);if(e){let i=e[2].trim();if(/#$/.test(i)){const r=np(i,"#");(this.options.pedantic||!r||/ $/.test(r))&&(i=r.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:i,tokens:this.lexer.inline(i)}}}hr(n){const e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:e[0]}}blockquote(n){const e=this.rules.block.blockquote.exec(n);if(e){const i=e[0].replace(/^ *>[ \t]?/gm,""),r=this.lexer.state.top;this.lexer.state.top=!0;const o=this.lexer.blockTokens(i);return this.lexer.state.top=r,{type:"blockquote",raw:e[0],tokens:o,text:i}}}list(n){let e=this.rules.block.list.exec(n);if(e){let i,r,o,s,a,l,c,d,u,h,f,p,g=e[1].trim();const b=g.length>1,v={type:"list",raw:"",ordered:b,start:b?+g.slice(0,-1):"",loose:!1,items:[]};g=b?`\\d{1,9}\\${g.slice(-1)}`:`\\${g}`,this.options.pedantic&&(g=b?g:"[*+-]");const w=new RegExp(`^( {0,3}${g})((?:[\t ][^\\n]*)?(?:\\n|$))`);for(;n&&(p=!1,(e=w.exec(n))&&!this.rules.block.hr.test(n));){if(i=e[0],n=n.substring(i.length),d=e[2].split("\n",1)[0].replace(/^\t+/,P=>" ".repeat(3*P.length)),u=n.split("\n",1)[0],this.options.pedantic?(s=2,f=d.trimLeft()):(s=e[2].search(/[^ ]/),s=s>4?1:s,f=d.slice(s),s+=e[1].length),l=!1,!d&&/^ *$/.test(u)&&(i+=u+"\n",n=n.substring(u.length+1),p=!0),!p){const P=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),ye=new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),Te=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),It=new RegExp(`^ {0,${Math.min(3,s-1)}}#`);for(;n&&(h=n.split("\n",1)[0],u=h,this.options.pedantic&&(u=u.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!(Te.test(u)||It.test(u)||P.test(u)||ye.test(n)));){if(u.search(/[^ ]/)>=s||!u.trim())f+="\n"+u.slice(s);else{if(l||d.search(/[^ ]/)>=4||Te.test(d)||It.test(d)||ye.test(d))break;f+="\n"+u}!l&&!u.trim()&&(l=!0),i+=h+"\n",n=n.substring(h.length+1),d=u.slice(s)}}v.loose||(c?v.loose=!0:/\n *\n *$/.test(i)&&(c=!0)),this.options.gfm&&(r=/^\[[ xX]\] /.exec(f),r&&(o="[ ] "!==r[0],f=f.replace(/^\[[ xX]\] +/,""))),v.items.push({type:"list_item",raw:i,task:!!r,checked:o,loose:!1,text:f}),v.raw+=i}v.items[v.items.length-1].raw=i.trimRight(),v.items[v.items.length-1].text=f.trimRight(),v.raw=v.raw.trimRight();const C=v.items.length;for(a=0;a"space"===Te.type),ye=P.length>0&&P.some(Te=>/\n.*\n/.test(Te.raw));v.loose=ye}if(v.loose)for(a=0;a$/,"$1").replace(this.rules.inline._escapes,"$1"):"",o=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"):e[3];return{type:"def",tag:i,raw:e[0],href:r,title:o}}}table(n){const e=this.rules.block.table.exec(n);if(e){const i={type:"table",header:aP(e[1]).map(r=>({text:r})),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(i.header.length===i.align.length){i.raw=e[0];let o,s,a,l,r=i.align.length;for(o=0;o({text:c}));for(r=i.header.length,s=0;s/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):un(e[0]):e[0]}}link(n){const e=this.rules.inline.link.exec(n);if(e){const i=e[2].trim();if(!this.options.pedantic&&/^$/.test(i))return;const s=np(i.slice(0,-1),"\\");if((i.length-s.length)%2==0)return}else{const s=function PJ(t,n){if(-1===t.indexOf(n[1]))return-1;const e=t.length;let i=0,r=0;for(;r-1){const l=(0===e[0].indexOf("!")?5:4)+e[1].length+s;e[2]=e[2].substring(0,s),e[0]=e[0].substring(0,l).trim(),e[3]=""}}let r=e[2],o="";if(this.options.pedantic){const s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r);s&&(r=s[1],o=s[3])}else o=e[3]?e[3].slice(1,-1):"";return r=r.trim(),/^$/.test(i)?r.slice(1):r.slice(1,-1)),dP(e,{href:r&&r.replace(this.rules.inline._escapes,"$1"),title:o&&o.replace(this.rules.inline._escapes,"$1")},e[0],this.lexer)}}reflink(n,e){let i;if((i=this.rules.inline.reflink.exec(n))||(i=this.rules.inline.nolink.exec(n))){let r=(i[2]||i[1]).replace(/\s+/g," ");if(r=e[r.toLowerCase()],!r){const o=i[0].charAt(0);return{type:"text",raw:o,text:o}}return dP(i,r,i[0],this.lexer)}}emStrong(n,e,i=""){let r=this.rules.inline.emStrong.lDelim.exec(n);if(!r||r[3]&&i.match(/[\p{L}\p{N}]/u))return;const o=r[1]||r[2]||"";if(!o||o&&(""===i||this.rules.inline.punctuation.exec(i))){const s=r[0].length-1;let a,l,c=s,d=0;const u="*"===r[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(u.lastIndex=0,e=e.slice(-1*n.length+s);null!=(r=u.exec(e));){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(l=a.length,r[3]||r[4]){c+=l;continue}if((r[5]||r[6])&&s%3&&!((s+l)%3)){d+=l;continue}if(c-=l,c>0)continue;l=Math.min(l,l+c+d);const h=n.slice(0,s+r.index+(r[0].length-a.length)+l);if(Math.min(s,l)%2){const p=h.slice(1,-1);return{type:"em",raw:h,text:p,tokens:this.lexer.inlineTokens(p)}}const f=h.slice(2,-2);return{type:"strong",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(n){const e=this.rules.inline.code.exec(n);if(e){let i=e[2].replace(/\n/g," ");const r=/[^ ]/.test(i),o=/^ /.test(i)&&/ $/.test(i);return r&&o&&(i=i.substring(1,i.length-1)),i=un(i,!0),{type:"codespan",raw:e[0],text:i}}}br(n){const e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n){const e=this.rules.inline.del.exec(n);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(n,e){const i=this.rules.inline.autolink.exec(n);if(i){let r,o;return"@"===i[2]?(r=un(this.options.mangle?e(i[1]):i[1]),o="mailto:"+r):(r=un(i[1]),o=r),{type:"link",raw:i[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}}url(n,e){let i;if(i=this.rules.inline.url.exec(n)){let r,o;if("@"===i[2])r=un(this.options.mangle?e(i[0]):i[0]),o="mailto:"+r;else{let s;do{s=i[0],i[0]=this.rules.inline._backpedal.exec(i[0])[0]}while(s!==i[0]);r=un(i[0]),o="www."===i[1]?"http://"+i[0]:i[0]}return{type:"link",raw:i[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(n,e){const i=this.rules.inline.text.exec(n);if(i){let r;return r=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):un(i[0]):i[0]:un(this.options.smartypants?e(i[0]):i[0]),{type:"text",raw:i[0],text:r}}}}const le={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:tp,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};le.def=dt(le.def).replace("label",le._label).replace("title",le._title).getRegex(),le.bullet=/(?:[*+-]|\d{1,9}[.)])/,le.listItemStart=dt(/^( *)(bull) */).replace("bull",le.bullet).getRegex(),le.list=dt(le.list).replace(/bull/g,le.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+le.def.source+")").getRegex(),le._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",le._comment=/|$)/,le.html=dt(le.html,"i").replace("comment",le._comment).replace("tag",le._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),le.paragraph=dt(le._paragraph).replace("hr",le.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",le._tag).getRegex(),le.blockquote=dt(le.blockquote).replace("paragraph",le.paragraph).getRegex(),le.normal=Gi({},le),le.gfm=Gi({},le.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),le.gfm.table=dt(le.gfm.table).replace("hr",le.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",le._tag).getRegex(),le.gfm.paragraph=dt(le._paragraph).replace("hr",le.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",le.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",le._tag).getRegex(),le.pedantic=Gi({},le.normal,{html:dt("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",le._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:tp,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:dt(le.normal._paragraph).replace("hr",le.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",le.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const X={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:tp,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:tp,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(i="x"+i.toString(16)),n+="&#"+i+";";return n}X._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",X.punctuation=dt(X.punctuation).replace(/punctuation/g,X._punctuation).getRegex(),X.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,X.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,X._comment=dt(le._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),X.emStrong.lDelim=dt(X.emStrong.lDelim).replace(/punct/g,X._punctuation).getRegex(),X.emStrong.rDelimAst=dt(X.emStrong.rDelimAst,"g").replace(/punct/g,X._punctuation).getRegex(),X.emStrong.rDelimUnd=dt(X.emStrong.rDelimUnd,"g").replace(/punct/g,X._punctuation).getRegex(),X._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,X._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,X._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,X.autolink=dt(X.autolink).replace("scheme",X._scheme).replace("email",X._email).getRegex(),X._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,X.tag=dt(X.tag).replace("comment",X._comment).replace("attribute",X._attribute).getRegex(),X._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,X._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,X._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,X.link=dt(X.link).replace("label",X._label).replace("href",X._href).replace("title",X._title).getRegex(),X.reflink=dt(X.reflink).replace("label",X._label).replace("ref",le._label).getRegex(),X.nolink=dt(X.nolink).replace("ref",le._label).getRegex(),X.reflinkSearch=dt(X.reflinkSearch,"g").replace("reflink",X.reflink).replace("nolink",X.nolink).getRegex(),X.normal=Gi({},X),X.pedantic=Gi({},X.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:dt(/^!?\[(label)\]\((.*?)\)/).replace("label",X._label).getRegex(),reflink:dt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",X._label).getRegex()}),X.gfm=Gi({},X.normal,{escape:dt(X.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\l+" ".repeat(c.length));n;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(a=>!!(i=a.call({lexer:this},n,e))&&(n=n.substring(i.raw.length),e.push(i),!0)))){if(i=this.tokenizer.space(n)){n=n.substring(i.raw.length),1===i.raw.length&&e.length>0?e[e.length-1].raw+="\n":e.push(i);continue}if(i=this.tokenizer.code(n)){n=n.substring(i.raw.length),r=e[e.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?e.push(i):(r.raw+="\n"+i.raw,r.text+="\n"+i.text,this.inlineQueue[this.inlineQueue.length-1].src=r.text);continue}if(i=this.tokenizer.fences(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.heading(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.hr(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.blockquote(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.list(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.html(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.def(n)){n=n.substring(i.raw.length),r=e[e.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title}):(r.raw+="\n"+i.raw,r.text+="\n"+i.raw,this.inlineQueue[this.inlineQueue.length-1].src=r.text);continue}if(i=this.tokenizer.table(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.lheading(n)){n=n.substring(i.raw.length),e.push(i);continue}if(o=n,this.options.extensions&&this.options.extensions.startBlock){let a=1/0;const l=n.slice(1);let c;this.options.extensions.startBlock.forEach(function(d){c=d.call({lexer:this},l),"number"==typeof c&&c>=0&&(a=Math.min(a,c))}),a<1/0&&a>=0&&(o=n.substring(0,a+1))}if(this.state.top&&(i=this.tokenizer.paragraph(o))){r=e[e.length-1],s&&"paragraph"===r.type?(r.raw+="\n"+i.raw,r.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):e.push(i),s=o.length!==n.length,n=n.substring(i.raw.length);continue}if(i=this.tokenizer.text(n)){n=n.substring(i.raw.length),r=e[e.length-1],r&&"text"===r.type?(r.raw+="\n"+i.raw,r.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):e.push(i);continue}if(n){const a="Infinite loop on byte: "+n.charCodeAt(0);if(this.options.silent){console.error(a);break}throw new Error(a)}}return this.state.top=!0,e}inline(n,e=[]){return this.inlineQueue.push({src:n,tokens:e}),e}inlineTokens(n,e=[]){let i,r,o,a,l,c,s=n;if(this.tokens.links){const d=Object.keys(this.tokens.links);if(d.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(s));)d.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,a.index)+"["+cP("a",a[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(s));)s=s.slice(0,a.index)+"["+cP("a",a[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(a=this.tokenizer.rules.inline.escapedEmSt.exec(s));)s=s.slice(0,a.index+a[0].length-2)+"++"+s.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;n;)if(l||(c=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(d=>!!(i=d.call({lexer:this},n,e))&&(n=n.substring(i.raw.length),e.push(i),!0)))){if(i=this.tokenizer.escape(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.tag(n)){n=n.substring(i.raw.length),r=e[e.length-1],r&&"text"===i.type&&"text"===r.type?(r.raw+=i.raw,r.text+=i.text):e.push(i);continue}if(i=this.tokenizer.link(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.reflink(n,this.tokens.links)){n=n.substring(i.raw.length),r=e[e.length-1],r&&"text"===i.type&&"text"===r.type?(r.raw+=i.raw,r.text+=i.text):e.push(i);continue}if(i=this.tokenizer.emStrong(n,s,c)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.codespan(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.br(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.del(n)){n=n.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.autolink(n,uP)){n=n.substring(i.raw.length),e.push(i);continue}if(!this.state.inLink&&(i=this.tokenizer.url(n,uP))){n=n.substring(i.raw.length),e.push(i);continue}if(o=n,this.options.extensions&&this.options.extensions.startInline){let d=1/0;const u=n.slice(1);let h;this.options.extensions.startInline.forEach(function(f){h=f.call({lexer:this},u),"number"==typeof h&&h>=0&&(d=Math.min(d,h))}),d<1/0&&d>=0&&(o=n.substring(0,d+1))}if(i=this.tokenizer.inlineText(o,NJ)){n=n.substring(i.raw.length),"_"!==i.raw.slice(-1)&&(c=i.raw.slice(-1)),l=!0,r=e[e.length-1],r&&"text"===r.type?(r.raw+=i.raw,r.text+=i.text):e.push(i);continue}if(n){const d="Infinite loop on byte: "+n.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}return e}}class Rd{constructor(n){this.options=n||wl}code(n,e,i){const r=(e||"").match(/\S*/)[0];if(this.options.highlight){const o=this.options.highlight(n,r);null!=o&&o!==n&&(i=!0,n=o)}return n=n.replace(/\n$/,"")+"\n",r?'
    '+(i?n:un(n,!0))+"
    \n":"
    "+(i?n:un(n,!0))+"
    \n"}blockquote(n){return`
    \n${n}
    \n`}html(n){return n}heading(n,e,i,r){return this.options.headerIds?`${n}\n`:`${n}\n`}hr(){return this.options.xhtml?"
    \n":"
    \n"}list(n,e,i){const r=e?"ol":"ul";return"<"+r+(e&&1!==i?' start="'+i+'"':"")+">\n"+n+"\n"}listitem(n){return`
  • ${n}
  • \n`}checkbox(n){return" "}paragraph(n){return`

    ${n}

    \n`}table(n,e){return e&&(e=`${e}`),"\n\n"+n+"\n"+e+"
    \n"}tablerow(n){return`\n${n}\n`}tablecell(n,e){const i=e.header?"th":"td";return(e.align?`<${i} align="${e.align}">`:`<${i}>`)+n+`\n`}strong(n){return`${n}`}em(n){return`${n}`}codespan(n){return`${n}`}br(){return this.options.xhtml?"
    ":"
    "}del(n){return`${n}`}link(n,e,i){if(null===(n=sP(this.options.sanitize,this.options.baseUrl,n)))return i;let r='
    ",r}image(n,e,i){if(null===(n=sP(this.options.sanitize,this.options.baseUrl,n)))return i;let r=`${i}":">",r}text(n){return n}}class hP{strong(n){return n}em(n){return n}codespan(n){return n}del(n){return n}html(n){return n}text(n){return n}link(n,e,i){return""+i}image(n,e,i){return""+i}br(){return""}}class fP{constructor(){this.seen={}}serialize(n){return n.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(n,e){let i=n,r=0;if(this.seen.hasOwnProperty(i)){r=this.seen[n];do{r++,i=n+"-"+r}while(this.seen.hasOwnProperty(i))}return e||(this.seen[n]=r,this.seen[i]=0),i}slug(n,e={}){const i=this.serialize(n);return this.getNextSafeSlug(i,e.dryrun)}}class wr{constructor(n){this.options=n||wl,this.options.renderer=this.options.renderer||new Rd,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new hP,this.slugger=new fP}static parse(n,e){return new wr(e).parse(n)}static parseInline(n,e){return new wr(e).parseInline(n)}parse(n,e=!0){let r,o,s,a,l,c,d,u,h,f,p,g,b,v,w,C,P,ye,Te,i="";const It=n.length;for(r=0;r0&&"paragraph"===w.tokens[0].type?(w.tokens[0].text=ye+" "+w.tokens[0].text,w.tokens[0].tokens&&w.tokens[0].tokens.length>0&&"text"===w.tokens[0].tokens[0].type&&(w.tokens[0].tokens[0].text=ye+" "+w.tokens[0].tokens[0].text)):w.tokens.unshift({type:"text",text:ye}):v+=ye),v+=this.parse(w.tokens,b),h+=this.renderer.listitem(v,P,C);i+=this.renderer.list(h,p,g);continue;case"html":i+=this.renderer.html(f.text);continue;case"paragraph":i+=this.renderer.paragraph(this.parseInline(f.tokens));continue;case"text":for(h=f.tokens?this.parseInline(f.tokens):f.text;r+1"u"||null===t)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof t)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected");if("function"==typeof n&&(e=n,n=null),lP(n=Gi({},me.defaults,n||{})),e){const r=n.highlight;let o;try{o=ro.lex(t,n)}catch(l){return e(l)}const s=function(l){let c;if(!l)try{n.walkTokens&&me.walkTokens(o,n.walkTokens),c=wr.parse(o,n)}catch(d){l=d}return n.highlight=r,l?e(l):e(null,c)};if(!r||r.length<3||(delete n.highlight,!o.length))return s();let a=0;return me.walkTokens(o,function(l){"code"===l.type&&(a++,setTimeout(()=>{r(l.text,l.lang,function(c,d){if(c)return s(c);null!=d&&d!==l.text&&(l.text=d,l.escaped=!0),a--,0===a&&s()})},0))}),void(0===a&&s())}function i(r){if(r.message+="\nPlease report this to https://github.com/markedjs/marked.",n.silent)return"

    An error occurred:

    "+un(r.message+"",!0)+"
    ";throw r}try{const r=ro.lex(t,n);if(n.walkTokens){if(n.async)return Promise.all(me.walkTokens(r,n.walkTokens)).then(()=>wr.parse(r,n)).catch(i);me.walkTokens(r,n.walkTokens)}return wr.parse(r,n)}catch(r){i(r)}}me.options=me.setOptions=function(t){return Gi(me.defaults,t),function xJ(t){wl=t}(me.defaults),me},me.getDefaults=function tP(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}},me.defaults=wl,me.use=function(...t){const n=me.defaults.extensions||{renderers:{},childTokens:{}};t.forEach(e=>{const i=Gi({},e);if(i.async=me.defaults.async||i.async,e.extensions&&(e.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if(r.renderer){const o=n.renderers[r.name];n.renderers[r.name]=o?function(...s){let a=r.renderer.apply(this,s);return!1===a&&(a=o.apply(this,s)),a}:r.renderer}if(r.tokenizer){if(!r.level||"block"!==r.level&&"inline"!==r.level)throw new Error("extension level must be 'block' or 'inline'");n[r.level]?n[r.level].unshift(r.tokenizer):n[r.level]=[r.tokenizer],r.start&&("block"===r.level?n.startBlock?n.startBlock.push(r.start):n.startBlock=[r.start]:"inline"===r.level&&(n.startInline?n.startInline.push(r.start):n.startInline=[r.start]))}r.childTokens&&(n.childTokens[r.name]=r.childTokens)}),i.extensions=n),e.renderer){const r=me.defaults.renderer||new Rd;for(const o in e.renderer){const s=r[o];r[o]=(...a)=>{let l=e.renderer[o].apply(r,a);return!1===l&&(l=s.apply(r,a)),l}}i.renderer=r}if(e.tokenizer){const r=me.defaults.tokenizer||new ow;for(const o in e.tokenizer){const s=r[o];r[o]=(...a)=>{let l=e.tokenizer[o].apply(r,a);return!1===l&&(l=s.apply(r,a)),l}}i.tokenizer=r}if(e.walkTokens){const r=me.defaults.walkTokens;i.walkTokens=function(o){let s=[];return s.push(e.walkTokens.call(this,o)),r&&(s=s.concat(r.call(this,o))),s}}me.setOptions(i)})},me.walkTokens=function(t,n){let e=[];for(const i of t)switch(e=e.concat(n.call(me,i)),i.type){case"table":for(const r of i.header)e=e.concat(me.walkTokens(r.tokens,n));for(const r of i.rows)for(const o of r)e=e.concat(me.walkTokens(o.tokens,n));break;case"list":e=e.concat(me.walkTokens(i.items,n));break;default:me.defaults.extensions&&me.defaults.extensions.childTokens&&me.defaults.extensions.childTokens[i.type]?me.defaults.extensions.childTokens[i.type].forEach(function(r){e=e.concat(me.walkTokens(i[r],n))}):i.tokens&&(e=e.concat(me.walkTokens(i.tokens,n)))}return e},me.parseInline=function(t,n){if(typeof t>"u"||null===t)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!=typeof t)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected");lP(n=Gi({},me.defaults,n||{}));try{const e=ro.lexInline(t,n);return n.walkTokens&&me.walkTokens(e,n.walkTokens),wr.parseInline(e,n)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",n.silent)return"

    An error occurred:

    "+un(e.message+"",!0)+"
    ";throw e}},me.Parser=wr,me.parser=wr.parse,me.Renderer=Rd,me.TextRenderer=hP,me.Lexer=ro,me.lexer=ro.lex,me.Tokenizer=ow,me.Slugger=fP,me.parse=me;const LJ=["*"];let sw=(()=>{class t{constructor(){this._buttonClick$=new te,this.copied$=this._buttonClick$.pipe(Hn(()=>Gn(j(!0),Jm(3e3).pipe(MA(!1)))),lf(),Oa(1)),this.copiedText$=this.copied$.pipe(dr(!1),B(e=>e?"Copied":"Copy"))}onCopyToClipboardClick(){this._buttonClick$.next()}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=$({type:t,selectors:[["markdown-clipboard"]],decls:4,vars:7,consts:[[1,"markdown-clipboard-button",3,"click"]],template:function(e,i){1&e&&(x(0,"button",0),re("click",function(){return i.onCopyToClipboardClick()}),wa(1,"async"),N(2),wa(3,"async"),D()),2&e&&(fe("copied",xa(1,3,i.copied$)),E(2),Jt(xa(3,5,i.copiedText$)))},dependencies:[Pb],encapsulation:2,changeDetection:0}),t})();class jJ{}var Pd=(()=>(function(t){t.CommandLine="command-line",t.LineHighlight="line-highlight",t.LineNumbers="line-numbers"}(Pd||(Pd={})),Pd))();class zJ{}const mP=new k("SECURITY_CONTEXT");let aw=(()=>{class t{constructor(e,i,r,o,s,a){this.platform=e,this.securityContext=i,this.http=r,this.clipboardOptions=o,this.sanitizer=a,this.DEFAULT_MARKED_OPTIONS={renderer:new Rd},this.DEFAULT_KATEX_OPTIONS={delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}]},this.DEFAULT_MERMAID_OPTIONS={startOnLoad:!1},this.DEFAULT_CLIPBOARD_OPTIONS={buttonComponent:void 0},this.DEFAULT_PARSE_OPTIONS={decodeHtml:!1,inline:!1,emoji:!1,mermaid:!1,markedOptions:this.DEFAULT_MARKED_OPTIONS,disableSanitizer:!1},this.DEFAULT_RENDER_OPTIONS={clipboard:!1,clipboardOptions:void 0,katex:!1,katexOptions:void 0,mermaid:!1,mermaidOptions:void 0},this._reload$=new te,this.reload$=this._reload$.asObservable(),this.options=s}get options(){return this._options}set options(e){this._options={...this.DEFAULT_MARKED_OPTIONS,...e}}get renderer(){return this.options.renderer}set renderer(e){this.options.renderer=e}parse(e,i=this.DEFAULT_PARSE_OPTIONS){const{decodeHtml:r,inline:o,emoji:s,mermaid:a,disableSanitizer:l}=i,c={...this.options,...i.markedOptions};a&&(this.renderer=this.extendRenderer(c.renderer||new Rd));const d=this.trimIndentation(e),u=r?this.decodeHtml(d):d,h=s?this.parseEmoji(u):u,f=this.parseMarked(h,c,o);return(l?f:this.sanitizer.sanitize(this.securityContext,f))||""}render(e,i=this.DEFAULT_RENDER_OPTIONS,r){const{clipboard:o,clipboardOptions:s,katex:a,katexOptions:l,mermaid:c,mermaidOptions:d}=i;o&&this.renderClipboard(e,r,{...this.DEFAULT_CLIPBOARD_OPTIONS,...this.clipboardOptions,...s}),a&&this.renderKatex(e,{...this.DEFAULT_KATEX_OPTIONS,...l}),c&&this.renderMermaid(e,{...this.DEFAULT_MERMAID_OPTIONS,...d}),this.highlight(e)}reload(){this._reload$.next()}getSource(e){if(!this.http)throw new Error("[ngx-markdown] When using the `src` attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information");return this.http.get(e,{responseType:"text"}).pipe(B(i=>this.handleExtension(e,i)))}highlight(e){if(!ar(this.platform)||typeof Prism>"u"||typeof Prism.highlightAllUnder>"u")return;e||(e=document);const i=e.querySelectorAll('pre code:not([class*="language-"])');Array.prototype.forEach.call(i,r=>r.classList.add("language-none")),Prism.highlightAllUnder(e)}decodeHtml(e){if(!ar(this.platform))return e;const i=document.createElement("textarea");return i.innerHTML=e,i.value}extendRenderer(e){const i=e;if(!0===i.\u0275NgxMarkdownRendererExtended)return e;const r=e.code;return e.code=function(o,s,a){return"mermaid"===s?`
    ${o}
    `:r.call(this,o,s,a)},i.\u0275NgxMarkdownRendererExtended=!0,e}handleExtension(e,i){const r=e.lastIndexOf("://"),o=r>-1?e.substring(r+4):e,s=o.lastIndexOf("/"),a=s>-1?o.substring(s+1).split("?")[0]:"",l=a.lastIndexOf("."),c=l>-1?a.substring(l+1):"";return c&&"md"!==c?"```"+c+"\n"+i+"\n```":i}parseMarked(e,i,r=!1){return r?me.parseInline(e,i):me.parse(e,i)}parseEmoji(e){if(!ar(this.platform))return e;if(typeof joypixels>"u"||typeof joypixels.shortnameToUnicode>"u")throw new Error("[ngx-markdown] When using the `emoji` attribute you *have to* include Emoji-Toolkit files to `angular.json` or use imports. See README for more information");return joypixels.shortnameToUnicode(e)}renderKatex(e,i){if(ar(this.platform)){if(typeof katex>"u"||typeof renderMathInElement>"u")throw new Error("[ngx-markdown] When using the `katex` attribute you *have to* include KaTeX files to `angular.json` or use imports. See README for more information");renderMathInElement(e,i)}}renderClipboard(e,i,r){if(!ar(this.platform))return;if(typeof ClipboardJS>"u")throw new Error("[ngx-markdown] When using the `clipboard` attribute you *have to* include Clipboard files to `angular.json` or use imports. See README for more information");if(!i)throw new Error("[ngx-markdown] When using the `clipboard` attribute you *have to* provide the `viewContainerRef` parameter to `MarkdownService.render()` function");const{buttonComponent:o,buttonTemplate:s}=r,a=e.querySelectorAll("pre");for(let l=0;lu.style.opacity="1",c.onmouseout=()=>u.style.opacity="0",h=o?i.createComponent(o).hostView:s?i.createEmbeddedView(s):i.createComponent(sw).hostView,h.rootNodes.forEach(p=>{p.onmouseover=()=>u.style.opacity="1",u.appendChild(p),f=new ClipboardJS(p,{text:()=>c.innerText})}),h.onDestroy(()=>f.destroy())}}renderMermaid(e,i=this.DEFAULT_MERMAID_OPTIONS){if(!ar(this.platform))return;if(typeof mermaid>"u"||typeof mermaid.init>"u")throw new Error("[ngx-markdown] When using the `mermaid` attribute you *have to* include Mermaid files to `angular.json` or use imports. See README for more information");const r=e.querySelectorAll(".mermaid");0!==r.length&&(mermaid.initialize(i),mermaid.init(r))}trimIndentation(e){if(!e)return"";let i;return e.split("\n").map(r=>{let o=i;return r.length>0&&(o=isNaN(o)?r.search(/\S|$/):Math.min(r.search(/\S|$/),o)),isNaN(i)&&(i=o),o?r.substring(o):r}).join("\n")}}return t.\u0275fac=function(e){return new(e||t)(_(ss),_(mP),_(wi,8),_(jJ,8),_(zJ,8),_(Ma))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Ms=(()=>{class t{constructor(e,i,r){this.element=e,this.markdownService=i,this.viewContainerRef=r,this.error=new Q,this.load=new Q,this.ready=new Q,this._clipboard=!1,this._commandLine=!1,this._disableSanitizer=!1,this._emoji=!1,this._inline=!1,this._katex=!1,this._lineHighlight=!1,this._lineNumbers=!1,this._mermaid=!1,this._srcRelativeLink=!1,this.destroyed$=new te}get disableSanitizer(){return this._disableSanitizer}set disableSanitizer(e){this._disableSanitizer=this.coerceBooleanProperty(e)}get inline(){return this._inline}set inline(e){this._inline=this.coerceBooleanProperty(e)}get srcRelativeLink(){return this._srcRelativeLink}set srcRelativeLink(e){this._srcRelativeLink=this.coerceBooleanProperty(e)}get clipboard(){return this._clipboard}set clipboard(e){this._clipboard=this.coerceBooleanProperty(e)}get emoji(){return this._emoji}set emoji(e){this._emoji=this.coerceBooleanProperty(e)}get katex(){return this._katex}set katex(e){this._katex=this.coerceBooleanProperty(e)}get mermaid(){return this._mermaid}set mermaid(e){this._mermaid=this.coerceBooleanProperty(e)}get lineHighlight(){return this._lineHighlight}set lineHighlight(e){this._lineHighlight=this.coerceBooleanProperty(e)}get lineNumbers(){return this._lineNumbers}set lineNumbers(e){this._lineNumbers=this.coerceBooleanProperty(e)}get commandLine(){return this._commandLine}set commandLine(e){this._commandLine=this.coerceBooleanProperty(e)}ngOnChanges(){this.loadContent()}loadContent(){null==this.data?null==this.src||this.handleSrc():this.handleData()}ngAfterViewInit(){!this.data&&!this.src&&this.handleTransclusion(),this.markdownService.reload$.pipe(ze(this.destroyed$)).subscribe(()=>this.loadContent())}ngOnDestroy(){this.destroyed$.next(),this.destroyed$.complete()}render(e,i=!1){let r;this.src&&this.srcRelativeLink&&(r={baseUrl:new URL(this.src,location.origin).pathname});const s={clipboard:this.clipboard,clipboardOptions:{buttonComponent:this.clipboardButtonComponent,buttonTemplate:this.clipboardButtonTemplate},katex:this.katex,katexOptions:this.katexOptions,mermaid:this.mermaid,mermaidOptions:this.mermaidOptions},a=this.markdownService.parse(e,{decodeHtml:i,inline:this.inline,emoji:this.emoji,mermaid:this.mermaid,markedOptions:r,disableSanitizer:this.disableSanitizer});this.element.nativeElement.innerHTML=a,this.handlePlugins(),this.markdownService.render(this.element.nativeElement,s,this.viewContainerRef),this.ready.emit()}coerceBooleanProperty(e){return null!=e&&"false"!=`${String(e)}`}handleData(){this.render(this.data)}handleSrc(){this.markdownService.getSource(this.src).subscribe({next:e=>{this.render(e),this.load.emit(e)},error:e=>this.error.emit(e)})}handleTransclusion(){this.render(this.element.nativeElement.innerHTML,!0)}handlePlugins(){this.commandLine&&(this.setPluginClass(this.element.nativeElement,Pd.CommandLine),this.setPluginOptions(this.element.nativeElement,{dataFilterOutput:this.filterOutput,dataHost:this.host,dataPrompt:this.prompt,dataOutput:this.output,dataUser:this.user})),this.lineHighlight&&this.setPluginOptions(this.element.nativeElement,{dataLine:this.line,dataLineOffset:this.lineOffset}),this.lineNumbers&&(this.setPluginClass(this.element.nativeElement,Pd.LineNumbers),this.setPluginOptions(this.element.nativeElement,{dataStart:this.start}))}setPluginClass(e,i){const r=e.querySelectorAll("pre");for(let o=0;o{const a=i[s];if(a){const l=this.toLispCase(s);r.item(o).setAttribute(l,a.toString())}})}toLispCase(e){const i=e.match(/([A-Z])/g);if(!i)return e;let r=e.toString();for(let o=0,s=i.length;o{class t{static forRoot(e){return{ngModule:t,providers:[aw,e&&e.loader||[],e&&e.clipboardOptions||[],e&&e.markedOptions||[],{provide:mP,useValue:e&&null!=e.sanitize?e.sanitize:$e.HTML}]}}static forChild(){return{ngModule:t}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Re]}),t})();var pP;!function(t){let n;var r;let e,i;(r=n=t.SecurityLevel||(t.SecurityLevel={})).Strict="strict",r.Loose="loose",r.Antiscript="antiscript",r.Sandbox="sandbox",function(r){r.Base="base",r.Forest="forest",r.Dark="dark",r.Default="default",r.Neutral="neutral"}(e=t.Theme||(t.Theme={})),function(r){r[r.Debug=1]="Debug",r[r.Info=2]="Info",r[r.Warn=3]="Warn",r[r.Error=4]="Error",r[r.Fatal=5]="Fatal"}(i=t.LogLevel||(t.LogLevel={}))}(pP||(pP={}));const ZJ=["addListener","removeListener"],KJ=["addEventListener","removeEventListener"],XJ=["on","off"];function Ho(t,n,e,i){if(qe(e)&&(i=e,e=void 0),i)return Ho(t,n,e).pipe(af(i));const[r,o]=function eee(t){return qe(t.addEventListener)&&qe(t.removeEventListener)}(t)?KJ.map(s=>a=>t[s](n,a,e)):function QJ(t){return qe(t.addListener)&&qe(t.removeListener)}(t)?ZJ.map(gP(t,n)):function JJ(t){return qe(t.on)&&qe(t.off)}(t)?XJ.map(gP(t,n)):[];if(!r&&qp(t))return Ot(s=>Ho(s,n,e))(Qt(t));if(!r)throw new TypeError("Invalid event target");return new xe(s=>{const a=(...l)=>s.next(1o(a)})}function gP(t,n){return e=>i=>t[e](n,i)}const Fd={schedule(t){let n=requestAnimationFrame,e=cancelAnimationFrame;const{delegate:i}=Fd;i&&(n=i.requestAnimationFrame,e=i.cancelAnimationFrame);const r=n(o=>{e=void 0,t(o)});return new rt(()=>e?.(r))},requestAnimationFrame(...t){const{delegate:n}=Fd;return(n?.requestAnimationFrame||requestAnimationFrame)(...t)},cancelAnimationFrame(...t){const{delegate:n}=Fd;return(n?.cancelAnimationFrame||cancelAnimationFrame)(...t)},delegate:void 0},iee=new class nee extends _0{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let r;n=n||i.shift();do{if(r=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,r){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw r}}}(class tee extends g0{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=Fd.requestAnimationFrame(()=>n.flush(void 0))))}recycleAsyncId(n,e,i=0){var r;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:o}=n;null!=e&&(null===(r=o[o.length-1])||void 0===r?void 0:r.id)!==e&&(Fd.cancelAnimationFrame(e),n._scheduled=void 0)}});let lw,ree=1;const ip={};function _P(t){return t in ip&&(delete ip[t],!0)}const oee={setImmediate(t){const n=ree++;return ip[n]=!0,lw||(lw=Promise.resolve()),lw.then(()=>_P(n)&&t()),n},clearImmediate(t){_P(t)}},{setImmediate:see,clearImmediate:aee}=oee,rp={setImmediate(...t){const{delegate:n}=rp;return(n?.setImmediate||see)(...t)},clearImmediate(t){const{delegate:n}=rp;return(n?.clearImmediate||aee)(t)},delegate:void 0},dee=new class cee extends _0{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let r;n=n||i.shift();do{if(r=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,r){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw r}}}(class lee extends g0{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=rp.setImmediate(n.flush.bind(n,void 0))))}recycleAsyncId(n,e,i=0){var r;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:o}=n;null!=e&&(null===(r=o[o.length-1])||void 0===r?void 0:r.id)!==e&&(rp.clearImmediate(e),n._scheduled=void 0)}});function op(t,n=b0){return function uee(t){return gt((n,e)=>{let i=!1,r=null,o=null,s=!1;const a=()=>{if(o?.unsubscribe(),o=null,i){i=!1;const c=r;r=null,e.next(c)}s&&e.complete()},l=()=>{o=null,s&&e.complete()};n.subscribe(ot(e,c=>{i=!0,r=c,o||Qt(t(c)).subscribe(o=ot(e,a,l))},()=>{s=!0,(!i||!o||o.closed)&&e.complete()}))})}(()=>Jm(t,n))}const hee=["contentWrapper"],fee=["*"],mee=new k("VIRTUAL_SCROLL_STRATEGY");let sp=(()=>{class t{constructor(e,i,r){this._ngZone=e,this._platform=i,this._scrolled=new te,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=r}register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){const i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=20){return this._platform.isBrowser?new xe(i=>{this._globalSubscription||this._addGlobalListener();const r=e>0?this._scrolled.pipe(op(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{r.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):j()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){const r=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(mt(o=>!o||r.indexOf(o)>-1))}getAncestorScrollContainers(e){const i=[];return this.scrollContainers.forEach((r,o)=>{this._scrollableContainsElement(o,e)&&i.push(o)}),i}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(e,i){let r=Jr(i),o=e.getElementRef().nativeElement;do{if(r==o)return!0}while(r=r.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>Ho(this._getWindow().document,"scroll").subscribe(()=>this._scrolled.next()))}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}}return t.\u0275fac=function(e){return new(e||t)(_(Z),_(pt),_(ge,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),bP=(()=>{class t{constructor(e,i,r,o){this.elementRef=e,this.scrollDispatcher=i,this.ngZone=r,this.dir=o,this._destroyed=new te,this._elementScrolled=new xe(s=>this.ngZone.runOutsideAngular(()=>Ho(this.elementRef.nativeElement,"scroll").pipe(ze(this._destroyed)).subscribe(s)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const i=this.elementRef.nativeElement,r=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=r?e.end:e.start),null==e.right&&(e.right=r?e.start:e.end),null!=e.bottom&&(e.top=i.scrollHeight-i.clientHeight-e.bottom),r&&0!=wd()?(null!=e.left&&(e.right=i.scrollWidth-i.clientWidth-e.left),2==wd()?e.left=e.right:1==wd()&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=i.scrollWidth-i.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const i=this.elementRef.nativeElement;CO()?i.scrollTo(e):(null!=e.top&&(i.scrollTop=e.top),null!=e.left&&(i.scrollLeft=e.left))}measureScrollOffset(e){const i="left",r="right",o=this.elementRef.nativeElement;if("top"==e)return o.scrollTop;if("bottom"==e)return o.scrollHeight-o.clientHeight-o.scrollTop;const s=this.dir&&"rtl"==this.dir.value;return"start"==e?e=s?r:i:"end"==e&&(e=s?i:r),s&&2==wd()?e==i?o.scrollWidth-o.clientWidth-o.scrollLeft:o.scrollLeft:s&&1==wd()?e==i?o.scrollLeft+o.scrollWidth-o.clientWidth:-o.scrollLeft:e==i?o.scrollLeft:o.scrollWidth-o.clientWidth-o.scrollLeft}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(sp),m(Z),m(Rn,8))},t.\u0275dir=M({type:t,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0}),t})(),As=(()=>{class t{constructor(e,i,r){this._platform=e,this._change=new te,this._changeListener=o=>{this._change.next(o)},this._document=r,i.runOutsideAngular(()=>{if(e.isBrowser){const o=this._getWindow();o.addEventListener("resize",this._changeListener),o.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){const e=this._getWindow();e.removeEventListener("resize",this._changeListener),e.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:i,height:r}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+r,right:e.left+i,height:r,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,i=this._getWindow(),r=e.documentElement,o=r.getBoundingClientRect();return{top:-o.top||e.body.scrollTop||i.scrollY||r.scrollTop||0,left:-o.left||e.body.scrollLeft||i.scrollX||r.scrollLeft||0}}change(e=20){return e>0?this._change.pipe(op(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}}return t.\u0275fac=function(e){return new(e||t)(_(pt),_(Z),_(ge,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const vP=new k("VIRTUAL_SCROLLABLE");let _ee=(()=>{class t extends bP{constructor(e,i,r,o){super(e,i,r,o)}measureViewportSize(e){const i=this.elementRef.nativeElement;return"horizontal"===e?i.clientWidth:i.clientHeight}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(sp),m(Z),m(Rn,8))},t.\u0275dir=M({type:t,features:[F]}),t})();const vee=typeof requestAnimationFrame<"u"?iee:dee;let yee=(()=>{class t extends _ee{get orientation(){return this._orientation}set orientation(e){this._orientation!==e&&(this._orientation=e,this._calculateSpacerSize())}get appendOnly(){return this._appendOnly}set appendOnly(e){this._appendOnly=Ve(e)}constructor(e,i,r,o,s,a,l,c){super(e,a,r,s),this.elementRef=e,this._changeDetectorRef=i,this._scrollStrategy=o,this.scrollable=c,this._platform=R(pt),this._detachedSubject=new te,this._renderedRangeSubject=new te,this._orientation="vertical",this._appendOnly=!1,this.scrolledIndexChange=new xe(d=>this._scrollStrategy.scrolledIndexChange.subscribe(u=>Promise.resolve().then(()=>this.ngZone.run(()=>d.next(u))))),this.renderedRangeStream=this._renderedRangeSubject,this._totalContentSize=0,this._totalContentWidth="",this._totalContentHeight="",this._renderedRange={start:0,end:0},this._dataLength=0,this._viewportSize=0,this._renderedContentOffset=0,this._renderedContentOffsetNeedsRewrite=!1,this._isChangeDetectionPending=!1,this._runAfterChangeDetection=[],this._viewportChanges=rt.EMPTY,this._viewportChanges=l.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this)}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe(dr(null),op(0,vee)).subscribe(()=>this._scrollStrategy.onContentScrolled()),this._markChangeDetectionNeeded()})))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),super.ngOnDestroy()}attach(e){this.ngZone.runOutsideAngular(()=>{this._forOf=e,this._forOf.dataStream.pipe(ze(this._detachedSubject)).subscribe(i=>{const r=i.length;r!==this._dataLength&&(this._dataLength=r,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()})})}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(e){return this.getElementRef().nativeElement.getBoundingClientRect()[e]}setTotalContentSize(e){this._totalContentSize!==e&&(this._totalContentSize=e,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(e){(function bee(t,n){return t.start==n.start&&t.end==n.end})(this._renderedRange,e)||(this.appendOnly&&(e={start:0,end:Math.max(this._renderedRange.end,e.end)}),this._renderedRangeSubject.next(this._renderedRange=e),this._markChangeDetectionNeeded(()=>this._scrollStrategy.onContentRendered()))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(e,i="to-start"){e=this.appendOnly&&"to-start"===i?0:e;const o="horizontal"==this.orientation,s=o?"X":"Y";let l=`translate${s}(${Number((o&&this.dir&&"rtl"==this.dir.value?-1:1)*e)}px)`;this._renderedContentOffset=e,"to-end"===i&&(l+=` translate${s}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=l&&(this._renderedContentTransform=l,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(e,i="auto"){const r={behavior:i};"horizontal"===this.orientation?r.start=e:r.top=e,this.scrollable.scrollTo(r)}scrollToIndex(e,i="auto"){this._scrollStrategy.scrollToIndex(e,i)}measureScrollOffset(e){let i;return i=this.scrollable==this?r=>super.measureScrollOffset(r):r=>this.scrollable.measureScrollOffset(r),Math.max(0,i(e??("horizontal"===this.orientation?"start":"top"))-this.measureViewportOffset())}measureViewportOffset(e){let i;const r="left",o="right",s="rtl"==this.dir?.value;i="start"==e?s?o:r:"end"==e?s?r:o:e||("horizontal"===this.orientation?"left":"top");const a=this.scrollable.measureBoundingClientRectWithScrollOffset(i);return this.elementRef.nativeElement.getBoundingClientRect()[i]-a}measureRenderedContentSize(){const e=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?e.offsetWidth:e.offsetHeight}measureRangeSize(e){return this._forOf?this._forOf.measureRangeSize(e,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(e){e&&this._runAfterChangeDetection.push(e),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._doChangeDetection()})))}_doChangeDetection(){this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run(()=>this._changeDetectorRef.markForCheck());const e=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(const i of e)i()}_calculateSpacerSize(){this._totalContentHeight="horizontal"===this.orientation?"":`${this._totalContentSize}px`,this._totalContentWidth="horizontal"===this.orientation?`${this._totalContentSize}px`:""}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(tn),m(Z),m(mee,8),m(Rn,8),m(sp),m(As),m(vP,8))},t.\u0275cmp=$({type:t,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(e,i){if(1&e&&Ge(hee,7),2&e){let r;J(r=ee())&&(i._contentWrapper=r.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(e,i){2&e&&fe("cdk-virtual-scroll-orientation-horizontal","horizontal"===i.orientation)("cdk-virtual-scroll-orientation-vertical","horizontal"!==i.orientation)},inputs:{orientation:"orientation",appendOnly:"appendOnly"},outputs:{scrolledIndexChange:"scrolledIndexChange"},standalone:!0,features:[ie([{provide:bP,useFactory:(n,e)=>n||e,deps:[[new Ir,new Pu(vP)],t]}]),F,Be],ngContentSelectors:fee,decls:4,vars:4,consts:[[1,"cdk-virtual-scroll-content-wrapper"],["contentWrapper",""],[1,"cdk-virtual-scroll-spacer"]],template:function(e,i){1&e&&(Bt(),x(0,"div",0,1),Se(2),D(),G(3,"div",2)),2&e&&(E(3),ir("width",i._totalContentWidth)("height",i._totalContentHeight))},styles:["cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}"],encapsulation:2,changeDetection:0}),t})(),yP=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})(),cw=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Dd,yP,yee,Dd,yP]}),t})();function wee(t,n){}const xee=function(t){return{animationDuration:t}},Cee=function(t,n){return{value:t,params:n}};function Dee(t,n){1&t&&Se(0)}const wP=["*"],Eee=["tabListContainer"],See=["tabList"],kee=["tabListInner"],Mee=["nextPaginator"],Tee=["previousPaginator"],Aee=["tabBodyWrapper"],Iee=["tabHeader"];function Oee(t,n){}function Ree(t,n){1&t&&O(0,Oee,0,0,"ng-template",14),2&t&&S("cdkPortalOutlet",W().$implicit.templateLabel)}function Pee(t,n){1&t&&N(0),2&t&&Jt(W().$implicit.textLabel)}function Fee(t,n){if(1&t){const e=nr();x(0,"div",6,7),re("click",function(){const r=fi(e),o=r.$implicit,s=r.index,a=W(),l=Pt(1);return mi(a._handleClick(o,l,s))})("cdkFocusChange",function(r){const s=fi(e).index;return mi(W()._tabFocusChanged(r,s))}),G(2,"span",8)(3,"div",9),x(4,"span",10)(5,"span",11),O(6,Ree,1,1,"ng-template",12),O(7,Pee,1,1,"ng-template",null,13,ei),D()()()}if(2&t){const e=n.$implicit,i=n.index,r=Pt(1),o=Pt(8),s=W();fe("mdc-tab--active",s.selectedIndex===i),S("id",s._getTabLabelId(i))("ngClass",e.labelClass)("disabled",e.disabled)("fitInkBarToContent",s.fitInkBarToContent),tt("tabIndex",s._getTabIndex(i))("aria-posinset",i+1)("aria-setsize",s._tabs.length)("aria-controls",s._getTabContentId(i))("aria-selected",s.selectedIndex===i)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),E(3),S("matRippleTrigger",r)("matRippleDisabled",e.disabled||s.disableRipple),E(3),S("ngIf",e.templateLabel)("ngIfElse",o)}}function Nee(t,n){if(1&t){const e=nr();x(0,"mat-tab-body",15),re("_onCentered",function(){return fi(e),mi(W()._removeTabBodyWrapperHeight())})("_onCentering",function(r){return fi(e),mi(W()._setTabBodyWrapperHeight(r))}),D()}if(2&t){const e=n.$implicit,i=n.index,r=W();fe("mat-mdc-tab-body-active",r.selectedIndex===i),S("id",r._getTabContentId(i))("ngClass",e.bodyClass)("content",e.content)("position",e.position)("origin",e.origin)("animationDuration",r.animationDuration)("preserveContent",r.preserveContent),tt("tabindex",null!=r.contentTabIndex&&r.selectedIndex===i?r.contentTabIndex:null)("aria-labelledby",r._getTabLabelId(i))}}const Lee={translateTab:Aa("translateTab",[xi("center, void, left-origin-center, right-origin-center",qt({transform:"none"})),xi("left",qt({transform:"translate3d(-100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),xi("right",qt({transform:"translate3d(100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),zr("* => left, * => right, left => center, right => center",Hr("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")),zr("void => left-origin-center",[qt({transform:"translate3d(-100%, 0, 0)",visibility:"hidden"}),Hr("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")]),zr("void => right-origin-center",[qt({transform:"translate3d(100%, 0, 0)",visibility:"hidden"}),Hr("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")])])};let Bee=(()=>{class t extends bl{constructor(e,i,r,o){super(e,i,o),this._host=r,this._centeringSub=rt.EMPTY,this._leavingSub=rt.EMPTY}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(dr(this._host._isCenterPosition(this._host._position))).subscribe(e=>{e&&!this.hasAttached()&&this.attach(this._host._content)}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this.detach()})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(m(Ni),m(it),m(at(()=>xP)),m(ge))},t.\u0275dir=M({type:t,selectors:[["","matTabBodyHost",""]],features:[F]}),t})(),Vee=(()=>{class t{set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(e,i,r){this._elementRef=e,this._dir=i,this._dirChangeSubscription=rt.EMPTY,this._translateTabComplete=new te,this._onCentering=new Q,this._beforeCentering=new Q,this._afterLeavingCenter=new Q,this._onCentered=new Q(!0),this.animationDuration="500ms",this.preserveContent=!1,i&&(this._dirChangeSubscription=i.change.subscribe(o=>{this._computePositionAnimationState(o),r.markForCheck()})),this._translateTabComplete.pipe(lf((o,s)=>o.fromState===s.fromState&&o.toState===s.toState)).subscribe(o=>{this._isCenterPosition(o.toState)&&this._isCenterPosition(this._position)&&this._onCentered.emit(),this._isCenterPosition(o.fromState)&&!this._isCenterPosition(this._position)&&this._afterLeavingCenter.emit()})}ngOnInit(){"center"==this._position&&null!=this.origin&&(this._position=this._computePositionFromOrigin(this.origin))}ngOnDestroy(){this._dirChangeSubscription.unsubscribe(),this._translateTabComplete.complete()}_onTranslateTabStarted(e){const i=this._isCenterPosition(e.toState);this._beforeCentering.emit(i),i&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_isCenterPosition(e){return"center"==e||"left-origin-center"==e||"right-origin-center"==e}_computePositionAnimationState(e=this._getLayoutDirection()){this._position=this._positionIndex<0?"ltr"==e?"left":"right":this._positionIndex>0?"ltr"==e?"right":"left":"center"}_computePositionFromOrigin(e){const i=this._getLayoutDirection();return"ltr"==i&&e<=0||"rtl"==i&&e>0?"left-origin-center":"right-origin-center"}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Rn,8),m(tn))},t.\u0275dir=M({type:t,inputs:{_content:["content","_content"],origin:"origin",animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_afterLeavingCenter:"_afterLeavingCenter",_onCentered:"_onCentered"}}),t})(),xP=(()=>{class t extends Vee{constructor(e,i,r){super(e,i,r)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Rn,8),m(tn))},t.\u0275cmp=$({type:t,selectors:[["mat-tab-body"]],viewQuery:function(e,i){if(1&e&&Ge(bl,5),2&e){let r;J(r=ee())&&(i._portalHost=r.first)}},hostAttrs:[1,"mat-mdc-tab-body"],features:[F],decls:3,vars:6,consts:[["cdkScrollable","",1,"mat-mdc-tab-body-content"],["content",""],["matTabBodyHost",""]],template:function(e,i){1&e&&(x(0,"div",0,1),re("@translateTab.start",function(o){return i._onTranslateTabStarted(o)})("@translateTab.done",function(o){return i._translateTabComplete.next(o)}),O(2,wee,0,0,"ng-template",2),D()),2&e&&S("@translateTab",ch(3,Cee,i._position,Y_(1,xee,i.animationDuration)))},dependencies:[Bee],styles:['.mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-mdc-tab-body-content[style*="visibility: hidden"]{display:none}'],encapsulation:2,data:{animation:[Lee.translateTab]}}),t})();const jee=new k("MatTabContent");let Hee=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","matTabContent",""]],features:[ie([{provide:jee,useExisting:t}])]}),t})();const zee=new k("MatTabLabel"),CP=new k("MAT_TAB");let Uee=(()=>{class t extends nQ{constructor(e,i,r){super(e,i),this._closestTab=r}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(it),m(CP,8))},t.\u0275dir=M({type:t,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],features:[ie([{provide:zee,useExisting:t}]),F]}),t})();const dw="mdc-tab-indicator--active",DP="mdc-tab-indicator--no-transition";class $ee{constructor(n){this._items=n}hide(){this._items.forEach(n=>n.deactivateInkBar())}alignToElement(n){const e=this._items.find(r=>r.elementRef.nativeElement===n),i=this._currentItem;if(i?.deactivateInkBar(),e){const r=i?.elementRef.nativeElement.getBoundingClientRect?.();e.activateInkBar(r),this._currentItem=e}}}function Gee(t){return class extends t{constructor(...n){super(...n),this._fitToContent=!1}get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(n){const e=Ve(n);this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(n){const e=this.elementRef.nativeElement;if(!n||!e.getBoundingClientRect||!this._inkBarContentElement)return void e.classList.add(dw);const i=e.getBoundingClientRect(),r=n.width/i.width,o=n.left-i.left;e.classList.add(DP),this._inkBarContentElement.style.setProperty("transform",`translateX(${o}px) scaleX(${r})`),e.getBoundingClientRect(),e.classList.remove(DP),e.classList.add(dw),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this.elementRef.nativeElement.classList.remove(dw)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){const n=this.elementRef.nativeElement.ownerDocument||document;this._inkBarElement=n.createElement("span"),this._inkBarContentElement=n.createElement("span"),this._inkBarElement.className="mdc-tab-indicator",this._inkBarContentElement.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",this._inkBarElement.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){(this._fitToContent?this.elementRef.nativeElement.querySelector(".mdc-tab__content"):this.elementRef.nativeElement).appendChild(this._inkBarElement)}}}const qee=Em(class{}),Yee=Gee((()=>{class t extends qee{constructor(e){super(),this.elementRef=e}focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,features:[F]}),t})());let EP=(()=>{class t extends Yee{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(e,i){2&e&&(tt("aria-disabled",!!i.disabled),fe("mat-mdc-tab-disabled",i.disabled))},inputs:{disabled:"disabled",fitInkBarToContent:"fitInkBarToContent"},features:[F]}),t})();const Zee=Em(class{}),SP=new k("MAT_TAB_GROUP");let Kee=(()=>{class t extends Zee{get content(){return this._contentPortal}constructor(e,i){super(),this._viewContainerRef=e,this._closestTabGroup=i,this.textLabel="",this._contentPortal=null,this._stateChanges=new te,this.position=null,this.origin=null,this.isActive=!1}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new _l(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(SP,8))},t.\u0275dir=M({type:t,viewQuery:function(e,i){if(1&e&&Ge(bt,7),2&e){let r;J(r=ee())&&(i._implicitContent=r.first)}},inputs:{textLabel:["label","textLabel"],ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass"},features:[F,st]}),t})(),kP=(()=>{class t extends Kee{get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=$({type:t,selectors:[["mat-tab"]],contentQueries:function(e,i,r){if(1&e&&(Ze(r,Hee,7,bt),Ze(r,Uee,5)),2&e){let o;J(o=ee())&&(i._explicitContent=o.first),J(o=ee())&&(i.templateLabel=o.first)}},inputs:{disabled:"disabled"},exportAs:["matTab"],features:[ie([{provide:CP,useExisting:t}]),F],ngContentSelectors:wP,decls:1,vars:0,template:function(e,i){1&e&&(Bt(),O(0,Dee,1,0,"ng-template"))},encapsulation:2}),t})();const MP=dl({passive:!0});let Jee=(()=>{class t{get disablePagination(){return this._disablePagination}set disablePagination(e){this._disablePagination=Ve(e)}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){e=ai(e),this._selectedIndex!=e&&(this._selectedIndexChanged=!0,this._selectedIndex=e,this._keyManager&&this._keyManager.updateActiveItem(e))}constructor(e,i,r,o,s,a,l){this._elementRef=e,this._changeDetectorRef=i,this._viewportRuler=r,this._dir=o,this._ngZone=s,this._platform=a,this._animationMode=l,this._scrollDistance=0,this._selectedIndexChanged=!1,this._destroyed=new te,this._showPaginationControls=!1,this._disableScrollAfter=!0,this._disableScrollBefore=!0,this._stopScrolling=new te,this._disablePagination=!1,this._selectedIndex=0,this.selectFocusedIndex=new Q,this.indexFocused=new Q,s.runOutsideAngular(()=>{Ho(e.nativeElement,"mouseleave").pipe(ze(this._destroyed)).subscribe(()=>{this._stopInterval()})})}ngAfterViewInit(){Ho(this._previousPaginator.nativeElement,"touchstart",MP).pipe(ze(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("before")}),Ho(this._nextPaginator.nativeElement,"touchstart",MP).pipe(ze(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("after")})}ngAfterContentInit(){const e=this._dir?this._dir.change:j("ltr"),i=this._viewportRuler.change(150),r=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new RO(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(this._selectedIndex),this._ngZone.onStable.pipe(Yt(1)).subscribe(r),Gn(e,i,this._items.changes,this._itemsResized()).pipe(ze(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),r()})}),this._keyManager.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(o=>{this.indexFocused.emit(o),this._setTabFocus(o)})}_itemsResized(){return"function"!=typeof ResizeObserver?Cn:this._items.changes.pipe(dr(this._items),Hn(e=>new xe(i=>this._ngZone.runOutsideAngular(()=>{const r=new ResizeObserver(o=>i.next(o));return e.forEach(o=>r.observe(o.elementRef.nativeElement)),()=>{r.disconnect()}}))),vm(1),mt(e=>e.some(i=>i.contentRect.width>0&&i.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!ul(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){const i=this._items.get(this.focusIndex);i&&!i.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager.onKeydown(e)}}_onContentChanges(){const e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return!this._items||!!this._items.toArray()[e]}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();const i=this._tabListContainer.nativeElement;i.scrollLeft="ltr"==this._getLayoutDirection()?0:i.scrollWidth-i.offsetWidth}}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;const e=this.scrollDistance,i="ltr"===this._getLayoutDirection()?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(i)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){return this._scrollTo(this._scrollDistance+("before"==e?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;const i=this._items?this._items.toArray()[e]:null;if(!i)return;const r=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:o,offsetWidth:s}=i.elementRef.nativeElement;let a,l;"ltr"==this._getLayoutDirection()?(a=o,l=a+s):(l=this._tabListInner.nativeElement.offsetWidth-o,a=l-s);const c=this.scrollDistance,d=this.scrollDistance+r;ad&&(this.scrollDistance+=Math.min(l-d,a-c))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{const e=this._tabListInner.nativeElement.scrollWidth>this._elementRef.nativeElement.offsetWidth;e||(this.scrollDistance=0),e!==this._showPaginationControls&&this._changeDetectorRef.markForCheck(),this._showPaginationControls=e}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){return this._tabListInner.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}_alignInkBarToSelectedTab(){const e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,i=e?e.elementRef.nativeElement:null;i?this._inkBar.alignToElement(i):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,i){i&&null!=i.button&&0!==i.button||(this._stopInterval(),Jm(650,100).pipe(ze(Gn(this._stopScrolling,this._destroyed))).subscribe(()=>{const{maxScrollDistance:r,distance:o}=this._scrollHeader(e);(0===o||o>=r)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};const i=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(i,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:i,distance:this._scrollDistance}}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(tn),m(As),m(Rn,8),m(Z),m(pt),m(en,8))},t.\u0275dir=M({type:t,inputs:{disablePagination:"disablePagination"}}),t})(),ete=(()=>{class t extends Jee{get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=Ve(e)}constructor(e,i,r,o,s,a,l){super(e,i,r,o,s,a,l),this._disableRipple=!1}_itemSelected(e){e.preventDefault()}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(tn),m(As),m(Rn,8),m(Z),m(pt),m(en,8))},t.\u0275dir=M({type:t,inputs:{disableRipple:"disableRipple"},features:[F]}),t})(),tte=(()=>{class t extends ete{constructor(e,i,r,o,s,a,l){super(e,i,r,o,s,a,l)}ngAfterContentInit(){this._inkBar=new $ee(this._items),super.ngAfterContentInit()}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(tn),m(As),m(Rn,8),m(Z),m(pt),m(en,8))},t.\u0275cmp=$({type:t,selectors:[["mat-tab-header"]],contentQueries:function(e,i,r){if(1&e&&Ze(r,EP,4),2&e){let o;J(o=ee())&&(i._items=o)}},viewQuery:function(e,i){if(1&e&&(Ge(Eee,7),Ge(See,7),Ge(kee,7),Ge(Mee,5),Ge(Tee,5)),2&e){let r;J(r=ee())&&(i._tabListContainer=r.first),J(r=ee())&&(i._tabList=r.first),J(r=ee())&&(i._tabListInner=r.first),J(r=ee())&&(i._nextPaginator=r.first),J(r=ee())&&(i._previousPaginator=r.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(e,i){2&e&&fe("mat-mdc-tab-header-pagination-controls-enabled",i._showPaginationControls)("mat-mdc-tab-header-rtl","rtl"==i._getLayoutDirection())},inputs:{selectedIndex:"selectedIndex"},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"},features:[F],ngContentSelectors:wP,decls:13,vars:10,consts:[["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"matRippleDisabled","disabled","click","mousedown","touchend"],["previousPaginator",""],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["tabListContainer",""],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],["tabList",""],[1,"mat-mdc-tab-labels"],["tabListInner",""],["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"matRippleDisabled","disabled","mousedown","click","touchend"],["nextPaginator",""]],template:function(e,i){1&e&&(Bt(),x(0,"button",0,1),re("click",function(){return i._handlePaginatorClick("before")})("mousedown",function(o){return i._handlePaginatorPress("before",o)})("touchend",function(){return i._stopInterval()}),G(2,"div",2),D(),x(3,"div",3,4),re("keydown",function(o){return i._handleKeydown(o)}),x(5,"div",5,6),re("cdkObserveContent",function(){return i._onContentChanges()}),x(7,"div",7,8),Se(9),D()()(),x(10,"button",9,10),re("mousedown",function(o){return i._handlePaginatorPress("after",o)})("click",function(){return i._handlePaginatorClick("after")})("touchend",function(){return i._stopInterval()}),G(12,"div",2),D()),2&e&&(fe("mat-mdc-tab-header-pagination-disabled",i._disableScrollBefore),S("matRippleDisabled",i._disableScrollBefore||i.disableRipple)("disabled",i._disableScrollBefore||null),E(3),fe("_mat-animation-noopable","NoopAnimations"===i._animationMode),E(7),fe("mat-mdc-tab-header-pagination-disabled",i._disableScrollAfter),S("matRippleDisabled",i._disableScrollAfter||i.disableRipple)("disabled",i._disableScrollAfter||null))},dependencies:[Cs,wm],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}._mat-animation-noopable span.mdc-tab-indicator__content,._mat-animation-noopable span.mdc-tab__text-label{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.mat-mdc-tab::before{margin:5px}.cdk-high-contrast-active .mat-mdc-tab[aria-disabled=true]{color:GrayText}"],encapsulation:2}),t})();const TP=new k("MAT_TABS_CONFIG");let nte=0;const ite=x0(GO(class{constructor(t){this._elementRef=t}}),"primary");let rte=(()=>{class t extends ite{get dynamicHeight(){return this._dynamicHeight}set dynamicHeight(e){this._dynamicHeight=Ve(e)}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=ai(e,null)}get animationDuration(){return this._animationDuration}set animationDuration(e){this._animationDuration=/^\d+$/.test(e+"")?e+"ms":e}get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=ai(e,null)}get disablePagination(){return this._disablePagination}set disablePagination(e){this._disablePagination=Ve(e)}get preserveContent(){return this._preserveContent}set preserveContent(e){this._preserveContent=Ve(e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){const i=this._elementRef.nativeElement.classList;i.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&i.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}constructor(e,i,r,o){super(e),this._changeDetectorRef=i,this._animationMode=o,this._tabs=new Ca,this._indexToSelect=0,this._lastFocusedTabIndex=null,this._tabBodyWrapperHeight=0,this._tabsSubscription=rt.EMPTY,this._tabLabelSubscription=rt.EMPTY,this._dynamicHeight=!1,this._selectedIndex=null,this.headerPosition="above",this._disablePagination=!1,this._preserveContent=!1,this.selectedIndexChange=new Q,this.focusChange=new Q,this.animationDone=new Q,this.selectedTabChange=new Q(!0),this._groupId=nte++,this.animationDuration=r&&r.animationDuration?r.animationDuration:"500ms",this.disablePagination=!(!r||null==r.disablePagination)&&r.disablePagination,this.dynamicHeight=!(!r||null==r.dynamicHeight)&&r.dynamicHeight,this.contentTabIndex=r?.contentTabIndex??null,this.preserveContent=!!r?.preserveContent}ngAfterContentChecked(){const e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){const i=null==this._selectedIndex;if(!i){this.selectedTabChange.emit(this._createChangeEvent(e));const r=this._tabBodyWrapper.nativeElement;r.style.minHeight=r.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((r,o)=>r.isActive=o===e),i||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((i,r)=>{i.position=r-e,null!=this._selectedIndex&&0==i.position&&!i.origin&&(i.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{const e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){const i=this._tabs.toArray();let r;for(let o=0;o{i[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(dr(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(i=>i._closestTabGroup===this||!i._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){const i=this._tabHeader;i&&(i.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){const i=new ste;return i.index=e,this._tabs&&this._tabs.length&&(i.tab=this._tabs.toArray()[e]),i}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=Gn(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e){return`mat-tab-label-${this._groupId}-${e}`}_getTabContentId(e){return`mat-tab-content-${this._groupId}-${e}`}_setTabBodyWrapperHeight(e){if(!this._dynamicHeight||!this._tabBodyWrapperHeight)return;const i=this._tabBodyWrapper.nativeElement;i.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(i.style.height=e+"px")}_removeTabBodyWrapperHeight(){const e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this.animationDone.emit()}_handleClick(e,i,r){i.focusIndex=r,e.disabled||(this.selectedIndex=r)}_getTabIndex(e){return e===(this._lastFocusedTabIndex??this.selectedIndex)?0:-1}_tabFocusChanged(e,i){e&&"mouse"!==e&&"touch"!==e&&(this._tabHeader.focusIndex=i)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(tn),m(TP,8),m(en,8))},t.\u0275dir=M({type:t,inputs:{dynamicHeight:"dynamicHeight",selectedIndex:"selectedIndex",headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:"contentTabIndex",disablePagination:"disablePagination",preserveContent:"preserveContent",backgroundColor:"backgroundColor"},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},features:[F]}),t})(),ote=(()=>{class t extends rte{get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=Ve(e),this._changeDetectorRef.markForCheck()}get stretchTabs(){return this._stretchTabs}set stretchTabs(e){this._stretchTabs=Ve(e)}constructor(e,i,r,o){super(e,i,r,o),this._fitInkBarToContent=!1,this._stretchTabs=!0,this.fitInkBarToContent=!(!r||null==r.fitInkBarToContent)&&r.fitInkBarToContent}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(tn),m(TP,8),m(en,8))},t.\u0275cmp=$({type:t,selectors:[["mat-tab-group"]],contentQueries:function(e,i,r){if(1&e&&Ze(r,kP,5),2&e){let o;J(o=ee())&&(i._allTabs=o)}},viewQuery:function(e,i){if(1&e&&(Ge(Aee,5),Ge(Iee,5)),2&e){let r;J(r=ee())&&(i._tabBodyWrapper=r.first),J(r=ee())&&(i._tabHeader=r.first)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:6,hostBindings:function(e,i){2&e&&fe("mat-mdc-tab-group-dynamic-height",i.dynamicHeight)("mat-mdc-tab-group-inverted-header","below"===i.headerPosition)("mat-mdc-tab-group-stretch-tabs",i.stretchTabs)},inputs:{color:"color",disableRipple:"disableRipple",fitInkBarToContent:"fitInkBarToContent",stretchTabs:["mat-stretch-tabs","stretchTabs"]},exportAs:["matTabGroup"],features:[ie([{provide:SP,useExisting:t}]),F],decls:6,vars:7,consts:[[3,"selectedIndex","disableRipple","disablePagination","indexFocused","selectFocusedIndex"],["tabHeader",""],["class","mdc-tab mat-mdc-tab mat-mdc-focus-indicator","role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",3,"id","mdc-tab--active","ngClass","disabled","fitInkBarToContent","click","cdkFocusChange",4,"ngFor","ngForOf"],[1,"mat-mdc-tab-body-wrapper"],["tabBodyWrapper",""],["role","tabpanel",3,"id","mat-mdc-tab-body-active","ngClass","content","position","origin","animationDuration","preserveContent","_onCentered","_onCentering",4,"ngFor","ngForOf"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-mdc-focus-indicator",3,"id","ngClass","disabled","fitInkBarToContent","click","cdkFocusChange"],["tabNode",""],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"ngIf","ngIfElse"],["tabTextLabel",""],[3,"cdkPortalOutlet"],["role","tabpanel",3,"id","ngClass","content","position","origin","animationDuration","preserveContent","_onCentered","_onCentering"]],template:function(e,i){1&e&&(x(0,"mat-tab-header",0,1),re("indexFocused",function(o){return i._focusChanged(o)})("selectFocusedIndex",function(o){return i.selectedIndex=o}),O(2,Fee,9,17,"div",2),D(),x(3,"div",3,4),O(5,Nee,1,11,"mat-tab-body",5),D()),2&e&&(S("selectedIndex",i.selectedIndex||0)("disableRipple",i.disableRipple)("disablePagination",i.disablePagination),E(2),S("ngForOf",i._tabs),E(1),fe("_mat-animation-noopable","NoopAnimations"===i._animationMode),E(2),S("ngForOf",i._tabs))},dependencies:[gM,cs,An,bl,Cs,jK,xP,EP,tte],styles:['.mdc-tab{min-width:90px;padding-right:24px;padding-left:24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;margin:0;padding-top:0;padding-bottom:0;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1}.mdc-tab::-moz-focus-inner{padding:0;border:0}.mdc-tab[hidden]{display:none}.mdc-tab--min-width{flex:0 1 auto}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab__icon{transition:150ms color linear;z-index:2}.mdc-tab--stacked .mdc-tab__content{flex-direction:column;align-items:center;justify-content:center}.mdc-tab--stacked .mdc-tab__text-label{padding-top:6px;padding-bottom:4px}.mdc-tab--active .mdc-tab__text-label,.mdc-tab--active .mdc-tab__icon{transition-delay:100ms}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:8px;padding-right:0}[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label,.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label[dir=rtl]{padding-left:0;padding-right:8px}.mdc-tab-indicator .mdc-tab-indicator__content--underline{border-top-width:2px}.mdc-tab-indicator .mdc-tab-indicator__content--icon{height:34px;font-size:34px}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator .mdc-tab-indicator__content{transition:250ms transform cubic-bezier(0.4, 0, 0.2, 1)}.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition:150ms opacity linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition-delay:100ms}.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-tab.mdc-tab{height:48px;flex-grow:0}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none}.mat-mdc-tab .mdc-tab__text-label{display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-disabled{opacity:.4}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-mdc-tab-header-with-background-background-color, transparent)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-focus-indicator::before{border-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{border-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}'],encapsulation:2}),t})();class ste{}let ate=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Re,Et,vl,Sd,xm,zO,Et]}),t})();const AP=CO();class lte{constructor(n,e){this._viewportRuler=n,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=e}attach(){}enable(){if(this._canBeEnabled()){const n=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=n.style.left||"",this._previousHTMLStyles.top=n.style.top||"",n.style.left=Ut(-this._previousScrollPosition.left),n.style.top=Ut(-this._previousScrollPosition.top),n.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const n=this._document.documentElement,i=n.style,r=this._document.body.style,o=i.scrollBehavior||"",s=r.scrollBehavior||"";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,n.classList.remove("cdk-global-scrollblock"),AP&&(i.scrollBehavior=r.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),AP&&(i.scrollBehavior=o,r.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const e=this._document.body,i=this._viewportRuler.getViewportSize();return e.scrollHeight>i.height||e.scrollWidth>i.width}}class cte{constructor(n,e,i,r){this._scrollDispatcher=n,this._ngZone=e,this._viewportRuler=i,this._config=r,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(n){this._overlayRef=n}enable(){if(this._scrollSubscription)return;const n=this._scrollDispatcher.scrolled(0).pipe(mt(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=n.subscribe(()=>{const e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=n.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}class IP{enable(){}disable(){}attach(){}}function uw(t,n){return n.some(e=>t.bottome.bottom||t.righte.right)}function OP(t,n){return n.some(e=>t.tope.bottom||t.lefte.right)}class dte{constructor(n,e,i,r){this._scrollDispatcher=n,this._viewportRuler=e,this._ngZone=i,this._config=r,this._scrollSubscription=null}attach(n){this._overlayRef=n}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:r}=this._viewportRuler.getViewportSize();uw(e,[{width:i,height:r,bottom:r,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let ute=(()=>{class t{constructor(e,i,r,o){this._scrollDispatcher=e,this._viewportRuler=i,this._ngZone=r,this.noop=()=>new IP,this.close=s=>new cte(this._scrollDispatcher,this._ngZone,this._viewportRuler,s),this.block=()=>new lte(this._viewportRuler,this._document),this.reposition=s=>new dte(this._scrollDispatcher,this._viewportRuler,this._ngZone,s),this._document=o}}return t.\u0275fac=function(e){return new(e||t)(_(sp),_(As),_(Z),_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();class hw{constructor(n){if(this.scrollStrategy=new IP,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,n){const e=Object.keys(n);for(const i of e)void 0!==n[i]&&(this[i]=n[i])}}}class ap{constructor(n,e,i,r,o){this.offsetX=i,this.offsetY=r,this.panelClass=o,this.originX=n.originX,this.originY=n.originY,this.overlayX=e.overlayX,this.overlayY=e.overlayY}}class hte{constructor(n,e){this.connectionPair=n,this.scrollableViewProperties=e}}let RP=(()=>{class t{constructor(e){this._attachedOverlays=[],this._document=e}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){const i=this._attachedOverlays.indexOf(e);i>-1&&this._attachedOverlays.splice(i,1),0===this._attachedOverlays.length&&this.detach()}}return t.\u0275fac=function(e){return new(e||t)(_(ge))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),fte=(()=>{class t extends RP{constructor(e,i){super(e),this._ngZone=i,this._keydownListener=r=>{const o=this._attachedOverlays;for(let s=o.length-1;s>-1;s--)if(o[s]._keydownEvents.observers.length>0){const a=o[s]._keydownEvents;this._ngZone?this._ngZone.run(()=>a.next(r)):a.next(r);break}}}add(e){super.add(e),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}}return t.\u0275fac=function(e){return new(e||t)(_(ge),_(Z,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),mte=(()=>{class t extends RP{constructor(e,i,r){super(e),this._platform=i,this._ngZone=r,this._cursorStyleIsSet=!1,this._pointerDownListener=o=>{this._pointerDownEventTarget=Vo(o)},this._clickListener=o=>{const s=Vo(o),a="click"===o.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:s;this._pointerDownEventTarget=null;const l=this._attachedOverlays.slice();for(let c=l.length-1;c>-1;c--){const d=l[c];if(d._outsidePointerEvents.observers.length<1||!d.hasAttached())continue;if(d.overlayElement.contains(s)||d.overlayElement.contains(a))break;const u=d._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>u.next(o)):u.next(o)}}}add(e){if(super.add(e),!this._isAttached){const i=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(i)):this._addEventListeners(i),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const e=this._document.body;e.removeEventListener("pointerdown",this._pointerDownListener,!0),e.removeEventListener("click",this._clickListener,!0),e.removeEventListener("auxclick",this._clickListener,!0),e.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(e.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(e){e.addEventListener("pointerdown",this._pointerDownListener,!0),e.addEventListener("click",this._clickListener,!0),e.addEventListener("auxclick",this._clickListener,!0),e.addEventListener("contextmenu",this._clickListener,!0)}}return t.\u0275fac=function(e){return new(e||t)(_(ge),_(pt),_(Z,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),lp=(()=>{class t{constructor(e,i){this._platform=i,this._document=e}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const e="cdk-overlay-container";if(this._platform.isBrowser||m0()){const r=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let o=0;othis._backdropClick.next(u),this._backdropTransitionendHandler=u=>{this._disposeBackdrop(u.target)},this._keydownEvents=new te,this._outsidePointerEvents=new te,r.scrollStrategy&&(this._scrollStrategy=r.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=r.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(n){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const e=this._portalOutlet.attach(n);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(Yt(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof e?.onDestroy&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const n=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),n}dispose(){const n=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._previousHostParent=this._pane=this._host=null,n&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(n){n!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=n,this.hasAttached()&&(n.attach(this),this.updatePosition()))}updateSize(n){this._config={...this._config,...n},this._updateElementSize()}setDirection(n){this._config={...this._config,direction:n},this._updateElementDirection()}addPanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!0)}removePanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!1)}getDirection(){const n=this._config.direction;return n?"string"==typeof n?n:n.value:"ltr"}updateScrollStrategy(n){n!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=n,this.hasAttached()&&(n.attach(this),n.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const n=this._pane.style;n.width=Ut(this._config.width),n.height=Ut(this._config.height),n.minWidth=Ut(this._config.minWidth),n.minHeight=Ut(this._config.minHeight),n.maxWidth=Ut(this._config.maxWidth),n.maxHeight=Ut(this._config.maxHeight)}_togglePointerEvents(n){this._pane.style.pointerEvents=n?"":"none"}_attachBackdrop(){const n="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(n)})}):this._backdropElement.classList.add(n)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const n=this._backdropElement;if(n){if(this._animationsDisabled)return void this._disposeBackdrop(n);n.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{n.addEventListener("transitionend",this._backdropTransitionendHandler)}),n.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(n)},500))}}_toggleClasses(n,e,i){const r=ym(e||[]).filter(o=>!!o);r.length&&(i?n.classList.add(...r):n.classList.remove(...r))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{const n=this._ngZone.onStable.pipe(ze(Gn(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),n.unsubscribe())})})}_disposeScrollStrategy(){const n=this._scrollStrategy;n&&(n.disable(),n.detach&&n.detach())}_disposeBackdrop(n){n&&(n.removeEventListener("click",this._backdropClickHandler),n.removeEventListener("transitionend",this._backdropTransitionendHandler),n.remove(),this._backdropElement===n&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const PP="cdk-overlay-connected-position-bounding-box",pte=/([A-Za-z%]+)$/;class gte{get positions(){return this._preferredPositions}constructor(n,e,i,r,o){this._viewportRuler=e,this._document=i,this._platform=r,this._overlayContainer=o,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new te,this._resizeSubscription=rt.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(n)}attach(n){this._validatePositions(),n.hostElement.classList.add(PP),this._overlayRef=n,this._boundingBox=n.hostElement,this._pane=n.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const n=this._originRect,e=this._overlayRect,i=this._viewportRect,r=this._containerRect,o=[];let s;for(let a of this._preferredPositions){let l=this._getOriginPoint(n,r,a),c=this._getOverlayPoint(l,e,a),d=this._getOverlayFit(c,e,i,a);if(d.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(a,l);this._canFitWithFlexibleDimensions(d,c,i)?o.push({position:a,origin:l,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(l,a)}):(!s||s.overlayFit.visibleAreal&&(l=d,a=c)}return this._isPushed=!1,void this._applyPosition(a.position,a.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(s.position,s.originPoint);this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Is(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(PP),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const n=this._lastPosition;if(n){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const e=this._getOriginPoint(this._originRect,this._containerRect,n);this._applyPosition(n,e)}else this.apply()}withScrollableContainers(n){return this._scrollables=n,this}withPositions(n){return this._preferredPositions=n,-1===n.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(n){return this._viewportMargin=n,this}withFlexibleDimensions(n=!0){return this._hasFlexibleDimensions=n,this}withGrowAfterOpen(n=!0){return this._growAfterOpen=n,this}withPush(n=!0){return this._canPush=n,this}withLockedPosition(n=!0){return this._positionLocked=n,this}setOrigin(n){return this._origin=n,this}withDefaultOffsetX(n){return this._offsetX=n,this}withDefaultOffsetY(n){return this._offsetY=n,this}withTransformOriginOn(n){return this._transformOriginSelector=n,this}_getOriginPoint(n,e,i){let r,o;if("center"==i.originX)r=n.left+n.width/2;else{const s=this._isRtl()?n.right:n.left,a=this._isRtl()?n.left:n.right;r="start"==i.originX?s:a}return e.left<0&&(r-=e.left),o="center"==i.originY?n.top+n.height/2:"top"==i.originY?n.top:n.bottom,e.top<0&&(o-=e.top),{x:r,y:o}}_getOverlayPoint(n,e,i){let r,o;return r="center"==i.overlayX?-e.width/2:"start"===i.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,o="center"==i.overlayY?-e.height/2:"top"==i.overlayY?0:-e.height,{x:n.x+r,y:n.y+o}}_getOverlayFit(n,e,i,r){const o=NP(e);let{x:s,y:a}=n,l=this._getOffset(r,"x"),c=this._getOffset(r,"y");l&&(s+=l),c&&(a+=c);let h=0-a,f=a+o.height-i.height,p=this._subtractOverflows(o.width,0-s,s+o.width-i.width),g=this._subtractOverflows(o.height,h,f),b=p*g;return{visibleArea:b,isCompletelyWithinViewport:o.width*o.height===b,fitsInViewportVertically:g===o.height,fitsInViewportHorizontally:p==o.width}}_canFitWithFlexibleDimensions(n,e,i){if(this._hasFlexibleDimensions){const r=i.bottom-e.y,o=i.right-e.x,s=FP(this._overlayRef.getConfig().minHeight),a=FP(this._overlayRef.getConfig().minWidth);return(n.fitsInViewportVertically||null!=s&&s<=r)&&(n.fitsInViewportHorizontally||null!=a&&a<=o)}return!1}_pushOverlayOnScreen(n,e,i){if(this._previousPushAmount&&this._positionLocked)return{x:n.x+this._previousPushAmount.x,y:n.y+this._previousPushAmount.y};const r=NP(e),o=this._viewportRect,s=Math.max(n.x+r.width-o.width,0),a=Math.max(n.y+r.height-o.height,0),l=Math.max(o.top-i.top-n.y,0),c=Math.max(o.left-i.left-n.x,0);let d=0,u=0;return d=r.width<=o.width?c||-s:n.xp&&!this._isInitialRender&&!this._growAfterOpen&&(s=n.y-p/2)}if("end"===e.overlayX&&!r||"start"===e.overlayX&&r)h=i.width-n.x+this._viewportMargin,d=n.x-this._viewportMargin;else if("start"===e.overlayX&&!r||"end"===e.overlayX&&r)u=n.x,d=i.right-n.x;else{const f=Math.min(i.right-n.x+i.left,n.x),p=this._lastBoundingBoxSize.width;d=2*f,u=n.x-f,d>p&&!this._isInitialRender&&!this._growAfterOpen&&(u=n.x-p/2)}return{top:s,left:u,bottom:a,right:h,width:d,height:o}}_setBoundingBoxStyles(n,e){const i=this._calculateBoundingBoxRect(n,e);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));const r={};if(this._hasExactPosition())r.top=r.left="0",r.bottom=r.right=r.maxHeight=r.maxWidth="",r.width=r.height="100%";else{const o=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;r.height=Ut(i.height),r.top=Ut(i.top),r.bottom=Ut(i.bottom),r.width=Ut(i.width),r.left=Ut(i.left),r.right=Ut(i.right),r.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",r.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",o&&(r.maxHeight=Ut(o)),s&&(r.maxWidth=Ut(s))}this._lastBoundingBoxSize=i,Is(this._boundingBox.style,r)}_resetBoundingBoxStyles(){Is(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Is(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(n,e){const i={},r=this._hasExactPosition(),o=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(r){const d=this._viewportRuler.getViewportScrollPosition();Is(i,this._getExactOverlayY(e,n,d)),Is(i,this._getExactOverlayX(e,n,d))}else i.position="static";let a="",l=this._getOffset(e,"x"),c=this._getOffset(e,"y");l&&(a+=`translateX(${l}px) `),c&&(a+=`translateY(${c}px)`),i.transform=a.trim(),s.maxHeight&&(r?i.maxHeight=Ut(s.maxHeight):o&&(i.maxHeight="")),s.maxWidth&&(r?i.maxWidth=Ut(s.maxWidth):o&&(i.maxWidth="")),Is(this._pane.style,i)}_getExactOverlayY(n,e,i){let r={top:"",bottom:""},o=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i)),"bottom"===n.overlayY?r.bottom=this._document.documentElement.clientHeight-(o.y+this._overlayRect.height)+"px":r.top=Ut(o.y),r}_getExactOverlayX(n,e,i){let s,r={left:"",right:""},o=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i)),s=this._isRtl()?"end"===n.overlayX?"left":"right":"end"===n.overlayX?"right":"left","right"===s?r.right=this._document.documentElement.clientWidth-(o.x+this._overlayRect.width)+"px":r.left=Ut(o.x),r}_getScrollVisibility(){const n=this._getOriginRect(),e=this._pane.getBoundingClientRect(),i=this._scrollables.map(r=>r.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:OP(n,i),isOriginOutsideView:uw(n,i),isOverlayClipped:OP(e,i),isOverlayOutsideView:uw(e,i)}}_subtractOverflows(n,...e){return e.reduce((i,r)=>i-Math.max(r,0),n)}_getNarrowedViewportRect(){const n=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._viewportMargin,left:i.left+this._viewportMargin,right:i.left+n-this._viewportMargin,bottom:i.top+e-this._viewportMargin,width:n-2*this._viewportMargin,height:e-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(n,e){return"x"===e?null==n.offsetX?this._offsetX:n.offsetX:null==n.offsetY?this._offsetY:n.offsetY}_validatePositions(){}_addPanelClasses(n){this._pane&&ym(n).forEach(e=>{""!==e&&-1===this._appliedPanelClasses.indexOf(e)&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(n=>{this._pane.classList.remove(n)}),this._appliedPanelClasses=[])}_getOriginRect(){const n=this._origin;if(n instanceof H)return n.nativeElement.getBoundingClientRect();if(n instanceof Element)return n.getBoundingClientRect();const e=n.width||0,i=n.height||0;return{top:n.y,bottom:n.y+i,left:n.x,right:n.x+e,height:i,width:e}}}function Is(t,n){for(let e in n)n.hasOwnProperty(e)&&(t[e]=n[e]);return t}function FP(t){if("number"!=typeof t&&null!=t){const[n,e]=t.split(pte);return e&&"px"!==e?null:parseFloat(n)}return t||null}function NP(t){return{top:Math.floor(t.top),right:Math.floor(t.right),bottom:Math.floor(t.bottom),left:Math.floor(t.left),width:Math.floor(t.width),height:Math.floor(t.height)}}const LP="cdk-global-overlay-wrapper";class _te{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(n){const e=n.getConfig();this._overlayRef=n,this._width&&!e.width&&n.updateSize({width:this._width}),this._height&&!e.height&&n.updateSize({height:this._height}),n.hostElement.classList.add(LP),this._isDisposed=!1}top(n=""){return this._bottomOffset="",this._topOffset=n,this._alignItems="flex-start",this}left(n=""){return this._xOffset=n,this._xPosition="left",this}bottom(n=""){return this._topOffset="",this._bottomOffset=n,this._alignItems="flex-end",this}right(n=""){return this._xOffset=n,this._xPosition="right",this}start(n=""){return this._xOffset=n,this._xPosition="start",this}end(n=""){return this._xOffset=n,this._xPosition="end",this}width(n=""){return this._overlayRef?this._overlayRef.updateSize({width:n}):this._width=n,this}height(n=""){return this._overlayRef?this._overlayRef.updateSize({height:n}):this._height=n,this}centerHorizontally(n=""){return this.left(n),this._xPosition="center",this}centerVertically(n=""){return this.top(n),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:r,height:o,maxWidth:s,maxHeight:a}=i,l=!("100%"!==r&&"100vw"!==r||s&&"100%"!==s&&"100vw"!==s),c=!("100%"!==o&&"100vh"!==o||a&&"100%"!==a&&"100vh"!==a),d=this._xPosition,u=this._xOffset,h="rtl"===this._overlayRef.getConfig().direction;let f="",p="",g="";l?g="flex-start":"center"===d?(g="center",h?p=u:f=u):h?"left"===d||"end"===d?(g="flex-end",f=u):("right"===d||"start"===d)&&(g="flex-start",p=u):"left"===d||"start"===d?(g="flex-start",f=u):("right"===d||"end"===d)&&(g="flex-end",p=u),n.position=this._cssPosition,n.marginLeft=l?"0":f,n.marginTop=c?"0":this._topOffset,n.marginBottom=this._bottomOffset,n.marginRight=l?"0":p,e.justifyContent=g,e.alignItems=c?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,i=e.style;e.classList.remove(LP),i.justifyContent=i.alignItems=n.marginTop=n.marginBottom=n.marginLeft=n.marginRight=n.position="",this._overlayRef=null,this._isDisposed=!0}}let bte=(()=>{class t{constructor(e,i,r,o){this._viewportRuler=e,this._document=i,this._platform=r,this._overlayContainer=o}global(){return new _te}flexibleConnectedTo(e){return new gte(e,this._viewportRuler,this._document,this._platform,this._overlayContainer)}}return t.\u0275fac=function(e){return new(e||t)(_(As),_(ge),_(pt),_(lp))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),vte=0,oo=(()=>{class t{constructor(e,i,r,o,s,a,l,c,d,u,h,f){this.scrollStrategies=e,this._overlayContainer=i,this._componentFactoryResolver=r,this._positionBuilder=o,this._keyboardDispatcher=s,this._injector=a,this._ngZone=l,this._document=c,this._directionality=d,this._location=u,this._outsideClickDispatcher=h,this._animationsModuleType=f}create(e){const i=this._createHostElement(),r=this._createPaneElement(i),o=this._createPortalOutlet(r),s=new hw(e);return s.direction=s.direction||this._directionality.value,new Nd(o,i,r,s,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType)}position(){return this._positionBuilder}_createPaneElement(e){const i=this._document.createElement("div");return i.id="cdk-overlay-"+vte++,i.classList.add("cdk-overlay-pane"),e.appendChild(i),i}_createHostElement(){const e=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(e),e}_createPortalOutlet(e){return this._appRef||(this._appRef=this._injector.get(as)),new tQ(e,this._componentFactoryResolver,this._appRef,this._injector,this._document)}}return t.\u0275fac=function(e){return new(e||t)(_(ute),_(lp),_(Ni),_(bte),_(fte),_(xt),_(Z),_(ge),_(Rn),_(gc),_(mte),_(en,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();const yte=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],BP=new k("cdk-connected-overlay-scroll-strategy");let VP=(()=>{class t{constructor(e){this.elementRef=e}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0}),t})(),jP=(()=>{class t{get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(e){this._hasBackdrop=Ve(e)}get lockPosition(){return this._lockPosition}set lockPosition(e){this._lockPosition=Ve(e)}get flexibleDimensions(){return this._flexibleDimensions}set flexibleDimensions(e){this._flexibleDimensions=Ve(e)}get growAfterOpen(){return this._growAfterOpen}set growAfterOpen(e){this._growAfterOpen=Ve(e)}get push(){return this._push}set push(e){this._push=Ve(e)}constructor(e,i,r,o,s){this._overlay=e,this._dir=s,this._hasBackdrop=!1,this._lockPosition=!1,this._growAfterOpen=!1,this._flexibleDimensions=!1,this._push=!1,this._backdropSubscription=rt.EMPTY,this._attachSubscription=rt.EMPTY,this._detachSubscription=rt.EMPTY,this._positionSubscription=rt.EMPTY,this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.backdropClick=new Q,this.positionChange=new Q,this.attach=new Q,this.detach=new Q,this.overlayKeydown=new Q,this.overlayOutsideClick=new Q,this._templatePortal=new _l(i,r),this._scrollStrategyFactory=o,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=yte);const e=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(i=>{this.overlayKeydown.next(i),27===i.keyCode&&!this.disableClose&&!ul(i)&&(i.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(i=>{this.overlayOutsideClick.next(i)})}_buildConfig(){const e=this._position=this.positionStrategy||this._createPositionStrategy(),i=new hw({direction:this._dir,positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop});return(this.width||0===this.width)&&(i.width=this.width),(this.height||0===this.height)&&(i.height=this.height),(this.minWidth||0===this.minWidth)&&(i.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(i.minHeight=this.minHeight),this.backdropClass&&(i.backdropClass=this.backdropClass),this.panelClass&&(i.panelClass=this.panelClass),i}_updatePositionStrategy(e){const i=this.positions.map(r=>({originX:r.originX,originY:r.originY,overlayX:r.overlayX,overlayY:r.overlayY,offsetX:r.offsetX||this.offsetX,offsetY:r.offsetY||this.offsetY,panelClass:r.panelClass||void 0}));return e.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(i).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const e=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(e),e}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof VP?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(e=>{this.backdropClick.emit(e)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(kA(()=>this.positionChange.observers.length>0)).subscribe(e=>{this.positionChange.emit(e),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}}return t.\u0275fac=function(e){return new(e||t)(m(oo),m(bt),m(it),m(BP),m(Rn,8))},t.\u0275dir=M({type:t,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:["cdkConnectedOverlayOrigin","origin"],positions:["cdkConnectedOverlayPositions","positions"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:["cdkConnectedOverlayOpen","open"],disableClose:["cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop"],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition"],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions"],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen"],push:["cdkConnectedOverlayPush","push"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[st]}),t})();const xte={provide:BP,deps:[oo],useFactory:function wte(t){return()=>t.scrollStrategies.reposition()}};let cp=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:[oo,xte],imports:[Dd,vl,cw,cw]}),t})(),HP=(()=>{var t;class n{constructor(){this.el=R(H).nativeElement,this.overlayRef=R(oo).create({positionStrategy:R(oo).position().flexibleConnectedTo(this.el).withPositions([new ap({originX:"end",originY:"bottom"},{overlayX:"end",overlayY:"top"}),new ap({originX:"start",originY:"top"},{overlayX:"start",overlayY:"bottom"}),new ap({originX:"start",originY:"bottom"},{overlayX:"start",overlayY:"top"}),new ap({originX:"end",originY:"top"},{overlayX:"end",overlayY:"bottom"})]).withPush(!0)}),this.viewContainerRef=R(it)}set content(i){this.portal=new _l(i,this.viewContainerRef,this._data),this.updateContent()}set data(i){this._data={$implicit:i},this.portal&&(this.portal.context=this._data,this.updateContent())}startHover(){const{overlayRef:i,portal:r}=this;!i.hasAttached()&&r&&i.attach(r)}endHover(){const{overlayRef:i}=this;i.hasAttached()&&i.detach()}updateContent(){const{overlayRef:i,portal:r}=this;i.hasAttached()&&r&&(i.detach(),i.attach(r))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275dir=M({type:t,selectors:[["","hraHover",""]],hostBindings:function(i,r){1&i&&re("mouseover",function(){return r.startHover()})("mouseout",function(){return r.endHover()})},inputs:{content:["hraHover","content"],data:["hraHoverData","data"]},standalone:!0}),n})(),Ld=(()=>{class t{static url({url:e}){return e}static selectedOnHovered({selectedOnHover:e}){return e}static selectedOnClicked({selectedOnClick:e}){return e}static mapping({mapping:e}){return e}}return z([Dt([yl]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"url",null),z([Dt([yl]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"selectedOnHovered",null),z([Dt([yl]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Object)],t,"selectedOnClicked",null),z([Dt([yl]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Array)],t,"mapping",null),t})(),Cte=(()=>{var t;class n{constructor(){this.gradient=[]}get gradientCss(){return`linear-gradient(90deg, ${this.gradient.map(({color:r,percentage:o})=>`${r} ${o}%`).join(",")})`}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-gradient-legend"]],inputs:{gradient:"gradient"},standalone:!0,features:[Be],decls:7,vars:2,consts:[[1,"gradient-bar"],[1,"legend"],[1,"start"],[1,"filler"],[1,"end"]],template:function(i,r){1&i&&(G(0,"div",0),x(1,"div",1)(2,"div",2),N(3,"0.0"),D(),G(4,"div",3),x(5,"div",4),N(6,"1.0"),D()()),2&i&&ir("background",r.gradientCss)},dependencies:[Re],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .gradient-bar[_ngcontent-%COMP%]{height:1.5rem;width:100%}[_nghost-%COMP%] .legend[_ngcontent-%COMP%]{display:flex}[_nghost-%COMP%] .legend[_ngcontent-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}"],changeDetection:0}),n})();function Dte(t,n){if(1&t&&(x(0,"div",1),G(1,"div",2)(2,"div",3)(3,"div",2),x(4,"div",4),N(5),D()()),2&t){const e=n.$implicit;E(2),oS("--size: ",e.radius,"rem"),E(3),Jt(e.label)}}let Ete=(()=>{var t;class n{constructor(){this.sizes=[]}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-size-legend"]],inputs:{sizes:"sizes"},standalone:!0,features:[Be],decls:1,vars:1,consts:[["class","item",4,"ngFor","ngForOf"],[1,"item"],[1,"filler"],[1,"circle"],[1,"label"]],template:function(i,r){1&i&&O(0,Dte,6,4,"div",0),2&i&&S("ngForOf",r.sizes)},dependencies:[Re,cs],styles:["[_nghost-%COMP%]{display:flex;flex-direction:row;column-gap:2rem}[_nghost-%COMP%] .item[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;line-height:.5rem}[_nghost-%COMP%] .item[_ngcontent-%COMP%] .circle[_ngcontent-%COMP%]{height:var(--size);width:var(--size);border-radius:50%;border:.125rem solid #75838f}[_nghost-%COMP%] .item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{margin-top:.5rem}[_nghost-%COMP%] .item[_ngcontent-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}"],changeDetection:0}),n})(),zP=(()=>{var t;class n{constructor(){this.collaborateText="",this.message="",this.collaborateClick=new Q}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-empty-biomarker"]],inputs:{collaborateText:"collaborateText",message:"message"},outputs:{collaborateClick:"collaborateClick"},standalone:!0,features:[Be],decls:3,vars:2,consts:[[1,"message",3,"data"],["mat-flat-button","","color","primary",1,"collaborate-button",3,"click"]],template:function(i,r){1&i&&(G(0,"markdown",0),x(1,"button",1),re("click",function(s){return r.collaborateClick.emit(s)}),N(2),D()),2&i&&(S("data",r.message),E(2),nt(" ",r.collaborateText,"\n"))},dependencies:[Re,eo,pl,Ts,Ms],styles:["[_nghost-%COMP%]{display:block;padding:2.625rem 2rem}[_nghost-%COMP%] .message[_ngcontent-%COMP%]{color:#243142}[_nghost-%COMP%] .collaborate-button[_ngcontent-%COMP%]{margin-top:2rem;font-weight:700;color:#fff;width:100%;max-width:20rem;height:3rem}"],changeDetection:0}),n})();const Ste=[[["caption"]],[["colgroup"],["col"]]],kte=["caption","colgroup, col"];function fw(t){return class extends t{get sticky(){return this._sticky}set sticky(n){const e=this._sticky;this._sticky=Ve(n),this._hasStickyChanged=e!==this._sticky}hasStickyChanged(){const n=this._hasStickyChanged;return this._hasStickyChanged=!1,n}resetStickyChanged(){this._hasStickyChanged=!1}constructor(...n){super(...n),this._sticky=!1,this._hasStickyChanged=!1}}}const xl=new k("CDK_TABLE");let Cl=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","cdkCellDef",""]]}),t})(),Dl=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","cdkHeaderCellDef",""]]}),t})(),dp=(()=>{class t{constructor(e){this.template=e}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["","cdkFooterCellDef",""]]}),t})();class Ite{}const Ote=fw(Ite);let so=(()=>{class t extends Ote{get name(){return this._name}set name(e){this._setNameInput(e)}get stickyEnd(){return this._stickyEnd}set stickyEnd(e){const i=this._stickyEnd;this._stickyEnd=Ve(e),this._hasStickyChanged=i!==this._stickyEnd}constructor(e){super(),this._table=e,this._stickyEnd=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(e){e&&(this._name=e,this.cssClassFriendlyName=e.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}}return t.\u0275fac=function(e){return new(e||t)(m(xl,8))},t.\u0275dir=M({type:t,selectors:[["","cdkColumnDef",""]],contentQueries:function(e,i,r){if(1&e&&(Ze(r,Cl,5),Ze(r,Dl,5),Ze(r,dp,5)),2&e){let o;J(o=ee())&&(i.cell=o.first),J(o=ee())&&(i.headerCell=o.first),J(o=ee())&&(i.footerCell=o.first)}},inputs:{sticky:"sticky",name:["cdkColumnDef","name"],stickyEnd:"stickyEnd"},features:[ie([{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:t}]),F]}),t})();class mw{constructor(n,e){e.nativeElement.classList.add(...n._columnCssClassName)}}let pw=(()=>{class t extends mw{constructor(e,i){super(e,i)}}return t.\u0275fac=function(e){return new(e||t)(m(so),m(H))},t.\u0275dir=M({type:t,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],features:[F]}),t})(),gw=(()=>{class t extends mw{constructor(e,i){if(super(e,i),1===e._table?._elementRef.nativeElement.nodeType){const r=e._table._elementRef.nativeElement.getAttribute("role");i.nativeElement.setAttribute("role","grid"===r||"treegrid"===r?"gridcell":"cell")}}}return t.\u0275fac=function(e){return new(e||t)(m(so),m(H))},t.\u0275dir=M({type:t,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],features:[F]}),t})();class $P{constructor(){this.tasks=[],this.endTasks=[]}}const _w=new k("_COALESCED_STYLE_SCHEDULER");let GP=(()=>{class t{constructor(e){this._ngZone=e,this._currentSchedule=null,this._destroyed=new te}schedule(e){this._createScheduleIfNeeded(),this._currentSchedule.tasks.push(e)}scheduleEnd(e){this._createScheduleIfNeeded(),this._currentSchedule.endTasks.push(e)}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}_createScheduleIfNeeded(){this._currentSchedule||(this._currentSchedule=new $P,this._getScheduleObservable().pipe(ze(this._destroyed)).subscribe(()=>{for(;this._currentSchedule.tasks.length||this._currentSchedule.endTasks.length;){const e=this._currentSchedule;this._currentSchedule=new $P;for(const i of e.tasks)i();for(const i of e.endTasks)i()}this._currentSchedule=null}))}_getScheduleObservable(){return this._ngZone.isStable?yt(Promise.resolve(void 0)):this._ngZone.onStable.pipe(Yt(1))}}return t.\u0275fac=function(e){return new(e||t)(_(Z))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),bw=(()=>{class t{constructor(e,i){this.template=e,this._differs=i}ngOnChanges(e){if(!this._columnsDiffer){const i=e.columns&&e.columns.currentValue||[];this._columnsDiffer=this._differs.find(i).create(),this._columnsDiffer.diff(i)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(e){return this instanceof Bd?e.headerCell.template:this instanceof Vd?e.footerCell.template:e.cell.template}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(bi))},t.\u0275dir=M({type:t,features:[st]}),t})();class Rte extends bw{}const Pte=fw(Rte);let Bd=(()=>{class t extends Pte{constructor(e,i,r){super(e,i),this._table=r}ngOnChanges(e){super.ngOnChanges(e)}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(bi),m(xl,8))},t.\u0275dir=M({type:t,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:["cdkHeaderRowDef","columns"],sticky:["cdkHeaderRowDefSticky","sticky"]},features:[F,st]}),t})();class Fte extends bw{}const Nte=fw(Fte);let Vd=(()=>{class t extends Nte{constructor(e,i,r){super(e,i),this._table=r}ngOnChanges(e){super.ngOnChanges(e)}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(bi),m(xl,8))},t.\u0275dir=M({type:t,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:["cdkFooterRowDef","columns"],sticky:["cdkFooterRowDefSticky","sticky"]},features:[F,st]}),t})(),up=(()=>{class t extends bw{constructor(e,i,r){super(e,i),this._table=r}}return t.\u0275fac=function(e){return new(e||t)(m(bt),m(bi),m(xl,8))},t.\u0275dir=M({type:t,selectors:[["","cdkRowDef",""]],inputs:{columns:["cdkRowDefColumns","columns"],when:["cdkRowDefWhen","when"]},features:[F]}),t})(),ao=(()=>{class t{constructor(e){this._viewContainer=e,t.mostRecentCellOutlet=this}ngOnDestroy(){t.mostRecentCellOutlet===this&&(t.mostRecentCellOutlet=null)}}return t.mostRecentCellOutlet=null,t.\u0275fac=function(e){return new(e||t)(m(it))},t.\u0275dir=M({type:t,selectors:[["","cdkCellOutlet",""]]}),t})(),vw=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=$({type:t,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,i){1&e&&Vn(0,0)},dependencies:[ao],encapsulation:2}),t})(),ww=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=$({type:t,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,i){1&e&&Vn(0,0)},dependencies:[ao],encapsulation:2}),t})(),hp=(()=>{class t{constructor(e){this.templateRef=e,this._contentClassName="cdk-no-data-row"}}return t.\u0275fac=function(e){return new(e||t)(m(bt))},t.\u0275dir=M({type:t,selectors:[["ng-template","cdkNoDataRow",""]]}),t})();const WP=["top","bottom","left","right"];class Lte{constructor(n,e,i,r,o=!0,s=!0,a){this._isNativeHtmlTable=n,this._stickCellCss=e,this.direction=i,this._coalescedStyleScheduler=r,this._isBrowser=o,this._needsPositionStickyOnElement=s,this._positionListener=a,this._cachedCellWidths=[],this._borderCellCss={top:`${e}-border-elem-top`,bottom:`${e}-border-elem-bottom`,left:`${e}-border-elem-left`,right:`${e}-border-elem-right`}}clearStickyPositioning(n,e){const i=[];for(const r of n)if(r.nodeType===r.ELEMENT_NODE){i.push(r);for(let o=0;o{for(const r of i)this._removeStickyStyle(r,e)})}updateStickyColumns(n,e,i,r=!0){if(!n.length||!this._isBrowser||!e.some(h=>h)&&!i.some(h=>h))return void(this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:[]}),this._positionListener.stickyEndColumnsUpdated({sizes:[]})));const o=n[0],s=o.children.length,a=this._getCellWidths(o,r),l=this._getStickyStartColumnPositions(a,e),c=this._getStickyEndColumnPositions(a,i),d=e.lastIndexOf(!0),u=i.indexOf(!0);this._coalescedStyleScheduler.schedule(()=>{const h="rtl"===this.direction,f=h?"right":"left",p=h?"left":"right";for(const g of n)for(let b=0;be[b]?g:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:-1===u?[]:a.slice(u).map((g,b)=>i[b+u]?g:null).reverse()}))})}stickRows(n,e,i){if(!this._isBrowser)return;const r="bottom"===i?n.slice().reverse():n,o="bottom"===i?e.slice().reverse():e,s=[],a=[],l=[];for(let d=0,u=0;d{for(let d=0;d{e.some(r=>!r)?this._removeStickyStyle(i,["bottom"]):this._addStickyStyle(i,"bottom",0,!1)})}_removeStickyStyle(n,e){for(const r of e)n.style[r]="",n.classList.remove(this._borderCellCss[r]);WP.some(r=>-1===e.indexOf(r)&&n.style[r])?n.style.zIndex=this._getCalculatedZIndex(n):(n.style.zIndex="",this._needsPositionStickyOnElement&&(n.style.position=""),n.classList.remove(this._stickCellCss))}_addStickyStyle(n,e,i,r){n.classList.add(this._stickCellCss),r&&n.classList.add(this._borderCellCss[e]),n.style[e]=`${i}px`,n.style.zIndex=this._getCalculatedZIndex(n),this._needsPositionStickyOnElement&&(n.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(n){const e={top:100,bottom:10,left:1,right:1};let i=0;for(const r of WP)n.style[r]&&(i+=e[r]);return i?`${i}`:""}_getCellWidths(n,e=!0){if(!e&&this._cachedCellWidths.length)return this._cachedCellWidths;const i=[],r=n.children;for(let o=0;o0;o--)e[o]&&(i[o]=r,r+=n[o]);return i}}const xw=new k("CDK_SPL");let fp=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(H))},t.\u0275dir=M({type:t,selectors:[["","rowOutlet",""]]}),t})(),mp=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(H))},t.\u0275dir=M({type:t,selectors:[["","headerRowOutlet",""]]}),t})(),pp=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(H))},t.\u0275dir=M({type:t,selectors:[["","footerRowOutlet",""]]}),t})(),gp=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i}}return t.\u0275fac=function(e){return new(e||t)(m(it),m(H))},t.\u0275dir=M({type:t,selectors:[["","noDataRowOutlet",""]]}),t})(),_p=(()=>{class t{get trackBy(){return this._trackByFn}set trackBy(e){this._trackByFn=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(e){this._multiTemplateDataRows=Ve(e),this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}get fixedLayout(){return this._fixedLayout}set fixedLayout(e){this._fixedLayout=Ve(e),this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}constructor(e,i,r,o,s,a,l,c,d,u,h,f){this._differs=e,this._changeDetectorRef=i,this._elementRef=r,this._dir=s,this._platform=l,this._viewRepeater=c,this._coalescedStyleScheduler=d,this._viewportRuler=u,this._stickyPositioningListener=h,this._ngZone=f,this._onDestroy=new te,this._columnDefsByName=new Map,this._customColumnDefs=new Set,this._customRowDefs=new Set,this._customHeaderRowDefs=new Set,this._customFooterRowDefs=new Set,this._headerRowDefChanged=!0,this._footerRowDefChanged=!0,this._stickyColumnStylesNeedReset=!0,this._forceRecalculateCellWidths=!0,this._cachedRenderRowsMap=new Map,this.stickyCssClass="cdk-table-sticky",this.needsPositionStickyOnElement=!0,this._isShowingNoDataRow=!1,this._multiTemplateDataRows=!1,this._fixedLayout=!1,this.contentChanged=new Q,this.viewChange=new Tt({start:0,end:Number.MAX_VALUE}),o||this._elementRef.nativeElement.setAttribute("role","table"),this._document=a,this._isNativeHtmlTable="TABLE"===this._elementRef.nativeElement.nodeName}ngOnInit(){this._setupStickyStyler(),this._isNativeHtmlTable&&this._applyNativeTableSections(),this._dataDiffer=this._differs.find([]).create((e,i)=>this.trackBy?this.trackBy(i.dataIndex,i.data):i),this._viewportRuler.change().pipe(ze(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentChecked(){this._cacheRowDefs(),this._cacheColumnDefs();const i=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||i,this._forceRecalculateCellWidths=i,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}ngOnDestroy(){[this._rowOutlet.viewContainer,this._headerRowOutlet.viewContainer,this._footerRowOutlet.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(e=>{e.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),Rm(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();const e=this._dataDiffer.diff(this._renderRows);if(!e)return this._updateNoDataRow(),void this.contentChanged.next();const i=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(e,i,(r,o,s)=>this._getEmbeddedViewArgs(r.item,s),r=>r.item.data,r=>{1===r.operation&&r.context&&this._renderCellTemplateForItem(r.record.item.rowDef,r.context)}),this._updateRowIndexContext(),e.forEachIdentityChange(r=>{i.get(r.currentIndex).context.$implicit=r.item.data}),this._updateNoDataRow(),this._ngZone&&Z.isInAngularZone()?this._ngZone.onStable.pipe(Yt(1),ze(this._onDestroy)).subscribe(()=>{this.updateStickyColumnStyles()}):this.updateStickyColumnStyles(),this.contentChanged.next()}addColumnDef(e){this._customColumnDefs.add(e)}removeColumnDef(e){this._customColumnDefs.delete(e)}addRowDef(e){this._customRowDefs.add(e)}removeRowDef(e){this._customRowDefs.delete(e)}addHeaderRowDef(e){this._customHeaderRowDefs.add(e),this._headerRowDefChanged=!0}removeHeaderRowDef(e){this._customHeaderRowDefs.delete(e),this._headerRowDefChanged=!0}addFooterRowDef(e){this._customFooterRowDefs.add(e),this._footerRowDefChanged=!0}removeFooterRowDef(e){this._customFooterRowDefs.delete(e),this._footerRowDefChanged=!0}setNoDataRow(e){this._customNoDataRow=e}updateStickyHeaderRowStyles(){const e=this._getRenderedRows(this._headerRowOutlet),r=this._elementRef.nativeElement.querySelector("thead");r&&(r.style.display=e.length?"":"none");const o=this._headerRowDefs.map(s=>s.sticky);this._stickyStyler.clearStickyPositioning(e,["top"]),this._stickyStyler.stickRows(e,o,"top"),this._headerRowDefs.forEach(s=>s.resetStickyChanged())}updateStickyFooterRowStyles(){const e=this._getRenderedRows(this._footerRowOutlet),r=this._elementRef.nativeElement.querySelector("tfoot");r&&(r.style.display=e.length?"":"none");const o=this._footerRowDefs.map(s=>s.sticky);this._stickyStyler.clearStickyPositioning(e,["bottom"]),this._stickyStyler.stickRows(e,o,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,o),this._footerRowDefs.forEach(s=>s.resetStickyChanged())}updateStickyColumnStyles(){const e=this._getRenderedRows(this._headerRowOutlet),i=this._getRenderedRows(this._rowOutlet),r=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...e,...i,...r],["left","right"]),this._stickyColumnStylesNeedReset=!1),e.forEach((o,s)=>{this._addStickyColumnStyles([o],this._headerRowDefs[s])}),this._rowDefs.forEach(o=>{const s=[];for(let a=0;a{this._addStickyColumnStyles([o],this._footerRowDefs[s])}),Array.from(this._columnDefsByName.values()).forEach(o=>o.resetStickyChanged())}_getAllRenderRows(){const e=[],i=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let r=0;r{const a=r&&r.has(s)?r.get(s):[];if(a.length){const l=a.shift();return l.dataIndex=i,l}return{data:e,rowDef:s,dataIndex:i}})}_cacheColumnDefs(){this._columnDefsByName.clear(),bp(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(i=>{this._columnDefsByName.has(i.name),this._columnDefsByName.set(i.name,i)})}_cacheRowDefs(){this._headerRowDefs=bp(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=bp(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=bp(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);const e=this._rowDefs.filter(i=>!i.when);this._defaultRowDef=e[0]}_renderUpdatedColumns(){const e=(s,a)=>s||!!a.getColumnsDiff(),i=this._rowDefs.reduce(e,!1);i&&this._forceRenderDataRows();const r=this._headerRowDefs.reduce(e,!1);r&&this._forceRenderHeaderRows();const o=this._footerRowDefs.reduce(e,!1);return o&&this._forceRenderFooterRows(),i||r||o}_switchDataSource(e){this._data=[],Rm(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),e||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear()),this._dataSource=e}_observeRenderChanges(){if(!this.dataSource)return;let e;Rm(this.dataSource)?e=this.dataSource.connect(this):Ic(this.dataSource)?e=this.dataSource:Array.isArray(this.dataSource)&&(e=j(this.dataSource)),this._renderChangeSubscription=e.pipe(ze(this._onDestroy)).subscribe(i=>{this._data=i||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((e,i)=>this._renderRow(this._headerRowOutlet,e,i)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((e,i)=>this._renderRow(this._footerRowOutlet,e,i)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(e,i){const r=Array.from(i.columns||[]).map(a=>this._columnDefsByName.get(a)),o=r.map(a=>a.sticky),s=r.map(a=>a.stickyEnd);this._stickyStyler.updateStickyColumns(e,o,s,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(e){const i=[];for(let r=0;r!o.when||o.when(i,e));else{let o=this._rowDefs.find(s=>s.when&&s.when(i,e))||this._defaultRowDef;o&&r.push(o)}return r}_getEmbeddedViewArgs(e,i){return{templateRef:e.rowDef.template,context:{$implicit:e.data},index:i}}_renderRow(e,i,r,o={}){const s=e.viewContainer.createEmbeddedView(i.template,o,r);return this._renderCellTemplateForItem(i,o),s}_renderCellTemplateForItem(e,i){for(let r of this._getCellTemplates(e))ao.mostRecentCellOutlet&&ao.mostRecentCellOutlet._viewContainer.createEmbeddedView(r,i);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){const e=this._rowOutlet.viewContainer;for(let i=0,r=e.length;i{const r=this._columnDefsByName.get(i);return e.extractCellTemplate(r)}):[]}_applyNativeTableSections(){const e=this._document.createDocumentFragment(),i=[{tag:"thead",outlets:[this._headerRowOutlet]},{tag:"tbody",outlets:[this._rowOutlet,this._noDataRowOutlet]},{tag:"tfoot",outlets:[this._footerRowOutlet]}];for(const r of i){const o=this._document.createElement(r.tag);o.setAttribute("role","rowgroup");for(const s of r.outlets)o.appendChild(s.elementRef.nativeElement);e.appendChild(o)}this._elementRef.nativeElement.appendChild(e)}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){const e=(i,r)=>i||r.hasStickyChanged();this._headerRowDefs.reduce(e,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(e,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(e,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){this._stickyStyler=new Lte(this._isNativeHtmlTable,this.stickyCssClass,this._dir?this._dir.value:"ltr",this._coalescedStyleScheduler,this._platform.isBrowser,this.needsPositionStickyOnElement,this._stickyPositioningListener),(this._dir?this._dir.change:j()).pipe(ze(this._onDestroy)).subscribe(i=>{this._stickyStyler.direction=i,this.updateStickyColumnStyles()})}_getOwnDefs(e){return e.filter(i=>!i._table||i._table===this)}_updateNoDataRow(){const e=this._customNoDataRow||this._noDataRow;if(!e)return;const i=0===this._rowOutlet.viewContainer.length;if(i===this._isShowingNoDataRow)return;const r=this._noDataRowOutlet.viewContainer;if(i){const o=r.createEmbeddedView(e.templateRef),s=o.rootNodes[0];1===o.rootNodes.length&&s?.nodeType===this._document.ELEMENT_NODE&&(s.setAttribute("role","row"),s.classList.add(e._contentClassName))}else r.clear();this._isShowingNoDataRow=i}}return t.\u0275fac=function(e){return new(e||t)(m(bi),m(tn),m(H),Ar("role"),m(Rn,8),m(ge),m(pt),m(Md),m(_w),m(As),m(xw,12),m(Z,8))},t.\u0275cmp=$({type:t,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(e,i,r){if(1&e&&(Ze(r,hp,5),Ze(r,so,5),Ze(r,up,5),Ze(r,Bd,5),Ze(r,Vd,5)),2&e){let o;J(o=ee())&&(i._noDataRow=o.first),J(o=ee())&&(i._contentColumnDefs=o),J(o=ee())&&(i._contentRowDefs=o),J(o=ee())&&(i._contentHeaderRowDefs=o),J(o=ee())&&(i._contentFooterRowDefs=o)}},viewQuery:function(e,i){if(1&e&&(Ge(fp,7),Ge(mp,7),Ge(pp,7),Ge(gp,7)),2&e){let r;J(r=ee())&&(i._rowOutlet=r.first),J(r=ee())&&(i._headerRowOutlet=r.first),J(r=ee())&&(i._footerRowOutlet=r.first),J(r=ee())&&(i._noDataRowOutlet=r.first)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(e,i){2&e&&fe("cdk-table-fixed-layout",i.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:"multiTemplateDataRows",fixedLayout:"fixedLayout"},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],features:[ie([{provide:xl,useExisting:t},{provide:Md,useClass:mR},{provide:_w,useClass:GP},{provide:xw,useValue:null}])],ngContentSelectors:kte,decls:6,vars:0,consts:[["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(e,i){1&e&&(Bt(Ste),Se(0),Se(1,1),Vn(2,0)(3,1)(4,2)(5,3))},dependencies:[fp,mp,pp,gp],styles:[".cdk-table-fixed-layout{table-layout:fixed}"],encapsulation:2}),t})();function bp(t,n){return t.concat(Array.from(n))}let Vte=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[cw]}),t})();const jte=[[["caption"]],[["colgroup"],["col"]]],Hte=["caption","colgroup, col"];let vp=(()=>{class t extends _p{constructor(){super(...arguments),this.stickyCssClass="mat-mdc-table-sticky",this.needsPositionStickyOnElement=!1}ngOnInit(){super.ngOnInit(),this._isNativeHtmlTable&&this._elementRef.nativeElement.querySelector("tbody").classList.add("mdc-data-table__content")}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=$({type:t,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(e,i){2&e&&fe("mdc-table-fixed-layout",i.fixedLayout)},exportAs:["matTable"],features:[ie([{provide:_p,useExisting:t},{provide:xl,useExisting:t},{provide:_w,useClass:GP},{provide:Md,useClass:mR},{provide:xw,useValue:null}]),F],ngContentSelectors:Hte,decls:6,vars:0,consts:[["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(e,i){1&e&&(Bt(jte),Se(0),Se(1,1),Vn(2,0)(3,1)(4,2)(5,3))},dependencies:[fp,mp,pp,gp],styles:[".mdc-data-table{border-radius:var(--mdc-shape-medium, 4px);border-width:1px;border-style:solid}.mdc-data-table .mdc-data-table__header-cell:first-child{border-top-left-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:first-child,.mdc-data-table .mdc-data-table__header-cell:first-child[dir=rtl]{border-top-right-radius:var(--mdc-shape-medium, 4px);border-top-left-radius:0}.mdc-data-table .mdc-data-table__header-cell:last-child{border-top-right-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:last-child,.mdc-data-table .mdc-data-table__header-cell:last-child[dir=rtl]{border-top-left-radius:var(--mdc-shape-medium, 4px);border-top-right-radius:0}.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child{border-bottom-left-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child,.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child[dir=rtl]{border-bottom-right-radius:var(--mdc-shape-medium, 4px);border-bottom-left-radius:0}.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child{border-bottom-right-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child,.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child[dir=rtl]{border-bottom-left-radius:var(--mdc-shape-medium, 4px);border-bottom-right-radius:0}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-width:1px;border-bottom-style:solid}.mdc-data-table__pagination{border-top-width:1px;border-top-style:solid}.mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:none}.mdc-data-table__row{height:52px}.mdc-data-table__pagination{min-height:52px}.mdc-data-table__header-row{height:56px}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px 0 16px}.mdc-data-table__header-cell--checkbox,.mdc-data-table__cell--checkbox{padding-left:4px;padding-right:0}[dir=rtl] .mdc-data-table__header-cell--checkbox,[dir=rtl] .mdc-data-table__cell--checkbox,.mdc-data-table__header-cell--checkbox[dir=rtl],.mdc-data-table__cell--checkbox[dir=rtl]{padding-left:0;padding-right:4px}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__cell--checkbox{width:1px}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--checkbox{width:1px}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__sort-icon-button{width:28px;height:28px;padding:2px;transform:rotate(0.0001deg);margin-left:4px;margin-right:0;opacity:0}.mdc-data-table__sort-icon-button .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:28px;height:28px;margin-top:0px;margin-bottom:0px;margin-right:0px;margin-left:0px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:28px;left:50%;width:28px;transform:translate(-50%, -50%)}[dir=rtl] .mdc-data-table__sort-icon-button,.mdc-data-table__sort-icon-button[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__header-cell--sorted-descending .mdc-data-table__sort-icon-button{transform:rotate(-180deg)}.mdc-data-table__sort-icon-button:focus,.mdc-data-table__header-cell:hover .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button{opacity:1}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__header-cell--with-sort{cursor:pointer}.mdc-data-table__sort-status-label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.mdc-data-table--sticky-header .mdc-data-table__header-cell{position:sticky;top:0;z-index:1}.mdc-data-table{-webkit-overflow-scrolling:touch;display:inline-flex;flex-direction:column;box-sizing:border-box;position:relative}.mdc-data-table__table-container{-webkit-overflow-scrolling:touch;overflow-x:auto;width:100%}.mdc-data-table__table{min-width:100%;border:0;white-space:nowrap;border-spacing:0;table-layout:fixed}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--checkbox{width:1px}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__sort-icon-button{width:28px;height:28px;padding:2px;transform:rotate(0.0001deg);margin-left:4px;margin-right:0;opacity:0}.mdc-data-table__sort-icon-button .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:28px;height:28px;margin-top:0px;margin-bottom:0px;margin-right:0px;margin-left:0px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:28px;left:50%;width:28px;transform:translate(-50%, -50%)}[dir=rtl] .mdc-data-table__sort-icon-button,.mdc-data-table__sort-icon-button[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__header-cell--sorted-descending .mdc-data-table__sort-icon-button{transform:rotate(-180deg)}.mdc-data-table__sort-icon-button:focus,.mdc-data-table__header-cell:hover .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button{opacity:1}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__header-cell--with-sort{cursor:pointer}.mdc-data-table__sort-status-label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__cell--checkbox{width:1px}.mdc-data-table__pagination{box-sizing:border-box;display:flex;justify-content:flex-end}.mdc-data-table__pagination-trailing{margin-left:4px;margin-right:0;align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end}[dir=rtl] .mdc-data-table__pagination-trailing,.mdc-data-table__pagination-trailing[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__pagination-navigation{align-items:center;display:flex}.mdc-data-table__pagination-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__pagination-button .mdc-button__icon,.mdc-data-table__pagination-button .mdc-button__icon[dir=rtl]{transform:rotate(180deg)}[dir=rtl] .mdc-data-table__pagination-button,.mdc-data-table__pagination-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__pagination-total{margin-left:14px;margin-right:36px;white-space:nowrap}[dir=rtl] .mdc-data-table__pagination-total,.mdc-data-table__pagination-total[dir=rtl]{margin-left:36px;margin-right:14px}.mdc-data-table__pagination-rows-per-page{margin-left:0;margin-right:22px;align-items:center;display:inline-flex}[dir=rtl] .mdc-data-table__pagination-rows-per-page,.mdc-data-table__pagination-rows-per-page[dir=rtl]{margin-left:22px;margin-right:0}.mdc-data-table__pagination-rows-per-page-label{margin-left:0;margin-right:12px;white-space:nowrap}[dir=rtl] .mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__pagination-rows-per-page-label[dir=rtl]{margin-left:12px;margin-right:0}.mdc-data-table__pagination-rows-per-page-select{min-width:var(--mdc-menu-min-width, 80px);margin:8px 0}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor{width:100%;min-width:80px}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor{height:36px}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above{font-size:.75rem}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-data-table__pagination-rows-per-page-select .mdc-select__dropdown-icon{width:20px;height:20px}.mdc-data-table__pagination-rows-per-page-select.mdc-select--outlined .mdc-select__anchor :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 56px)}.mdc-data-table__pagination-rows-per-page-select .mdc-list-item.mdc-list-item--with-one-line{height:36px}.mdc-data-table__progress-indicator{display:none;position:absolute;width:100%}.mdc-data-table--in-progress .mdc-data-table__progress-indicator{display:block}.mdc-data-table__scrim{background-color:var(--mdc-theme-surface, #fff);height:100%;opacity:.32;position:absolute;top:0;width:100%}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table-sticky{position:sticky !important}.mat-mdc-table{table-layout:auto;white-space:normal}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table .mat-mdc-row:hover,.mat-mdc-table .mat-mdc-footer-row:hover{background-color:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}"],encapsulation:2}),t})(),jd=(()=>{class t extends Cl{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matCellDef",""]],features:[ie([{provide:Cl,useExisting:t}]),F]}),t})(),Hd=(()=>{class t extends Dl{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matHeaderCellDef",""]],features:[ie([{provide:Dl,useExisting:t}]),F]}),t})(),zd=(()=>{class t extends so{get name(){return this._name}set name(e){this._setNameInput(e)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matColumnDef",""]],inputs:{sticky:"sticky",name:["matColumnDef","name"]},features:[ie([{provide:so,useExisting:t},{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:t}]),F]}),t})(),Ud=(()=>{class t extends pw{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],features:[F]}),t})(),$d=(()=>{class t extends gw{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],features:[F]}),t})(),YP=(()=>{class t extends Bd{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matHeaderRowDef",""]],inputs:{columns:["matHeaderRowDef","columns"],sticky:["matHeaderRowDefSticky","sticky"]},features:[ie([{provide:Bd,useExisting:t}]),F]}),t})(),yp=(()=>{class t extends up{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matRowDef",""]],inputs:{columns:["matRowDefColumns","columns"],when:["matRowDefWhen","when"]},features:[ie([{provide:up,useExisting:t}]),F]}),t})(),ZP=(()=>{class t extends vw{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=$({type:t,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],features:[ie([{provide:vw,useExisting:t}]),F],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,i){1&e&&Vn(0,0)},dependencies:[ao],encapsulation:2}),t})(),wp=(()=>{class t extends ww{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=$({type:t,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],features:[ie([{provide:ww,useExisting:t}]),F],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,i){1&e&&Vn(0,0)},dependencies:[ao],encapsulation:2}),t})(),Cw=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Et,Vte,Et]}),t})();class Qte extends fR{get data(){return this._data.value}set data(n){n=Array.isArray(n)?n:[],this._data.next(n),this._renderChangesSubscription||this._filterData(n)}get filter(){return this._filter.value}set filter(n){this._filter.next(n),this._renderChangesSubscription||this._filterData(this.data)}get sort(){return this._sort}set sort(n){this._sort=n,this._updateChangeSubscription()}get paginator(){return this._paginator}set paginator(n){this._paginator=n,this._updateChangeSubscription()}constructor(n=[]){super(),this._renderData=new Tt([]),this._filter=new Tt(""),this._internalPageChanges=new te,this._renderChangesSubscription=null,this.sortingDataAccessor=(e,i)=>{const r=e[i];if(kO(r)){const o=Number(r);return o<9007199254740991?o:r}return r},this.sortData=(e,i)=>{const r=i.active,o=i.direction;return r&&""!=o?e.sort((s,a)=>{let l=this.sortingDataAccessor(s,r),c=this.sortingDataAccessor(a,r);const d=typeof l,u=typeof c;d!==u&&("number"===d&&(l+=""),"number"===u&&(c+=""));let h=0;return null!=l&&null!=c?l>c?h=1:l{const r=Object.keys(e).reduce((s,a)=>s+e[a]+"\u25ec","").toLowerCase(),o=i.trim().toLowerCase();return-1!=r.indexOf(o)},this._data=new Tt(n),this._updateChangeSubscription()}_updateChangeSubscription(){const n=this._sort?Gn(this._sort.sortChange,this._sort.initialized):j(null),e=this._paginator?Gn(this._paginator.page,this._internalPageChanges,this._paginator.initialized):j(null),r=Ba([this._data,this._filter]).pipe(B(([a])=>this._filterData(a))),o=Ba([r,n]).pipe(B(([a])=>this._orderData(a))),s=Ba([o,e]).pipe(B(([a])=>this._pageData(a)));this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=s.subscribe(a=>this._renderData.next(a))}_filterData(n){return this.filteredData=null==this.filter||""===this.filter?n:n.filter(e=>this.filterPredicate(e,this.filter)),this.paginator&&this._updatePaginator(this.filteredData.length),this.filteredData}_orderData(n){return this.sort?this.sortData(n.slice(),this.sort):n}_pageData(n){if(!this.paginator)return n;const e=this.paginator.pageIndex*this.paginator.pageSize;return n.slice(e,e+this.paginator.pageSize)}_updatePaginator(n){Promise.resolve().then(()=>{const e=this.paginator;if(e&&(e.length=n,e.pageIndex>0)){const i=Math.ceil(e.length/e.pageSize)-1||0,r=Math.min(e.pageIndex,i);r!==e.pageIndex&&(e.pageIndex=r,this._internalPageChanges.next())}})}connect(){return this._renderChangesSubscription||this._updateChangeSubscription(),this._renderData}disconnect(){this._renderChangesSubscription?.unsubscribe(),this._renderChangesSubscription=null}}class Jte extends Qte{}function ene(t,n){1&t&&(x(0,"th",12),N(1,"Item Number"),D())}function tne(t,n){if(1&t&&(x(0,"td",13),N(1),D()),2&t){const e=n.index;E(1),nt("",e+1,".")}}function nne(t,n){1&t&&(x(0,"th",12),N(1,"Title and Link"),D())}function ine(t,n){if(1&t&&(x(0,"td",13),N(1),G(2,"br"),x(3,"a",14),N(4),D()()),2&t){const e=n.$implicit;E(1),nt(" ",e.title," "),E(2),S("href",e.link,Fi),E(1),Jt(e.label)}}function rne(t,n){1&t&&G(0,"tr",15)}const one=function(){return["link","title"]};function sne(t,n){1&t&&(x(0,"table",5)(1,"caption",6),N(2," Source List Table with Title and Links "),D(),Ln(3,7),O(4,ene,2,0,"th",8),O(5,tne,2,1,"td",9),Bn(),Ln(6,10),O(7,nne,2,0,"th",8),O(8,ine,5,3,"td",9),Bn(),O(9,rne,1,0,"tr",11),D()),2&t&&(S("dataSource",W().sources),E(9),S("matRowDefColumns",q_(2,one)))}function ane(t,n){if(1&t){const e=nr();x(0,"hra-empty-biomarker",16),re("collaborateClick",function(){return fi(e),mi(W().collaborateClick.emit())}),D()}if(2&t){const e=W();S("collaborateText",e.collaborateText)("message",e.message)}}let lne=(()=>{var t;class n{constructor(){this.sources=[],this.collaborateText="",this.message="",this.showTable=!0,this.collaborateClick=new Q}toggleTable(){this.showTable=!this.showTable}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-source-list"]],inputs:{sources:"sources",collaborateText:"collaborateText",message:"message"},outputs:{collaborateClick:"collaborateClick"},standalone:!0,features:[Be],decls:7,vars:5,consts:[[1,"toggle",3,"click"],[1,"end"],[1,"table-content"],["mat-table","",3,"dataSource",4,"ngIf"],[3,"collaborateText","message","collaborateClick",4,"ngIf"],["mat-table","",3,"dataSource"],[1,"sr-only"],["matColumnDef","link"],["class","sr-only","mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","title"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell","",1,"sr-only"],["mat-cell",""],["target","_blank",3,"href"],["mat-row",""],[3,"collaborateText","message","collaborateClick"]],template:function(i,r){1&i&&(x(0,"hra-label-box",0),re("click",function(){return r.toggleTable()}),N(1," Source Data "),x(2,"mat-icon",1),N(3),D()(),x(4,"div",2),O(5,sne,10,3,"table",3),O(6,ane,1,2,"hra-empty-biomarker",4),D()),2&i&&(E(3),nt(" ",r.showTable?"keyboard_arrow_down":"keyboard_arrow_up"," "),E(1),fe("hidden",!r.showTable),E(1),S("ngIf",0!==r.sources.length),E(1),S("ngIf",0===r.sources.length))},dependencies:[Re,An,Cw,vp,Hd,zd,jd,yp,Ud,$d,wp,br,to,Wm,zP],styles:["[_nghost-%COMP%]{display:block;height:100%}[_nghost-%COMP%] .sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}[_nghost-%COMP%] .toggle[_ngcontent-%COMP%]{display:flex;align-items:center;height:3.5rem;grid-area:source-list-header;color:var(--dark-primary-text);border-top:.063rem solid #d3d3d3;border-bottom:.063rem solid #d3d3d3}[_nghost-%COMP%] .table-content[_ngcontent-%COMP%]{height:calc(100% - 3.5rem);overflow:auto}[_nghost-%COMP%] .table-content.hidden[_ngcontent-%COMP%]{display:none}[_nghost-%COMP%] .table-content[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{height:100%}[_nghost-%COMP%] .table-content[_ngcontent-%COMP%] .mat-mdc-cell[_ngcontent-%COMP%]{vertical-align:top;border:none;padding:.25rem .875rem;font-size:1rem}[_nghost-%COMP%] .table-content[_ngcontent-%COMP%] .mdc-data-table__content{display:block;padding:1rem 0rem}"],changeDetection:0}),n})(),cne=(()=>{var t;class n{constructor(){this.color="",this.size=0}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-biomarker-table-data-icon"]],hostVars:4,hostBindings:function(i,r){2&i&&ir("background-color",r.color)("--radius",r.size,"rem")},inputs:{color:"color",size:"size"},standalone:!0,features:[Be],decls:0,vars:0,template:function(i,r){},dependencies:[Re],styles:["[_nghost-%COMP%]{display:block;border-radius:50%;--radius: .625rem;width:var(--radius);height:var(--radius)}"],changeDetection:0}),n})();function dne(t,n){1&t&&(x(0,"div",2),N(1,"No data"),D())}function une(t,n){1&t&&(x(0,"th",11),N(1,"Item Label"),D())}function hne(t,n){if(1&t&&(x(0,"td",12),N(1),D()),2&t){const e=n.$implicit;fe("no-border",!e.isLastItem),E(1),nt(" ",e.data.label," ")}}function fne(t,n){1&t&&(x(0,"th",11),N(1,"Item Value"),D())}function mne(t,n){if(1&t&&(x(0,"td",13),N(1),D()),2&t){const e=n.$implicit;fe("no-border",!e.isLastItem),E(1),nt(" ",e.data.value," ")}}function pne(t,n){1&t&&G(0,"tr",14)}const gne=function(){return["label","value"]};function _ne(t,n){1&t&&(x(0,"table",3)(1,"caption",4),N(2," Biomarker Table Data Card "),D(),Ln(3,5),O(4,une,2,0,"th",6),O(5,hne,2,3,"td",7),Bn(),Ln(6,8),O(7,fne,2,0,"th",6),O(8,mne,2,3,"td",9),Bn(),O(9,pne,1,0,"tr",10),D()),2&t&&(S("dataSource",W().sectionItems),E(9),S("matRowDefColumns",q_(2,gne)))}let bne=(()=>{var t;class n{constructor(){this.data=[],this.sectionItems=[]}ngOnChanges(i){"data"in i&&this.updateSectionItems()}updateSectionItems(){const i=[];this.data.forEach((r,o)=>{r.forEach((s,a)=>{i.push({data:s,section:o,isLastItem:a===r.length-1})})}),this.sectionItems=i}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-biomarker-table-data-card"]],inputs:{data:"data"},standalone:!0,features:[st,Be],decls:2,vars:2,consts:[["class","no-data",4,"ngIf"],["mat-table","",3,"dataSource",4,"ngIf"],[1,"no-data"],["mat-table","",3,"dataSource"],[1,"sr-only"],["matColumnDef","label"],["class","sr-only","mat-header-cell","",4,"matHeaderCellDef"],["class","label","mat-cell","",3,"no-border",4,"matCellDef"],["matColumnDef","value"],["class","value","mat-cell","",3,"no-border",4,"matCellDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell","",1,"sr-only"],["mat-cell","",1,"label"],["mat-cell","",1,"value"],["mat-row",""]],template:function(i,r){1&i&&(O(0,dne,2,0,"div",0),O(1,_ne,10,3,"table",1)),2&i&&(S("ngIf",0===r.sectionItems.length),E(1),S("ngIf",r.sectionItems.length>0))},dependencies:[Re,An,Cw,vp,Hd,zd,jd,yp,Ud,$d,wp],styles:["[_nghost-%COMP%]{display:flex;padding:1rem 1.5rem;border-radius:.5rem;box-shadow:.063rem .125rem 1rem .125rem #00000029;background-color:var(--palette-primary-contrast-500-rgb)}[_nghost-%COMP%] .mat-mdc-cell[_ngcontent-%COMP%]{padding:.25rem 0rem}[_nghost-%COMP%] .mat-mdc-row[_ngcontent-%COMP%]{height:-moz-fit-content;height:fit-content}[_nghost-%COMP%] .no-border[_ngcontent-%COMP%]{border:none}[_nghost-%COMP%] .label[_ngcontent-%COMP%]{color:#243142;padding-right:3rem}[_nghost-%COMP%] .value[_ngcontent-%COMP%]{color:#4c5a69}[_nghost-%COMP%] .sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}"],changeDetection:0}),n})();function vne(t,n){1&t&&(x(0,"th",13),N(1,"Cell Type"),D())}function yne(t,n){if(1&t&&(x(0,"td",14),N(1),D()),2&t){const e=n.$implicit,i=W();fe("highlight",e[0]===i.hightlightedCellName),E(1),nt(" ",e[0]," ")}}function wne(t,n){1&t&&(x(0,"th",15),N(1,"Cell Count"),D())}function xne(t,n){if(1&t&&(x(0,"td",16),N(1),wa(2,"number"),D()),2&t){const e=n.$implicit,i=W();fe("highlight",e[0]===i.hightlightedCellName),E(1),nt(" ",void 0!==e[1]?xa(2,3,e[1]):"no data"," ")}}function Cne(t,n){if(1&t&&(x(0,"th",20),N(1),D()),2&t){const e=W().$implicit;W(),S("hraHover",Pt(13))("hraHoverData",e),E(1),nt(" ",e," ")}}const KP=function(t,n){return[t,n]};function Dne(t,n){if(1&t&&G(0,"hra-biomarker-table-data-icon",24),2&t){const e=W().$implicit,i=W().index,r=W(),o=Pt(15);S("color",r.getColor(e[i+2].color))("size",r.getSize(e[i+2].size))("hraHover",o)("hraHoverData",ch(4,KP,i+2,e))}}function Ene(t,n){if(1&t&&G(0,"div",25),2&t){const e=W().$implicit,i=W().index;W(),S("hraHover",Pt(15))("hraHoverData",ch(2,KP,i+2,e))}}function Sne(t,n){if(1&t&&(x(0,"td",21),O(1,Dne,1,7,"hra-biomarker-table-data-icon",22),O(2,Ene,1,5,"ng-template",null,23,ei),D()),2&t){const e=n.$implicit,i=Pt(3),r=W().index,o=W();fe("highlight",e[0]===o.hightlightedCellName),E(1),S("ngIf",void 0!==e[r+2])("ngIfElse",i)}}function kne(t,n){1&t&&(Ln(0,17),O(1,Cne,2,3,"th",18),O(2,Sne,4,4,"td",19),Bn()),2&t&&S("matColumnDef",n.$implicit)}function Mne(t,n){1&t&&G(0,"tr",26)}function Tne(t,n){1&t&&G(0,"tr",27)}function Ane(t,n){if(1&t&&(x(0,"div",28),N(1),D()),2&t){const e=n.$implicit;E(1),nt(" ",e," ")}}function Ine(t,n){if(1&t&&G(0,"hra-biomarker-table-data-card",29),2&t){const e=n.$implicit;S("data",W().getHoverData(e))}}let One=(()=>{var t;class n{constructor(){this.tissueInfo={id:"",label:""},this.columns=[],this.data=[],this.gradient=[],this.sizes=[],this.hightlightedCellName="",this.dataSource=new Jte([])}get columnsWithTypeAndCount(){return["type","count",...this.columns]}ngOnChanges(i){"data"in i&&(this.dataSource.data=this.data)}lerp(i,r,o){return r*(1-i)+o*i}hex2rgb(i){return[parseInt(i.slice(1,3),16),parseInt(i.slice(3,5),16),parseInt(i.slice(5,7),16)]}getMinMaxColor(i){const r=this.gradient.findIndex((a,l,c)=>i>=a.percentage&&i<=c[l+1]?.percentage);return{minColor:this.hex2rgb(this.gradient[r]?.color??this.gradient[0].color),maxColor:this.hex2rgb(this.gradient[r+1]?.color??this.gradient[this.gradient.length-1].color)}}getMinMaxSize(i){const r=this.sizes.findIndex((a,l,c)=>i>=parseFloat(a.label)/100&&i<=parseFloat(c[l+1]?.label)/100);return{minSize:this.sizes[r]?.radius??this.sizes[0].radius,maxSize:this.sizes[r+1]?.radius??this.sizes[this.sizes.length-1].radius}}getColor(i){const{minColor:r,maxColor:o}=this.getMinMaxColor(i);return"#"+r.map((s,a)=>this.lerp(i,s,o[a])).map(s=>Math.round(s).toString(16)).join("")}getSize(i){const{minSize:r,maxSize:o}=this.getMinMaxSize(i);return this.lerp(i,r,o)}getHoverData([i,r]){if(void 0===r[i])return[];const{tissueInfo:{id:o,label:s}}=this,{data:{cell:a,biomarker:l,meanExpression:c,dataset_count:d}}=r[i];return[[{label:"Functional Tissue Unit Name",value:s},{label:"Uberon ID",value:o},{label:"#Datasets",value:`${d??0}`}],[{label:"Cell Type Name",value:r[0]},{label:"CL ID",value:a},{label:"Number of Cells",value:`${r[1]}`}],[{label:"Gene Name",value:this.columns[i-2]},{label:"HGNC ID",value:l},{label:"Mean Expression Value",value:c.toFixed(6)}]]}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-biomarker-table"]],inputs:{tissueInfo:"tissueInfo",columns:"columns",data:"data",gradient:"gradient",sizes:"sizes",hightlightedCellName:"hightlightedCellName"},standalone:!0,features:[st,Be],decls:16,vars:4,consts:[["mat-table","",1,"table",3,"dataSource"],[1,"sr-only"],["matColumnDef","type"],["mat-header-cell","",4,"matHeaderCellDef"],["class","type","mat-cell","",3,"highlight",4,"matCellDef"],["matColumnDef","count"],["class","count","mat-header-cell","",4,"matHeaderCellDef"],["class","count","mat-cell","",3,"highlight",4,"matCellDef"],[3,"matColumnDef",4,"ngFor","ngForOf"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["columnHover",""],["dataHover",""],["mat-header-cell",""],["mat-cell","",1,"type"],["mat-header-cell","",1,"count"],["mat-cell","",1,"count"],[3,"matColumnDef"],["class","icon-header","mat-header-cell","",3,"hraHover","hraHoverData",4,"matHeaderCellDef"],["class","icon-cell","mat-cell","",3,"highlight",4,"matCellDef"],["mat-header-cell","",1,"icon-header",3,"hraHover","hraHoverData"],["mat-cell","",1,"icon-cell"],["class","icon",3,"color","size","hraHover","hraHoverData",4,"ngIf","ngIfElse"],["emptyCell",""],[1,"icon",3,"color","size","hraHover","hraHoverData"],[1,"empty",3,"hraHover","hraHoverData"],["mat-header-row",""],["mat-row",""],[1,"biomarker-table-hover","full-column-name"],[3,"data"]],template:function(i,r){1&i&&(x(0,"table",0)(1,"caption",1),N(2," Cell type table by Biomarker "),D(),Ln(3,2),O(4,vne,2,0,"th",3),O(5,yne,2,3,"td",4),Bn(),Ln(6,5),O(7,wne,2,0,"th",6),O(8,xne,3,5,"td",7),Bn(),O(9,kne,3,1,"ng-container",8),O(10,Mne,1,0,"tr",9),O(11,Tne,1,0,"tr",10),D(),O(12,Ane,2,1,"ng-template",null,11,ei),O(14,Ine,1,1,"ng-template",null,12,ei)),2&i&&(S("dataSource",r.dataSource),E(9),S("ngForOf",r.columns),E(1),S("matHeaderRowDef",r.columnsWithTypeAndCount),E(1),S("matRowDefColumns",r.columnsWithTypeAndCount))},dependencies:[Re,cs,An,DM,Cw,vp,Hd,YP,zd,jd,yp,Ud,$d,ZP,wp,cne,HP,bne],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}[_nghost-%COMP%] .table[_ngcontent-%COMP%]{margin-left:-1px}[_nghost-%COMP%] .table[_ngcontent-%COMP%] .highlight[_ngcontent-%COMP%]{background-color:#f8f9fa}[_nghost-%COMP%] .table[_ngcontent-%COMP%] td.type[_ngcontent-%COMP%]{text-transform:lowercase}[_nghost-%COMP%] .table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background-color:#fff7f8;color:#59264d;text-align:right}[_nghost-%COMP%] .table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:.063rem solid #d3d3d3;border-left:.063rem solid #d3d3d3}[_nghost-%COMP%] .table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:first-child td[_ngcontent-%COMP%]{border-top:0rem solid #d3d3d3}[_nghost-%COMP%] tr[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]:first-child{text-align:left;padding:0 2rem}[_nghost-%COMP%] tr[_ngcontent-%COMP%] > th[_ngcontent-%COMP%]:first-child{text-align:left;padding:0 2rem}[_nghost-%COMP%] tr[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]:last-of-type{border-right:.063rem solid #d3d3d3}[_nghost-%COMP%] tr[_ngcontent-%COMP%] > th[_ngcontent-%COMP%]:last-of-type{border-right:.063rem solid #d3d3d3;border-left:solid #d3d3d3 1px}[_nghost-%COMP%] .type[_ngcontent-%COMP%]{height:3rem;max-width:26rem;min-width:17rem;border-radius:0rem;white-space:nowrap}[_nghost-%COMP%] .count[_ngcontent-%COMP%]{text-align:right;height:3rem;min-width:6.5rem}[_nghost-%COMP%] .count[_ngcontent-%COMP%]:not(:first-child){border-left:solid #d3d3d3 1px}[_nghost-%COMP%] .icon-header[_ngcontent-%COMP%]{max-width:5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[_nghost-%COMP%] .icon-cell[_ngcontent-%COMP%]{max-width:5rem;min-height:3rem}[_nghost-%COMP%] .icon-cell[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:auto} .mat-mdc-tab-header{margin-left:-1px!important} .biomarker-table-hover.full-column-name{display:flex;padding:1rem 1.5rem;border-radius:.5rem;box-shadow:.063rem .125rem 1rem .125rem #00000029;background-color:var(--palette-primary-contrast-500-rgb);overflow:auto;max-width:-moz-fit-content;max-width:fit-content}"],changeDetection:0}),n})(),Rne=(()=>{class t{static aggregates(e){return e.aggregates}static summaries(e){return e.summaries}}return z([Dt([Lm]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Array)],t,"aggregates",null),z([Dt([Lm]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Array)],t,"summaries",null),t})();const Pne=sm("metrics"),Fne=sm("gradient"),Nne=sm("size");let Lne=(()=>{class t{static sourceReferences(e){return e}}return z([Dt([z0]),y("design:type",Function),y("design:paramtypes",[Array]),y("design:returntype",Array)],t,"sourceReferences",null),t})();function Bne(t,n){}class xp{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0,this.closeOnOverlayDetachments=!0}}let XP=(()=>{class t extends F0{constructor(e,i,r,o,s,a,l,c){super(),this._elementRef=e,this._focusTrapFactory=i,this._config=o,this._interactivityChecker=s,this._ngZone=a,this._overlayRef=l,this._focusMonitor=c,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this.attachDomPortal=d=>{this._portalOutlet.hasAttached();const u=this._portalOutlet.attachDomPortal(d);return this._contentAttached(),u},this._ariaLabelledBy=this._config.ariaLabelledBy||null,this._document=r}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),i}attachTemplatePortal(e){this._portalOutlet.hasAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),i}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,i){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const r=()=>{e.removeEventListener("blur",r),e.removeEventListener("mousedown",r),e.removeAttribute("tabindex")};e.addEventListener("blur",r),e.addEventListener("mousedown",r)})),e.focus(i)}_focusByCssSelector(e,i){let r=this._elementRef.nativeElement.querySelector(e);r&&this._forceFocus(r,i)}_trapFocus(){const e=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||e.focus();break;case!0:case"first-tabbable":this._focusTrap.focusInitialElementWhenReady().then(i=>{i||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus)}}_restoreFocus(){const e=this._config.restoreFocus;let i=null;if("string"==typeof e?i=this._document.querySelector(e):"boolean"==typeof e?i=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(i=e),this._config.restoreFocus&&i&&"function"==typeof i.focus){const r=_m(),o=this._elementRef.nativeElement;(!r||r===this._document.body||r===o||o.contains(r))&&(this._focusMonitor?(this._focusMonitor.focusVia(i,this._closeInteractionType),this._closeInteractionType=null):i.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){const e=this._elementRef.nativeElement,i=_m();return e===i||e.contains(i)}_initializeFocusTrap(){this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=_m())}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(y0),m(ge,8),m(xp),m(Cm),m(Z),m(Nd),m(Cd))},t.\u0275cmp=$({type:t,selectors:[["cdk-dialog-container"]],viewQuery:function(e,i){if(1&e&&Ge(bl,7),2&e){let r;J(r=ee())&&(i._portalOutlet=r.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(e,i){2&e&&tt("id",i._config.id||null)("role",i._config.role)("aria-modal",i._config.ariaModal)("aria-labelledby",i._config.ariaLabel?null:i._ariaLabelledBy)("aria-label",i._config.ariaLabel)("aria-describedby",i._config.ariaDescribedBy||null)},features:[F],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(e,i){1&e&&O(0,Bne,0,0,"ng-template",0)},dependencies:[bl],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2}),t})();class Dw{constructor(n,e){this.overlayRef=n,this.config=e,this.closed=new te,this.disableClose=e.disableClose,this.backdropClick=n.backdropClick(),this.keydownEvents=n.keydownEvents(),this.outsidePointerEvents=n.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(i=>{27===i.keyCode&&!this.disableClose&&!ul(i)&&(i.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})}),this._detachSubscription=n.detachments().subscribe(()=>{!1!==e.closeOnOverlayDetachments&&this.close()})}close(n,e){if(this.containerInstance){const i=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),i.next(n),i.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(n="",e=""){return this.overlayRef.updateSize({width:n,height:e}),this}addPanelClass(n){return this.overlayRef.addPanelClass(n),this}removePanelClass(n){return this.overlayRef.removePanelClass(n),this}}const QP=new k("DialogScrollStrategy"),Vne=new k("DialogData"),jne=new k("DefaultDialogConfig"),zne={provide:QP,deps:[oo],useFactory:function Hne(t){return()=>t.scrollStrategies.block()}};let Une=0,JP=(()=>{class t{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(e,i,r,o,s,a){this._overlay=e,this._injector=i,this._defaultOptions=r,this._parentDialog=o,this._overlayContainer=s,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new te,this._afterOpenedAtThisLevel=new te,this._ariaHiddenElements=new Map,this.afterAllClosed=_f(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(dr(void 0))),this._scrollStrategy=a}open(e,i){(i={...this._defaultOptions||new xp,...i}).id=i.id||"cdk-dialog-"+Une++,i.id&&this.getDialogById(i.id);const o=this._getOverlayConfig(i),s=this._overlay.create(o),a=new Dw(s,i),l=this._attachContainer(s,a,i);return a.containerInstance=l,this._attachDialogContent(e,a,l,i),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(a),a.closed.subscribe(()=>this._removeOpenDialog(a,!0)),this.afterOpened.next(a),a}closeAll(){Ew(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){Ew(this._openDialogsAtThisLevel,e=>{!1===e.config.closeOnDestroy&&this._removeOpenDialog(e,!1)}),Ew(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){const i=new hw({positionStrategy:e.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation});return e.backdropClass&&(i.backdropClass=e.backdropClass),i}_attachContainer(e,i,r){const o=r.injector||r.viewContainerRef?.injector,s=[{provide:xp,useValue:r},{provide:Dw,useValue:i},{provide:Nd,useValue:e}];let a;r.container?"function"==typeof r.container?a=r.container:(a=r.container.type,s.push(...r.container.providers(r))):a=XP;const l=new P0(a,r.viewContainerRef,xt.create({parent:o||this._injector,providers:s}),r.componentFactoryResolver);return e.attach(l).instance}_attachDialogContent(e,i,r,o){if(e instanceof bt){const s=this._createInjector(o,i,r,void 0);let a={$implicit:o.data,dialogRef:i};o.templateContext&&(a={...a,..."function"==typeof o.templateContext?o.templateContext():o.templateContext}),r.attachTemplatePortal(new _l(e,null,a,s))}else{const s=this._createInjector(o,i,r,this._injector),a=r.attachComponentPortal(new P0(e,o.viewContainerRef,s,o.componentFactoryResolver));i.componentInstance=a.instance}}_createInjector(e,i,r,o){const s=e.injector||e.viewContainerRef?.injector,a=[{provide:Vne,useValue:e.data},{provide:Dw,useValue:i}];return e.providers&&("function"==typeof e.providers?a.push(...e.providers(i,e,r)):a.push(...e.providers)),e.direction&&(!s||!s.get(Rn,null,{optional:!0}))&&a.push({provide:Rn,useValue:{value:e.direction,change:j()}}),xt.create({parent:s||o,providers:a})}_removeOpenDialog(e,i){const r=this.openDialogs.indexOf(e);r>-1&&(this.openDialogs.splice(r,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((o,s)=>{o?s.setAttribute("aria-hidden",o):s.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),i&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){const e=this._overlayContainer.getContainerElement();if(e.parentElement){const i=e.parentElement.children;for(let r=i.length-1;r>-1;r--){const o=i[r];o!==e&&"SCRIPT"!==o.nodeName&&"STYLE"!==o.nodeName&&!o.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(o,o.getAttribute("aria-hidden")),o.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}}return t.\u0275fac=function(e){return new(e||t)(_(oo),_(xt),_(jne,8),_(t,12),_(lp),_(QP))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})();function Ew(t,n){let e=t.length;for(;e--;)n(t[e])}let $ne=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:[JP,zne],imports:[cp,vl,zO,vl]}),t})();function Gne(t,n){}class El{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.maxWidth="80vw",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}}const Sw="mdc-dialog--open",eF="mdc-dialog--opening",tF="mdc-dialog--closing";let Yne=(()=>{class t extends XP{constructor(e,i,r,o,s,a,l,c){super(e,i,r,o,s,a,l,c),this._animationStateChanged=new Q}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(y0),m(ge,8),m(El),m(Cm),m(Z),m(Nd),m(Cd))},t.\u0275cmp=$({type:t,selectors:[["ng-component"]],features:[F],decls:0,vars:0,template:function(e,i){},encapsulation:2}),t})();const nF="--mat-dialog-transition-duration";function iF(t){return null==t?null:"number"==typeof t?t:t.endsWith("ms")?ai(t.substring(0,t.length-2)):t.endsWith("s")?1e3*ai(t.substring(0,t.length-1)):"0"===t?0:null}let Zne=(()=>{class t extends Yne{constructor(e,i,r,o,s,a,l,c,d){super(e,i,r,o,s,a,l,d),this._animationMode=c,this._animationsEnabled="NoopAnimations"!==this._animationMode,this._hostElement=this._elementRef.nativeElement,this._openAnimationDuration=this._animationsEnabled?iF(this._config.enterAnimationDuration)??150:0,this._closeAnimationDuration=this._animationsEnabled?iF(this._config.exitAnimationDuration)??75:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._openAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._closeAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._openAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(nF,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(eF),this._hostElement.classList.add(Sw),this._waitForAnimationToComplete(this._openAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(Sw),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._closeAnimationDuration}),this._hostElement.classList.remove(Sw),this._animationsEnabled?(this._hostElement.style.setProperty(nF,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(tF),this._waitForAnimationToComplete(this._closeAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_clearAnimationClasses(){this._hostElement.classList.remove(eF),this._hostElement.classList.remove(tF)}_waitForAnimationToComplete(e,i){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(i,e)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(y0),m(ge,8),m(El),m(Cm),m(Z),m(Nd),m(en,8),m(Cd))},t.\u0275cmp=$({type:t,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:8,hostBindings:function(e,i){2&e&&(ba("id",i._config.id),tt("aria-modal",i._config.ariaModal)("role",i._config.role)("aria-labelledby",i._config.ariaLabel?null:i._ariaLabelledBy)("aria-label",i._config.ariaLabel)("aria-describedby",i._config.ariaDescribedBy||null),fe("_mat-animation-noopable",!i._animationsEnabled))},features:[F],decls:3,vars:0,consts:[[1,"mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(e,i){1&e&&(x(0,"div",0)(1,"div",1),O(2,Gne,0,0,"ng-template",2),D()())},dependencies:[bl],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;transform:scale(0.8);opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:none;opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{display:block;width:100%;height:100%}.mat-mdc-dialog-container{outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12))}.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, var(--mdc-shape-medium, 4px))}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title,.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__actions,.mat-mdc-dialog-container.mdc-dialog--scrollable.mdc-dialog-scroll-divider-footer .mdc-dialog__actions{border-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title{border-bottom-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, "Arial");line-height:var(--mdc-dialog-subhead-line-height, 14px);font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500);letter-spacing:var(--mdc-dialog-subhead-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, black)}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, "Arial");line-height:var(--mdc-dialog-supporting-text-line-height, 14px);font-size:var(--mdc-dialog-supporting-text-size, 14px);font-weight:var(--mdc-dialog-supporting-text-weight, 500);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, black)}.mat-mdc-dialog-container .mdc-dialog__container{transition-duration:var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container{transition:none}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-actions{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2}),t})();class kw{constructor(n,e,i){this._ref=n,this._containerInstance=i,this._afterOpened=new te,this._beforeClosed=new te,this._state=0,this.disableClose=e.disableClose,this.id=n.id,i._animationStateChanged.pipe(mt(r=>"opened"===r.state),Yt(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),i._animationStateChanged.pipe(mt(r=>"closed"===r.state),Yt(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),n.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Gn(this.backdropClick(),this.keydownEvents().pipe(mt(r=>27===r.keyCode&&!this.disableClose&&!ul(r)))).subscribe(r=>{this.disableClose||(r.preventDefault(),function Kne(t,n,e){t._closeInteractionType=n,t.close(e)}(this,"keydown"===r.type?"keyboard":"mouse"))})}close(n){this._result=n,this._containerInstance._animationStateChanged.pipe(mt(e=>"closing"===e.state),Yt(1)).subscribe(e=>{this._beforeClosed.next(n),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),e.totalTime+100)}),this._state=1,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(n){let e=this._ref.config.positionStrategy;return n&&(n.left||n.right)?n.left?e.left(n.left):e.right(n.right):e.centerHorizontally(),n&&(n.top||n.bottom)?n.top?e.top(n.top):e.bottom(n.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(n="",e=""){return this._ref.updateSize(n,e),this}addPanelClass(n){return this._ref.addPanelClass(n),this}removePanelClass(n){return this._ref.removePanelClass(n),this}getState(){return this._state}_finishDialogClose(){this._state=2,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}const Xne=new k("MatMdcDialogData"),Qne=new k("mat-mdc-dialog-default-options"),rF=new k("mat-mdc-dialog-scroll-strategy"),eie={provide:rF,deps:[oo],useFactory:function Jne(t){return()=>t.scrollStrategies.block()}};let tie=0,nie=(()=>{class t{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(e,i,r,o,s,a,l,c,d,u){this._overlay=e,this._defaultOptions=r,this._parentDialog=o,this._dialogRefConstructor=l,this._dialogContainerType=c,this._dialogDataToken=d,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new te,this._afterOpenedAtThisLevel=new te,this._idPrefix="mat-dialog-",this.dialogConfigClass=El,this.afterAllClosed=_f(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(dr(void 0))),this._scrollStrategy=a,this._dialog=i.get(JP)}open(e,i){let r;(i={...this._defaultOptions||new El,...i}).id=i.id||`${this._idPrefix}${tie++}`,i.scrollStrategy=i.scrollStrategy||this._scrollStrategy();const o=this._dialog.open(e,{...i,positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:i},{provide:xp,useValue:i}]},templateContext:()=>({dialogRef:r}),providers:(s,a,l)=>(r=new this._dialogRefConstructor(s,i,l),r.updatePosition(i?.position),[{provide:this._dialogContainerType,useValue:l},{provide:this._dialogDataToken,useValue:a.data},{provide:this._dialogRefConstructor,useValue:r}])});return r.componentInstance=o.componentInstance,this.openDialogs.push(r),this.afterOpened.next(r),r.afterClosed().subscribe(()=>{const s=this.openDialogs.indexOf(r);s>-1&&(this.openDialogs.splice(s,1),this.openDialogs.length||this._getAfterAllClosed().next())}),r}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let i=e.length;for(;i--;)e[i].close()}}return t.\u0275fac=function(e){Jl()},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Gd=(()=>{class t extends nie{constructor(e,i,r,o,s,a,l,c){super(e,i,o,a,l,s,kw,Zne,Xne,c),this._idPrefix="mat-mdc-dialog-"}}return t.\u0275fac=function(e){return new(e||t)(_(oo),_(xt),_(gc,8),_(Qne,8),_(rF),_(t,12),_(lp),_(en,8))},t.\u0275prov=T({token:t,factory:t.\u0275fac}),t})(),Wd=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:[Gd,eie],imports:[$ne,cp,vl,Et,Et]}),t})(),sF=(()=>{class t{constructor(e,i){this._renderer=e,this._elementRef=i,this.onChange=r=>{},this.onTouched=()=>{}}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}}return t.\u0275fac=function(e){return new(e||t)(m(gi),m(H))},t.\u0275dir=M({type:t}),t})(),Os=(()=>{class t extends sF{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,features:[F]}),t})();const Wi=new k("NgValueAccessor"),rie={provide:Wi,useExisting:at(()=>Sl),multi:!0},sie=new k("CompositionEventMode");let Sl=(()=>{class t extends sF{constructor(e,i,r){super(e,i),this._compositionMode=r,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function oie(){const t=Nr()?Nr().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(e){this.setProperty("value",e??"")}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}}return t.\u0275fac=function(e){return new(e||t)(m(gi),m(H),m(sie,8))},t.\u0275dir=M({type:t,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(e,i){1&e&&re("input",function(o){return i._handleInput(o.target.value)})("blur",function(){return i.onTouched()})("compositionstart",function(){return i._compositionStart()})("compositionend",function(o){return i._compositionEnd(o.target.value)})},features:[ie([rie]),F]}),t})();const aie=!1;function zo(t){return null==t||("string"==typeof t||Array.isArray(t))&&0===t.length}function lF(t){return null!=t&&"number"==typeof t.length}const wn=new k("NgValidators"),Uo=new k("NgAsyncValidators"),lie=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class qd{static min(n){return function cF(t){return n=>{if(zo(n.value)||zo(t))return null;const e=parseFloat(n.value);return!isNaN(e)&&e{if(zo(n.value)||zo(t))return null;const e=parseFloat(n.value);return!isNaN(e)&&e>t?{max:{max:t,actual:n.value}}:null}}(n)}static required(n){return function uF(t){return zo(t.value)?{required:!0}:null}(n)}static requiredTrue(n){return function hF(t){return!0===t.value?null:{required:!0}}(n)}static email(n){return function fF(t){return zo(t.value)||lie.test(t.value)?null:{email:!0}}(n)}static minLength(n){return function mF(t){return n=>zo(n.value)||!lF(n.value)?null:n.value.lengthlF(n.value)&&n.value.length>t?{maxlength:{requiredLength:t,actualLength:n.value.length}}:null}(n)}static pattern(n){return function gF(t){if(!t)return Cp;let n,e;return"string"==typeof t?(e="","^"!==t.charAt(0)&&(e+="^"),e+=t,"$"!==t.charAt(t.length-1)&&(e+="$"),n=new RegExp(e)):(e=t.toString(),n=t),i=>{if(zo(i.value))return null;const r=i.value;return n.test(r)?null:{pattern:{requiredPattern:e,actualValue:r}}}}(n)}static nullValidator(n){return null}static compose(n){return xF(n)}static composeAsync(n){return CF(n)}}function Cp(t){return null}function _F(t){return null!=t}function bF(t){const n=rc(t)?yt(t):t;if(aie&&!O_(n)){let e="Expected async validator to return Promise or Observable.";throw"object"==typeof t&&(e+=" Are you using a synchronous validator where an async validator is expected?"),new A(-1101,e)}return n}function vF(t){let n={};return t.forEach(e=>{n=null!=e?{...n,...e}:n}),0===Object.keys(n).length?null:n}function yF(t,n){return n.map(e=>e(t))}function wF(t){return t.map(n=>function cie(t){return!t.validate}(n)?n:e=>n.validate(e))}function xF(t){if(!t)return null;const n=t.filter(_F);return 0==n.length?null:function(e){return vF(yF(e,n))}}function Mw(t){return null!=t?xF(wF(t)):null}function CF(t){if(!t)return null;const n=t.filter(_F);return 0==n.length?null:function(e){return Ac(yF(e,n).map(bF)).pipe(B(vF))}}function Tw(t){return null!=t?CF(wF(t)):null}function DF(t,n){return null===t?[n]:Array.isArray(t)?[...t,n]:[t,n]}function EF(t){return t._rawValidators}function SF(t){return t._rawAsyncValidators}function Aw(t){return t?Array.isArray(t)?t:[t]:[]}function Dp(t,n){return Array.isArray(t)?t.includes(n):t===n}function kF(t,n){const e=Aw(n);return Aw(t).forEach(r=>{Dp(e,r)||e.push(r)}),e}function MF(t,n){return Aw(n).filter(e=>!Dp(t,e))}class TF{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=Mw(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=Tw(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n){this.control&&this.control.reset(n)}hasError(n,e){return!!this.control&&this.control.hasError(n,e)}getError(n,e){return this.control?this.control.getError(n,e):null}}class Pn extends TF{get formDirective(){return null}get path(){return null}}class lo extends TF{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class AF{constructor(n){this._cd=n}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}}let Ep=(()=>{class t extends AF{constructor(e){super(e)}}return t.\u0275fac=function(e){return new(e||t)(m(lo,2))},t.\u0275dir=M({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(e,i){2&e&&fe("ng-untouched",i.isUntouched)("ng-touched",i.isTouched)("ng-pristine",i.isPristine)("ng-dirty",i.isDirty)("ng-valid",i.isValid)("ng-invalid",i.isInvalid)("ng-pending",i.isPending)},features:[F]}),t})();function IF(t,n){return t?`with name: '${n}'`:`at index: ${n}`}const Rw=!1,Yd="VALID",kp="INVALID",kl="PENDING",Zd="DISABLED";function Pw(t){return(Mp(t)?t.validators:t)||null}function Fw(t,n){return(Mp(n)?n.asyncValidators:t)||null}function Mp(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}class PF{constructor(n,e){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(n),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get valid(){return this.status===Yd}get invalid(){return this.status===kp}get pending(){return this.status==kl}get disabled(){return this.status===Zd}get enabled(){return this.status!==Zd}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(kF(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(kF(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(MF(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(MF(n,this._rawAsyncValidators))}hasValidator(n){return Dp(this._rawValidators,n)}hasAsyncValidator(n){return Dp(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){this.touched=!0,this._parent&&!n.onlySelf&&this._parent.markAsTouched(n)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(n=>n.markAllAsTouched())}markAsUntouched(n={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(e=>{e.markAsUntouched({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}markAsDirty(n={}){this.pristine=!1,this._parent&&!n.onlySelf&&this._parent.markAsDirty(n)}markAsPristine(n={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(e=>{e.markAsPristine({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}markAsPending(n={}){this.status=kl,!1!==n.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!n.onlySelf&&this._parent.markAsPending(n)}disable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=Zd,this.errors=null,this._forEachChild(i=>{i.disable({...n,onlySelf:!0})}),this._updateValue(),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:e}),this._onDisabledChange.forEach(i=>i(!0))}enable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=Yd,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:e}),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n){this._parent&&!n.onlySelf&&(this._parent.updateValueAndValidity(n),n.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Yd||this.status===kl)&&this._runAsyncValidator(n.emitEvent)),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.updateValueAndValidity(n)}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Zd:Yd}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n){if(this.asyncValidator){this.status=kl,this._hasOwnPendingAsyncValidator=!0;const e=bF(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(i=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(i,{emitEvent:n})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(n,e={}){this.errors=n,this._updateControlsErrors(!1!==e.emitEvent)}get(n){let e=n;return null==e||(Array.isArray(e)||(e=e.split(".")),0===e.length)?null:e.reduce((i,r)=>i&&i._find(r),this)}getError(n,e){const i=e?this.get(e):this;return i&&i.errors?i.errors[n]:null}hasError(n,e){return!!this.getError(n,e)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(n)}_initObservables(){this.valueChanges=new Q,this.statusChanges=new Q}_calculateStatus(){return this._allControlsDisabled()?Zd:this.errors?kp:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(kl)?kl:this._anyControlsHaveStatus(kp)?kp:Yd}_anyControlsHaveStatus(n){return this._anyControls(e=>e.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n={}){this.pristine=!this._anyControlsDirty(),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}_updateTouched(n={}){this.touched=this._anyControlsTouched(),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){Mp(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=function _ie(t){return Array.isArray(t)?Mw(t):t||null}(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=function bie(t){return Array.isArray(t)?Tw(t):t||null}(this._rawAsyncValidators)}}class Nw extends PF{constructor(n,e,i){super(Pw(e),Fw(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(n,e){return this.controls[n]?this.controls[n]:(this.controls[n]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(n,e,i={}){this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(n,e={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(n,e,i={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],e&&this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,e={}){(function RF(t,n,e){t._forEachChild((i,r)=>{if(void 0===e[r])throw new A(1002,Rw?function gie(t,n){return`Must supply a value for form control ${IF(t,n)}`}(n,r):"")})})(this,!0,n),Object.keys(n).forEach(i=>{(function OF(t,n,e){const i=t.controls;if(!(n?Object.keys(i):i).length)throw new A(1e3,Rw?function mie(t){return`\n There are no form controls registered with this ${t?"group":"array"} yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n `}(n):"");if(!i[e])throw new A(1001,Rw?function pie(t,n){return`Cannot find form control ${IF(t,n)}`}(n,e):"")})(this,!0,i),this.controls[i].setValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(Object.keys(n).forEach(i=>{const r=this.controls[i];r&&r.patchValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n={},e={}){this._forEachChild((i,r)=>{i.reset(n[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(n,e,i)=>(n[i]=e.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(e,i)=>!!i._syncPendingControls()||e);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(e=>{const i=this.controls[e];i&&n(i,e)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(const[e,i]of Object.entries(this.controls))if(this.contains(e)&&n(i))return!0;return!1}_reduceValue(){return this._reduceChildren({},(e,i,r)=>((i.enabled||this.disabled)&&(e[r]=i.value),e))}_reduceChildren(n,e){let i=n;return this._forEachChild((r,o)=>{i=e(i,r,o)}),i}_allControlsDisabled(){for(const n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}}const Ml=new k("CallSetDisabledState",{providedIn:"root",factory:()=>Tp}),Tp="always";function Kd(t,n,e=Tp){Lw(t,n),n.valueAccessor.writeValue(t.value),(t.disabled||"always"===e)&&n.valueAccessor.setDisabledState?.(t.disabled),function wie(t,n){n.valueAccessor.registerOnChange(e=>{t._pendingValue=e,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&FF(t,n)})}(t,n),function Cie(t,n){const e=(i,r)=>{n.valueAccessor.writeValue(i),r&&n.viewToModelUpdate(i)};t.registerOnChange(e),n._registerOnDestroy(()=>{t._unregisterOnChange(e)})}(t,n),function xie(t,n){n.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&FF(t,n),"submit"!==t.updateOn&&t.markAsTouched()})}(t,n),function yie(t,n){if(n.valueAccessor.setDisabledState){const e=i=>{n.valueAccessor.setDisabledState(i)};t.registerOnDisabledChange(e),n._registerOnDestroy(()=>{t._unregisterOnDisabledChange(e)})}}(t,n)}function Ip(t,n,e=!0){const i=()=>{};n.valueAccessor&&(n.valueAccessor.registerOnChange(i),n.valueAccessor.registerOnTouched(i)),Rp(t,n),t&&(n._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function Op(t,n){t.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(n)})}function Lw(t,n){const e=EF(t);null!==n.validator?t.setValidators(DF(e,n.validator)):"function"==typeof e&&t.setValidators([e]);const i=SF(t);null!==n.asyncValidator?t.setAsyncValidators(DF(i,n.asyncValidator)):"function"==typeof i&&t.setAsyncValidators([i]);const r=()=>t.updateValueAndValidity();Op(n._rawValidators,r),Op(n._rawAsyncValidators,r)}function Rp(t,n){let e=!1;if(null!==t){if(null!==n.validator){const r=EF(t);if(Array.isArray(r)&&r.length>0){const o=r.filter(s=>s!==n.validator);o.length!==r.length&&(e=!0,t.setValidators(o))}}if(null!==n.asyncValidator){const r=SF(t);if(Array.isArray(r)&&r.length>0){const o=r.filter(s=>s!==n.asyncValidator);o.length!==r.length&&(e=!0,t.setAsyncValidators(o))}}}const i=()=>{};return Op(n._rawValidators,i),Op(n._rawAsyncValidators,i),e}function FF(t,n){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function NF(t,n){Lw(t,n)}function LF(t,n){t._syncPendingControls(),n.forEach(e=>{const i=e.control;"submit"===i.updateOn&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}const Mie={provide:Pn,useExisting:at(()=>Pp)},Xd=(()=>Promise.resolve())();let Pp=(()=>{class t extends Pn{constructor(e,i,r){super(),this.callSetDisabledState=r,this.submitted=!1,this._directives=new Set,this.ngSubmit=new Q,this.form=new Nw({},Mw(e),Tw(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){Xd.then(()=>{const i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),Kd(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){Xd.then(()=>{const i=this._findContainer(e.path);i&&i.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){Xd.then(()=>{const i=this._findContainer(e.path),r=new Nw({});NF(r,e),i.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){Xd.then(()=>{const i=this._findContainer(e.path);i&&i.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){Xd.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submitted=!0,LF(this.form,this._directives),this.ngSubmit.emit(e),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e){this.form.reset(e),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}}return t.\u0275fac=function(e){return new(e||t)(m(wn,10),m(Uo,10),m(Ml,8))},t.\u0275dir=M({type:t,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(e,i){1&e&&re("submit",function(o){return i.onSubmit(o)})("reset",function(){return i.onReset()})},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[ie([Mie]),F]}),t})();function BF(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function VF(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}const Qd=class extends PF{constructor(n=null,e,i){super(Pw(e),Fw(i,e)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(n),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),Mp(e)&&(e.nonNullable||e.initialValueIsDefault)&&(this.defaultValue=VF(n)?n.value:n)}setValue(n,e={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(n,e={}){this.setValue(n,e)}reset(n=this.defaultValue,e={}){this._applyFormState(n),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){BF(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){BF(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(n){VF(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}};let GF=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})();const Hw=new k("NgModelWithFormControlWarning"),Lie={provide:lo,useExisting:at(()=>Jd)};let Jd=(()=>{class t extends lo{set isDisabled(e){}constructor(e,i,r,o,s){super(),this._ngModelWarningConfig=o,this.callSetDisabledState=s,this.update=new Q,this._ngModelWarningSent=!1,this._setValidators(e),this._setAsyncValidators(i),this.valueAccessor=function jw(t,n){if(!n)return null;let e,i,r;return Array.isArray(n),n.forEach(o=>{o.constructor===Sl?e=o:function Sie(t){return Object.getPrototypeOf(t.constructor)===Os}(o)?i=o:r=o}),r||i||e||null}(0,r)}ngOnChanges(e){if(this._isControlChanged(e)){const i=e.form.previousValue;i&&Ip(i,this,!1),Kd(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}(function Vw(t,n){if(!t.hasOwnProperty("model"))return!1;const e=t.model;return!!e.isFirstChange()||!Object.is(n,e.currentValue)})(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&Ip(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty("form")}}return t._ngModelWarningSentOnce=!1,t.\u0275fac=function(e){return new(e||t)(m(wn,10),m(Uo,10),m(Wi,10),m(Hw,8),m(Ml,8))},t.\u0275dir=M({type:t,selectors:[["","formControl",""]],inputs:{form:["formControl","form"],isDisabled:["disabled","isDisabled"],model:["ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[ie([Lie]),F,st]}),t})();const Bie={provide:Pn,useExisting:at(()=>Fp)};let Fp=(()=>{class t extends Pn{constructor(e,i,r){super(),this.callSetDisabledState=r,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new Q,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(Rp(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){const i=this.form.get(e.path);return Kd(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){Ip(e.control||null,e,!1),function kie(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,i){this.form.get(e.path).setValue(i)}onSubmit(e){return this.submitted=!0,LF(this.form,this.directives),this.ngSubmit.emit(e),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e){this.form.reset(e),this.submitted=!1}_updateDomValue(){this.directives.forEach(e=>{const i=e.control,r=this.form.get(e.path);i!==r&&(Ip(i||null,e),(t=>t instanceof Qd)(r)&&(Kd(r,e,this.callSetDisabledState),e.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const i=this.form.get(e.path);NF(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){const i=this.form.get(e.path);i&&function Die(t,n){return Rp(t,n)}(i,e)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){Lw(this.form,this),this._oldForm&&Rp(this._oldForm,this)}_checkFormPresent(){}}return t.\u0275fac=function(e){return new(e||t)(m(wn,10),m(Uo,10),m(Ml,8))},t.\u0275dir=M({type:t,selectors:[["","formGroup",""]],hostBindings:function(e,i){1&e&&re("submit",function(o){return i.onSubmit(o)})("reset",function(){return i.onReset()})},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[ie([Bie]),F,st]}),t})(),nre=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[GF]}),t})(),qw=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:Hw,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:Ml,useValue:e.callSetDisabledState??Tp}]}}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[nre]}),t})();const rre=["matFormFieldNotchedOutline",""],ore=["*"],sre=["textField"],are=["iconPrefixContainer"],lre=["textPrefixContainer"];function cre(t,n){1&t&&G(0,"span",19)}function dre(t,n){if(1&t){const e=nr();x(0,"label",17),re("cdkObserveContent",function(){return fi(e),mi(W(2)._refreshOutlineNotchWidth())}),Se(1,1),O(2,cre,1,0,"span",18),D()}if(2&t){const e=W(2);S("floating",e._shouldLabelFloat())("cdkObserveContentDisabled",!e._hasOutline())("id",e._labelId),tt("for",e._control.id)("aria-owns",e._control.id),E(2),S("ngIf",!e.hideRequiredMarker&&e._control.required)}}function ure(t,n){1&t&&O(0,dre,3,6,"label",16),2&t&&S("ngIf",W()._hasFloatingLabel())}function hre(t,n){1&t&&G(0,"div",20)}function fre(t,n){}function mre(t,n){1&t&&O(0,fre,0,0,"ng-template",22),2&t&&(W(2),S("ngTemplateOutlet",Pt(1)))}function pre(t,n){if(1&t&&(x(0,"div",21),O(1,mre,1,1,"ng-template",9),D()),2&t){const e=W();S("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat())("matFormFieldNotchedOutlineLabelWidth",e._labelWidth),E(1),S("ngIf",!e._forceDisplayInfixLabel())}}function gre(t,n){1&t&&(x(0,"div",23,24),Se(2,2),D())}function _re(t,n){1&t&&(x(0,"div",25,26),Se(2,3),D())}function bre(t,n){}function vre(t,n){1&t&&O(0,bre,0,0,"ng-template",22),2&t&&(W(),S("ngTemplateOutlet",Pt(1)))}function yre(t,n){1&t&&(x(0,"div",27),Se(1,4),D())}function wre(t,n){1&t&&(x(0,"div",28),Se(1,5),D())}function xre(t,n){1&t&&G(0,"div",29)}function Cre(t,n){1&t&&(x(0,"div",30),Se(1,6),D()),2&t&&S("@transitionMessages",W()._subscriptAnimationState)}function Dre(t,n){if(1&t&&(x(0,"mat-hint",34),N(1),D()),2&t){const e=W(2);S("id",e._hintLabelId),E(1),Jt(e.hintLabel)}}function Ere(t,n){if(1&t&&(x(0,"div",31),O(1,Dre,2,2,"mat-hint",32),Se(2,7),G(3,"div",33),Se(4,8),D()),2&t){const e=W();S("@transitionMessages",e._subscriptAnimationState),E(1),S("ngIf",e.hintLabel)}}const Sre=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],kre=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];let eu=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["mat-label"]]}),t})(),Mre=0;const aN=new k("MatError");let Yw=(()=>{class t{constructor(e,i){this.id="mat-mdc-error-"+Mre++,e||i.nativeElement.setAttribute("aria-live","polite")}}return t.\u0275fac=function(e){return new(e||t)(Ar("aria-live"),m(H))},t.\u0275dir=M({type:t,selectors:[["mat-error"],["","matError",""]],hostAttrs:["aria-atomic","true",1,"mat-mdc-form-field-error","mat-mdc-form-field-bottom-align"],hostVars:1,hostBindings:function(e,i){2&e&&ba("id",i.id)},inputs:{id:"id"},features:[ie([{provide:aN,useExisting:t}])]}),t})(),Tre=0,lN=(()=>{class t{constructor(){this.align="start",this.id="mat-mdc-hint-"+Tre++}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(e,i){2&e&&(ba("id",i.id),tt("align",null),fe("mat-mdc-form-field-hint-end","end"===i.align))},inputs:{align:"align",id:"id"}}),t})();const Are=new k("MatPrefix"),Ire=new k("MatSuffix");let cN=(()=>{class t{constructor(e){this._elementRef=e,this.floating=!1}getWidth(){return function Ore(t){if(null!==t.offsetParent)return t.scrollWidth;const e=t.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);const i=e.scrollWidth;return e.remove(),i}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(e,i){2&e&&fe("mdc-floating-label--float-above",i.floating)},inputs:{floating:"floating"}}),t})();const dN="mdc-line-ripple--active",Np="mdc-line-ripple--deactivating";let uN=(()=>{class t{constructor(e,i){this._elementRef=e,this._handleTransitionEnd=r=>{const o=this._elementRef.nativeElement.classList,s=o.contains(Np);"opacity"===r.propertyName&&s&&o.remove(dN,Np)},i.runOutsideAngular(()=>{e.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){const e=this._elementRef.nativeElement.classList;e.remove(Np),e.add(dN)}deactivate(){this._elementRef.nativeElement.classList.add(Np)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Z))},t.\u0275dir=M({type:t,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]}),t})(),hN=(()=>{class t{constructor(e,i){this._elementRef=e,this._ngZone=i,this.labelWidth=0,this.open=!1}ngAfterViewInit(){const e=this._elementRef.nativeElement.querySelector(".mdc-floating-label");e?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(e.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>e.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_getNotchWidth(){return this.open?this.labelWidth>0?`calc(${this.labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:"0px":null}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Z))},t.\u0275cmp=$({type:t,selectors:[["div","matFormFieldNotchedOutline",""]],hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(e,i){2&e&&fe("mdc-notched-outline--notched",i.open)},inputs:{labelWidth:["matFormFieldNotchedOutlineLabelWidth","labelWidth"],open:["matFormFieldNotchedOutlineOpen","open"]},attrs:rre,ngContentSelectors:ore,decls:4,vars:2,consts:[[1,"mdc-notched-outline__leading"],[1,"mdc-notched-outline__notch"],[1,"mdc-notched-outline__trailing"]],template:function(e,i){1&e&&(Bt(),G(0,"div",0),x(1,"div",1),Se(2),D(),G(3,"div",2)),2&e&&(E(1),ir("width",i._getNotchWidth()))},encapsulation:2,changeDetection:0}),t})();const Rre={transitionMessages:Aa("transitionMessages",[xi("enter",qt({opacity:1,transform:"translateY(0%)"})),zr("void => enter",[qt({opacity:0,transform:"translateY(-5px)"}),Hr("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let fN=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t}),t})();const mN=new k("MatFormField"),Pre=new k("MAT_FORM_FIELD_DEFAULT_OPTIONS");let pN=0,Zw=(()=>{class t{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=Ve(e)}get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||"auto"}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(e){const i=this._appearance;this._appearance=e||this._defaults?.appearance||"fill","outline"===this._appearance&&this._appearance!==i&&(this._refreshOutlineNotchWidth(),this._needsOutlineLabelOffsetUpdateOnStable=!0)}get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||"fixed"}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||"fixed"}get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}constructor(e,i,r,o,s,a,l,c){this._elementRef=e,this._changeDetectorRef=i,this._ngZone=r,this._dir=o,this._platform=s,this._defaults=a,this._animationMode=l,this._document=c,this._hideRequiredMarker=!1,this.color="primary",this._appearance="fill",this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId="mat-mdc-form-field-label-"+pN++,this._hintLabelId="mat-mdc-hint-"+pN++,this._subscriptAnimationState="",this._labelWidth=0,this._destroyed=new te,this._isFocused=null,this._needsOutlineLabelOffsetUpdateOnStable=!1,a&&(a.appearance&&(this.appearance=a.appearance),this._hideRequiredMarker=Boolean(a?.hideRequiredMarker),a.color&&(this.color=a.color))}ngAfterViewInit(){this._updateFocusState(),this._refreshOutlineNotchWidth(),this._document?.fonts?.ready?this._document.fonts.ready.then(()=>{this._refreshOutlineNotchWidth(),this._changeDetectorRef.markForCheck()}):setTimeout(()=>this._refreshOutlineNotchWidth(),100),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl()}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}getLabelId(){return this._hasFloatingLabel()?this._labelId:null}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(){const e=this._control;e.controlType&&this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${e.controlType}`),e.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),e.ngControl&&e.ngControl.valueChanges&&e.ngControl.valueChanges.pipe(ze(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck())}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Gn(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||null===this._isFocused)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe(ze(this._destroyed)).subscribe(()=>{this._needsOutlineLabelOffsetUpdateOnStable&&(this._needsOutlineLabelOffsetUpdateOnStable=!1,this._updateOutlineLabelOffset())})}),this._dir.change.pipe(ze(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0)}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel(){return!!this._labelChildNonStatic||!!this._labelChildStatic}_shouldLabelFloat(){return this._control.shouldLabelFloat||this._shouldAlwaysFloat()}_shouldForward(e){const i=this._control?this._control.ngControl:null;return i&&i[e]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||(this._labelWidth=this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&e.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getDisplayedMessages()){const i=this._hintChildren?this._hintChildren.find(o=>"start"===o.align):null,r=this._hintChildren?this._hintChildren.find(o=>"end"===o.align):null;i?e.push(i.id):this._hintLabel&&e.push(this._hintLabelId),r&&e.push(r.id)}else this._errorChildren&&e.push(...this._errorChildren.map(i=>i.id));this._control.setDescribedByIds(e)}}_updateOutlineLabelOffset(){if(!this._platform.isBrowser||!this._hasOutline()||!this._floatingLabel)return;const e=this._floatingLabel.element;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return void(e.style.transform="");if(!this._isAttachedToDom())return void(this._needsOutlineLabelOffsetUpdateOnStable=!0);const i=this._iconPrefixContainer?.nativeElement,r=this._textPrefixContainer?.nativeElement,o=i?.getBoundingClientRect().width??0,s=r?.getBoundingClientRect().width??0;e.style.transform=`var(\n --mat-mdc-form-field-label-transform,\n translateY(-50%) translateX(calc(${"rtl"===this._dir.value?"-1":"1"} * (${o+s}px + var(--mat-mdc-form-field-label-offset-x, 0px))))\n )`}_isAttachedToDom(){const e=this._elementRef.nativeElement;if(e.getRootNode){const i=e.getRootNode();return i&&i!==e}return document.documentElement.contains(e)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(tn),m(Z),m(Rn),m(pt),m(Pre,8),m(en,8),m(ge))},t.\u0275cmp=$({type:t,selectors:[["mat-form-field"]],contentQueries:function(e,i,r){if(1&e&&(Ze(r,eu,5),Ze(r,eu,7),Ze(r,fN,5),Ze(r,Are,5),Ze(r,Ire,5),Ze(r,aN,5),Ze(r,lN,5)),2&e){let o;J(o=ee())&&(i._labelChildNonStatic=o.first),J(o=ee())&&(i._labelChildStatic=o.first),J(o=ee())&&(i._formFieldControl=o.first),J(o=ee())&&(i._prefixChildren=o),J(o=ee())&&(i._suffixChildren=o),J(o=ee())&&(i._errorChildren=o),J(o=ee())&&(i._hintChildren=o)}},viewQuery:function(e,i){if(1&e&&(Ge(sre,5),Ge(are,5),Ge(lre,5),Ge(cN,5),Ge(hN,5),Ge(uN,5)),2&e){let r;J(r=ee())&&(i._textField=r.first),J(r=ee())&&(i._iconPrefixContainer=r.first),J(r=ee())&&(i._textPrefixContainer=r.first),J(r=ee())&&(i._floatingLabel=r.first),J(r=ee())&&(i._notchedOutline=r.first),J(r=ee())&&(i._lineRipple=r.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(e,i){2&e&&fe("mat-mdc-form-field-label-always-float",i._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",i._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",i._hasIconSuffix)("mat-form-field-invalid",i._control.errorState)("mat-form-field-disabled",i._control.disabled)("mat-form-field-autofilled",i._control.autofilled)("mat-form-field-no-animations","NoopAnimations"===i._animationMode)("mat-form-field-appearance-fill","fill"==i.appearance)("mat-form-field-appearance-outline","outline"==i.appearance)("mat-form-field-hide-placeholder",i._hasFloatingLabel()&&!i._shouldLabelFloat())("mat-focused",i._control.focused)("mat-primary","accent"!==i.color&&"warn"!==i.color)("mat-accent","accent"===i.color)("mat-warn","warn"===i.color)("ng-untouched",i._shouldForward("untouched"))("ng-touched",i._shouldForward("touched"))("ng-pristine",i._shouldForward("pristine"))("ng-dirty",i._shouldForward("dirty"))("ng-valid",i._shouldForward("valid"))("ng-invalid",i._shouldForward("invalid"))("ng-pending",i._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[ie([{provide:mN,useExisting:t}])],ngContentSelectors:kre,decls:18,vars:23,consts:[["labelTemplate",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],["textField",""],["class","mat-mdc-form-field-focus-overlay",4,"ngIf"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth",4,"ngIf"],["class","mat-mdc-form-field-icon-prefix",4,"ngIf"],["class","mat-mdc-form-field-text-prefix",4,"ngIf"],[1,"mat-mdc-form-field-infix"],[3,"ngIf"],["class","mat-mdc-form-field-text-suffix",4,"ngIf"],["class","mat-mdc-form-field-icon-suffix",4,"ngIf"],["matFormFieldLineRipple","",4,"ngIf"],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align",3,"ngSwitch"],["class","mat-mdc-form-field-error-wrapper",4,"ngSwitchCase"],["class","mat-mdc-form-field-hint-wrapper",4,"ngSwitchCase"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent",4,"ngIf"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent"],["aria-hidden","true","class","mat-mdc-form-field-required-marker mdc-floating-label--required",4,"ngIf"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[1,"mat-mdc-form-field-focus-overlay"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-icon-prefix"],["iconPrefixContainer",""],[1,"mat-mdc-form-field-text-prefix"],["textPrefixContainer",""],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],[3,"id",4,"ngIf"],[1,"mat-mdc-form-field-hint-spacer"],[3,"id"]],template:function(e,i){1&e&&(Bt(Sre),O(0,ure,1,1,"ng-template",null,0,ei),x(2,"div",1,2),re("click",function(o){return i._control.onContainerClick&&i._control.onContainerClick(o)}),O(4,hre,1,0,"div",3),x(5,"div",4),O(6,pre,2,3,"div",5),O(7,gre,3,0,"div",6),O(8,_re,3,0,"div",7),x(9,"div",8),O(10,vre,1,1,"ng-template",9),Se(11),D(),O(12,yre,2,0,"div",10),O(13,wre,2,0,"div",11),D(),O(14,xre,1,0,"div",12),D(),x(15,"div",13),O(16,Cre,2,1,"div",14),O(17,Ere,5,2,"div",15),D()),2&e&&(E(2),fe("mdc-text-field--filled",!i._hasOutline())("mdc-text-field--outlined",i._hasOutline())("mdc-text-field--no-label",!i._hasFloatingLabel())("mdc-text-field--disabled",i._control.disabled)("mdc-text-field--invalid",i._control.errorState),E(2),S("ngIf",!i._hasOutline()&&!i._control.disabled),E(2),S("ngIf",i._hasOutline()),E(1),S("ngIf",i._hasIconPrefix),E(1),S("ngIf",i._hasTextPrefix),E(2),S("ngIf",!i._hasOutline()||i._forceDisplayInfixLabel()),E(2),S("ngIf",i._hasTextSuffix),E(1),S("ngIf",i._hasIconSuffix),E(1),S("ngIf",!i._hasOutline()),E(1),fe("mat-mdc-form-field-subscript-dynamic-size","dynamic"===i.subscriptSizing),S("ngSwitch",i._getDisplayedMessages()),E(1),S("ngSwitchCase","error"),E(1),S("ngSwitchCase","hint"))},dependencies:[An,Ih,Ah,wM,wm,lN,cN,hN,uN],styles:['.mdc-text-field{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:"";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{line-height:normal;pointer-events:all}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}'],encapsulation:2,data:{animation:[Rre.transitionMessages]},changeDetection:0}),t})(),tu=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Et,Re,xm,Et]}),t})();const bN=dl({passive:!0});let Lre=(()=>{class t{constructor(e,i){this._platform=e,this._ngZone=i,this._monitoredElements=new Map}monitor(e){if(!this._platform.isBrowser)return Cn;const i=Jr(e),r=this._monitoredElements.get(i);if(r)return r.subject;const o=new te,s="cdk-text-field-autofilled",a=l=>{"cdk-text-field-autofill-start"!==l.animationName||i.classList.contains(s)?"cdk-text-field-autofill-end"===l.animationName&&i.classList.contains(s)&&(i.classList.remove(s),this._ngZone.run(()=>o.next({target:l.target,isAutofilled:!1}))):(i.classList.add(s),this._ngZone.run(()=>o.next({target:l.target,isAutofilled:!0})))};return this._ngZone.runOutsideAngular(()=>{i.addEventListener("animationstart",a,bN),i.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(i,{subject:o,unlisten:()=>{i.removeEventListener("animationstart",a,bN)}}),o}stopMonitoring(e){const i=Jr(e),r=this._monitoredElements.get(i);r&&(r.unlisten(),r.subject.complete(),i.classList.remove("cdk-text-field-autofill-monitored"),i.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(i))}ngOnDestroy(){this._monitoredElements.forEach((e,i)=>this.stopMonitoring(i))}}return t.\u0275fac=function(e){return new(e||t)(_(pt),_(Z))},t.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"}),t})(),Bre=(()=>{class t{get minRows(){return this._minRows}set minRows(e){this._minRows=ai(e),this._setMinHeight()}get maxRows(){return this._maxRows}set maxRows(e){this._maxRows=ai(e),this._setMaxHeight()}get enabled(){return this._enabled}set enabled(e){e=Ve(e),this._enabled!==e&&((this._enabled=e)?this.resizeToFitContent(!0):this.reset())}get placeholder(){return this._textareaElement.placeholder}set placeholder(e){this._cachedPlaceholderHeight=void 0,e?this._textareaElement.setAttribute("placeholder",e):this._textareaElement.removeAttribute("placeholder"),this._cacheTextareaPlaceholderHeight()}constructor(e,i,r,o){this._elementRef=e,this._platform=i,this._ngZone=r,this._destroyed=new te,this._enabled=!0,this._previousMinRows=-1,this._isViewInited=!1,this._handleFocusEvent=s=>{this._hasFocus="focus"===s.type},this._document=o,this._textareaElement=this._elementRef.nativeElement}_setMinHeight(){const e=this.minRows&&this._cachedLineHeight?this.minRows*this._cachedLineHeight+"px":null;e&&(this._textareaElement.style.minHeight=e)}_setMaxHeight(){const e=this.maxRows&&this._cachedLineHeight?this.maxRows*this._cachedLineHeight+"px":null;e&&(this._textareaElement.style.maxHeight=e)}ngAfterViewInit(){this._platform.isBrowser&&(this._initialHeight=this._textareaElement.style.height,this.resizeToFitContent(),this._ngZone.runOutsideAngular(()=>{Ho(this._getWindow(),"resize").pipe(op(16),ze(this._destroyed)).subscribe(()=>this.resizeToFitContent(!0)),this._textareaElement.addEventListener("focus",this._handleFocusEvent),this._textareaElement.addEventListener("blur",this._handleFocusEvent)}),this._isViewInited=!0,this.resizeToFitContent(!0))}ngOnDestroy(){this._textareaElement.removeEventListener("focus",this._handleFocusEvent),this._textareaElement.removeEventListener("blur",this._handleFocusEvent),this._destroyed.next(),this._destroyed.complete()}_cacheTextareaLineHeight(){if(this._cachedLineHeight)return;let e=this._textareaElement.cloneNode(!1);e.rows=1,e.style.position="absolute",e.style.visibility="hidden",e.style.border="none",e.style.padding="0",e.style.height="",e.style.minHeight="",e.style.maxHeight="",e.style.overflow="hidden",this._textareaElement.parentNode.appendChild(e),this._cachedLineHeight=e.clientHeight,e.remove(),this._setMinHeight(),this._setMaxHeight()}_measureScrollHeight(){const e=this._textareaElement,i=e.style.marginBottom||"",r=this._platform.FIREFOX,o=r&&this._hasFocus,s=r?"cdk-textarea-autosize-measuring-firefox":"cdk-textarea-autosize-measuring";o&&(e.style.marginBottom=`${e.clientHeight}px`),e.classList.add(s);const a=e.scrollHeight-4;return e.classList.remove(s),o&&(e.style.marginBottom=i),a}_cacheTextareaPlaceholderHeight(){if(!this._isViewInited||null!=this._cachedPlaceholderHeight)return;if(!this.placeholder)return void(this._cachedPlaceholderHeight=0);const e=this._textareaElement.value;this._textareaElement.value=this._textareaElement.placeholder,this._cachedPlaceholderHeight=this._measureScrollHeight(),this._textareaElement.value=e}ngDoCheck(){this._platform.isBrowser&&this.resizeToFitContent()}resizeToFitContent(e=!1){if(!this._enabled||(this._cacheTextareaLineHeight(),this._cacheTextareaPlaceholderHeight(),!this._cachedLineHeight))return;const i=this._elementRef.nativeElement,r=i.value;if(!e&&this._minRows===this._previousMinRows&&r===this._previousValue)return;const o=this._measureScrollHeight(),s=Math.max(o,this._cachedPlaceholderHeight||0);i.style.height=`${s}px`,this._ngZone.runOutsideAngular(()=>{typeof requestAnimationFrame<"u"?requestAnimationFrame(()=>this._scrollToCaretPosition(i)):setTimeout(()=>this._scrollToCaretPosition(i))}),this._previousValue=r,this._previousMinRows=this._minRows}reset(){void 0!==this._initialHeight&&(this._textareaElement.style.height=this._initialHeight)}_noopInputHandler(){}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_scrollToCaretPosition(e){const{selectionStart:i,selectionEnd:r}=e;!this._destroyed.isStopped&&this._hasFocus&&e.setSelectionRange(i,r)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(Z),m(ge,8))},t.\u0275dir=M({type:t,selectors:[["textarea","cdkTextareaAutosize",""]],hostAttrs:["rows","1",1,"cdk-textarea-autosize"],hostBindings:function(e,i){1&e&&re("input",function(){return i._noopInputHandler()})},inputs:{minRows:["cdkAutosizeMinRows","minRows"],maxRows:["cdkAutosizeMaxRows","maxRows"],enabled:["cdkTextareaAutosize","enabled"],placeholder:"placeholder"},exportAs:["cdkTextareaAutosize"]}),t})(),Vre=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({}),t})();const jre=new k("MAT_INPUT_VALUE_ACCESSOR"),Hre=["button","checkbox","file","hidden","image","radio","range","reset","submit"];let zre=0;const Ure=YK(class{constructor(t,n,e,i){this._defaultErrorStateMatcher=t,this._parentForm=n,this._parentFormGroup=e,this.ngControl=i,this.stateChanges=new te}});let Kw=(()=>{class t extends Ure{get disabled(){return this._disabled}set disabled(e){this._disabled=Ve(e),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(e){this._id=e||this._uid}get required(){return this._required??this.ngControl?.control?.hasValidator(qd.required)??!1}set required(e){this._required=Ve(e)}get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&xO().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}get value(){return this._inputValueAccessor.value}set value(e){e!==this.value&&(this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=Ve(e)}constructor(e,i,r,o,s,a,l,c,d,u){super(a,o,s,r),this._elementRef=e,this._platform=i,this._autofillMonitor=c,this._formField=u,this._uid="mat-input-"+zre++,this.focused=!1,this.stateChanges=new te,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(p=>xO().has(p)),this._iOSKeyupListener=p=>{const g=p.target;!g.value&&0===g.selectionStart&&0===g.selectionEnd&&(g.setSelectionRange(1,1),g.setSelectionRange(0,0))};const h=this._elementRef.nativeElement,f=h.nodeName.toLowerCase();this._inputValueAccessor=l||h,this._previousNativeValue=this.value,this.id=this.id,i.IOS&&d.runOutsideAngular(()=>{e.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===f,this._isTextarea="textarea"===f,this._isInFormField=!!u,this._isNativeSelect&&(this.controlType=h.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}_focusChanged(e){e!==this.focused&&(this.focused=e,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){const e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){const e=this._getPlaceholder();if(e!==this._previousPlaceholder){const i=this._elementRef.nativeElement;this._previousPlaceholder=e,e?i.setAttribute("placeholder",e):i.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){Hre.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const e=this._elementRef.nativeElement,i=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&i&&i.label)}return this.focused||!this.empty}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(pt),m(lo,10),m(Pp,8),m(Fp,8),m(KK),m(jre,10),m(Lre),m(Z),m(mN,8))},t.\u0275dir=M({type:t,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(e,i){1&e&&re("focus",function(){return i._focusChanged(!0)})("blur",function(){return i._focusChanged(!1)})("input",function(){return i._onInput()}),2&e&&(ba("id",i.id)("disabled",i.disabled)("required",i.required),tt("name",i.name||null)("readonly",i.readonly&&!i._isNativeSelect||null)("aria-invalid",i.empty&&i.required?null:i.errorState)("aria-required",i.required)("id",i.id),fe("mat-input-server",i._isServer)("mat-mdc-form-field-textarea-control",i._isInFormField&&i._isTextarea)("mat-mdc-form-field-input-control",i._isInFormField)("mdc-text-field__input",i._isInFormField)("mat-mdc-native-select-inline",i._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],features:[ie([{provide:fN,useExisting:t}]),F,st]}),t})(),Xw=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Et,tu,tu,Vre,Et]}),t})();function $re(t,n){1&t&&(x(0,"mat-error"),N(1," Please enter a valid email address "),D())}function Gre(t,n){1&t&&(x(0,"mat-error"),N(1," Email is required! "),D())}let Wre=(()=>{var t;class n{constructor(){this.placeholder="",this.emailChange=new Q,this.destroy$=al(),this.control=new Qd("",{updateOn:"blur",validators:[qd.required,qd.email]});const{control:i,destroy$:r}=this;i.valueChanges.pipe(ze(r),B(o=>i.valid?o:void 0)).subscribe(o=>this.emailChange.emit(o))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-email-input"]],inputs:{placeholder:"placeholder"},outputs:{emailChange:"emailChange"},standalone:!0,features:[Be],decls:6,vars:4,consts:[["appearance","outline",1,"email-text-field"],["type","email","matInput","",3,"formControl","placeholder"],[4,"ngIf"]],template:function(i,r){1&i&&(x(0,"mat-form-field",0)(1,"mat-label"),N(2," Email "),D(),G(3,"input",1),O(4,$re,2,0,"mat-error",2),O(5,Gre,2,0,"mat-error",2),D()),2&i&&(E(3),S("formControl",r.control)("placeholder",r.placeholder),E(1),S("ngIf",r.control.hasError("email")&&!r.control.hasError("required")),E(1),S("ngIf",r.control.hasError("required")))},dependencies:[Re,An,tu,Zw,eu,Yw,qw,Sl,Ep,Jd,Xw,Kw],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .email-text-field[_ngcontent-%COMP%]{width:100%;background:#ffffff}[_nghost-%COMP%] .mat-mdc-form-field-required-marker{color:#dc231e}"],changeDetection:0}),n})();function qre(t,n){if(1&t&&(x(0,"mat-error"),N(1),D()),2&t){const e=W();E(1),nt(" ",e.label," is required! ")}}let Yre=(()=>{var t;class n{constructor(){this.placeholder="",this.label="",this.messageChange=new Q,this.destroy$=al(),this.control=new Qd("",{updateOn:"blur",validators:[qd.required]});const{control:i,destroy$:r}=this;i.valueChanges.pipe(ze(r),B(o=>i.valid?o:void 0)).subscribe(o=>this.messageChange.emit(o))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-required-textbox"]],inputs:{placeholder:"placeholder",label:"label"},outputs:{messageChange:"messageChange"},standalone:!0,features:[Be],decls:5,vars:4,consts:[["appearance","outline",1,"message-field"],["cdkTextareaAutosize","","cdkAutosizeMinRows","10","cdkAutosizeMaxRows","20","matInput","",3,"formControl","placeholder"],[4,"ngIf"]],template:function(i,r){1&i&&(x(0,"mat-form-field",0)(1,"mat-label"),N(2),D(),G(3,"textarea",1),O(4,qre,2,1,"mat-error",2),D()),2&i&&(E(2),nt(" ",r.label," "),E(1),S("formControl",r.control)("placeholder",r.placeholder),E(1),S("ngIf",r.control.hasError("required")))},dependencies:[Re,An,Xw,Kw,Zw,eu,Yw,Bre,tu,qw,Sl,Ep,Jd],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .message-field[_ngcontent-%COMP%]{width:100%;background:#ffffff}[_nghost-%COMP%] .mat-mdc-form-field-required-marker{color:#dc231e}"],changeDetection:0}),n})();function Zre(t,n){if(1&t&&(x(0,"mat-error"),N(1),D()),2&t){const e=W();E(1),nt("",e.label," is required!")}}let Kre=(()=>{var t;class n{constructor(){this.label="",this.inputChange=new Q,this.destroy$=al(),this.control=new Qd("",{updateOn:"blur",validators:qd.required});const{control:i,destroy$:r,inputChange:o}=this;i.valueChanges.pipe(ze(r),B(s=>i.valid?s:void 0)).subscribe(o)}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-required-input"]],inputs:{label:"label"},outputs:{inputChange:"inputChange"},standalone:!0,features:[Be],decls:5,vars:3,consts:[["appearance","outline",1,"form-field"],["matInput","",3,"formControl"],[4,"ngIf"]],template:function(i,r){1&i&&(x(0,"mat-form-field",0)(1,"mat-label"),N(2),D(),G(3,"input",1),O(4,Zre,2,1,"mat-error",2),D()),2&i&&(E(2),nt(" ",r.label," "),E(1),S("formControl",r.control),E(1),S("ngIf",r.control.hasError("required")))},dependencies:[Re,An,tu,Zw,eu,Yw,Xw,Kw,qw,Sl,Ep,Jd],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .form-field[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] .mat-mdc-form-field-required-marker{color:#dc231e}"],changeDetection:0}),n})();const Xre={email:void 0,subject:void 0,message:void 0};let Qre=(()=>{var t;class n{constructor(){this.productLogoUrl="",this.productTitle="",this.submitClick=new Q,this.closeClick=new Q,this.contactData=Xre}get disableSubmit(){return Object.values(this.contactData).some(i=>void 0===i)}updateData(i,r){this.contactData=l0(this.contactData,o=>{o[i]=r})}submit(){this.submitClick.emit(this.contactData)}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-contact-modal"]],inputs:{productLogoUrl:"productLogoUrl",productTitle:"productTitle"},outputs:{submitClick:"submitClick",closeClick:"closeClick"},standalone:!0,features:[Be],decls:15,vars:3,consts:[[1,"product-logo"],["alt","Prodoct Logo",1,"product-logo-image",3,"src"],[1,"product-title"],["mat-icon-button","",1,"close",3,"click"],["placeholder","Example@domain.com",1,"email",3,"emailChange"],["label","Subject",1,"subject-field",3,"inputChange"],["label","Message","placeholder","Enter your message here",1,"message-field",3,"messageChange"],["data","Please allow two business days for a response to each inquiry.",1,"desc"],["mat-flat-button","","color","primary",1,"submit",3,"disabled","click"],["mat-stroked-button","","color","accent",1,"cancel",3,"click"]],template:function(i,r){1&i&&(x(0,"a",0),G(1,"img",1),x(2,"h2",2),N(3),D()(),x(4,"button",3),re("click",function(){return r.closeClick.emit()}),x(5,"mat-icon"),N(6,"close"),D()(),x(7,"hra-email-input",4),re("emailChange",function(s){return r.updateData("email",s)}),D(),x(8,"hra-required-input",5),re("inputChange",function(s){return r.updateData("subject",s)}),D(),x(9,"hra-required-textbox",6),re("messageChange",function(s){return r.updateData("message",s)}),D(),G(10,"markdown",7),x(11,"button",8),re("click",function(){return r.submit()}),N(12,"Submit"),D(),x(13,"button",9),re("click",function(){return r.closeClick.emit()}),N(14,"Cancel"),D()),2&i&&(E(1),S("src",r.productLogoUrl,Fi),E(2),Jt(r.productTitle),E(8),S("disabled",r.disableSubmit))},dependencies:[Re,eo,pl,km,br,to,Wre,Ts,Ms,Yre,Kre],styles:["[_nghost-%COMP%]{display:block;position:relative;padding-top:2rem;margin-right:1.5rem;margin-left:1.5rem;font-family:Inter}[_nghost-%COMP%] .product-logo[_ngcontent-%COMP%]{display:flex;align-items:center}[_nghost-%COMP%] .product-logo[_ngcontent-%COMP%] .product-logo-image[_ngcontent-%COMP%]{margin-right:1rem}[_nghost-%COMP%] .product-logo[_ngcontent-%COMP%] .product-title[_ngcontent-%COMP%]{color:#900;margin:0;font-weight:600}[_nghost-%COMP%] .close[_ngcontent-%COMP%]{position:absolute;top:1.5rem;right:0rem}[_nghost-%COMP%] .submit[_ngcontent-%COMP%]{margin-right:1.5rem}[_nghost-%COMP%] .submit[_ngcontent-%COMP%], [_nghost-%COMP%] .cancel[_ngcontent-%COMP%]{width:7.5rem}[_nghost-%COMP%] .email[_ngcontent-%COMP%]{margin-top:1.25rem}[_nghost-%COMP%] .message-field[_ngcontent-%COMP%]{margin-top:1rem}[_nghost-%COMP%] .subject-field[_ngcontent-%COMP%]{margin-top:1rem}[_nghost-%COMP%] .desc[_ngcontent-%COMP%]{margin-top:1.5rem}"],changeDetection:0}),n})(),Jre=(()=>{var t;class n{constructor(){this.productTitle="",this.productLogoUrl="",this.description="",this.closeClick=new Q}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-info-modal"]],inputs:{productTitle:"productTitle",productLogoUrl:"productLogoUrl",description:"description"},outputs:{closeClick:"closeClick"},standalone:!0,features:[Be],decls:8,vars:3,consts:[[1,"title"],["alt","Prodoct Logo",1,"product-logo-image",3,"src"],[1,"product-title"],["mat-icon-button","",1,"close",3,"click"],[1,"description",3,"data"]],template:function(i,r){1&i&&(x(0,"a",0),G(1,"img",1),x(2,"h2",2),N(3),D()(),x(4,"button",3),re("click",function(){return r.closeClick.emit()}),x(5,"mat-icon"),N(6,"close"),D()(),G(7,"markdown",4)),2&i&&(E(1),S("src",r.productLogoUrl,Fi),E(2),Jt(r.productTitle),E(4),S("data",r.description))},dependencies:[Re,eo,km,br,to,Ts,Ms],styles:["[_nghost-%COMP%]{display:block;position:relative;padding:2rem 2rem 1.25rem}[_nghost-%COMP%] .close[_ngcontent-%COMP%]{position:absolute;top:1.5rem;right:1.5rem}[_nghost-%COMP%] .title[_ngcontent-%COMP%]{display:flex;align-items:center}[_nghost-%COMP%] .title[_ngcontent-%COMP%] .product-logo-image[_ngcontent-%COMP%]{height:2.75rem;margin-right:1rem}[_nghost-%COMP%] .title[_ngcontent-%COMP%] .product-title[_ngcontent-%COMP%]{margin:0;color:#900}[_nghost-%COMP%] .description[_ngcontent-%COMP%]{display:block;margin-top:1rem}"],changeDetection:0}),n})();const eoe=["postMessage"];function toe(t,n){if(1&t){const e=nr();x(0,"hra-info-modal",2),re("closeClick",function(){return fi(e),mi(W().close())}),D()}if(2&t){const e=W();S("productLogoUrl",e.productLogoUrl())("productTitle",e.productTitle())("description",e.description())}}let vN=(()=>{var t;class n{constructor(){this.productLogoUrl=ct(vt.url,E0),this.productTitle=ct(vt.anyText,D0),this.description=ct(vt.anyText,LX),this.sendMessage=yn(Ym),this.dialog=R(Gd),this.selfRef=R(kw,{optional:!0})}submit(i){this.sendMessage(i),this.selfRef?.close(),this.postRef=this.dialog.open(this.postMessageTemplate)}close(){this.postRef?.close(),this.selfRef?.close()}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-contact-behavior"]],viewQuery:function(i,r){if(1&i&&Ge(eoe,5),2&i){let o;J(o=ee())&&(r.postMessageTemplate=o.first)}},standalone:!0,features:[Be],decls:3,vars:2,consts:[[1,"contact-modal",3,"productLogoUrl","productTitle","submitClick","closeClick"],["postMessage",""],[1,"info-modal",3,"productLogoUrl","productTitle","description","closeClick"]],template:function(i,r){1&i&&(x(0,"hra-contact-modal",0),re("submitClick",function(s){return r.submit(s)})("closeClick",function(){return r.close()}),D(),O(1,toe,1,3,"ng-template",null,1,ei)),2&i&&S("productLogoUrl",r.productLogoUrl())("productTitle",r.productTitle())},dependencies:[Re,Wd,Qre,Jre],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .contact-modal[_ngcontent-%COMP%]{width:41rem;height:40rem}[_nghost-%COMP%] .info-modal[_ngcontent-%COMP%]{width:35rem;height:11.8rem}@media screen and (max-height: 328px){[_nghost-%COMP%] .contact-modal[_ngcontent-%COMP%]{height:calc(100vh - 2rem)}}"],changeDetection:0}),n})();function noe(t,n){if(1&t&&G(0,"hra-biomarker-table",17),2&t){const e=W().$implicit,i=W();let r;S("data",e.rows)("columns",e.columns)("gradient",i.gradients())("sizes",i.sizes())("tissueInfo",i.tissueInfo)("hightlightedCellName",null!==(r=null==(r=i.selectedOnHovered())?null:r.label)&&void 0!==r?r:"")}}function ioe(t,n){if(1&t){const e=nr();x(0,"hra-empty-biomarker",18),re("collaborateClick",function(){return fi(e),mi(W(2).collaborate())}),D()}if(2&t){const e=W(2);S("collaborateText",e.collaborateText)("message",e.message)}}function roe(t,n){if(1&t&&(x(0,"mat-tab",14),O(1,noe,1,6,"hra-biomarker-table",15),O(2,ioe,1,2,"hra-empty-biomarker",16),D()),2&t){const e=n.$implicit;S("label",e.label),E(1),S("ngIf",0!==e.rows.length),E(1),S("ngIf",0===e.rows.length)}}function ooe(t,n){if(1&t&&(x(0,"div",19),N(1),D()),2&t){const e=n.$implicit;E(1),nt(" ",e," ")}}const soe={id:"",label:""};let aoe=(()=>{var t;class n{constructor(){this.tabs=$n(Rne.aggregates),this.gradientHoverInfo=ct(vt.anyText,HX),this.sizeHoverInfo=ct(vt.anyText,zX),this.isTableFullScreen=!1,this.gradients=ct(vt.field,VX,Fne,"points",[]),this.sizes=ct(vt.field,jX,Nne,"sizes",[]),this.source=$n(Lne.sourceReferences),this.iri=$n(Gm.iri),this.tissues=$n(Nm.tissues),this.selectedOnHovered=$n(Ld.selectedOnHovered),this.collaborateText="Collaborate with the HRA Team",this.message="We currently do not have cell type data for this biomarker.\n

    Please contact us to discuss your dataset.",this.setScreenMode=yn(Zm),this.dialog=R(Gd)}get tissueInfo(){const i=this.iri(),r=this.tissues();if(void 0===i)return soe;const{id:o,label:s}=r[i];return{id:o,label:s}}toggleFullscreen(){this.isTableFullScreen=!this.isTableFullScreen,this.setScreenMode(this.isTableFullScreen)}collaborate(){const i=new El;i.disableClose=!0,this.dialog.open(vN,i)}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-biomarker-details"]],standalone:!0,features:[Be],decls:22,vars:13,consts:[[1,"table-header"],[1,"end","material-symbols-outlined","cursor",3,"click"],["mat-stretch-tabs","true","color","accent",1,"table"],["labelClass","table-tab-header",3,"label",4,"ngFor","ngForOf"],[1,"legend-header","gradient"],[1,"icon",3,"hraHover","hraHoverData"],[1,"legend","gradient"],[1,"content",3,"gradient"],[1,"legend-header","size"],[1,"legend","size"],[1,"content",3,"sizes"],[1,"source-list"],[1,"content",3,"collaborateText","message","sources","collaborateClick"],["infoTooltip",""],["labelClass","table-tab-header",3,"label"],[3,"data","columns","gradient","sizes","tissueInfo","hightlightedCellName",4,"ngIf"],[3,"collaborateText","message","collaborateClick",4,"ngIf"],[3,"data","columns","gradient","sizes","tissueInfo","hightlightedCellName"],[3,"collaborateText","message","collaborateClick"],[1,"biomarker-details","info-tooltip"]],template:function(i,r){if(1&i&&(x(0,"hra-label-box",0),N(1," Cell Types by Gene Biomarkers "),x(2,"span",1),re("click",function(){return r.toggleFullscreen()}),N(3),D()(),x(4,"mat-tab-group",2),O(5,roe,3,3,"mat-tab",3),D(),x(6,"hra-label-box",4),N(7," Biomarker Expression Mean in FTU "),x(8,"mat-icon",5),N(9,"info_outlined"),D()(),x(10,"div",6),G(11,"hra-gradient-legend",7),D(),x(12,"hra-label-box",8),N(13," Percentage of Cells in FTU "),x(14,"mat-icon",5),N(15,"info_outlined"),D()(),x(16,"div",9),G(17,"hra-size-legend",10),D(),x(18,"div",11)(19,"hra-source-list",12),re("collaborateClick",function(){return r.collaborate()}),D()(),O(20,ooe,2,1,"ng-template",null,13,ei)),2&i){const o=Pt(21);E(3),nt(" ",r.isTableFullScreen?"close_fullscreen":"open_in_full"," "),E(1),fe("table-fullscreen",r.isTableFullScreen),E(1),S("ngForOf",r.tabs()),E(3),S("hraHover",o)("hraHoverData",r.gradientHoverInfo()),E(3),S("gradient",r.gradients()),E(3),S("hraHover",o)("hraHoverData",r.sizeHoverInfo()),E(3),S("sizes",r.sizes()),E(2),S("collaborateText",r.collaborateText)("message",r.message)("sources",r.source())}},dependencies:[Re,cs,An,br,to,ate,kP,ote,Wd,One,Cte,HP,Wm,Ete,lne,zP],styles:['[_nghost-%COMP%]{display:grid;grid-template-columns:1fr 1fr auto;grid-template-rows:3.5rem minmax(5rem,2fr) 3rem 5rem minmax(5rem,1fr);grid-template-areas:"table-header table-header table-header" "table table table" "gradient-legend-header size-legend-header ." "gradient-legend size-legend ." "source-list source-list source-list";overflow-y:auto}[_nghost-%COMP%] .table-header[_ngcontent-%COMP%]{grid-area:table-header;border-bottom:.063rem solid #d3d3d3;height:3.5rem}[_nghost-%COMP%] .table[_ngcontent-%COMP%]{grid-area:table;max-width:100%;overflow:auto;border-bottom:.063rem solid #d3d3d3}[_nghost-%COMP%] .table[_ngcontent-%COMP%] .table-tab-header{padding-left:1rem;padding-right:1rem;border-left:.063rem solid #d3d3d3;border-bottom:.063rem solid #d3d3d3;background-color:#fff}[_nghost-%COMP%] .table[_ngcontent-%COMP%] .table-tab-header:last-child{border-right:.063rem solid #d3d3d3}[_nghost-%COMP%] .table[_ngcontent-%COMP%] .table-tab-header.mdc-tab-indicator--active{background-color:#f8f9fa}[_nghost-%COMP%] .table[_ngcontent-%COMP%] .table-tab-header:hover{background-color:#f8f9fa}[_nghost-%COMP%] .legend-header[_ngcontent-%COMP%]{color:var(--dark-primary-text);border-top:.063rem solid #d3d3d3;border-bottom:.063rem solid #d3d3d3;border-right:.063rem solid #d3d3d3}[_nghost-%COMP%] .legend-header.gradient[_ngcontent-%COMP%]{grid-area:gradient-legend-header}[_nghost-%COMP%] .legend-header.size[_ngcontent-%COMP%]{grid-area:size-legend-header}[_nghost-%COMP%] .legend-header[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin-left:.6rem;width:unset}[_nghost-%COMP%] .legend[_ngcontent-%COMP%]{padding:1rem 2rem;border-right:.063rem solid #d3d3d3}[_nghost-%COMP%] .legend.gradient[_ngcontent-%COMP%]{grid-area:gradient-legend}[_nghost-%COMP%] .legend.gradient[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{width:10rem}[_nghost-%COMP%] .legend.size[_ngcontent-%COMP%]{grid-area:size-legend}[_nghost-%COMP%] .source-list[_ngcontent-%COMP%]{grid-area:source-list}[_nghost-%COMP%] .cursor[_ngcontent-%COMP%]{cursor:default} .biomarker-details.info-tooltip{display:flex;padding:1rem;border:1px solid #a8a3a3;border-radius:.5rem;box-shadow:1px 2px 16px 2px #00000029;background-color:var(--palette-primary-contrast-500-rgb);max-width:21rem;font-size:small;font-family:Inter}'],changeDetection:0}),n})(),loe=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[Et,Et]}),t})();const yN=["*"],wN=["unscopedContent"],doe=["text"],uoe=[[["","matListItemAvatar",""],["","matListItemIcon",""]],[["","matListItemTitle",""]],[["","matListItemLine",""]],"*",[["","matListItemMeta",""]],[["mat-divider"]]],hoe=["[matListItemAvatar],[matListItemIcon]","[matListItemTitle]","[matListItemLine]","*","[matListItemMeta]","mat-divider"],xN=new k("ListOption");let CN=(()=>{class t{constructor(e){this._elementRef=e}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,selectors:[["","matListItemTitle",""]],hostAttrs:[1,"mat-mdc-list-item-title","mdc-list-item__primary-text"]}),t})(),DN=(()=>{class t{constructor(e){this._elementRef=e}}return t.\u0275fac=function(e){return new(e||t)(m(H))},t.\u0275dir=M({type:t,selectors:[["","matListItemLine",""]],hostAttrs:[1,"mat-mdc-list-item-line","mdc-list-item__secondary-text"]}),t})(),Aoe=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,selectors:[["","matListItemMeta",""]],hostAttrs:[1,"mat-mdc-list-item-meta","mdc-list-item__end"]}),t})(),EN=(()=>{class t{constructor(e){this._listOption=e}_isAlignedAtStart(){return!this._listOption||"after"===this._listOption?._getTogglePosition()}}return t.\u0275fac=function(e){return new(e||t)(m(xN,8))},t.\u0275dir=M({type:t,hostVars:4,hostBindings:function(e,i){2&e&&fe("mdc-list-item__start",i._isAlignedAtStart())("mdc-list-item__end",!i._isAlignedAtStart())}}),t})(),Ioe=(()=>{class t extends EN{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matListItemAvatar",""]],hostAttrs:[1,"mat-mdc-list-item-avatar"],features:[F]}),t})(),Ooe=(()=>{class t extends EN{}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275dir=M({type:t,selectors:[["","matListItemIcon",""]],hostAttrs:[1,"mat-mdc-list-item-icon"],features:[F]}),t})();const Roe=new k("MAT_LIST_CONFIG");let Tl=(()=>{class t{constructor(){this._isNonInteractive=!0,this._disableRipple=!1,this._disabled=!1,this._defaultOptions=R(Roe,{optional:!0})}get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=Ve(e)}get disabled(){return this._disabled}set disabled(e){this._disabled=Ve(e)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=M({type:t,hostVars:1,hostBindings:function(e,i){2&e&&tt("aria-disabled",i.disabled)},inputs:{disableRipple:"disableRipple",disabled:"disabled"}}),t})(),Qw=(()=>{class t{set lines(e){this._explicitLines=ai(e,null),this._updateItemLines(!1)}get disableRipple(){return this.disabled||this._disableRipple||this._noopAnimations||!!this._listBase?.disableRipple}set disableRipple(e){this._disableRipple=Ve(e)}get disabled(){return this._disabled||!!this._listBase?.disabled}set disabled(e){this._disabled=Ve(e)}get rippleDisabled(){return this.disableRipple||!!this.rippleConfig.disabled}constructor(e,i,r,o,s,a){this._elementRef=e,this._ngZone=i,this._listBase=r,this._platform=o,this._explicitLines=null,this._disableRipple=!1,this._disabled=!1,this._subscriptions=new rt,this._rippleRenderer=null,this._hasUnscopedTextContent=!1,this.rippleConfig=s||{},this._hostElement=this._elementRef.nativeElement,this._isButtonElement="button"===this._hostElement.nodeName.toLowerCase(),this._noopAnimations="NoopAnimations"===a,r&&!r._isNonInteractive&&this._initInteractiveListItem(),this._isButtonElement&&!this._hostElement.hasAttribute("type")&&this._hostElement.setAttribute("type","button")}ngAfterViewInit(){this._monitorProjectedLinesAndTitle(),this._updateItemLines(!0)}ngOnDestroy(){this._subscriptions.unsubscribe(),null!==this._rippleRenderer&&this._rippleRenderer._removeTriggerEvents()}_hasIconOrAvatar(){return!(!this._avatars.length&&!this._icons.length)}_initInteractiveListItem(){this._hostElement.classList.add("mat-mdc-list-item-interactive"),this._rippleRenderer=new ml(this,this._ngZone,this._hostElement,this._platform),this._rippleRenderer.setupTriggerEvents(this._hostElement)}_monitorProjectedLinesAndTitle(){this._ngZone.runOutsideAngular(()=>{this._subscriptions.add(Gn(this._lines.changes,this._titles.changes).subscribe(()=>this._updateItemLines(!1)))})}_updateItemLines(e){if(!this._lines||!this._titles||!this._unscopedContent)return;e&&this._checkDomForUnscopedTextContent();const i=this._explicitLines??this._inferLinesFromContent(),r=this._unscopedContent.nativeElement;if(this._hostElement.classList.toggle("mat-mdc-list-item-single-line",i<=1),this._hostElement.classList.toggle("mdc-list-item--with-one-line",i<=1),this._hostElement.classList.toggle("mdc-list-item--with-two-lines",2===i),this._hostElement.classList.toggle("mdc-list-item--with-three-lines",3===i),this._hasUnscopedTextContent){const o=0===this._titles.length&&1===i;r.classList.toggle("mdc-list-item__primary-text",o),r.classList.toggle("mdc-list-item__secondary-text",!o)}else r.classList.remove("mdc-list-item__primary-text"),r.classList.remove("mdc-list-item__secondary-text")}_inferLinesFromContent(){let e=this._titles.length+this._lines.length;return this._hasUnscopedTextContent&&(e+=1),e}_checkDomForUnscopedTextContent(){this._hasUnscopedTextContent=Array.from(this._unscopedContent.nativeElement.childNodes).filter(e=>e.nodeType!==e.COMMENT_NODE).some(e=>!(!e.textContent||!e.textContent.trim()))}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Z),m(Tl,8),m(pt),m(Sm,8),m(en,8))},t.\u0275dir=M({type:t,contentQueries:function(e,i,r){if(1&e&&(Ze(r,Ioe,4),Ze(r,Ooe,4)),2&e){let o;J(o=ee())&&(i._avatars=o),J(o=ee())&&(i._icons=o)}},hostVars:4,hostBindings:function(e,i){2&e&&(tt("aria-disabled",i.disabled)("disabled",i._isButtonElement&&i.disabled||null),fe("mdc-list-item--disabled",i.disabled))},inputs:{lines:"lines",disableRipple:"disableRipple",disabled:"disabled"}}),t})(),Poe=(()=>{class t extends Tl{constructor(){super(...arguments),this._isNonInteractive=!1}}return t.\u0275fac=function(){let n;return function(i){return(n||(n=we(t)))(i||t)}}(),t.\u0275cmp=$({type:t,selectors:[["mat-action-list"]],hostAttrs:["role","group",1,"mat-mdc-action-list","mat-mdc-list-base","mdc-list"],exportAs:["matActionList"],features:[ie([{provide:Tl,useExisting:t}]),F],ngContentSelectors:yN,decls:1,vars:0,template:function(e,i){1&e&&(Bt(),Se(0))},styles:['@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-list-divider::after{content:"";display:block;border-bottom-width:1px;border-bottom-style:solid}}.mdc-list{margin:0;padding:8px 0;list-style-type:none}.mdc-list:focus{outline:none}.mdc-list-item__wrapper{display:block}.mdc-list-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;align-items:stretch;cursor:pointer}.mdc-list-item:focus{outline:none}.mdc-list-item.mdc-list-item--with-one-line{height:48px}.mdc-list-item.mdc-list-item--with-two-lines{height:64px}.mdc-list-item.mdc-list-item--with-three-lines{height:88px}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__start{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--disabled,.mdc-list-item.mdc-list-item--non-interactive{cursor:auto}.mdc-list-item:not(.mdc-list-item--selected):focus::before,.mdc-list-item.mdc-ripple-upgraded--background-focused::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-list-item:not(.mdc-list-item--selected):focus::before,.mdc-list-item.mdc-ripple-upgraded--background-focused::before{border-color:CanvasText}}.mdc-list-item.mdc-list-item--selected::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:3px double rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-list-item.mdc-list-item--selected::before{border-color:CanvasText}}.mdc-list-item.mdc-list-item--selected:focus::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:3px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-list-item.mdc-list-item--selected:focus::before{border-color:CanvasText}}a.mdc-list-item{color:inherit;text-decoration:none}.mdc-list-item__start{fill:currentColor;flex-shrink:0;pointer-events:none}.mdc-list-item__end{flex-shrink:0;pointer-events:none}.mdc-list-item__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;align-self:center;flex:1;pointer-events:none}.mdc-list-item--with-two-lines .mdc-list-item__content,.mdc-list-item--with-three-lines .mdc-list-item__content{align-self:stretch}.mdc-list-item__content[for]{pointer-events:none}.mdc-list-item__primary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item--with-two-lines .mdc-list-item__primary-text,.mdc-list-item--with-three-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item__secondary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;margin-top:0;line-height:normal}.mdc-list-item__secondary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list-item--with-three-lines .mdc-list-item__secondary-text{white-space:normal;line-height:20px}.mdc-list-item--with-overline .mdc-list-item__secondary-text{white-space:nowrap;line-height:auto}.mdc-list-item__overline-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:24px;content:"";vertical-align:0}.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-three-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-three-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-three-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-avatar.mdc-list-item,.mdc-list-item--with-leading-avatar.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-avatar .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-avatar .mdc-list-item__start,.mdc-list-item--with-leading-avatar .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-avatar .mdc-list-item__start{border-radius:50%}.mdc-list-item--with-leading-icon.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-icon.mdc-list-item,.mdc-list-item--with-leading-icon.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-icon .mdc-list-item__start{margin-left:16px;margin-right:32px}[dir=rtl] .mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-leading-icon .mdc-list-item__start[dir=rtl]{margin-left:32px;margin-right:16px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-thumbnail.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-thumbnail.mdc-list-item,.mdc-list-item--with-leading-thumbnail.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-thumbnail .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-thumbnail .mdc-list-item__start,.mdc-list-item--with-leading-thumbnail .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-image.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-image.mdc-list-item,.mdc-list-item--with-leading-image.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-image .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-image .mdc-list-item__start,.mdc-list-item--with-leading-image .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-one-line{height:72px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-video.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-video.mdc-list-item,.mdc-list-item--with-leading-video.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-video .mdc-list-item__start{margin-left:0;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-video .mdc-list-item__start,.mdc-list-item--with-leading-video .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-one-line{height:72px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-checkbox.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-checkbox.mdc-list-item,.mdc-list-item--with-leading-checkbox.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-checkbox .mdc-list-item__start{margin-left:8px;margin-right:24px}[dir=rtl] .mdc-list-item--with-leading-checkbox .mdc-list-item__start,.mdc-list-item--with-leading-checkbox .mdc-list-item__start[dir=rtl]{margin-left:24px;margin-right:8px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-radio.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-radio.mdc-list-item,.mdc-list-item--with-leading-radio.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-radio .mdc-list-item__start{margin-left:8px;margin-right:24px}[dir=rtl] .mdc-list-item--with-leading-radio .mdc-list-item__start,.mdc-list-item--with-leading-radio .mdc-list-item__start[dir=rtl]{margin-left:24px;margin-right:8px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-switch.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-switch.mdc-list-item,.mdc-list-item--with-leading-switch.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-switch .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-switch .mdc-list-item__start,.mdc-list-item--with-leading-switch .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-trailing-icon.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-icon.mdc-list-item,.mdc-list-item--with-trailing-icon.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-icon .mdc-list-item__end{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--with-trailing-icon .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end{align-self:flex-start;margin-top:0}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:0}.mdc-list-item--with-trailing-meta.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-meta.mdc-list-item,.mdc-list-item--with-trailing-meta.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-meta .mdc-list-item__end{margin-left:28px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-meta .mdc-list-item__end,.mdc-list-item--with-trailing-meta .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:28px}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-trailing-meta .mdc-list-item__end{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family);font-size:var(--mdc-typography-caption-font-size);line-height:var(--mdc-typography-caption-line-height);font-weight:var(--mdc-typography-caption-font-weight);letter-spacing:var(--mdc-typography-caption-letter-spacing);text-decoration:var(--mdc-typography-caption-text-decoration);text-transform:var(--mdc-typography-caption-text-transform)}.mdc-list-item--with-trailing-checkbox.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-checkbox.mdc-list-item,.mdc-list-item--with-trailing-checkbox.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-checkbox .mdc-list-item__end{margin-left:24px;margin-right:8px}[dir=rtl] .mdc-list-item--with-trailing-checkbox .mdc-list-item__end,.mdc-list-item--with-trailing-checkbox .mdc-list-item__end[dir=rtl]{margin-left:8px;margin-right:24px}.mdc-list-item--with-trailing-checkbox.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:8px}.mdc-list-item--with-trailing-radio.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-radio.mdc-list-item,.mdc-list-item--with-trailing-radio.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-radio .mdc-list-item__end{margin-left:24px;margin-right:8px}[dir=rtl] .mdc-list-item--with-trailing-radio .mdc-list-item__end,.mdc-list-item--with-trailing-radio .mdc-list-item__end[dir=rtl]{margin-left:8px;margin-right:24px}.mdc-list-item--with-trailing-radio.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:8px}.mdc-list-item--with-trailing-switch.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-switch.mdc-list-item,.mdc-list-item--with-trailing-switch.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-switch .mdc-list-item__end{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-switch .mdc-list-item__end,.mdc-list-item--with-trailing-switch .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-trailing-switch.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:16px}.mdc-list-item--with-overline.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-overline.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list-item--with-overline.mdc-list-item--with-three-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-overline.mdc-list-item--with-three-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list-item{padding-left:16px;padding-right:16px}[dir=rtl] .mdc-list-item,.mdc-list-item[dir=rtl]{padding-left:16px;padding-right:16px}.mdc-list-group .mdc-deprecated-list{padding:0}.mdc-list-group__subheader{margin:calc((3rem - 1.5rem)/2) 16px}.mdc-list-divider{padding:0;background-clip:content-box}.mdc-list-divider.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset{padding-left:16px;padding-right:auto}[dir=rtl] .mdc-list-divider.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset,.mdc-list-divider.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset[dir=rtl]{padding-left:auto;padding-right:16px}.mdc-list-divider.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset{padding-left:auto;padding-right:16px}[dir=rtl] .mdc-list-divider.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset,.mdc-list-divider.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset[dir=rtl]{padding-left:16px;padding-right:auto}.mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset{padding-left:0px;padding-right:auto}[dir=rtl] .mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset[dir=rtl]{padding-left:auto;padding-right:0px}[dir=rtl] .mdc-list-divider,.mdc-list-divider[dir=rtl]{padding:0}.mdc-list-item{background-color:var(--mdc-list-list-item-container-color)}.mdc-list-item.mdc-list-item--selected{background-color:var(--mdc-list-list-item-selected-container-color)}.mdc-list-item--with-one-line{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-one-line.mdc-list-item--with-leading-avatar,.mdc-list-item--with-one-line.mdc-list-item--with-leading-icon,.mdc-list-item--with-one-line.mdc-list-item--with-leading-thumbnail,.mdc-list-item--with-one-line.mdc-list-item--with-leading-checkbox,.mdc-list-item--with-one-line.mdc-list-item--with-leading-radio,.mdc-list-item--with-one-line.mdc-list-item--with-leading-switch{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-one-line.mdc-list-item--with-leading-image,.mdc-list-item--with-one-line.mdc-list-item--with-leading-video{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-two-lines{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-two-lines.mdc-list-item--with-leading-avatar,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-icon,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-thumbnail,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-checkbox,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-radio,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-switch,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-image,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-video{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-three-lines{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item.mdc-list-item--with-one-line{height:var(--mdc-list-list-item-one-line-container-height)}.mdc-list-item.mdc-list-item--with-two-lines{height:var(--mdc-list-list-item-two-line-container-height)}.mdc-list-item.mdc-list-item--with-three-lines{height:var(--mdc-list-list-item-three-line-container-height)}.mdc-list-item__primary-text{color:var(--mdc-list-list-item-label-text-color)}.mdc-list-item__primary-text{font-family:var(--mdc-list-list-item-label-text-font);line-height:var(--mdc-list-list-item-label-text-line-height);font-size:var(--mdc-list-list-item-label-text-size);font-weight:var(--mdc-list-list-item-label-text-weight);letter-spacing:var(--mdc-list-list-item-label-text-tracking)}.mdc-list-item__secondary-text{color:var(--mdc-list-list-item-supporting-text-color)}.mdc-list-item__secondary-text{font-family:var(--mdc-list-list-item-supporting-text-font);line-height:var(--mdc-list-list-item-supporting-text-line-height);font-size:var(--mdc-list-list-item-supporting-text-size);font-weight:var(--mdc-list-list-item-supporting-text-weight);letter-spacing:var(--mdc-list-list-item-supporting-text-tracking)}.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-list-list-item-leading-icon-color)}.mdc-list-item--with-leading-icon .mdc-list-item__start{width:var(--mdc-list-list-item-leading-icon-size);height:var(--mdc-list-list-item-leading-icon-size)}.mdc-list-item--with-leading-icon .mdc-list-item__start>i{font-size:var(--mdc-list-list-item-leading-icon-size)}.mdc-list-item--with-leading-icon .mdc-list-item__start .mdc-list-item__icon{font-size:var(--mdc-list-list-item-leading-icon-size);width:var(--mdc-list-list-item-leading-icon-size);height:var(--mdc-list-list-item-leading-icon-size)}.mdc-list-item--with-leading-avatar .mdc-list-item__start{width:var(--mdc-list-list-item-leading-avatar-size);height:var(--mdc-list-list-item-leading-avatar-size)}.mdc-list-item.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-list-list-item-trailing-supporting-text-color)}.mdc-list-item--with-trailing-meta .mdc-list-item__end{font-family:var(--mdc-list-list-item-trailing-supporting-text-font);line-height:var(--mdc-list-list-item-trailing-supporting-text-line-height);font-size:var(--mdc-list-list-item-trailing-supporting-text-size);font-weight:var(--mdc-list-list-item-trailing-supporting-text-weight);letter-spacing:var(--mdc-list-list-item-trailing-supporting-text-tracking)}.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-list-list-item-trailing-icon-color)}.mdc-list-item--with-trailing-icon .mdc-list-item__end{width:var(--mdc-list-list-item-trailing-icon-size);height:var(--mdc-list-list-item-trailing-icon-size)}.mdc-list-item--with-trailing-icon .mdc-list-item__end>i{font-size:var(--mdc-list-list-item-trailing-icon-size)}.mdc-list-item--with-trailing-icon .mdc-list-item__end .mdc-list-item__icon{font-size:var(--mdc-list-list-item-trailing-icon-size);width:var(--mdc-list-list-item-trailing-icon-size);height:var(--mdc-list-list-item-trailing-icon-size)}.mdc-list-item--selected.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-list-list-item-selected-trailing-icon-color)}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text{opacity:var(--mdc-list-list-item-disabled-label-text-opacity)}.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-list-list-item-disabled-leading-icon-color)}.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start{opacity:var(--mdc-list-list-item-disabled-leading-icon-opacity)}.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-list-list-item-disabled-trailing-icon-color)}.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end{opacity:var(--mdc-list-list-item-disabled-trailing-icon-opacity)}.mdc-list-item:hover .mdc-list-item__primary-text{color:var(--mdc-list-list-item-hover-label-text-color)}.mdc-list-item--with-leading-icon:hover .mdc-list-item__start{color:var(--mdc-list-list-item-hover-leading-icon-color)}.mdc-list-item--with-trailing-icon:hover .mdc-list-item__end{color:var(--mdc-list-list-item-hover-trailing-icon-color)}.mdc-list-item:focus .mdc-list-item__primary-text{color:var(--mdc-list-list-item-focus-label-text-color)}.mdc-list-item.mdc-list-item--disabled .mdc-list-item__primary-text{color:var(--mdc-list-list-item-disabled-label-text-color)}.mdc-list-item:hover::before{background-color:var(--mdc-list-list-item-hover-state-layer-color);opacity:var(--mdc-list-list-item-hover-state-layer-opacity)}.mdc-list-item.mdc-list-item--disabled::before{background-color:var(--mdc-list-list-item-disabled-state-layer-color);opacity:var(--mdc-list-list-item-disabled-state-layer-opacity)}.mdc-list-item:focus::before{background-color:var(--mdc-list-list-item-focus-state-layer-color);opacity:var(--mdc-list-list-item-focus-state-layer-opacity)}.mdc-list-item--disabled .mdc-radio,.mdc-list-item--disabled .mdc-checkbox{opacity:var(--mdc-list-list-item-disabled-label-text-opacity)}.mdc-list-item--with-leading-avatar .mat-mdc-list-item-avatar{border-radius:var(--mdc-list-list-item-leading-avatar-shape);background-color:var(--mdc-list-list-item-leading-avatar-color)}.mat-mdc-list-base{--mdc-list-list-item-container-shape:0;--mdc-list-list-item-leading-avatar-shape:50%;--mdc-list-list-item-container-color:transparent;--mdc-list-list-item-selected-container-color:transparent;--mdc-list-list-item-leading-avatar-color:transparent;--mdc-list-list-item-leading-icon-size:24px;--mdc-list-list-item-leading-avatar-size:40px;--mdc-list-list-item-trailing-icon-size:24px;--mdc-list-list-item-disabled-state-layer-color:transparent;--mdc-list-list-item-disabled-state-layer-opacity:0;--mdc-list-list-item-disabled-label-text-opacity:0.38;--mdc-list-list-item-disabled-leading-icon-opacity:0.38;--mdc-list-list-item-disabled-trailing-icon-opacity:0.38}.cdk-high-contrast-active a.mdc-list-item--activated::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active a.mdc-list-item--activated [dir=rtl]::after{right:auto;left:16px}.mat-mdc-list-base{display:block}.mat-mdc-list-base .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item__end,.mat-mdc-list-base .mdc-list-item__content{pointer-events:auto}.mat-mdc-list-item,.mat-mdc-list-option{width:100%;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-list-item:not(.mat-mdc-list-item-interactive),.mat-mdc-list-option:not(.mat-mdc-list-item-interactive){cursor:default}.mat-mdc-list-item .mat-divider-inset,.mat-mdc-list-option .mat-divider-inset{position:absolute;left:0;right:0;bottom:0}.mat-mdc-list-item .mat-mdc-list-item-avatar~.mat-divider-inset,.mat-mdc-list-option .mat-mdc-list-item-avatar~.mat-divider-inset{margin-left:72px}[dir=rtl] .mat-mdc-list-item .mat-mdc-list-item-avatar~.mat-divider-inset,[dir=rtl] .mat-mdc-list-option .mat-mdc-list-item-avatar~.mat-divider-inset{margin-right:72px}.mat-mdc-list-item-interactive::before{top:0;left:0;right:0;bottom:0;position:absolute;content:"";opacity:0;pointer-events:none}.mat-mdc-list-item>.mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-list-item:focus>.mat-mdc-focus-indicator::before{content:""}.mat-mdc-list-item.mdc-list-item--with-three-lines .mat-mdc-list-item-line.mdc-list-item__secondary-text{white-space:nowrap;line-height:normal}.mat-mdc-list-item.mdc-list-item--with-three-lines .mat-mdc-list-item-unscoped-content.mdc-list-item__secondary-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0);text-align:left}[dir=rtl] mat-action-list button{text-align:right}mat-action-list button::-moz-focus-inner{border:0}'],encapsulation:2,changeDetection:0}),t})(),Foe=(()=>{class t extends Qw{get activated(){return this._activated}set activated(e){this._activated=Ve(e)}constructor(e,i,r,o,s,a){super(e,i,r,o,s,a),this._activated=!1}_getAriaCurrent(){return"A"===this._hostElement.nodeName&&this._activated?"page":null}}return t.\u0275fac=function(e){return new(e||t)(m(H),m(Z),m(Tl,8),m(pt),m(Sm,8),m(en,8))},t.\u0275cmp=$({type:t,selectors:[["mat-list-item"],["a","mat-list-item",""],["button","mat-list-item",""]],contentQueries:function(e,i,r){if(1&e&&(Ze(r,DN,5),Ze(r,CN,5),Ze(r,Aoe,5)),2&e){let o;J(o=ee())&&(i._lines=o),J(o=ee())&&(i._titles=o),J(o=ee())&&(i._meta=o)}},viewQuery:function(e,i){if(1&e&&(Ge(wN,5),Ge(doe,5)),2&e){let r;J(r=ee())&&(i._unscopedContent=r.first),J(r=ee())&&(i._itemText=r.first)}},hostAttrs:[1,"mat-mdc-list-item","mdc-list-item"],hostVars:11,hostBindings:function(e,i){2&e&&(tt("aria-current",i._getAriaCurrent()),fe("mdc-list-item--activated",i.activated)("mdc-list-item--with-leading-avatar",0!==i._avatars.length)("mdc-list-item--with-leading-icon",0!==i._icons.length)("mdc-list-item--with-trailing-meta",0!==i._meta.length)("_mat-animation-noopable",i._noopAnimations))},inputs:{activated:"activated"},exportAs:["matListItem"],features:[F],ngContentSelectors:hoe,decls:10,vars:0,consts:[[1,"mdc-list-item__content"],[1,"mat-mdc-list-item-unscoped-content",3,"cdkObserveContent"],["unscopedContent",""],[1,"mat-mdc-focus-indicator"]],template:function(e,i){1&e&&(Bt(uoe),Se(0),x(1,"span",0),Se(2,1),Se(3,2),x(4,"span",1,2),re("cdkObserveContent",function(){return i._updateItemLines(!0)}),Se(6,3),D()(),Se(7,4),Se(8,5),G(9,"div",3))},dependencies:[wm],encapsulation:2,changeDetection:0}),t})(),joe=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[xm,Re,Et,Sd,tX,loe]}),t})();function Hoe(t,n){if(1&t&&(x(0,"div")(1,"a",7),G(2,"img",8),x(3,"div",9),N(4),D()()()),2&t){const e=W();E(2),S("src",e.productLogoUrl,Fi),E(2),Jt(e.productTitle)}}function zoe(t,n){1&t&&G(0,"div",10)}function Uoe(t,n){1&t&&G(0,"div",10)}function $oe(t,n){if(1&t){const e=nr();x(0,"button",12),re("click",function(){const o=fi(e).$implicit,s=W(2);return s.downloadListOpen=!1,mi(s.download.emit(o))}),N(1),D()}if(2&t){const e=n.$implicit;E(1),nt(" ",e.label," ")}}function Goe(t,n){if(1&t&&(x(0,"mat-action-list"),O(1,$oe,2,1,"button",11),D()),2&t){const e=W();E(1),S("ngForOf",e.downloadFormats)}}const Woe=[{panelClass:"above",originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",offsetY:0},{panelClass:"below",originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"}];let qoe=(()=>{var t;class n{constructor(){this.size="large",this.productLogoUrl="",this.productTitle="",this.hraPortal=Zr,this.illustrationMetadata=Zr,this.embed=Zr,this.downloadFormats=[],this.download=new Q,this.contactClick=new Q,this.DOWNLOADS_LIST_POSITION=Woe,this.downloadListOpen=!1}get isSmall(){return"small"===this.size}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-footer"]],hostVars:2,hostBindings:function(i,r){2&i&&function $E(t){Vi(Xn,or,t,!0)}(r.size)},inputs:{size:"size",productLogoUrl:"productLogoUrl",productTitle:"productTitle",hraPortal:"hraPortal",illustrationMetadata:"illustrationMetadata",embed:"embed",downloadFormats:"downloadFormats"},outputs:{download:"download",contactClick:"contactClick"},standalone:!0,features:[Be],decls:25,vars:10,consts:[[4,"ngIf"],["class","filler",4,"ngIf"],["mat-stroked-button","","color","accent",1,"button",3,"hraLink"],["mat-stroked-button","","color","accent","type","button","cdkOverlayOrigin","",1,"button",3,"click"],["anchor","cdkOverlayOrigin"],["mat-stroked-button","","color","accent",1,"button",3,"click"],["cdkConnectedOverlay","","cdkConnectedOverlayHasBackdrop","false","cdkConnectedOverlayPush","false","cdkConnectedOverlayPanelClass","download-options-panel",3,"cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayOffsetX","overlayOutsideClick"],[1,"product-logo-link"],["alt","Prodoct Logo",1,"product-logo-image",3,"src"],[1,"product-title"],[1,"filler"],["mat-list-item","",3,"click",4,"ngFor","ngForOf"],["mat-list-item","",3,"click"]],template:function(i,r){if(1&i&&(O(0,Hoe,5,2,"div",0),O(1,zoe,1,0,"div",1),x(2,"button",2)(3,"mat-icon"),N(4,"info_outlined"),D(),N(5," Illustration\n"),D(),x(6,"button",3,4),re("click",function(){return r.downloadListOpen=!r.downloadListOpen}),x(8,"mat-icon"),N(9,"download"),D(),N(10," Download\n"),D(),x(11,"button",2)(12,"mat-icon"),N(13,"code"),D(),N(14," Embed\n"),D(),O(15,Uoe,1,0,"div",1),x(16,"button",5),re("click",function(){return r.contactClick.emit()}),x(17,"mat-icon"),N(18,"mail_outlined"),D(),N(19," Contact\n"),D(),x(20,"button",2)(21,"mat-icon"),N(22,"open_in_new"),D(),N(23," HRA Portal\n"),D(),O(24,Goe,2,1,"ng-template",6),re("overlayOutsideClick",function(){return r.downloadListOpen=!1})),2&i){const o=Pt(7);S("ngIf",r.isSmall),E(1),S("ngIf",r.isSmall),E(1),S("hraLink",r.illustrationMetadata),E(9),S("hraLink",r.embed),E(4),S("ngIf",!r.isSmall),E(5),S("hraLink",r.hraPortal),E(4),S("cdkConnectedOverlayOrigin",o)("cdkConnectedOverlayOpen",r.downloadListOpen)("cdkConnectedOverlayPositions",r.DOWNLOADS_LIST_POSITION)("cdkConnectedOverlayOffsetX",0)}},dependencies:[Re,cs,An,eo,pl,br,to,cp,jP,VP,joe,Poe,Foe,gl],styles:["[_nghost-%COMP%]{display:flex;padding:1rem 2rem;border-top:.063rem solid #e2e7e9;align-items:center;background-color:#f8f9fa;gap:1rem;--palette-primary-500: #abcdef}[_nghost-%COMP%] .controls[_ngcontent-%COMP%]{display:flex;justify-content:flex-end}[_nghost-%COMP%] .filler[_ngcontent-%COMP%]{flex-grow:1}[_nghost-%COMP%] .product-title[_ngcontent-%COMP%]{color:#900;margin-right:0rem}[_nghost-%COMP%] a[_ngcontent-%COMP%]{cursor:pointer;display:flex}[_nghost-%COMP%] .product-logo-image[_ngcontent-%COMP%]{height:1.2rem;margin-right:1rem}[_nghost-%COMP%] button[_ngcontent-%COMP%]{justify-content:center;align-items:center;min-width:9rem;min-height:3rem;gap:.5rem;--palette-primary-100-rgb: #4c5a69;--palette-primary-500-rgb: #243142}[_nghost-%COMP%] button.mat-accent[_ngcontent-%COMP%]:active{--palette-primary-700-rgb: #4c5a69}[_nghost-%COMP%] button.mat-accent[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{z-index:1} .download-options-panel{box-shadow:.1rem .1rem .4rem .2rem #dad7d7;background-color:#fff}"],changeDetection:0}),n})(),Yoe=(()=>{class t{static formats(e){const{formats:i,entries:r}=e;return Object.values(i).filter(s=>!(!s||!(s.id in r)))}}return z([Dt([W0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Array)],t,"formats",null),t})(),kN=(()=>{class t{static isFullScreen(e){return e.isFullScreen}static size(e){return e.size}}return z([Dt([Q0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",Boolean)],t,"isFullScreen",null),z([Dt([Q0]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",String)],t,"size",null),t})(),Zoe=(()=>{var t;class n{constructor(){this.productLogoUrl=ct(vt.url,E0),this.productTitle=ct(vt.anyText,D0),this.downloadFormats=$n(Yoe.formats),this.hraPortal=k0,this.illustrationMetadata=M0,this.embed=uR,this.download=yn(Um),this.size=$n(kN.size),this.dialog=R(Gd)}contact(){const i=new El;i.disableClose=!0,this.dialog.open(vN,i)}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-footer-behavior"]],standalone:!0,features:[Be],decls:1,vars:7,consts:[[3,"productLogoUrl","productTitle","hraPortal","illustrationMetadata","embed","downloadFormats","size","contactClick","download"]],template:function(i,r){1&i&&(x(0,"hra-footer",0),re("contactClick",function(){return r.contact()})("download",function(s){return r.download(s.id)}),D()),2&i&&S("productLogoUrl",r.productLogoUrl())("productTitle",r.productTitle())("hraPortal",r.hraPortal)("illustrationMetadata",r.illustrationMetadata)("embed",r.embed)("downloadFormats",r.downloadFormats())("size",r.size())},dependencies:[Re,Wd,qoe],styles:["[_nghost-%COMP%]{display:block}"],changeDetection:0}),n})(),Koe=(()=>{var t;class n{constructor(){this.text=""}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-ui-tooltip"]],inputs:{text:"text"},standalone:!0,features:[Be],decls:2,vars:1,consts:[[1,"tooltip"]],template:function(i,r){1&i&&(x(0,"div",0),N(1),D()),2&i&&(E(1),Jt(r.text))},dependencies:[Re],styles:["[_nghost-%COMP%] .tooltip[_ngcontent-%COMP%]{display:flex;flex-direction:column;background:white;box-shadow:1px .125rem 1rem .125rem #00000029;border-radius:.5rem;padding:1rem}"],changeDetection:0}),n})();function MN(t,n,e){return e?MN(t,n).pipe(af(e)):new xe(i=>{const r=(...s)=>i.next(1===s.length?s[0]:s),o=t(r);return qe(n)?()=>n(r,o):void 0})}function Qoe(t,n){if(1&t){const e=nr();x(0,"div",2),re("onSVGInserted",function(r){return fi(e),mi(W().setSvgElement(r))}),wa(1,"async"),D()}if(2&t){const e=W();fe("hover-active",xa(1,4,e.nodeHoverData$)),S("inlineSVG",e.url)("evalScripts",e.NEVER_EVAL_SCRIPTS)}}function Joe(t,n){if(1&t&&G(0,"hra-ui-tooltip",4),2&t){const e=W().ngIf;S("text",W().formatNodeName(e.node))}}function ese(t,n){if(1&t&&(Ln(0),O(1,Joe,1,1,"ng-template",3),Bn()),2&t){const e=n.ngIf,i=W();E(1),S("cdkConnectedOverlayOrigin",e.origin)("cdkConnectedOverlayPositions",i.TOOLTIP_POSITIONS)("cdkConnectedOverlayViewportMargin",16)("cdkConnectedOverlayOpen",!0)}}const nse=[{originX:"center",originY:"center",overlayX:"start",overlayY:"center",offsetX:8},{originX:"center",originY:"center",overlayX:"end",overlayY:"center",offsetX:-8},{originX:"center",originY:"center",overlayX:"center",overlayY:"top",offsetY:8},{originX:"center",originY:"center",overlayX:"center",overlayY:"bottom",offsetY:-8}];let ise=(()=>{var t;class n{constructor(){this.mapping=[],this.nodeHover=new Q,this.nodeClick=new Q,this.NEVER_EVAL_SCRIPTS="never",this.TOOLTIP_POSITIONS=nse,this.nodeHoverData$=new Tt(void 0),this.nodeHoverDelayedData$=this.nodeHoverData$.pipe(function Xoe(t){return gt((n,e)=>{let i=!1,r=null,o=null;const s=()=>{if(o?.unsubscribe(),o=null,i){i=!1;const a=r;r=null,e.next(a)}};n.subscribe(ot(e,a=>{o?.unsubscribe(),i=!0,r=a,o=ot(e,s,ou),Qt(t(a)).subscribe(o)},()=>{s(),e.complete()},void 0,()=>{r=o=null}))})}(i=>Jm(i?200:0))),this.renderer=R(gi),this.destroy$=new te,this.highlightedElements=[]}ngOnChanges(i){"highlightId"in i&&(this.resetHighlight(),this.setHighlight())}setHighlight(){const{mapping:i,highlightId:r,crosswalkEl:o}=this,s=i.find(({ontologyId:d})=>d===r);if(!s||!o)return;let a=this.encodeId(s.id);const l=o.querySelector(`#${a}`);if(!l)return;"g"!==l.nodeName&&(a=l.parentElement?.id??"");const c=o.querySelectorAll(`#${a} :is(path, polygon, polyline)`);this.highlightedElements=Array.from(c),c.forEach(d=>d.classList.add("click-active"))}resetHighlight(){for(const i of this.highlightedElements)i.classList.remove("click-active");this.highlightedElements=[]}ngOnDestroy(){this.clear()}setSvgElement(i){this.clear(),this.crosswalkEl=i.querySelector('[id^="Crosswalk"]')??void 0,this.crosswalkEl&&(this.renderer.appendChild(i,this.crosswalkEl),this.attachCrosswalkHover(this.crosswalkEl))}formatNodeName(i){return i.replace(/_/g," ")}attachCrosswalkHover(i){this.attachEvent(i,"mouseover").subscribe(r=>this.onCrosswalkHover(r)),this.attachEvent(i,"mouseout").subscribe(()=>this.onCrosswalkHover(void 0)),this.attachEvent(i,"click").subscribe(r=>this.nodeClick.emit(this.getNode(r)))}onCrosswalkHover(i){if(i){const r=this.getNode(i);r&&(this.nodeHoverData$.next({node:r.label,origin:{x:i.clientX,y:i.clientY}}),this.nodeHover.emit(r))}else this.nodeHoverData$.next(void 0),this.nodeHover.emit()}clear(){this.destroy$.next(),this.destroy$.complete(),this.destroy$=new te}getNode(i){const a=[i.target.id,i.target.parentElement?.id??"",i.target.parentElement?.parentElement?.id??""];for(const l of a){const c=this.decodeId(l),d=this.mapping.find(u=>u.id?.toLowerCase()===c.toLowerCase());if(d)return d}}decodeId(i){return i.replace(/_x([\da-f]+)_/gi,(o,s)=>String.fromCharCode(Number.parseInt(s,16)))}encodeId(i){return i.replace(/[^a-z0-9-]/gi,o=>`_x${o.charCodeAt(0).toString(16).toUpperCase()}_`)}attachEvent(i,r){const{renderer:o,destroy$:s}=this;return MN(c=>o.listen(i,r,c),(c,d)=>d()).pipe(ze(s))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-interactive-svg"]],inputs:{url:"url",mapping:"mapping",highlightId:"highlightId"},outputs:{nodeHover:"nodeHover",nodeClick:"nodeClick"},standalone:!0,features:[st,Be],decls:3,vars:4,consts:[["class","svg",3,"hover-active","inlineSVG","evalScripts","onSVGInserted",4,"ngIf"],[4,"ngIf"],[1,"svg",3,"inlineSVG","evalScripts","onSVGInserted"],["cdkConnectedOverlay","","cdkConnectedOverlayPanelClass","hra-interactive-svg-tooltip-panel",3,"cdkConnectedOverlayOrigin","cdkConnectedOverlayPositions","cdkConnectedOverlayViewportMargin","cdkConnectedOverlayOpen"],[3,"text"]],template:function(i,r){1&i&&(O(0,Qoe,2,6,"div",0),O(1,ese,2,4,"ng-container",1),wa(2,"async")),2&i&&(S("ngIf",r.url),E(1),S("ngIf",xa(2,2,r.nodeHoverDelayedData$)))},dependencies:[Re,An,Pb,eP,yJ,cp,jP,Koe],styles:[".svg{max-height:calc(100vh - 14rem);overflow-y:auto}svg{max-height:calc(100vh - 10rem);width:100%}[id^=Crosswalk] :is(path,polygon,polyline){fill:transparent;stroke:transparent}.hover-active [id^=Crosswalk] g:hover>:is(path,polygon,polyline),.hover-active [id^=Crosswalk] g>g:hover>:is(path,polygon,polyline),[id^=Crosswalk] .click-active{fill:red;mix-blend-mode:saturation}::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-track{background:#f8f9fa;border:.063rem solid #d3d3d3}::-webkit-scrollbar-thumb{background:#a0abb4;border-radius:.5rem}\n"],encapsulation:3,changeDetection:0}),n})(),rse=(()=>{var t;class n{constructor(){this.currentUrl=$n(Ld.url),this.mapping=$n(Ld.mapping),this.iri=$n(Gm.iri),this.tissues=$n(Nm.tissues),this.updateNodeOnHover=yn(Bm),this.updateNodeOnClicked=yn(Vm)}get tissueTitle(){const i=this.iri(),r=this.tissues();return i?r[i].label:""}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-medical-illustration-behavior"]],standalone:!0,features:[Be],decls:3,vars:3,consts:[[3,"url","mapping","nodeHover","nodeClick"]],template:function(i,r){1&i&&(x(0,"hra-label-box"),N(1),D(),x(2,"hra-interactive-svg",0),re("nodeHover",function(s){return r.updateNodeOnHover(s)})("nodeClick",function(s){return r.updateNodeOnClicked(s)}),D()),2&i&&(E(1),Jt(r.tissueTitle),E(1),S("url",r.currentUrl())("mapping",r.mapping()))},dependencies:[Re,ise,Wm],styles:["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] hra-label-box[_ngcontent-%COMP%]{border-bottom:.063rem solid #d3d3d3;width:100%;height:3.5rem}"],changeDetection:0}),n})();const ose=["*"];let TN=(()=>{var t;class n{constructor(){this.isFullScreen=!1}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-fullscreen-content"]],hostVars:3,hostBindings:function(i,r){2&i&&(B_("@animateResize",r.isFullScreen),fe("fullscreen-on",r.isFullScreen))},standalone:!0,features:[Be],ngContentSelectors:ose,decls:1,vars:0,template:function(i,r){1&i&&(Bt(),Se(0))},dependencies:[Re],styles:["[_nghost-%COMP%]{display:block;overflow-y:hidden;transition:width .5s ease;width:50%}.fullscreen-on[_nghost-%COMP%]{z-index:100;background:#f8f9fa}"],data:{animation:[Aa("animateResize",[xi("true",qt({width:"100%",position:"absolute",right:0})),xi("false",qt({width:"50%",position:"absolute",right:0})),zr("true <=> false",[Hr("0.5s ease")])])]},changeDetection:0}),n})();const sse=["*"];let ase=(()=>{var t;class n{constructor(){this.fullscreen=!1}ngAfterContentInit(){this.updateFullscreenMode()}ngOnChanges(i){"fullscreen"in i&&this.updateFullscreenMode()}updateFullscreenMode(){this.content?.forEach(i=>{i.isFullScreen=this.fullscreen})}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-fullscreen-container"]],contentQueries:function(i,r,o){if(1&i&&Ze(o,TN,4),2&i){let s;J(s=ee())&&(r.content=s)}},inputs:{fullscreen:"fullscreen"},standalone:!0,features:[st,Be],ngContentSelectors:sse,decls:1,vars:0,template:function(i,r){1&i&&(Bt(),Se(0))},dependencies:[Re],styles:["[_nghost-%COMP%]{display:block;position:relative}"],changeDetection:0}),n})(),lse=(()=>{var t;class n{constructor(){this.isFullscreen=$n(kN.isFullScreen);const i=R(Ao).queryParams.pipe(ze(al())),r=yn(Id);i.subscribe(o=>r(o.id))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-ftu-page"]],standalone:!0,features:[Be],decls:5,vars:1,consts:[[1,"content-container",3,"fullscreen"],[1,"illustration"],[1,"fullscreen-content-container"],[1,"illustration-details"]],template:function(i,r){1&i&&(x(0,"hra-fullscreen-container",0),G(1,"ftu-medical-illustration-behavior",1),x(2,"hra-fullscreen-content",2),G(3,"ftu-biomarker-details",3),D()(),G(4,"ftu-footer-behavior")),2&i&&S("fullscreen",r.isFullscreen())},dependencies:[Re,aoe,Zoe,ase,TN,rse],styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:hidden}[_nghost-%COMP%] .content-container[_ngcontent-%COMP%]{display:flex;height:calc(100% - 5rem - 1px)}[_nghost-%COMP%] .content-container[_ngcontent-%COMP%] .illustration[_ngcontent-%COMP%]{width:50%}[_nghost-%COMP%] .content-container[_ngcontent-%COMP%] .fullscreen-content-container[_ngcontent-%COMP%], [_nghost-%COMP%] .content-container[_ngcontent-%COMP%] .fullscreen-content-container[_ngcontent-%COMP%] .illustration-details[_ngcontent-%COMP%]{height:100%;background-color:#f8f9fa}[_nghost-%COMP%] .content-container[_ngcontent-%COMP%] .fullscreen-content-container[_ngcontent-%COMP%] .illustration-details[_ngcontent-%COMP%]{border-left:.063rem solid #d3d3d3}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] ftu-biomarker-details{grid-template-columns:.5fr .5fr 1fr}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] ftu-biomarker-details hra-source-list{width:unset!important}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] ftu-biomarker-details hra-source-list hra-label-box{width:auto}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] hra-label-box.table-header{width:auto}[_nghost-%COMP%] .fullscreen-on[_ngcontent-%COMP%] hra-biomarker-table{max-width:none}"],changeDetection:0}),n})(),cse=(()=>{var t;class n{constructor(){this.title="",this.description="",this.partners="",this.img="",this.moreText="",this.moreLink=Zr}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-landing-page-intro"]],inputs:{title:"title",description:"description",partners:"partners",img:"img",moreText:"moreText",moreLink:"moreLink"},standalone:!0,features:[Be],decls:9,vars:6,consts:[[1,"title"],[1,"description",3,"data"],["mat-flat-button","","color","primary",1,"more-button","red-theme",3,"hraLink"],["iconPositionEnd",""],[1,"partners",3,"data"],["alt","alt",1,"image",3,"src"]],template:function(i,r){1&i&&(x(0,"h1",0),N(1),D(),G(2,"markdown",1),x(3,"button",2),N(4),x(5,"mat-icon",3),N(6,"arrow_right_alt"),D()(),G(7,"markdown",4)(8,"img",5)),2&i&&(E(1),Jt(r.title),E(1),S("data",r.description),E(1),S("hraLink",r.moreLink),E(1),nt(" ",r.moreText," "),E(3),S("data",r.partners),E(1),S("src",r.img,Fi))},dependencies:[Re,eo,pl,br,to,Ts,Ms,gl],styles:["[_nghost-%COMP%]{display:grid;grid-template-columns:3fr 2fr;grid-template-rows:auto auto 3rem 1fr;align-items:start;column-gap:2rem;row-gap:2rem}[_nghost-%COMP%] .title[_ngcontent-%COMP%]{font-size:3rem;line-height:4rem;margin:0}[_nghost-%COMP%] .more-button[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;height:3rem}[_nghost-%COMP%] .image[_ngcontent-%COMP%]{grid-column:2;grid-row:1/span 4;place-self:center;width:100%;height:auto}[_nghost-%COMP%] .description[_ngcontent-%COMP%] p, [_nghost-%COMP%] .partners[_ngcontent-%COMP%] p{margin:0}[_nghost-%COMP%] .description[_ngcontent-%COMP%] a, [_nghost-%COMP%] .partners[_ngcontent-%COMP%] a{color:var(--palette-primary-500-rgb);font-weight:700}[_nghost-%COMP%] .red-theme[_ngcontent-%COMP%]{background-color:#900;border-color:#900}[_nghost-%COMP%] .red-theme[_ngcontent-%COMP%]:hover{background-color:#900;border-color:#900}[_nghost-%COMP%] .red-theme[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{transform:translate(30%);transition:.5s}[_nghost-%COMP%] .red-theme[_ngcontent-%COMP%]:active, [_nghost-%COMP%] .red-theme[_ngcontent-%COMP%]:focus, [_nghost-%COMP%] .red-theme[_ngcontent-%COMP%]:focus:not(:hover){background-color:#900;border-color:#900}[_nghost-%COMP%] .red-theme[_ngcontent-%COMP%]:active .mat-mdc-focus-indicator, [_nghost-%COMP%] .red-theme[_ngcontent-%COMP%]:focus .mat-mdc-focus-indicator, [_nghost-%COMP%] .red-theme[_ngcontent-%COMP%]:focus:not(:hover) .mat-mdc-focus-indicator{background-color:#900!important;border-color:#900}"],changeDetection:0}),n})();function dse(t,n){if(1&t&&(x(0,"div",4),G(1,"img",0),x(2,"span",5),N(3),D(),x(4,"span",6),N(5),D()()),2&t){const e=n.$implicit;E(1),S("src",e.icon,Fi),E(2),nt(" ",e.value," "),E(2),nt(" ",e.description," ")}}let use=(()=>{var t;class n{constructor(){this.title="",this.logo="",this.metrics=[]}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-metrics"]],inputs:{title:"title",logo:"logo",metrics:"metrics"},standalone:!0,features:[Be],decls:5,vars:3,consts:[["alt","",1,"logo",3,"src"],[1,"header-title"],[1,"metrics"],["class","metric",4,"ngFor","ngForOf"],[1,"metric"],[1,"value"],[1,"description"]],template:function(i,r){1&i&&(G(0,"img",0),x(1,"span",1),N(2),D(),x(3,"div",2),O(4,dse,6,3,"div",3),D()),2&i&&(S("src",r.logo,Fi),E(2),Jt(r.title),E(2),S("ngForOf",r.metrics))},dependencies:[Re,cs],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;align-items:center;padding:2rem 0 0;background:#f8f9fa;gap:.5rem}[_nghost-%COMP%] .logo[_ngcontent-%COMP%]{height:2.75rem}[_nghost-%COMP%] .header-title[_ngcontent-%COMP%]{font-size:2rem;line-height:2.5rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%]{display:flex;flex-direction:row;overflow-x:auto;max-width:100%;gap:2rem;padding:2rem 1.75rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;min-width:14.25rem;height:14.75rem;padding-top:2rem;padding-bottom:2rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%]{margin-bottom:2rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:3rem;line-height:4rem;margin-bottom:.25rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] .description[_ngcontent-%COMP%]{font-size:1rem;text-align:center}"],changeDetection:0}),n})(),hse=(()=>{var t;class n{constructor(){this.title="",this.description="",this.img="",this.moreText="",this.moreLink=Zr}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-landing-page-in-depth"]],inputs:{title:"title",description:"description",img:"img",moreText:"moreText",moreLink:"moreLink"},standalone:!0,features:[Be],decls:6,vars:5,consts:[["alt","",1,"image",3,"src"],[1,"title"],[1,"description",3,"data"],["mat-flat-button","","color","primary",1,"more-button",3,"hraLink"]],template:function(i,r){1&i&&(G(0,"img",0),x(1,"h1",1),N(2),D(),G(3,"markdown",2),x(4,"button",3),N(5),D()),2&i&&(S("src",r.img,Fi),E(2),Jt(r.title),E(1),S("data",r.description),E(1),S("hraLink",r.moreLink),E(1),nt(" ",r.moreText,"\n"))},dependencies:[Re,Ts,Ms,eo,pl,br,gl],styles:["[_nghost-%COMP%]{display:grid;grid-template-columns:2fr 3fr;grid-template-rows:auto auto 1fr;column-gap:2rem;row-gap:2rem;padding:3.5rem 2rem}[_nghost-%COMP%] .image[_ngcontent-%COMP%]{grid-column:1;grid-row:1/span 3;width:100%;height:auto;align-self:center;border-radius:1rem;box-shadow:.06rem .13rem 1rem .13rem #00000029}[_nghost-%COMP%] .title[_ngcontent-%COMP%]{font-size:2rem;line-height:2.5rem;margin:0}[_nghost-%COMP%] .description[_ngcontent-%COMP%]{font-size:1rem;line-height:1.5rem}[_nghost-%COMP%] .description[_ngcontent-%COMP%] p{margin:0}[_nghost-%COMP%] .description[_ngcontent-%COMP%] a{color:var(--palette-primary-500-rgb);font-weight:700}[_nghost-%COMP%] .more-button[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;height:3rem}"],changeDetection:0}),n})();const fse=["intersectable"];let mse=(()=>{var t;class n{constructor(){this.landingPageIntroTitle=ct(vt.anyText,EX),this.landingPageIntroDescription=ct(vt.markdown,SX),this.landingPageIntroPartners=ct(vt.markdown,kX),this.landingPageIntroMoreText=ct(vt.anyText,MX),this.landingPageIntroImg=ct(vt.url,TX),this.metrics=ct(vt.field,NX,Pne,"metrics",[]),this.metricsTitle=ct(vt.anyText,IX),this.metricsLogo=ct(vt.url,AX),this.landingPageDepthTitle=ct(vt.anyText,OX),this.landingPageDepthDescription=ct(vt.markdown,PX),this.landingPageDepthMoreText=ct(vt.anyText,FX),this.landingPageDepthImg=ct(vt.url,RX),this.LinkIds=Bp,this.renderer=R(gi),this.destroy$=al()}ngAfterViewInit(){const i=new IntersectionObserver(this.handleIntersection.bind(this),{threshold:.18});this.intersectableEls.forEach(r=>i.observe(r.nativeElement)),this.destroy$.subscribe(()=>i.disconnect())}handleIntersection(i,r){for(const{isIntersecting:o,target:s}of i)o&&(this.renderer.addClass(s,"visible"),r.unobserve(s))}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-landing-page-content"]],viewQuery:function(i,r){if(1&i&&Ge(fse,5,H),2&i){let o;J(o=ee())&&(r.intersectableEls=o)}},standalone:!0,features:[Be],decls:5,vars:14,consts:[[1,"intro",3,"title","img","partners","description","moreText","moreLink"],[1,"metrics",3,"title","metrics","logo"],["intersectable",""],[1,"in-depth",3,"title","description","moreText","img","moreLink"]],template:function(i,r){1&i&&G(0,"hra-landing-page-intro",0)(1,"hra-metrics",1,2)(3,"hra-landing-page-in-depth",3,2),2&i&&(S("title",r.landingPageIntroTitle())("img",r.landingPageIntroImg())("partners",r.landingPageIntroPartners())("description",r.landingPageIntroDescription())("moreText",r.landingPageIntroMoreText())("moreLink",r.LinkIds.ExploreFTU),E(1),S("title",r.metricsTitle())("metrics",r.metrics())("logo",r.metricsLogo()),E(2),S("title",r.landingPageDepthTitle())("description",r.landingPageDepthDescription())("moreText",r.landingPageDepthMoreText())("img",r.landingPageDepthImg())("moreLink",r.LinkIds.LandingPageReadMore))},dependencies:[Re,cse,use,hse],styles:["[_nghost-%COMP%]{display:block;overflow-x:hidden}[_nghost-%COMP%] .intro[_ngcontent-%COMP%]{margin:3.5rem 2rem}[_nghost-%COMP%] .metrics[_ngcontent-%COMP%]{opacity:0}[_nghost-%COMP%] .metrics.visible[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeIn 2s ease-in forwards}[_nghost-%COMP%] .in-depth[_ngcontent-%COMP%]{opacity:0}[_nghost-%COMP%] .in-depth.visible[_ngcontent-%COMP%]{overflow:hidden;animation:_ngcontent-%COMP%_slideIn 2s ease-in-out forwards}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}@keyframes _ngcontent-%COMP%_slideIn{0%{transform:translate(200%);opacity:1}to{transform:translate(0);opacity:1}}"],changeDetection:0}),n})(),pse=(()=>{var t;class n{constructor(){yn(Hm)()}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-landing"]],standalone:!0,features:[Be],decls:1,vars:0,template:function(i,r){1&i&&G(0,"ftu-landing-page-content")},dependencies:[Re,mse],styles:["[_nghost-%COMP%]{display:block}"],changeDetection:0}),n})();const gse=[{path:"",loadComponent:()=>pse},{path:"ftu",resolve:{id:t=>{const n=yn(Ja,S0);return t.queryParamMap.get("id")||(n(),Cn)}},loadComponent:()=>lse},{path:"**",redirectTo:"/"}];let _se=(()=>{var t;class n{}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({imports:[R1.forRoot(gse),R1]}),n})(),bse=(()=>{class t{static get(){return(e,i)=>_r.getStorage(e).getItem(i)??void 0}static length(){return e=>_r.getStorage(e).length}}return z([Dt([_r]),y("design:type",Function),y("design:paramtypes",[]),y("design:returntype",Function)],t,"get",null),z([Dt([_r]),y("design:type",Function),y("design:paramtypes",[]),y("design:returntype",Function)],t,"length",null),t})(),vse=(()=>{var t;class n{constructor(){this.content="",this.portal=Zr,this.proceedClick=new Q}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["hra-screen-size-notice"]],inputs:{content:"content",portal:"portal"},outputs:{proceedClick:"proceedClick"},standalone:!0,features:[Be],decls:10,vars:2,consts:[["mat-icon-button","",1,"header-close",3,"click"],[1,"content",3,"data"],["mat-stroked-button","","color","accent",1,"btn-stroked",3,"click"],["mat-flat-button","","color","primary",1,"btn-flat",3,"hraLink"]],template:function(i,r){1&i&&(x(0,"h3"),N(1,"Screen Size Notice"),D(),x(2,"button",0),re("click",function(){return r.proceedClick.emit()}),x(3,"mat-icon"),N(4,"close"),D()(),G(5,"markdown",1),x(6,"button",2),re("click",function(){return r.proceedClick.emit()}),N(7," Proceed to FTU Explorer\n"),D(),x(8,"a",3),N(9," Human Reference Atlas Portal "),D()),2&i&&(E(5),S("data",r.content),E(3),S("hraLink",r.portal))},dependencies:[Re,Ts,Ms,eo,tR,pl,km,br,to,gl],styles:["[_nghost-%COMP%]{display:none;position:relative;border-radius:.5rem;padding:1.5rem;flex-direction:column}[_nghost-%COMP%] .header-close[_ngcontent-%COMP%]{position:absolute;top:.625rem;right:1rem}[_nghost-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 1rem;font-weight:700}[_nghost-%COMP%] .btn-stroked[_ngcontent-%COMP%]{font-weight:700;margin-bottom:1rem;margin-top:1rem;padding:.75rem 0;letter-spacing:.5px}[_nghost-%COMP%] .btn-flat[_ngcontent-%COMP%]{font-weight:700;font-size:16px;padding:.75rem 0;letter-spacing:.5px;color:#fff}[_nghost-%COMP%] .content[_ngcontent-%COMP%]{font-size:1rem;line-height:1.5rem;letter-spacing:.5px}@media (max-width: 480px){[_nghost-%COMP%]{display:flex}}"],changeDetection:0}),n})(),yse=(()=>{var t;class n{constructor(){this.content=ct(vt.anyText,UX),this.portal=k0,this.ref=R(kw,{optional:!0}),this.setScreenNoticeShown=yn(d0,Qr.Local,"screen-size-notice","shown")}close(){this.setScreenNoticeShown(),this.ref?.close()}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-ui-screen-notice-behavior"]],standalone:!0,features:[Be],decls:1,vars:2,consts:[[3,"content","portal","proceedClick"]],template:function(i,r){1&i&&(x(0,"hra-screen-size-notice",0),re("proceedClick",function(){return r.close()}),D()),2&i&&S("content",r.content())("portal",r.portal)},dependencies:[Re,vse],styles:["[_nghost-%COMP%]{display:block}"],changeDetection:0}),n})();function wse(t,n){1&t&&(Ln(0),G(1,"ftu-tissue-library-behavior",2),x(2,"div",3),G(3,"router-outlet"),D(),Bn())}let xse=(()=>{var t;class n{set linksYamlUrl(i){this.loadLinks(i)}set resourcesYamlUrl(i){this.loadResources(i)}set organIri(i){i?this.navigateToOrgan(Ui("FTU"),{queryParams:{id:i}}):this.showDefaultIri()}constructor(){this.matTypography=!0,this.SMALL_VIEWPORT_THRESHOLD=480,this.tissues=ll(Nm.tissues),this.datasetUrl="",this.illustrationsUrl="",this.summariesUrl="",this.organSelected=ll(Gm.iri),this.nodeHovered=ll(Ld.selectedOnHovered),this.nodeClicked=ll(Ld.selectedOnClicked),this.injector=R(xt),this.screenSizeNoticeOpen=!1,this.hasShownSmallViewportNotice=ct(bse.get,Qr.Local,"screen-size-notice"),this.loadLinks=yn(Wf),this.loadResources=yn(om),this.navigateToOrgan=yn(Ja),this.setScreenSmall=yn(X0),this.reloadDataSets=yn(L0),this.reloadActiveFtu=yn(Id),this.reset=function wX(t,...n){return Om(lR(t,n),aR)}(Hm),this.dialog=R(Gd),R(ln).initialNavigation()}ngAfterContentInit(){this.detectSmallViewport()}detectSmallViewport(){window.innerWidth<=this.SMALL_VIEWPORT_THRESHOLD&&!this.hasShownSmallViewportNotice()&&(this.dialog.open(yse,{width:"312px",disableClose:!1,panelClass:"custom-overlay"}).afterClosed().subscribe(()=>this.screenSizeNoticeOpen=!1),this.screenSizeNoticeOpen=!0)}ngOnInit(){this.endpoints=this.injector.get(qm)}ngOnChanges(i){this.endpoints=this.injector.get(qm),"datasetUrl"in i&&(this.endpoints.datasets=this.datasetUrl,this.endpoints.illustrations=this.illustrationsUrl,this.endpoints.summaries=this.summariesUrl,this.reset().pipe(We(()=>{this.reloadDataSets(),this.reloadActiveFtu(i.organIri.currentValue)})).subscribe())}showDefaultIri(){this.tissues.pipe(We(i=>{for(const[r,{children:o}]of Object.entries(i))if(o.length>0&&r){this.organIri=o[0];break}})).subscribe()}}return(t=n).\u0275fac=function(i){return new(i||t)},t.\u0275cmp=$({type:t,selectors:[["ftu-ui-root"]],hostVars:2,hostBindings:function(i,r){2&i&&fe("mat-typography",r.matTypography)},inputs:{linksYamlUrl:"linksYamlUrl",resourcesYamlUrl:"resourcesYamlUrl",organIri:"organIri",datasetUrl:"datasetUrl",illustrationsUrl:"illustrationsUrl",summariesUrl:"summariesUrl"},outputs:{organSelected:"organSelected",nodeHovered:"nodeHovered",nodeClicked:"nodeClicked"},features:[ie([Wd]),st],decls:2,vars:1,consts:[[1,"header"],[4,"ngIf"],[1,"sidebar"],[1,"page-content"]],template:function(i,r){1&i&&(G(0,"ftu-header-behavior",0),O(1,wse,4,0,"ng-container",1)),2&i&&(E(1),S("ngIf",!r.screenSizeNoticeOpen))},dependencies:[An,ey,hR,IR],styles:['[_nghost-%COMP%]{display:grid;width:100%;height:100%;grid-template-columns:21rem calc(100% - 21rem);grid-template-rows:5rem max(100% - 5rem);grid-template-areas:"header header" "sidebar content"}[_nghost-%COMP%] .header[_ngcontent-%COMP%]{grid-area:header;border-bottom:.0625rem solid rgba(var(--dark-dividers))}[_nghost-%COMP%] .sidebar[_ngcontent-%COMP%]{grid-area:sidebar;border-right:.0625rem solid rgba(var(--dark-dividers))}[_nghost-%COMP%] .page-content[_ngcontent-%COMP%] {grid-area:content;overflow-y:hidden}[_nghost-%COMP%] .page-content[_ngcontent-%COMP%] ftu-landing{max-height:100%;overflow-y:auto}[_nghost-%COMP%] .custom-overlay[_ngcontent-%COMP%]{background-color:#fff}[_nghost-%COMP%] .content-container.hidden[_ngcontent-%COMP%]{display:none}']}),n})();function Cse(){const t=function xX(){return Om(Im,aR)}();return()=>t([new rd({[S0]:{type:oi.Internal,commands:["/"]}}),new Wf("assets/links.yml"),new om("assets/resources.yml"),new L0])}let Ese=(()=>{var t;class n{constructor(i){this.injector=i}ngDoBootstrap(){const i=function HZ(t,n){const e=function PZ(t,n){return n.get(Ni).resolveComponentFactory(t).inputs}(t,n.injector),i=n.strategyFactory||new BZ(t,n.injector),r=function RZ(t){const n={};return t.forEach(({propName:e,templateName:i})=>{n[function MZ(t){return t.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`)}(i)]=e}),n}(e);class o extends jZ{get ngElementStrategy(){if(!this._ngElementStrategy){const a=this._ngElementStrategy=i.create(this.injector||n.injector);e.forEach(({propName:l})=>{if(!this.hasOwnProperty(l))return;const c=this[l];delete this[l],a.setInputValue(l,c)})}return this._ngElementStrategy}constructor(a){super(),this.injector=a}attributeChangedCallback(a,l,c,d){this.ngElementStrategy.setInputValue(r[a],c)}connectedCallback(){let a=!1;this.ngElementStrategy.events&&(this.subscribeToEvents(),a=!0),this.ngElementStrategy.connect(this),a||this.subscribeToEvents()}disconnectedCallback(){this._ngElementStrategy&&this._ngElementStrategy.disconnect(),this.ngElementEventsSubscription&&(this.ngElementEventsSubscription.unsubscribe(),this.ngElementEventsSubscription=null)}subscribeToEvents(){this.ngElementEventsSubscription=this.ngElementStrategy.events.subscribe(a=>{const l=new CustomEvent(a.name,{detail:a.value});this.dispatchEvent(l)})}}return o.observedAttributes=Object.keys(r),e.forEach(({propName:s})=>{Object.defineProperty(o.prototype,s,{get(){return this.ngElementStrategy.getInputValue(s)},set(a){this.ngElementStrategy.setInputValue(s,a)},configurable:!0,enumerable:!0})}),o}(xse,{injector:this.injector});customElements.define("hra-ftu-wc",i)}}return(t=n).\u0275fac=function(i){return new(i||t)(_(xt))},t.\u0275mod=pe({type:t}),t.\u0275inj=ue({providers:[{provide:Sa,useFactory:Cse,multi:!0}],imports:[ZM,b6,b5,Wd,eP.forRoot(),Ts.forRoot({loader:wi}),sn.forRoot(),pJ,_se,kZ,jQ,QQ.forRoot({googleAnalyticsToken:"G-1WRJHN9FM6"}),hR,IR]}),n})();H4().bootstrapModule(Ese).catch(t=>console.error(t))})(); \ No newline at end of file diff --git a/apps/ftu-ui/styles.css b/apps/ftu-ui/styles.css index af7d8aace..449c4daa4 100644 --- a/apps/ftu-ui/styles.css +++ b/apps/ftu-ui/styles.css @@ -1 +1 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}html,body{height:100%}body{margin:0}:root{--dark-primary-text: 0, 0, 0, .87;--dark-secondary-text: 0, 0, 0, .54;--dark-accent-text: 0, 0, 0, .87;--dark-warn-text: 0, 0, 0, .87;--dark-disabled-text: 0, 0, 0, .38;--dark-dividers: 0, 0, 0, .12;--dark-focused: 0, 0, 0, .12;--light-primary-text: 255, 255, 255, 1;--light-secondary-text: 255, 255, 255, .7;--light-accent-text: 255, 255, 255, 1;--light-warn-text: 255, 255, 255, 1;--light-disabled-text: 255, 255, 255, .5;--light-dividers: 255, 255, 255, .12;--light-focused: 255, 255, 255, .12}:root{--palette-primary-50: 225, 245, 254;--palette-primary-100: 198, 236, 246;--palette-primary-200: 129, 212, 250;--palette-primary-300: 79, 195, 247;--palette-primary-400: 41, 182, 246;--palette-primary-500: 0, 98, 152;--palette-primary-600: 3, 155, 229;--palette-primary-700: 0, 56, 95;--palette-primary-800: 2, 119, 189;--palette-primary-900: 1, 87, 155;--palette-primary-A100: 128, 216, 255;--palette-primary-A200: 64, 196, 255;--palette-primary-A400: 0, 176, 255;--palette-primary-A700: 0, 145, 234;--palette-primary-contrast-50: var(--dark-primary-text);--palette-primary-contrast-100: var(--dark-primary-text);--palette-primary-contrast-200: var(--dark-primary-text);--palette-primary-contrast-300: var(--dark-primary-text);--palette-primary-contrast-400: var(--dark-primary-text);--palette-primary-contrast-500: var(--light-primary-text);--palette-primary-contrast-600: var(--light-primary-text);--palette-primary-contrast-700: var(--light-primary-text);--palette-primary-contrast-800: var(--light-primary-text);--palette-primary-contrast-900: var(--light-primary-text);--palette-primary-contrast-A100: var(--light-primary-text);--palette-primary-contrast-A200: var(--light-primary-text);--palette-primary-contrast-A400: var(--light-primary-text);--palette-primary-contrast-A700: var(--light-primary-text);--palette-accent-50: 252, 228, 236;--palette-accent-100: 248, 187, 208;--palette-accent-200: 244, 143, 177;--palette-accent-300: 240, 98, 146;--palette-accent-400: 236, 64, 122;--palette-accent-500: 233, 30, 99;--palette-accent-600: 216, 27, 96;--palette-accent-700: 194, 24, 91;--palette-accent-800: 173, 20, 87;--palette-accent-900: 136, 14, 79;--palette-accent-A100: 255, 247, 248;--palette-accent-A200: 153, 0, 0;--palette-accent-A400: 245, 0, 87;--palette-accent-A700: 197, 17, 98;--palette-accent-contrast-50: var(--dark-accent-text);--palette-accent-contrast-100: var(--dark-accent-text);--palette-accent-contrast-200: var(--dark-accent-text);--palette-accent-contrast-300: var(--dark-accent-text);--palette-accent-contrast-400: var(--dark-accent-text);--palette-accent-contrast-500: var(--light-accent-text);--palette-accent-contrast-600: var(--light-accent-text);--palette-accent-contrast-700: var(--light-accent-text);--palette-accent-contrast-800: var(--light-accent-text);--palette-accent-contrast-900: var(--light-accent-text);--palette-accent-contrast-A100: var(--light-accent-text);--palette-accent-contrast-A200: var(--light-accent-text);--palette-accent-contrast-A400: var(--light-accent-text);--palette-accent-contrast-A700: var(--light-accent-text);--palette-warn-50: 255, 235, 238;--palette-warn-100: 255, 205, 210;--palette-warn-200: 239, 154, 154;--palette-warn-300: 229, 115, 115;--palette-warn-400: 239, 83, 80;--palette-warn-500: 220, 35, 30;--palette-warn-600: 229, 57, 53;--palette-warn-700: 211, 47, 47;--palette-warn-800: 198, 40, 40;--palette-warn-900: 183, 28, 28;--palette-warn-A100: 255, 138, 128;--palette-warn-A200: 255, 82, 82;--palette-warn-A400: 255, 23, 68;--palette-warn-A700: 213, 0, 0;--palette-warn-contrast-50: var(--dark-warn-text);--palette-warn-contrast-100: var(--dark-warn-text);--palette-warn-contrast-200: var(--dark-warn-text);--palette-warn-contrast-300: var(--dark-warn-text);--palette-warn-contrast-400: var(--dark-warn-text);--palette-warn-contrast-500: var(--light-warn-text);--palette-warn-contrast-600: var(--light-warn-text);--palette-warn-contrast-700: var(--light-warn-text);--palette-warn-contrast-800: var(--light-warn-text);--palette-warn-contrast-900: var(--light-warn-text);--palette-warn-contrast-A100: var(--light-warn-text);--palette-warn-contrast-A200: var(--light-warn-text);--palette-warn-contrast-A400: var(--light-warn-text);--palette-warn-contrast-A700: var(--light-warn-text);--palette-primary-50-rgb: rgb(var(--palette-primary-50));--palette-primary-100-rgb: rgb(var(--palette-primary-100));--palette-primary-200-rgb: rgb(var(--palette-primary-200));--palette-primary-300-rgb: rgb(var(--palette-primary-300));--palette-primary-400-rgb: rgb(var(--palette-primary-400));--palette-primary-500-rgb: rgb(var(--palette-primary-500));--palette-primary-600-rgb: rgb(var(--palette-primary-600));--palette-primary-700-rgb: rgb(var(--palette-primary-700));--palette-primary-800-rgb: rgb(var(--palette-primary-800));--palette-primary-900-rgb: rgb(var(--palette-primary-900));--palette-primary-A100-rgb: rgb(var(--palette-primary-A100));--palette-primary-A200-rgb: rgb(var(--palette-primary-A200));--palette-primary-A400-rgb: rgb(var(--palette-primary-A400));--palette-primary-A700-rgb: rgb(var(--palette-primary-A700));--palette-primary-contrast-50-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-100-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-200-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-300-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-400-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-500-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-600-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-700-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-800-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-900-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-A100-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-A200-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-A400-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-A700-rgb: rgba(var(--light-primary-text));--palette-accent-50-rgb: rgb(var(--palette-accent-50));--palette-accent-100-rgb: rgb(var(--palette-accent-100));--palette-accent-200-rgb: rgb(var(--palette-accent-200));--palette-accent-300-rgb: rgb(var(--palette-accent-300));--palette-accent-400-rgb: rgb(var(--palette-accent-400));--palette-accent-500-rgb: rgb(var(--palette-accent-500));--palette-accent-600-rgb: rgb(var(--palette-accent-600));--palette-accent-700-rgb: rgb(var(--palette-accent-700));--palette-accent-800-rgb: rgb(var(--palette-accent-800));--palette-accent-900-rgb: rgb(var(--palette-accent-900));--palette-accent-A100-rgb: rgb(var(--palette-accent-A100));--palette-accent-A200-rgb: rgb(var(--palette-accent-A200));--palette-accent-A400-rgb: rgb(var(--palette-accent-A400));--palette-accent-A700-rgb: rgb(var(--palette-accent-A700));--palette-accent-contrast-50-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-100-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-200-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-300-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-400-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-500-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-600-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-700-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-800-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-900-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-A100-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-A200-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-A400-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-A700-rgb: rgba(var(--light-accent-text));--palette-warn-50-rgb: rgb(var(--palette-warn-50));--palette-warn-100-rgb: rgb(var(--palette-warn-100));--palette-warn-200-rgb: rgb(var(--palette-warn-200));--palette-warn-300-rgb: rgb(var(--palette-warn-300));--palette-warn-400-rgb: rgb(var(--palette-warn-400));--palette-warn-500-rgb: rgb(var(--palette-warn-500));--palette-warn-600-rgb: rgb(var(--palette-warn-600));--palette-warn-700-rgb: rgb(var(--palette-warn-700));--palette-warn-800-rgb: rgb(var(--palette-warn-800));--palette-warn-900-rgb: rgb(var(--palette-warn-900));--palette-warn-A100-rgb: rgb(var(--palette-warn-A100));--palette-warn-A200-rgb: rgb(var(--palette-warn-A200));--palette-warn-A400-rgb: rgb(var(--palette-warn-A400));--palette-warn-A700-rgb: rgb(var(--palette-warn-A700));--palette-warn-contrast-50-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-100-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-200-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-300-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-400-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-500-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-600-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-700-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-800-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-900-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-A100-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-A200-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-A400-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-A700-rgb: rgba(var(--light-warn-text))}.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-primary-500-rgb)}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-primary-500-rgb)}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-accent-500-rgb)}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-accent-500-rgb)}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-accent-500-rgb)}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-accent-500-rgb)}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-warn-500-rgb)}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-warn-500-rgb)}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-mdc-option{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em)}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-card-title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-headline6-font-size, 20px);line-height:var(--mdc-typography-headline6-line-height, 32px);font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:var(--mdc-typography-headline6-letter-spacing, .0125em);-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:var(--mdc-typography-headline6-text-transform, none)}.mat-mdc-card-subtitle{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 14px);line-height:var(--mdc-typography-subtitle2-line-height, 22px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, .0071428571em);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: var(--palette-primary-500-rgb)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-primary-500-rgb)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:var(--palette-primary-500-rgb)}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: var(--palette-accent-500-rgb)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-accent-500-rgb)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:var(--palette-accent-500-rgb)}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: var(--palette-warn-500-rgb)}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-warn-500-rgb)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:var(--palette-warn-500-rgb)}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font: Inter, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: .0333333333em}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--palette-primary-500-rgb)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:rgba(var(--palette-primary-500-rgb),.87)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:rgba(var(--palette-accent-500-rgb),.87)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:rgba(var(--palette-warn-500-rgb),.87)}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(var(--palette-accent-500-rgb),.87)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(var(--palette-warn-500-rgb),.87)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mdc-text-field__input,.mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.mat-mdc-form-field,.mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(16px * var(--mat-mdc-form-field-floating-label-scale, .75))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:rgba(var(--palette-primary-500-rgb),.87)}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:rgba(var(--palette-accent-500-rgb),.87)}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:rgba(var(--palette-warn-500-rgb),.87)}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-select-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.mat-mdc-select{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.mat-mdc-autocomplete-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-dialog-container{--mdc-dialog-subhead-font: Inter, sans-serif;--mdc-dialog-subhead-line-height: 32px;--mdc-dialog-subhead-size: 20px;--mdc-dialog-subhead-weight: 500;--mdc-dialog-subhead-tracking: .0125em;--mdc-dialog-supporting-text-font: Inter, sans-serif;--mdc-dialog-supporting-text-line-height: 24px;--mdc-dialog-supporting-text-size: 16px;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: .03125em}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-primary-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-primary-500-rgb);--mdc-chip-label-text-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-primary-contrast-500-rgb)}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-accent-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-accent-500-rgb);--mdc-chip-label-text-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-accent-contrast-500-rgb)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-warn-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-warn-500-rgb);--mdc-chip-label-text-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-warn-contrast-500-rgb)}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-standard-chip{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: var(--palette-primary-600-rgb);--mdc-switch-selected-handle-color: var(--palette-primary-600-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-primary-600-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-primary-600-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-primary-900-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-primary-900-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-primary-900-rgb);--mdc-switch-selected-focus-track-color: var(--palette-primary-300-rgb);--mdc-switch-selected-hover-track-color: var(--palette-primary-300-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-primary-300-rgb);--mdc-switch-selected-track-color: var(--palette-primary-300-rgb)}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: var(--palette-accent-600-rgb);--mdc-switch-selected-handle-color: var(--palette-accent-600-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-accent-600-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-accent-600-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-accent-900-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-accent-900-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-accent-900-rgb);--mdc-switch-selected-focus-track-color: var(--palette-accent-300-rgb);--mdc-switch-selected-hover-track-color: var(--palette-accent-300-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-accent-300-rgb);--mdc-switch-selected-track-color: var(--palette-accent-300-rgb)}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: var(--palette-warn-600-rgb);--mdc-switch-selected-handle-color: var(--palette-warn-600-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-warn-600-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-warn-600-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-warn-900-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-warn-900-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-warn-900-rgb);--mdc-switch-selected-focus-track-color: var(--palette-warn-300-rgb);--mdc-switch-selected-hover-track-color: var(--palette-warn-300-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-warn-300-rgb);--mdc-switch-selected-track-color: var(--palette-warn-300-rgb)}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-primary-500-rgb)}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-accent-500-rgb)}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-warn-500-rgb)}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: var(--palette-primary-500-rgb);--mdc-slider-focus-handle-color: var(--palette-primary-500-rgb);--mdc-slider-hover-handle-color: var(--palette-primary-500-rgb);--mdc-slider-active-track-color: var(--palette-primary-500-rgb);--mdc-slider-inactive-track-color: var(--palette-primary-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #000;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-primary-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-primary-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-primary-500-rgb), .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: var(--palette-accent-500-rgb);--mdc-slider-focus-handle-color: var(--palette-accent-500-rgb);--mdc-slider-hover-handle-color: var(--palette-accent-500-rgb);--mdc-slider-active-track-color: var(--palette-accent-500-rgb);--mdc-slider-inactive-track-color: var(--palette-accent-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #000;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-accent-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-accent-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-accent-500-rgb), .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: var(--palette-warn-500-rgb);--mdc-slider-focus-handle-color: var(--palette-warn-500-rgb);--mdc-slider-hover-handle-color: var(--palette-warn-500-rgb);--mdc-slider-active-track-color: var(--palette-warn-500-rgb);--mdc-slider-inactive-track-color: var(--palette-warn-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #000;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-warn-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-warn-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-warn-500-rgb), .2)}.mat-mdc-slider{--mdc-slider-label-label-text-font: Inter, sans-serif;--mdc-slider-label-label-text-size: 14px;--mdc-slider-label-label-text-line-height: 22px;--mdc-slider-label-label-text-tracking: .0071428571em;--mdc-slider-label-label-text-weight: 500}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-menu-content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mdc-list-item__primary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-primary-500-rgb)}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-accent-500-rgb)}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-warn-500-rgb)}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--palette-primary-500-rgb)}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-list-base{--mdc-list-list-item-label-text-font: Inter, sans-serif;--mdc-list-list-item-label-text-line-height: 24px;--mdc-list-list-item-label-text-size: 16px;--mdc-list-list-item-label-text-tracking: .03125em;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Inter, sans-serif;--mdc-list-list-item-supporting-text-line-height: 20px;--mdc-list-list-item-supporting-text-size: 14px;--mdc-list-list-item-supporting-text-tracking: .0178571429em;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Inter, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 20px;--mdc-list-list-item-trailing-supporting-text-size: 12px;--mdc-list-list-item-trailing-supporting-text-tracking: .0333333333em;--mdc-list-list-item-trailing-supporting-text-weight: 400}.mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Inter,sans-serif;letter-spacing:.009375em}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-paginator{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.mat-mdc-paginator .mat-mdc-select-value{font-size:12px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-primary-500-rgb)}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-primary-500-rgb))}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-primary-500-rgb)}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-accent-500-rgb)}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-accent-500-rgb))}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-accent-500-rgb)}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-warn-500-rgb)}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-warn-500-rgb))}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-warn-500-rgb)}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: var(--palette-primary-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #000}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: var(--palette-accent-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #000}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: var(--palette-warn-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #000}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mdc-tab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, .0892857143em);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-primary-500-rgb);opacity:.1}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-primary-500-rgb)}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-accent-500-rgb);opacity:.1}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-accent-500-rgb)}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-warn-500-rgb);opacity:.1}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-warn-500-rgb)}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}@media all and (-ms-high-contrast: none){.mdc-checkbox .mdc-checkbox__focus-ring{display:none}}.mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: var(--palette-primary-500-rgb)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: var(--palette-accent-500-rgb)}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: var(--palette-warn-500-rgb)}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: var(--palette-primary-500-rgb);--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: var(--palette-accent-500-rgb);--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: var(--palette-warn-500-rgb);--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: var(--palette-primary-500-rgb);--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: var(--palette-accent-500-rgb);--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: var(--palette-warn-500-rgb);--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: var(--palette-primary-500-rgb)}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: var(--palette-accent-500-rgb)}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: var(--palette-warn-500-rgb)}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-primary-500-rgb), .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-accent-500-rgb), .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-warn-500-rgb), .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, .0892857143em);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-primary-500-rgb), .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-accent-500-rgb), .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-warn-500-rgb), .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: var(--palette-primary-500-rgb)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: var(--palette-accent-500-rgb)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: var(--palette-warn-500-rgb)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: var(--palette-primary-500-rgb);--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: var(--palette-accent-500-rgb);--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: var(--palette-warn-500-rgb);--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, .0892857143em);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: var(--palette-accent-500-rgb);--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font: Inter, sans-serif;--mdc-snackbar-supporting-text-line-height: 20px;--mdc-snackbar-supporting-text-size: 14px;--mdc-snackbar-supporting-text-weight: 400}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:rgba(var(--palette-primary-500-rgb),.04)}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mdc-data-table__content,.mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 14px);line-height:var(--mdc-typography-subtitle2-line-height, 22px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, .0071428571em);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: var(--palette-primary-500-rgb)}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: var(--palette-accent-500-rgb)}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: var(--palette-warn-500-rgb)}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:var(--palette-primary-contrast-500-rgb);background:var(--palette-primary-500-rgb)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.mat-badge-warn .mat-badge-content{color:var(--palette-warn-contrast-500-rgb);background:var(--palette-warn-500-rgb)}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-badge-content{font-weight:600;font-size:12px;font-family:Inter,sans-serif}.mat-badge-small .mat-badge-content{font-size:9px}.mat-badge-large .mat-badge-content{font-size:24px}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-bottom-sheet-container{font-size:14px;font-weight:400;line-height:20px;font-family:Inter,sans-serif;letter-spacing:.0178571429em}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-button-toggle{font-family:Inter,sans-serif}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:var(--palette-primary-500-rgb)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-primary-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-primary-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-primary-contrast-500-rgb)}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-accent-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-accent-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-accent-contrast-500-rgb)}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-warn-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-warn-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-warn-contrast-500-rgb)}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:var(--palette-primary-500-rgb)}.mat-datepicker-toggle-active.mat-accent{color:var(--palette-accent-500-rgb)}.mat-datepicker-toggle-active.mat-warn{color:var(--palette-warn-500-rgb)}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-calendar{font-family:Inter,sans-serif}.mat-calendar-body{font-size:13px}.mat-calendar-body-label,.mat-calendar-period-button{font-size:14px;font-weight:500}.mat-calendar-table-header th{font-size:11px;font-weight:400}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-expansion-panel-header{font-family:Inter,sans-serif;font-size:14px;font-weight:500}.mat-expansion-panel-content{font-size:14px;font-weight:400;line-height:20px;font-family:Inter,sans-serif;letter-spacing:.0178571429em}.mat-grid-tile-header,.mat-grid-tile-footer{font-size:14px}.mat-grid-tile-header .mat-line,.mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-header .mat-line:nth-child(n+2),.mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}.mat-icon.mat-primary{color:var(--palette-primary-500-rgb)}.mat-icon.mat-accent{color:var(--palette-accent-500-rgb)}.mat-icon.mat-warn{color:var(--palette-warn-500-rgb)}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:var(--palette-primary-contrast-500-rgb)}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.mat-step-header.mat-accent .mat-step-icon{color:var(--palette-accent-contrast-500-rgb)}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.mat-step-header.mat-warn .mat-step-icon{color:var(--palette-warn-contrast-500-rgb)}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:var(--palette-warn-500-rgb)}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:var(--palette-warn-500-rgb)}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-stepper-vertical,.mat-stepper-horizontal{font-family:Inter,sans-serif}.mat-step-label{font-size:14px;font-weight:400}.mat-step-sub-label-error{font-weight:400}.mat-step-label-error{font-size:16px}.mat-step-label-selected{font-size:16px;font-weight:400}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.mat-toolbar.mat-accent{background:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.mat-toolbar.mat-warn{background:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font-size:20px;font-weight:500;line-height:32px;font-family:Inter,sans-serif;letter-spacing:.0125em;margin:0}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-tree{font-family:Inter,sans-serif}.mat-tree-node,.mat-nested-tree-node{font-weight:400;font-size:14px}.mat-h1,.mat-headline-5,.mat-typography .mat-h1,.mat-typography .mat-headline-5,.mat-typography h1{font-size:24px;font-weight:400;line-height:32px;font-family:Inter,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-headline-6,.mat-typography .mat-h2,.mat-typography .mat-headline-6,.mat-typography h2{font-size:20px;font-weight:500;line-height:32px;font-family:Inter,sans-serif;letter-spacing:.0125em;margin:0 0 16px}.mat-h3,.mat-subtitle-1,.mat-typography .mat-h3,.mat-typography .mat-subtitle-1,.mat-typography h3{font-size:16px;font-weight:400;line-height:28px;font-family:Inter,sans-serif;letter-spacing:.009375em;margin:0 0 16px}.mat-h4,.mat-body-1,.mat-typography .mat-h4,.mat-typography .mat-body-1,.mat-typography h4{font-size:16px;font-weight:400;line-height:24px;font-family:Inter,sans-serif;letter-spacing:.03125em;margin:0 0 16px}.mat-h5,.mat-typography .mat-h5,.mat-typography h5{font:400 11.62px/20px Inter,sans-serif;margin:0 0 12px}.mat-h6,.mat-typography .mat-h6,.mat-typography h6{font:400 9.38px/20px Inter,sans-serif;margin:0 0 12px}.mat-body-strong,.mat-subtitle-2,.mat-typography .mat-body-strong,.mat-typography .mat-subtitle-2{font-size:14px;font-weight:500;line-height:22px;font-family:Inter,sans-serif;letter-spacing:.0071428571em}.mat-body,.mat-body-2,.mat-typography .mat-body,.mat-typography .mat-body-2,.mat-typography{font-size:14px;font-weight:400;line-height:20px;font-family:Inter,sans-serif;letter-spacing:.0178571429em}.mat-body p,.mat-body-2 p,.mat-typography .mat-body p,.mat-typography .mat-body-2 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption,.mat-typography .mat-small,.mat-typography .mat-caption{font-size:12px;font-weight:400;line-height:20px;font-family:Inter,sans-serif;letter-spacing:.0333333333em}.mat-headline-1,.mat-typography .mat-headline-1{font-size:96px;font-weight:300;line-height:96px;font-family:Inter,sans-serif;letter-spacing:-.015625em;margin:0 0 56px}.mat-headline-2,.mat-typography .mat-headline-2{font-size:60px;font-weight:300;line-height:60px;font-family:Inter,sans-serif;letter-spacing:-.0083333333em;margin:0 0 64px}.mat-headline-3,.mat-typography .mat-headline-3{font-size:48px;font-weight:400;line-height:50px;font-family:Inter,sans-serif;letter-spacing:normal;margin:0 0 64px}.mat-headline-4,.mat-typography .mat-headline-4{font-size:34px;font-weight:400;line-height:40px;font-family:Inter,sans-serif;letter-spacing:.0073529412em;margin:0 0 64px}.isDarkTheme .mat-ripple-element{background-color:#ffffff1a}.isDarkTheme .mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-option:hover:not(.mdc-list-item--disabled),.isDarkTheme .mat-mdc-option:focus:not(.mdc-list-item--disabled),.isDarkTheme .mat-mdc-option.mat-mdc-option-active,.isDarkTheme .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(255,255,255,.08)}.isDarkTheme .mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.isDarkTheme .mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-pseudo-checkbox-full{color:#ffffffb3}.isDarkTheme .mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#686868}.isDarkTheme .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-primary-500-rgb)}.isDarkTheme .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.isDarkTheme .mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.isDarkTheme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-accent-500-rgb)}.isDarkTheme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.isDarkTheme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.isDarkTheme .mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-accent-500-rgb)}.isDarkTheme .mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.isDarkTheme .mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.isDarkTheme .mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-warn-500-rgb)}.isDarkTheme .mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.isDarkTheme .mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.isDarkTheme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#686868}.isDarkTheme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#686868}.isDarkTheme .mat-app-background,.isDarkTheme.mat-app-background{background-color:#303030;color:#fff}.isDarkTheme .mat-elevation-z0,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.isDarkTheme .mat-elevation-z1,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.isDarkTheme .mat-elevation-z2,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.isDarkTheme .mat-elevation-z3,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.isDarkTheme .mat-elevation-z4,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.isDarkTheme .mat-elevation-z5,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.isDarkTheme .mat-elevation-z6,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.isDarkTheme .mat-elevation-z7,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.isDarkTheme .mat-elevation-z8,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.isDarkTheme .mat-elevation-z9,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.isDarkTheme .mat-elevation-z10,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.isDarkTheme .mat-elevation-z11,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.isDarkTheme .mat-elevation-z12,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.isDarkTheme .mat-elevation-z13,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.isDarkTheme .mat-elevation-z14,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.isDarkTheme .mat-elevation-z15,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.isDarkTheme .mat-elevation-z16,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.isDarkTheme .mat-elevation-z17,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.isDarkTheme .mat-elevation-z18,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.isDarkTheme .mat-elevation-z19,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.isDarkTheme .mat-elevation-z20,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.isDarkTheme .mat-elevation-z21,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.isDarkTheme .mat-elevation-z22,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.isDarkTheme .mat-elevation-z23,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.isDarkTheme .mat-elevation-z24,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.isDarkTheme .mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #424242}.isDarkTheme .mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #595959}.isDarkTheme .mat-mdc-card-subtitle{color:#ffffffb3}.isDarkTheme .mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-primary-500-rgb)'/%3E%3C/svg%3E")}.isDarkTheme .mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-accent-500-rgb)'/%3E%3C/svg%3E")}.isDarkTheme .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-warn-500-rgb)'/%3E%3C/svg%3E")}.isDarkTheme .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#fff9}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#ffffffde}@media all{.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#fff9}}@media all{.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#fff9}}.isDarkTheme .mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.isDarkTheme .mdc-text-field--filled .mdc-text-field__ripple:before,.isDarkTheme .mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(255, 255, 255, .87))}.isDarkTheme .mdc-text-field--filled:hover .mdc-text-field__ripple:before,.isDarkTheme .mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .08)}.isDarkTheme .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.isDarkTheme .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .24)}.isDarkTheme .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#4a4a4a}.isDarkTheme .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#ffffff6b}.isDarkTheme .mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#ffffffde}.isDarkTheme .mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#ffffff61}.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#ffffffde}.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-text-field--outlined .mdc-text-field__ripple:before,.isDarkTheme .mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.isDarkTheme .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--palette-primary-500-rgb)}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input{color:#ffffff61}@media all{.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#ffffff61}}@media all{.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#ffffff61}}.isDarkTheme .mdc-text-field--disabled .mdc-floating-label{color:#ffffff61}.isDarkTheme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.isDarkTheme .mdc-text-field--disabled .mdc-text-field-character-counter,.isDarkTheme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.isDarkTheme .mdc-text-field--disabled .mdc-text-field__icon--leading,.isDarkTheme .mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.isDarkTheme .mdc-text-field--disabled .mdc-text-field__affix--prefix,.isDarkTheme .mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.isDarkTheme .mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#ffffff0f}.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#ffffff0f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field-character-counter,.isDarkTheme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.isDarkTheme .mdc-text-field--disabled.mdc-text-field--filled{background-color:#464646}.isDarkTheme .mat-mdc-form-field-error{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field-focus-overlay{background-color:#ffffffde}.isDarkTheme .mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.08}.isDarkTheme .mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.24}.isDarkTheme select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:#000000de}.isDarkTheme select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:#00000061}.isDarkTheme .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#ffffff8a}.isDarkTheme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:rgba(var(--palette-primary-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:rgba(var(--palette-accent-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:rgba(var(--palette-warn-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#ffffff61}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(var(--palette-accent-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(var(--palette-warn-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}.isDarkTheme [dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.isDarkTheme .mat-mdc-select-value{color:#ffffffde}.isDarkTheme .mat-mdc-select-placeholder{color:#fff9}.isDarkTheme .mat-mdc-select-disabled .mat-mdc-select-value{color:#ffffff61}.isDarkTheme .mat-mdc-select-arrow{color:#ffffff8a}.isDarkTheme .mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:rgba(var(--palette-primary-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:rgba(var(--palette-accent-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.isDarkTheme .mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:rgba(var(--palette-warn-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#ffffff61}.isDarkTheme .mat-mdc-dialog-container{--mdc-dialog-container-color: #424242;--mdc-dialog-with-divider-divider-color: rgba(255, 255, 255, .12);--mdc-dialog-subhead-color: rgba(255, 255, 255, .87);--mdc-dialog-supporting-text-color: rgba(255, 255, 255, .6)}.isDarkTheme .mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #595959;--mdc-chip-elevated-disabled-container-color: #595959;--mdc-chip-label-text-color: #fafafa;--mdc-chip-disabled-label-text-color: #fafafa;--mdc-chip-with-icon-icon-color: #fafafa;--mdc-chip-with-icon-disabled-icon-color: #fafafa;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #fafafa;--mdc-chip-with-trailing-icon-trailing-icon-color: #fafafa;--mdc-chip-with-icon-selected-icon-color: #fafafa}.isDarkTheme .mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.isDarkTheme .mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-primary-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-primary-500-rgb);--mdc-chip-label-text-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.isDarkTheme .mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-accent-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-accent-500-rgb);--mdc-chip-label-text-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.isDarkTheme .mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-warn-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-warn-500-rgb);--mdc-chip-label-text-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-mdc-chip-focus-overlay{background:white}.isDarkTheme .mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #000;--mdc-switch-disabled-unselected-handle-color: #000;--mdc-switch-disabled-selected-track-color: #f5f5f5;--mdc-switch-disabled-unselected-track-color: #f5f5f5;--mdc-switch-unselected-focus-state-layer-color: #f5f5f5;--mdc-switch-unselected-pressed-state-layer-color: #f5f5f5;--mdc-switch-unselected-hover-state-layer-color: #f5f5f5;--mdc-switch-unselected-focus-track-color: #616161;--mdc-switch-unselected-hover-track-color: #616161;--mdc-switch-unselected-pressed-track-color: #616161;--mdc-switch-unselected-track-color: #616161;--mdc-switch-unselected-focus-handle-color: #fafafa;--mdc-switch-unselected-hover-handle-color: #fafafa;--mdc-switch-unselected-pressed-handle-color: #fafafa;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #9e9e9e;--mdc-switch-selected-icon-color: #212121;--mdc-switch-disabled-selected-icon-color: #212121;--mdc-switch-disabled-unselected-icon-color: #212121;--mdc-switch-unselected-icon-color: #212121}.isDarkTheme .mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: var(--palette-primary-300-rgb);--mdc-switch-selected-handle-color: var(--palette-primary-300-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-primary-300-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-primary-300-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-primary-200-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-primary-200-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-primary-200-rgb);--mdc-switch-selected-focus-track-color: var(--palette-primary-600-rgb);--mdc-switch-selected-hover-track-color: var(--palette-primary-600-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-primary-600-rgb);--mdc-switch-selected-track-color: var(--palette-primary-600-rgb)}.isDarkTheme .mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: var(--palette-accent-300-rgb);--mdc-switch-selected-handle-color: var(--palette-accent-300-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-accent-300-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-accent-300-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-accent-200-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-accent-200-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-accent-200-rgb);--mdc-switch-selected-focus-track-color: var(--palette-accent-600-rgb);--mdc-switch-selected-hover-track-color: var(--palette-accent-600-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-accent-600-rgb);--mdc-switch-selected-track-color: var(--palette-accent-600-rgb)}.isDarkTheme .mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: var(--palette-warn-300-rgb);--mdc-switch-selected-handle-color: var(--palette-warn-300-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-warn-300-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-warn-300-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-warn-200-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-warn-200-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-warn-200-rgb);--mdc-switch-selected-focus-track-color: var(--palette-warn-600-rgb);--mdc-switch-selected-hover-track-color: var(--palette-warn-600-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-warn-600-rgb);--mdc-switch-selected-track-color: var(--palette-warn-600-rgb)}.isDarkTheme .mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-slider{--mdc-slider-label-container-color: white;--mdc-slider-label-label-text-color: black;--mdc-slider-disabled-handle-color: #fff;--mdc-slider-disabled-active-track-color: #fff;--mdc-slider-disabled-inactive-track-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #fff;--mat-mdc-slider-value-indicator-opacity: .9}.isDarkTheme .mat-mdc-slider.mat-primary{--mdc-slider-handle-color: var(--palette-primary-500-rgb);--mdc-slider-focus-handle-color: var(--palette-primary-500-rgb);--mdc-slider-hover-handle-color: var(--palette-primary-500-rgb);--mdc-slider-active-track-color: var(--palette-primary-500-rgb);--mdc-slider-inactive-track-color: var(--palette-primary-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-primary-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-primary-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-primary-500-rgb), .2)}.isDarkTheme .mat-mdc-slider.mat-accent{--mdc-slider-handle-color: var(--palette-accent-500-rgb);--mdc-slider-focus-handle-color: var(--palette-accent-500-rgb);--mdc-slider-hover-handle-color: var(--palette-accent-500-rgb);--mdc-slider-active-track-color: var(--palette-accent-500-rgb);--mdc-slider-inactive-track-color: var(--palette-accent-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-accent-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-accent-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-accent-500-rgb), .2)}.isDarkTheme .mat-mdc-slider.mat-warn{--mdc-slider-handle-color: var(--palette-warn-500-rgb);--mdc-slider-focus-handle-color: var(--palette-warn-500-rgb);--mdc-slider-hover-handle-color: var(--palette-warn-500-rgb);--mdc-slider-active-track-color: var(--palette-warn-500-rgb);--mdc-slider-inactive-track-color: var(--palette-warn-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-warn-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-warn-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-warn-500-rgb), .2)}.isDarkTheme .mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #424242);color:var(--mdc-theme-on-surface, #fff)}.isDarkTheme .mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(255, 255, 255, .7))}.isDarkTheme .mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(255, 255, 255, .5))}.isDarkTheme .mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.isDarkTheme .mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(255, 255, 255, .5))}.isDarkTheme .mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(255, 255, 255, .5))}.isDarkTheme .mdc-list-item--disabled .mdc-list-item__start,.isDarkTheme .mdc-list-item--disabled .mdc-list-item__content,.isDarkTheme .mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.isDarkTheme .mdc-list-item--disabled .mdc-list-item__primary-text,.isDarkTheme .mdc-list-item--disabled .mdc-list-item__secondary-text,.isDarkTheme .mdc-list-item--disabled .mdc-list-item__overline-text,.isDarkTheme .mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.isDarkTheme .mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #fff)}.isDarkTheme .mdc-list-item--selected .mdc-list-item__primary-text,.isDarkTheme .mdc-list-item--activated .mdc-list-item__primary-text,.isDarkTheme .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mdc-list-divider:after{border-bottom-color:#fff}.isDarkTheme .mdc-list-divider{background-color:#fff3}.isDarkTheme .mat-mdc-menu-item[disabled],.isDarkTheme .mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.isDarkTheme .mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(255, 255, 255, .5))}.isDarkTheme .mat-mdc-menu-item .mat-icon-no-color,.isDarkTheme .mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-menu-item:hover:not([disabled]),.isDarkTheme .mat-mdc-menu-item.cdk-program-focused:not([disabled]),.isDarkTheme .mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.isDarkTheme .mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(255,255,255,.08)}.isDarkTheme .mat-mdc-list-base{--mdc-list-list-item-label-text-color: white;--mdc-list-list-item-supporting-text-color: rgba(255, 255, 255, .7);--mdc-list-list-item-leading-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-trailing-supporting-text-color: rgba(255, 255, 255, .5);--mdc-list-list-item-trailing-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-selected-trailing-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-disabled-label-text-color: white;--mdc-list-list-item-disabled-leading-icon-color: white;--mdc-list-list-item-disabled-trailing-icon-color: white;--mdc-list-list-item-hover-label-text-color: white;--mdc-list-list-item-hover-leading-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-hover-trailing-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-focus-label-text-color: white;--mdc-list-list-item-hover-state-layer-color: white;--mdc-list-list-item-hover-state-layer-opacity: .08;--mdc-list-list-item-focus-state-layer-color: white;--mdc-list-list-item-focus-state-layer-opacity: .24}.isDarkTheme .mat-mdc-list-option .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-list-option .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.isDarkTheme .mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.isDarkTheme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.isDarkTheme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.isDarkTheme .mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.isDarkTheme .mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.isDarkTheme .mat-mdc-paginator{background:#424242;color:#ffffffde}.isDarkTheme .mat-mdc-paginator-icon{fill:#ffffff8a}.isDarkTheme .mat-mdc-paginator-decrement,.isDarkTheme .mat-mdc-paginator-increment{border-top:2px solid rgba(255,255,255,.54);border-right:2px solid rgba(255,255,255,.54)}.isDarkTheme .mat-mdc-paginator-first,.isDarkTheme .mat-mdc-paginator-last{border-top:2px solid rgba(255,255,255,.54)}.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#ffffff1f}.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#ffffff1f}.isDarkTheme .mat-mdc-tab,.isDarkTheme .mat-mdc-tab-link{background-color:transparent}.isDarkTheme .mat-mdc-tab .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-link .mdc-tab__text-label{color:#fff9}.isDarkTheme .mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.isDarkTheme .mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#ffffff80}.isDarkTheme .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-accent-500-rgb))}.isDarkTheme .mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-background-primary,.isDarkTheme .mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: var(--palette-primary-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #fff}.isDarkTheme .mat-mdc-tab-group.mat-background-accent,.isDarkTheme .mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: var(--palette-accent-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #fff}.isDarkTheme .mat-mdc-tab-group.mat-background-warn,.isDarkTheme .mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: var(--palette-warn-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #fff}.isDarkTheme .mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #fff)}.isDarkTheme .mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-checkbox .mat-ripple-element{background-color:#ffffff1a}.isDarkTheme .mat-mdc-checkbox .mdc-checkbox__ripple{background:#fff}.isDarkTheme .mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-primary-500-rgb);opacity:.1}.isDarkTheme .mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-accent-500-rgb);opacity:.1}.isDarkTheme .mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-warn-500-rgb);opacity:.1}.isDarkTheme .mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-checkbox-disabled label{color:#ffffff80}.isDarkTheme .mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #fff}.isDarkTheme .mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-text-button-label-text-color: rgba(255, 255, 255, .5)}.isDarkTheme .mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #424242;--mdc-filled-button-label-text-color: #fff}.isDarkTheme .mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: var(--palette-primary-500-rgb);--mdc-filled-button-label-text-color: #fff}.isDarkTheme .mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: var(--palette-accent-500-rgb);--mdc-filled-button-label-text-color: #fff}.isDarkTheme .mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: var(--palette-warn-500-rgb);--mdc-filled-button-label-text-color: #fff}.isDarkTheme .mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(255, 255, 255, .12);--mdc-filled-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-filled-button-container-color: rgba(255, 255, 255, .12);--mdc-filled-button-label-text-color: rgba(255, 255, 255, .5)}.isDarkTheme .mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #424242;--mdc-protected-button-label-text-color: #fff}.isDarkTheme .mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: var(--palette-primary-500-rgb);--mdc-protected-button-label-text-color: #fff}.isDarkTheme .mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: var(--palette-accent-500-rgb);--mdc-protected-button-label-text-color: #fff}.isDarkTheme .mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: var(--palette-warn-500-rgb);--mdc-protected-button-label-text-color: #fff}.isDarkTheme .mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(255, 255, 255, .12);--mdc-protected-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-protected-button-container-color: rgba(255, 255, 255, .12);--mdc-protected-button-label-text-color: rgba(255, 255, 255, .5);--mdc-protected-button-container-elevation: 0}.isDarkTheme .mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(255, 255, 255, .12)}.isDarkTheme .mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #fff}.isDarkTheme .mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(255, 255, 255, .5);--mdc-outlined-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-outlined-button-outline-color: rgba(255, 255, 255, .12);--mdc-outlined-button-disabled-outline-color: rgba(255, 255, 255, .12)}.isDarkTheme .mat-mdc-button,.isDarkTheme .mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.isDarkTheme .mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-button.mat-primary,.isDarkTheme .mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-primary-500-rgb), .1)}.isDarkTheme .mat-mdc-button.mat-accent,.isDarkTheme .mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-accent-500-rgb), .1)}.isDarkTheme .mat-mdc-button.mat-warn,.isDarkTheme .mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-warn-500-rgb), .1)}.isDarkTheme .mat-mdc-raised-button,.isDarkTheme .mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.isDarkTheme .mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-raised-button.mat-primary,.isDarkTheme .mat-mdc-unelevated-button.mat-primary,.isDarkTheme .mat-mdc-raised-button.mat-accent,.isDarkTheme .mat-mdc-unelevated-button.mat-accent,.isDarkTheme .mat-mdc-raised-button.mat-warn,.isDarkTheme .mat-mdc-unelevated-button.mat-warn,.isDarkTheme .mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.isDarkTheme .mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-primary-500-rgb), .1)}.isDarkTheme .mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-accent-500-rgb), .1)}.isDarkTheme .mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-warn-500-rgb), .1)}.isDarkTheme .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(255, 255, 255, .5);--mdc-icon-button-disabled-icon-color: rgba(255, 255, 255, .5)}.isDarkTheme .mat-mdc-fab,.isDarkTheme .mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.isDarkTheme .mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-fab.mat-primary,.isDarkTheme .mat-mdc-mini-fab.mat-primary,.isDarkTheme .mat-mdc-fab.mat-accent,.isDarkTheme .mat-mdc-mini-fab.mat-accent,.isDarkTheme .mat-mdc-fab.mat-warn,.isDarkTheme .mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-fab.mat-unthemed,.isDarkTheme .mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #424242;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.isDarkTheme .mat-mdc-fab.mat-primary,.isDarkTheme .mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: var(--palette-primary-500-rgb);--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.isDarkTheme .mat-mdc-fab.mat-accent,.isDarkTheme .mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: var(--palette-accent-500-rgb);--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.isDarkTheme .mat-mdc-fab.mat-warn,.isDarkTheme .mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: var(--palette-warn-500-rgb);--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.isDarkTheme .mat-mdc-fab[disabled][disabled],.isDarkTheme .mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(255, 255, 255, .12);--mdc-fab-icon-color: rgba(255, 255, 255, .5);--mat-mdc-fab-color: rgba(255, 255, 255, .5)}.isDarkTheme .mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: rgba(0, 0, 0, .87);--mdc-snackbar-container-color: #d9d9d9;--mdc-snackbar-supporting-text-color: rgba(66, 66, 66, .87)}.isDarkTheme .mdc-data-table{background-color:var(--mdc-theme-surface, #424242);border-color:#ffffff1f}.isDarkTheme .mdc-data-table__row{background-color:inherit}.isDarkTheme .mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #424242)}.isDarkTheme .mdc-data-table__row--selected{background-color:rgba(var(--palette-primary-500-rgb),.04)}.isDarkTheme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.isDarkTheme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.isDarkTheme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#ffffff1f}.isDarkTheme .mdc-data-table__cell,.isDarkTheme .mdc-data-table__header-cell{border-bottom-color:#ffffff1f}.isDarkTheme .mdc-data-table__pagination{border-top-color:#ffffff1f}.isDarkTheme .mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#ffffff0a}.isDarkTheme .mdc-data-table__header-cell,.isDarkTheme .mdc-data-table__pagination-total,.isDarkTheme .mdc-data-table__pagination-rows-per-page-label,.isDarkTheme .mdc-data-table__cell{color:#ffffffde}.isDarkTheme .mat-mdc-table{background:#424242}.isDarkTheme .mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-badge-content{color:var(--palette-primary-contrast-500-rgb);background:var(--palette-primary-500-rgb)}.cdk-high-contrast-active .isDarkTheme .mat-badge-content{outline:solid 1px;border-radius:0}.isDarkTheme .mat-badge-accent .mat-badge-content{background:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-badge-warn .mat-badge-content{color:var(--palette-warn-contrast-500-rgb);background:var(--palette-warn-500-rgb)}.isDarkTheme .mat-badge-disabled .mat-badge-content{background:#6e6e6e;color:#ffffff80}.isDarkTheme .mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:#424242;color:#fff}.isDarkTheme .mat-button-toggle-standalone:not([class*=mat-elevation-z]),.isDarkTheme .mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.isDarkTheme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.isDarkTheme .mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.isDarkTheme .mat-button-toggle{color:#ffffff80}.isDarkTheme .mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#ffffff1f}.isDarkTheme .mat-button-toggle-appearance-standard{color:#fff;background:#424242}.isDarkTheme .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#fff}.isDarkTheme .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #595959}.isDarkTheme [dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #595959}.isDarkTheme .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #595959}.isDarkTheme .mat-button-toggle-checked{background-color:#212121;color:#ffffffb3}.isDarkTheme .mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#fff}.isDarkTheme .mat-button-toggle-disabled{color:#ffffff4d;background-color:#000}.isDarkTheme .mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:#424242}.isDarkTheme .mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#424242}.isDarkTheme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.isDarkTheme .mat-button-toggle-group-appearance-standard{border:solid 1px #595959}.isDarkTheme .mat-calendar-arrow{fill:#fff}.isDarkTheme .mat-datepicker-toggle,.isDarkTheme .mat-datepicker-content .mat-calendar-next-button,.isDarkTheme .mat-datepicker-content .mat-calendar-previous-button{color:#fff}.isDarkTheme .mat-calendar-table-header-divider:after{background:rgba(255,255,255,.12)}.isDarkTheme .mat-calendar-table-header,.isDarkTheme .mat-calendar-body-label{color:#ffffffb3}.isDarkTheme .mat-calendar-body-cell-content,.isDarkTheme .mat-date-range-input-separator{color:#fff;border-color:transparent}.isDarkTheme .mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#ffffff80}.isDarkTheme .mat-form-field-disabled .mat-date-range-input-separator{color:#ffffff80}.isDarkTheme .mat-calendar-body-in-preview{color:#ffffff3d}.isDarkTheme .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#ffffff80}.isDarkTheme .mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#ffffff4d}.isDarkTheme .mat-calendar-body-in-range:before{background:var(--palette-primary-500-rgb)}.isDarkTheme .mat-calendar-body-comparison-identical,.isDarkTheme .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.isDarkTheme .mat-calendar-body-comparison-bridge-start:before,.isDarkTheme [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-primary-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-calendar-body-comparison-bridge-end:before,.isDarkTheme [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-primary-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.isDarkTheme .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.isDarkTheme .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.isDarkTheme .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.isDarkTheme .mat-calendar-body-selected{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.isDarkTheme .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-primary-contrast-500-rgb)}.isDarkTheme .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}@media (hover: hover){.isDarkTheme .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}}.isDarkTheme .mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#424242;color:#fff}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.isDarkTheme .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-accent-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.isDarkTheme .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-accent-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}@media (hover: hover){.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.isDarkTheme .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-warn-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.isDarkTheme .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-warn-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}@media (hover: hover){.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}}.isDarkTheme .mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.isDarkTheme .mat-datepicker-toggle-active{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-datepicker-toggle-active.mat-accent{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-datepicker-toggle-active.mat-warn{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-date-range-input-inner[disabled]{color:#ffffff80}.isDarkTheme .mat-divider{border-top-color:#ffffff1f}.isDarkTheme .mat-divider-vertical{border-right-color:#ffffff1f}.isDarkTheme .mat-expansion-panel{background:#424242;color:#fff}.isDarkTheme .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.isDarkTheme .mat-action-row{border-top-color:#ffffff1f}.isDarkTheme .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.isDarkTheme .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.isDarkTheme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(255,255,255,.04)}@media (hover: none){.isDarkTheme .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:#424242}}.isDarkTheme .mat-expansion-panel-header-title{color:#fff}.isDarkTheme .mat-expansion-panel-header-description,.isDarkTheme .mat-expansion-indicator:after{color:#ffffffb3}.isDarkTheme .mat-expansion-panel-header[aria-disabled=true]{color:#ffffff4d}.isDarkTheme .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.isDarkTheme .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.isDarkTheme .mat-icon.mat-primary{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-icon.mat-accent{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-icon.mat-warn{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-drawer-container{background-color:#303030;color:#fff}.isDarkTheme .mat-drawer{background-color:#424242;color:#fff}.isDarkTheme .mat-drawer.mat-drawer-push{background-color:#424242}.isDarkTheme .mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.isDarkTheme .mat-drawer-side{border-right:solid 1px rgba(255,255,255,.12)}.isDarkTheme .mat-drawer-side.mat-drawer-end,.isDarkTheme [dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(255,255,255,.12);border-right:none}.isDarkTheme [dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(255,255,255,.12)}.isDarkTheme .mat-drawer-backdrop.mat-drawer-shown{background-color:#bdbdbd99}.isDarkTheme .mat-step-header.cdk-keyboard-focused,.isDarkTheme .mat-step-header.cdk-program-focused,.isDarkTheme .mat-step-header:hover:not([aria-disabled]),.isDarkTheme .mat-step-header:hover[aria-disabled=false]{background-color:#ffffff0a}.isDarkTheme .mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.isDarkTheme .mat-step-header:hover{background:none}}.isDarkTheme .mat-step-header .mat-step-label,.isDarkTheme .mat-step-header .mat-step-optional{color:#ffffffb3}.isDarkTheme .mat-step-header .mat-step-icon{background-color:#ffffffb3;color:var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-step-header .mat-step-icon-selected,.isDarkTheme .mat-step-header .mat-step-icon-state-done,.isDarkTheme .mat-step-header .mat-step-icon-state-edit{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-step-header.mat-accent .mat-step-icon{color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-step-header.mat-accent .mat-step-icon-selected,.isDarkTheme .mat-step-header.mat-accent .mat-step-icon-state-done,.isDarkTheme .mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-step-header.mat-warn .mat-step-icon{color:var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-step-header.mat-warn .mat-step-icon-selected,.isDarkTheme .mat-step-header.mat-warn .mat-step-icon-state-done,.isDarkTheme .mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-step-header .mat-step-icon-state-error{background-color:transparent;color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-step-header .mat-step-label.mat-step-label-active{color:#fff}.isDarkTheme .mat-step-header .mat-step-label.mat-step-label-error{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-stepper-horizontal,.isDarkTheme .mat-stepper-vertical{background-color:#424242}.isDarkTheme .mat-stepper-vertical-line:before{border-left-color:#ffffff1f}.isDarkTheme .mat-horizontal-stepper-header:before,.isDarkTheme .mat-horizontal-stepper-header:after,.isDarkTheme .mat-stepper-horizontal-line{border-top-color:#ffffff1f}.isDarkTheme .mat-sort-header-arrow{color:#c6c6c6}.isDarkTheme .mat-toolbar{background:#212121;color:#fff}.isDarkTheme .mat-toolbar.mat-primary{background:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-toolbar.mat-accent{background:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-toolbar.mat-warn{background:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-toolbar .mat-form-field-underline,.isDarkTheme .mat-toolbar .mat-form-field-ripple,.isDarkTheme .mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.isDarkTheme .mat-toolbar .mat-form-field-label,.isDarkTheme .mat-toolbar .mat-focused .mat-form-field-label,.isDarkTheme .mat-toolbar .mat-select-value,.isDarkTheme .mat-toolbar .mat-select-arrow,.isDarkTheme .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.isDarkTheme .mat-toolbar .mat-input-element{caret-color:currentColor}.isDarkTheme .mat-tree{background:#424242}.isDarkTheme .mat-tree-node,.isDarkTheme .mat-nested-tree-node{color:#fff}.mat-datepicker-content .mat-calendar-body-in-range:before{background:var(--palette-primary-500-rgb)}.isDarkTheme .mat-datepicker-content .mat-calendar-body-in-range:before{background:var(--palette-primary-500-rgb)}.mat-datepicker-content .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-datepicker-content .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:var(--palette-accent-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:var(--palette-accent-500-rgb)}.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:var(--palette-warn-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:var(--palette-warn-500-rgb)}.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}.mat-checkbox.mat-primary .mat-checkbox-checkmark .mat-checkbox-checkmark-path,.mat-checkbox.mat-primary .mat-checkbox-checkmark .mat-checkbox-checkmark-path{stroke:var(--palette-primary-contrast-500-rgb)!important}.mat-checkbox.mat-primary .mat-checkbox-mixedmark,.mat-checkbox.mat-primary .mat-checkbox-mixedmark{background-color:var(--palette-primary-contrast-500-rgb)!important}.mat-checkbox.mat-accent .mat-checkbox-checkmark .mat-checkbox-checkmark-path,.mat-checkbox.mat-accent .mat-checkbox-checkmark .mat-checkbox-checkmark-path{stroke:var(--palette-accent-contrast-500-rgb)!important}.mat-checkbox.mat-accent .mat-checkbox-mixedmark,.mat-checkbox.mat-accent .mat-checkbox-mixedmark{background-color:var(--palette-accent-contrast-500-rgb)!important}.mat-checkbox.mat-warn .mat-checkbox-checkmark .mat-checkbox-checkmark-path,.mat-checkbox.mat-warn .mat-checkbox-checkmark .mat-checkbox-checkmark-path{stroke:var(--palette-warn-contrast-500-rgb)!important}.mat-checkbox.mat-warn .mat-checkbox-mixedmark,.mat-checkbox.mat-warn .mat-checkbox-mixedmark{background-color:var(--palette-warn-contrast-500-rgb)!important}.isDarkTheme .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb,.isDarkTheme .mat-slide-toggle.mat-checked .mat-slide-toggle-bar,.isDarkTheme .mat-slide-toggle.mat-checked .mat-ripple-element,.isLightTheme .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb,.isLightTheme .mat-slide-toggle.mat-checked .mat-slide-toggle-bar,.isLightTheme .mat-slide-toggle.mat-checked .mat-ripple-element{background-color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb,.isDarkTheme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar,.isDarkTheme .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element,.isLightTheme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb,.isLightTheme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar,.isLightTheme .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element{background-color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb,.isDarkTheme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar,.isDarkTheme .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element,.isLightTheme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb,.isLightTheme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar,.isLightTheme .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element{background-color:var(--palette-warn-500-rgb)}button.mdc-button{font-weight:700;font-size:1rem}button.mdc-button.mat-primary{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb);border:2px solid;border-color:var(--palette-primary-500-rgb)}button.mdc-button.mat-primary>.mat-icon{z-index:1}button.mdc-button.mat-primary>.mat-mdc-button-persistent-ripple:before{opacity:0!important}button.mdc-button.mat-primary>.mat-mdc-focus-indicator{margin:2px}button.mdc-button.mat-primary:focus:not(:hover){background-color:#fa0;border-color:#fa0}button.mdc-button.mat-primary:focus:not(:hover)>.mat-mdc-focus-indicator{background-color:var(--palette-primary-500-rgb);margin:0;border:2px solid #ffaa00}button.mdc-button.mat-primary:hover{background-color:var(--palette-primary-700-rgb);border-color:var(--palette-primary-700-rgb);color:var(--palette-primary-contrast-700-rgb)}button.mdc-button.mat-primary:active{background-color:#fff;border-color:var(--palette-primary-700-rgb)}button.mdc-button.mat-primary:active>.mat-mdc-focus-indicator{background-color:var(--palette-primary-700-rgb);margin:2px;border:0;border-radius:4px}button.mdc-button.mat-primary:disabled{background-color:var(--palette-primary-100-rgb);border-color:var(--palette-primary-100-rgb);color:var(--palette-primary-500-rgb);color:#63b1d3}button.mdc-button.mat-accent{background-color:var(--palette-primary-contrast-500-rgb);color:var(--palette-primary-500-rgb);border:2px solid;border-color:var(--palette-primary-100-rgb)}button.mdc-button.mat-accent>.mat-mdc-button-persistent-ripple:before{opacity:0!important}button.mdc-button.mat-accent>.mat-mdc-focus-indicator{margin:2px}button.mdc-button.mat-accent:focus:not(:hover){background-color:#fa0;border-color:#fa0;color:var(--palette-primary-500-rgb)}button.mdc-button.mat-accent:focus:not(:hover)>.mat-mdc-focus-indicator{background-color:var(--palette-primary-contrast-500-rgb);margin:0;border:2px solid #ffaa00}button.mdc-button.mat-accent:hover{background-color:var(--palette-primary-50-rgb);border-color:var(--palette-primary-100-rgb);color:var(--palette-primary-500-rgb)}button.mdc-button.mat-accent:active{border-color:var(--palette-primary-700-rgb);color:#fff}button.mdc-button.mat-accent:active>.mat-mdc-focus-indicator{background-color:var(--palette-primary-700-rgb);margin:2px;border:0;border-radius:4px}button.mdc-button.mat-accent:disabled{background-color:#e7e7e5;border-color:#e7e7e5;color:#9d9e9a}a.mdc-button{font-weight:700;font-size:1rem;text-decoration:underline}a.mdc-button.mdc-button{text-decoration-color:var(--palette-primary-500-rgb);color:var(--palette-primary-500-rgb)}a.mdc-button.mdc-button:focus{color:var(--palette-primary-500-rgb);border:.25rem solid #ffaa00}a.mdc-button.mdc-button:hover{background:none;text-decoration-color:var(--palette-primary-700-rgb);color:var(--palette-primary-700-rgb)}a.mdc-button.mdc-button:active{border:solid var(--palette-primary-700-rgb);text-decoration-color:#900;color:#900}a.mdc-button.mdc-button:active span.mat-mdc-button-ripple{background-color:#fff}a.mdc-button.mdc-button[disabled]{color:#9d9e9a;-webkit-text-decoration:underline #9d9e9a;text-decoration:underline #9d9e9a}::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-track{background:#f8f9fa;border:.063rem solid #d3d3d3}::-webkit-scrollbar-thumb{background:#a0abb4;border-radius:.5rem} +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}html,body{height:100%}body{margin:0}:root{--dark-primary-text: 0, 0, 0, .87;--dark-secondary-text: 0, 0, 0, .54;--dark-accent-text: 0, 0, 0, .87;--dark-warn-text: 0, 0, 0, .87;--dark-disabled-text: 0, 0, 0, .38;--dark-dividers: 0, 0, 0, .12;--dark-focused: 0, 0, 0, .12;--light-primary-text: 255, 255, 255, 1;--light-secondary-text: 255, 255, 255, .7;--light-accent-text: 255, 255, 255, 1;--light-warn-text: 255, 255, 255, 1;--light-disabled-text: 255, 255, 255, .5;--light-dividers: 255, 255, 255, .12;--light-focused: 255, 255, 255, .12}:root{--palette-primary-50: 225, 245, 254;--palette-primary-100: 198, 236, 246;--palette-primary-200: 129, 212, 250;--palette-primary-300: 79, 195, 247;--palette-primary-400: 41, 182, 246;--palette-primary-500: 0, 98, 152;--palette-primary-600: 3, 155, 229;--palette-primary-700: 0, 56, 95;--palette-primary-800: 2, 119, 189;--palette-primary-900: 1, 87, 155;--palette-primary-A100: 128, 216, 255;--palette-primary-A200: 64, 196, 255;--palette-primary-A400: 0, 176, 255;--palette-primary-A700: 0, 145, 234;--palette-primary-contrast-50: var(--dark-primary-text);--palette-primary-contrast-100: var(--dark-primary-text);--palette-primary-contrast-200: var(--dark-primary-text);--palette-primary-contrast-300: var(--dark-primary-text);--palette-primary-contrast-400: var(--dark-primary-text);--palette-primary-contrast-500: var(--light-primary-text);--palette-primary-contrast-600: var(--light-primary-text);--palette-primary-contrast-700: var(--light-primary-text);--palette-primary-contrast-800: var(--light-primary-text);--palette-primary-contrast-900: var(--light-primary-text);--palette-primary-contrast-A100: var(--light-primary-text);--palette-primary-contrast-A200: var(--light-primary-text);--palette-primary-contrast-A400: var(--light-primary-text);--palette-primary-contrast-A700: var(--light-primary-text);--palette-accent-50: 252, 228, 236;--palette-accent-100: 248, 187, 208;--palette-accent-200: 244, 143, 177;--palette-accent-300: 240, 98, 146;--palette-accent-400: 236, 64, 122;--palette-accent-500: 233, 30, 99;--palette-accent-600: 216, 27, 96;--palette-accent-700: 194, 24, 91;--palette-accent-800: 173, 20, 87;--palette-accent-900: 136, 14, 79;--palette-accent-A100: 255, 247, 248;--palette-accent-A200: 153, 0, 0;--palette-accent-A400: 245, 0, 87;--palette-accent-A700: 197, 17, 98;--palette-accent-contrast-50: var(--dark-accent-text);--palette-accent-contrast-100: var(--dark-accent-text);--palette-accent-contrast-200: var(--dark-accent-text);--palette-accent-contrast-300: var(--dark-accent-text);--palette-accent-contrast-400: var(--dark-accent-text);--palette-accent-contrast-500: var(--light-accent-text);--palette-accent-contrast-600: var(--light-accent-text);--palette-accent-contrast-700: var(--light-accent-text);--palette-accent-contrast-800: var(--light-accent-text);--palette-accent-contrast-900: var(--light-accent-text);--palette-accent-contrast-A100: var(--light-accent-text);--palette-accent-contrast-A200: var(--light-accent-text);--palette-accent-contrast-A400: var(--light-accent-text);--palette-accent-contrast-A700: var(--light-accent-text);--palette-warn-50: 255, 235, 238;--palette-warn-100: 255, 205, 210;--palette-warn-200: 239, 154, 154;--palette-warn-300: 229, 115, 115;--palette-warn-400: 239, 83, 80;--palette-warn-500: 220, 35, 30;--palette-warn-600: 229, 57, 53;--palette-warn-700: 211, 47, 47;--palette-warn-800: 198, 40, 40;--palette-warn-900: 183, 28, 28;--palette-warn-A100: 255, 138, 128;--palette-warn-A200: 255, 82, 82;--palette-warn-A400: 255, 23, 68;--palette-warn-A700: 213, 0, 0;--palette-warn-contrast-50: var(--dark-warn-text);--palette-warn-contrast-100: var(--dark-warn-text);--palette-warn-contrast-200: var(--dark-warn-text);--palette-warn-contrast-300: var(--dark-warn-text);--palette-warn-contrast-400: var(--dark-warn-text);--palette-warn-contrast-500: var(--light-warn-text);--palette-warn-contrast-600: var(--light-warn-text);--palette-warn-contrast-700: var(--light-warn-text);--palette-warn-contrast-800: var(--light-warn-text);--palette-warn-contrast-900: var(--light-warn-text);--palette-warn-contrast-A100: var(--light-warn-text);--palette-warn-contrast-A200: var(--light-warn-text);--palette-warn-contrast-A400: var(--light-warn-text);--palette-warn-contrast-A700: var(--light-warn-text);--palette-primary-50-rgb: rgb(var(--palette-primary-50));--palette-primary-100-rgb: rgb(var(--palette-primary-100));--palette-primary-200-rgb: rgb(var(--palette-primary-200));--palette-primary-300-rgb: rgb(var(--palette-primary-300));--palette-primary-400-rgb: rgb(var(--palette-primary-400));--palette-primary-500-rgb: rgb(var(--palette-primary-500));--palette-primary-600-rgb: rgb(var(--palette-primary-600));--palette-primary-700-rgb: rgb(var(--palette-primary-700));--palette-primary-800-rgb: rgb(var(--palette-primary-800));--palette-primary-900-rgb: rgb(var(--palette-primary-900));--palette-primary-A100-rgb: rgb(var(--palette-primary-A100));--palette-primary-A200-rgb: rgb(var(--palette-primary-A200));--palette-primary-A400-rgb: rgb(var(--palette-primary-A400));--palette-primary-A700-rgb: rgb(var(--palette-primary-A700));--palette-primary-contrast-50-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-100-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-200-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-300-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-400-rgb: rgba(var(--dark-primary-text));--palette-primary-contrast-500-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-600-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-700-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-800-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-900-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-A100-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-A200-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-A400-rgb: rgba(var(--light-primary-text));--palette-primary-contrast-A700-rgb: rgba(var(--light-primary-text));--palette-accent-50-rgb: rgb(var(--palette-accent-50));--palette-accent-100-rgb: rgb(var(--palette-accent-100));--palette-accent-200-rgb: rgb(var(--palette-accent-200));--palette-accent-300-rgb: rgb(var(--palette-accent-300));--palette-accent-400-rgb: rgb(var(--palette-accent-400));--palette-accent-500-rgb: rgb(var(--palette-accent-500));--palette-accent-600-rgb: rgb(var(--palette-accent-600));--palette-accent-700-rgb: rgb(var(--palette-accent-700));--palette-accent-800-rgb: rgb(var(--palette-accent-800));--palette-accent-900-rgb: rgb(var(--palette-accent-900));--palette-accent-A100-rgb: rgb(var(--palette-accent-A100));--palette-accent-A200-rgb: rgb(var(--palette-accent-A200));--palette-accent-A400-rgb: rgb(var(--palette-accent-A400));--palette-accent-A700-rgb: rgb(var(--palette-accent-A700));--palette-accent-contrast-50-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-100-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-200-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-300-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-400-rgb: rgba(var(--dark-accent-text));--palette-accent-contrast-500-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-600-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-700-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-800-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-900-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-A100-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-A200-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-A400-rgb: rgba(var(--light-accent-text));--palette-accent-contrast-A700-rgb: rgba(var(--light-accent-text));--palette-warn-50-rgb: rgb(var(--palette-warn-50));--palette-warn-100-rgb: rgb(var(--palette-warn-100));--palette-warn-200-rgb: rgb(var(--palette-warn-200));--palette-warn-300-rgb: rgb(var(--palette-warn-300));--palette-warn-400-rgb: rgb(var(--palette-warn-400));--palette-warn-500-rgb: rgb(var(--palette-warn-500));--palette-warn-600-rgb: rgb(var(--palette-warn-600));--palette-warn-700-rgb: rgb(var(--palette-warn-700));--palette-warn-800-rgb: rgb(var(--palette-warn-800));--palette-warn-900-rgb: rgb(var(--palette-warn-900));--palette-warn-A100-rgb: rgb(var(--palette-warn-A100));--palette-warn-A200-rgb: rgb(var(--palette-warn-A200));--palette-warn-A400-rgb: rgb(var(--palette-warn-A400));--palette-warn-A700-rgb: rgb(var(--palette-warn-A700));--palette-warn-contrast-50-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-100-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-200-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-300-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-400-rgb: rgba(var(--dark-warn-text));--palette-warn-contrast-500-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-600-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-700-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-800-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-900-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-A100-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-A200-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-A400-rgb: rgba(var(--light-warn-text));--palette-warn-contrast-A700-rgb: rgba(var(--light-warn-text))}.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-primary-500-rgb)}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-primary-500-rgb)}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-accent-500-rgb)}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-accent-500-rgb)}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-accent-500-rgb)}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-accent-500-rgb)}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-warn-500-rgb)}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-warn-500-rgb)}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-mdc-option{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em)}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-card-title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-headline6-font-size, 20px);line-height:var(--mdc-typography-headline6-line-height, 32px);font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:var(--mdc-typography-headline6-letter-spacing, .0125em);-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:var(--mdc-typography-headline6-text-transform, none)}.mat-mdc-card-subtitle{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 14px);line-height:var(--mdc-typography-subtitle2-line-height, 22px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, .0071428571em);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: var(--palette-primary-500-rgb)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-primary-500-rgb)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:var(--palette-primary-500-rgb)}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: var(--palette-accent-500-rgb)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-accent-500-rgb)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:var(--palette-accent-500-rgb)}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: var(--palette-warn-500-rgb)}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-warn-500-rgb)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:var(--palette-warn-500-rgb)}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font: Inter, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: .0333333333em}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--palette-primary-500-rgb)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:rgba(var(--palette-primary-500-rgb),.87)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:rgba(var(--palette-accent-500-rgb),.87)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:rgba(var(--palette-warn-500-rgb),.87)}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(var(--palette-accent-500-rgb),.87)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(var(--palette-warn-500-rgb),.87)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mdc-text-field__input,.mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.mat-mdc-form-field,.mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(16px * var(--mat-mdc-form-field-floating-label-scale, .75))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:rgba(var(--palette-primary-500-rgb),.87)}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:rgba(var(--palette-accent-500-rgb),.87)}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:rgba(var(--palette-warn-500-rgb),.87)}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-select-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.mat-mdc-select{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.mat-mdc-autocomplete-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-dialog-container{--mdc-dialog-subhead-font: Inter, sans-serif;--mdc-dialog-subhead-line-height: 32px;--mdc-dialog-subhead-size: 20px;--mdc-dialog-subhead-weight: 500;--mdc-dialog-subhead-tracking: .0125em;--mdc-dialog-supporting-text-font: Inter, sans-serif;--mdc-dialog-supporting-text-line-height: 24px;--mdc-dialog-supporting-text-size: 16px;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: .03125em}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-primary-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-primary-500-rgb);--mdc-chip-label-text-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-primary-contrast-500-rgb)}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-accent-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-accent-500-rgb);--mdc-chip-label-text-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-accent-contrast-500-rgb)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-warn-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-warn-500-rgb);--mdc-chip-label-text-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-warn-contrast-500-rgb)}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-standard-chip{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: var(--palette-primary-600-rgb);--mdc-switch-selected-handle-color: var(--palette-primary-600-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-primary-600-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-primary-600-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-primary-900-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-primary-900-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-primary-900-rgb);--mdc-switch-selected-focus-track-color: var(--palette-primary-300-rgb);--mdc-switch-selected-hover-track-color: var(--palette-primary-300-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-primary-300-rgb);--mdc-switch-selected-track-color: var(--palette-primary-300-rgb)}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: var(--palette-accent-600-rgb);--mdc-switch-selected-handle-color: var(--palette-accent-600-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-accent-600-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-accent-600-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-accent-900-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-accent-900-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-accent-900-rgb);--mdc-switch-selected-focus-track-color: var(--palette-accent-300-rgb);--mdc-switch-selected-hover-track-color: var(--palette-accent-300-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-accent-300-rgb);--mdc-switch-selected-track-color: var(--palette-accent-300-rgb)}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: var(--palette-warn-600-rgb);--mdc-switch-selected-handle-color: var(--palette-warn-600-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-warn-600-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-warn-600-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-warn-900-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-warn-900-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-warn-900-rgb);--mdc-switch-selected-focus-track-color: var(--palette-warn-300-rgb);--mdc-switch-selected-hover-track-color: var(--palette-warn-300-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-warn-300-rgb);--mdc-switch-selected-track-color: var(--palette-warn-300-rgb)}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-primary-500-rgb)}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-accent-500-rgb)}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-warn-500-rgb)}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: var(--palette-primary-500-rgb);--mdc-slider-focus-handle-color: var(--palette-primary-500-rgb);--mdc-slider-hover-handle-color: var(--palette-primary-500-rgb);--mdc-slider-active-track-color: var(--palette-primary-500-rgb);--mdc-slider-inactive-track-color: var(--palette-primary-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #000;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-primary-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-primary-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-primary-500-rgb), .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: var(--palette-accent-500-rgb);--mdc-slider-focus-handle-color: var(--palette-accent-500-rgb);--mdc-slider-hover-handle-color: var(--palette-accent-500-rgb);--mdc-slider-active-track-color: var(--palette-accent-500-rgb);--mdc-slider-inactive-track-color: var(--palette-accent-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #000;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-accent-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-accent-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-accent-500-rgb), .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: var(--palette-warn-500-rgb);--mdc-slider-focus-handle-color: var(--palette-warn-500-rgb);--mdc-slider-hover-handle-color: var(--palette-warn-500-rgb);--mdc-slider-active-track-color: var(--palette-warn-500-rgb);--mdc-slider-inactive-track-color: var(--palette-warn-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #000;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-warn-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-warn-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-warn-500-rgb), .2)}.mat-mdc-slider{--mdc-slider-label-label-text-font: Inter, sans-serif;--mdc-slider-label-label-text-size: 14px;--mdc-slider-label-label-text-line-height: 22px;--mdc-slider-label-label-text-tracking: .0071428571em;--mdc-slider-label-label-text-weight: 500}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-menu-content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mdc-list-item__primary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-primary-500-rgb)}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-accent-500-rgb)}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: var(--palette-warn-500-rgb)}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--palette-primary-500-rgb)}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-list-base{--mdc-list-list-item-label-text-font: Inter, sans-serif;--mdc-list-list-item-label-text-line-height: 24px;--mdc-list-list-item-label-text-size: 16px;--mdc-list-list-item-label-text-tracking: .03125em;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Inter, sans-serif;--mdc-list-list-item-supporting-text-line-height: 20px;--mdc-list-list-item-supporting-text-size: 14px;--mdc-list-list-item-supporting-text-tracking: .0178571429em;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Inter, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 20px;--mdc-list-list-item-trailing-supporting-text-size: 12px;--mdc-list-list-item-trailing-supporting-text-tracking: .0333333333em;--mdc-list-list-item-trailing-supporting-text-weight: 400}.mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Inter,sans-serif;letter-spacing:.009375em}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-paginator{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.mat-mdc-paginator .mat-mdc-select-value{font-size:12px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-primary-500-rgb)}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-primary-500-rgb))}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-primary-500-rgb)}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-accent-500-rgb)}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-accent-500-rgb))}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-accent-500-rgb)}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-warn-500-rgb)}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-warn-500-rgb))}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-warn-500-rgb)}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: var(--palette-primary-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #000}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: var(--palette-accent-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #000}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: var(--palette-warn-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #000}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mdc-tab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, .0892857143em);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-primary-500-rgb);opacity:.1}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-primary-500-rgb)}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-accent-500-rgb);opacity:.1}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-accent-500-rgb)}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #000;--mdc-checkbox-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-warn-500-rgb);opacity:.1}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-warn-500-rgb)}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}@media all and (-ms-high-contrast: none){.mdc-checkbox .mdc-checkbox__focus-ring{display:none}}.mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: var(--palette-primary-500-rgb)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: var(--palette-accent-500-rgb)}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: var(--palette-warn-500-rgb)}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: var(--palette-primary-500-rgb);--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: var(--palette-accent-500-rgb);--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: var(--palette-warn-500-rgb);--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: var(--palette-primary-500-rgb);--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: var(--palette-accent-500-rgb);--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: var(--palette-warn-500-rgb);--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: var(--palette-primary-500-rgb)}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: var(--palette-accent-500-rgb)}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: var(--palette-warn-500-rgb)}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-primary-500-rgb), .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-accent-500-rgb), .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-warn-500-rgb), .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, .0892857143em);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-primary-500-rgb), .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-accent-500-rgb), .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-warn-500-rgb), .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: var(--palette-primary-500-rgb)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: var(--palette-accent-500-rgb)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: var(--palette-warn-500-rgb)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: var(--palette-primary-500-rgb);--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: var(--palette-accent-500-rgb);--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: var(--palette-warn-500-rgb);--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, .0892857143em);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: var(--palette-accent-500-rgb);--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font: Inter, sans-serif;--mdc-snackbar-supporting-text-line-height: 20px;--mdc-snackbar-supporting-text-size: 14px;--mdc-snackbar-supporting-text-weight: 400}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:rgba(var(--palette-primary-500-rgb),.04)}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mdc-data-table__content,.mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, "Inter", sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 14px);line-height:var(--mdc-typography-subtitle2-line-height, 22px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, .0071428571em);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: var(--palette-primary-500-rgb)}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: var(--palette-accent-500-rgb)}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: var(--palette-warn-500-rgb)}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:var(--palette-primary-contrast-500-rgb);background:var(--palette-primary-500-rgb)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.mat-badge-warn .mat-badge-content{color:var(--palette-warn-contrast-500-rgb);background:var(--palette-warn-500-rgb)}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-badge-content{font-weight:600;font-size:12px;font-family:Inter,sans-serif}.mat-badge-small .mat-badge-content{font-size:9px}.mat-badge-large .mat-badge-content{font-size:24px}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-bottom-sheet-container{font-size:14px;font-weight:400;line-height:20px;font-family:Inter,sans-serif;letter-spacing:.0178571429em}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-button-toggle{font-family:Inter,sans-serif}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:var(--palette-primary-500-rgb)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-primary-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-primary-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-primary-contrast-500-rgb)}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-accent-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-accent-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-accent-contrast-500-rgb)}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-warn-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-warn-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-warn-contrast-500-rgb)}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:var(--palette-primary-500-rgb)}.mat-datepicker-toggle-active.mat-accent{color:var(--palette-accent-500-rgb)}.mat-datepicker-toggle-active.mat-warn{color:var(--palette-warn-500-rgb)}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-calendar{font-family:Inter,sans-serif}.mat-calendar-body{font-size:13px}.mat-calendar-body-label,.mat-calendar-period-button{font-size:14px;font-weight:500}.mat-calendar-table-header th{font-size:11px;font-weight:400}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-expansion-panel-header{font-family:Inter,sans-serif;font-size:14px;font-weight:500}.mat-expansion-panel-content{font-size:14px;font-weight:400;line-height:20px;font-family:Inter,sans-serif;letter-spacing:.0178571429em}.mat-grid-tile-header,.mat-grid-tile-footer{font-size:14px}.mat-grid-tile-header .mat-line,.mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-header .mat-line:nth-child(n+2),.mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}.mat-icon.mat-primary{color:var(--palette-primary-500-rgb)}.mat-icon.mat-accent{color:var(--palette-accent-500-rgb)}.mat-icon.mat-warn{color:var(--palette-warn-500-rgb)}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:var(--palette-primary-contrast-500-rgb)}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.mat-step-header.mat-accent .mat-step-icon{color:var(--palette-accent-contrast-500-rgb)}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.mat-step-header.mat-warn .mat-step-icon{color:var(--palette-warn-contrast-500-rgb)}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:var(--palette-warn-500-rgb)}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:var(--palette-warn-500-rgb)}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-stepper-vertical,.mat-stepper-horizontal{font-family:Inter,sans-serif}.mat-step-label{font-size:14px;font-weight:400}.mat-step-sub-label-error{font-weight:400}.mat-step-label-error{font-size:16px}.mat-step-label-selected{font-size:16px;font-weight:400}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.mat-toolbar.mat-accent{background:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.mat-toolbar.mat-warn{background:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font-size:20px;font-weight:500;line-height:32px;font-family:Inter,sans-serif;letter-spacing:.0125em;margin:0}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-tree{font-family:Inter,sans-serif}.mat-tree-node,.mat-nested-tree-node{font-weight:400;font-size:14px}.mat-h1,.mat-headline-5,.mat-typography .mat-h1,.mat-typography .mat-headline-5,.mat-typography h1{font-size:24px;font-weight:400;line-height:32px;font-family:Inter,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-headline-6,.mat-typography .mat-h2,.mat-typography .mat-headline-6,.mat-typography h2{font-size:20px;font-weight:500;line-height:32px;font-family:Inter,sans-serif;letter-spacing:.0125em;margin:0 0 16px}.mat-h3,.mat-subtitle-1,.mat-typography .mat-h3,.mat-typography .mat-subtitle-1,.mat-typography h3{font-size:16px;font-weight:400;line-height:28px;font-family:Inter,sans-serif;letter-spacing:.009375em;margin:0 0 16px}.mat-h4,.mat-body-1,.mat-typography .mat-h4,.mat-typography .mat-body-1,.mat-typography h4{font-size:16px;font-weight:400;line-height:24px;font-family:Inter,sans-serif;letter-spacing:.03125em;margin:0 0 16px}.mat-h5,.mat-typography .mat-h5,.mat-typography h5{font:400 11.62px/20px Inter,sans-serif;margin:0 0 12px}.mat-h6,.mat-typography .mat-h6,.mat-typography h6{font:400 9.38px/20px Inter,sans-serif;margin:0 0 12px}.mat-body-strong,.mat-subtitle-2,.mat-typography .mat-body-strong,.mat-typography .mat-subtitle-2{font-size:14px;font-weight:500;line-height:22px;font-family:Inter,sans-serif;letter-spacing:.0071428571em}.mat-body,.mat-body-2,.mat-typography .mat-body,.mat-typography .mat-body-2,.mat-typography{font-size:14px;font-weight:400;line-height:20px;font-family:Inter,sans-serif;letter-spacing:.0178571429em}.mat-body p,.mat-body-2 p,.mat-typography .mat-body p,.mat-typography .mat-body-2 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption,.mat-typography .mat-small,.mat-typography .mat-caption{font-size:12px;font-weight:400;line-height:20px;font-family:Inter,sans-serif;letter-spacing:.0333333333em}.mat-headline-1,.mat-typography .mat-headline-1{font-size:96px;font-weight:300;line-height:96px;font-family:Inter,sans-serif;letter-spacing:-.015625em;margin:0 0 56px}.mat-headline-2,.mat-typography .mat-headline-2{font-size:60px;font-weight:300;line-height:60px;font-family:Inter,sans-serif;letter-spacing:-.0083333333em;margin:0 0 64px}.mat-headline-3,.mat-typography .mat-headline-3{font-size:48px;font-weight:400;line-height:50px;font-family:Inter,sans-serif;letter-spacing:normal;margin:0 0 64px}.mat-headline-4,.mat-typography .mat-headline-4{font-size:34px;font-weight:400;line-height:40px;font-family:Inter,sans-serif;letter-spacing:.0073529412em;margin:0 0 64px}.isDarkTheme .mat-ripple-element{background-color:#ffffff1a}.isDarkTheme .mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-option:hover:not(.mdc-list-item--disabled),.isDarkTheme .mat-mdc-option:focus:not(.mdc-list-item--disabled),.isDarkTheme .mat-mdc-option.mat-mdc-option-active,.isDarkTheme .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(255,255,255,.08)}.isDarkTheme .mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.isDarkTheme .mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-pseudo-checkbox-full{color:#ffffffb3}.isDarkTheme .mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#686868}.isDarkTheme .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-primary-500-rgb)}.isDarkTheme .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.isDarkTheme .mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.isDarkTheme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-accent-500-rgb)}.isDarkTheme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.isDarkTheme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.isDarkTheme .mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-accent-500-rgb)}.isDarkTheme .mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.isDarkTheme .mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.isDarkTheme .mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:var(--palette-warn-500-rgb)}.isDarkTheme .mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.isDarkTheme .mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.isDarkTheme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.isDarkTheme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#686868}.isDarkTheme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.isDarkTheme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#686868}.isDarkTheme .mat-app-background,.isDarkTheme.mat-app-background{background-color:#303030;color:#fff}.isDarkTheme .mat-elevation-z0,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.isDarkTheme .mat-elevation-z1,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.isDarkTheme .mat-elevation-z2,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.isDarkTheme .mat-elevation-z3,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.isDarkTheme .mat-elevation-z4,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.isDarkTheme .mat-elevation-z5,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.isDarkTheme .mat-elevation-z6,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.isDarkTheme .mat-elevation-z7,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.isDarkTheme .mat-elevation-z8,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.isDarkTheme .mat-elevation-z9,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.isDarkTheme .mat-elevation-z10,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.isDarkTheme .mat-elevation-z11,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.isDarkTheme .mat-elevation-z12,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.isDarkTheme .mat-elevation-z13,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.isDarkTheme .mat-elevation-z14,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.isDarkTheme .mat-elevation-z15,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.isDarkTheme .mat-elevation-z16,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.isDarkTheme .mat-elevation-z17,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.isDarkTheme .mat-elevation-z18,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.isDarkTheme .mat-elevation-z19,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.isDarkTheme .mat-elevation-z20,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.isDarkTheme .mat-elevation-z21,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.isDarkTheme .mat-elevation-z22,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.isDarkTheme .mat-elevation-z23,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.isDarkTheme .mat-elevation-z24,.isDarkTheme .mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.isDarkTheme .mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #424242}.isDarkTheme .mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #595959}.isDarkTheme .mat-mdc-card-subtitle{color:#ffffffb3}.isDarkTheme .mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-primary-500-rgb)'/%3E%3C/svg%3E")}.isDarkTheme .mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-accent-500-rgb)'/%3E%3C/svg%3E")}.isDarkTheme .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='var(--palette-warn-500-rgb)'/%3E%3C/svg%3E")}.isDarkTheme .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#fff9}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#ffffffde}@media all{.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#fff9}}@media all{.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#fff9}}.isDarkTheme .mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.isDarkTheme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.isDarkTheme .mdc-text-field--filled .mdc-text-field__ripple:before,.isDarkTheme .mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(255, 255, 255, .87))}.isDarkTheme .mdc-text-field--filled:hover .mdc-text-field__ripple:before,.isDarkTheme .mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .08)}.isDarkTheme .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.isDarkTheme .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .24)}.isDarkTheme .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#4a4a4a}.isDarkTheme .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#ffffff6b}.isDarkTheme .mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#ffffffde}.isDarkTheme .mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#ffffff61}.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#ffffffde}.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-text-field--outlined .mdc-text-field__ripple:before,.isDarkTheme .mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.isDarkTheme .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--palette-primary-500-rgb)}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input{color:#ffffff61}@media all{.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#ffffff61}}@media all{.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#ffffff61}}.isDarkTheme .mdc-text-field--disabled .mdc-floating-label{color:#ffffff61}.isDarkTheme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.isDarkTheme .mdc-text-field--disabled .mdc-text-field-character-counter,.isDarkTheme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.isDarkTheme .mdc-text-field--disabled .mdc-text-field__icon--leading,.isDarkTheme .mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.isDarkTheme .mdc-text-field--disabled .mdc-text-field__affix--prefix,.isDarkTheme .mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.isDarkTheme .mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#ffffff0f}.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#ffffff0f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field-character-counter,.isDarkTheme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__leading,.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__notch,.isDarkTheme .mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.isDarkTheme .mdc-text-field--disabled.mdc-text-field--filled{background-color:#464646}.isDarkTheme .mat-mdc-form-field-error{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field-focus-overlay{background-color:#ffffffde}.isDarkTheme .mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.08}.isDarkTheme .mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.24}.isDarkTheme select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:#000000de}.isDarkTheme select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:#00000061}.isDarkTheme .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#ffffff8a}.isDarkTheme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:rgba(var(--palette-primary-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:rgba(var(--palette-accent-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:rgba(var(--palette-warn-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#ffffff61}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(var(--palette-accent-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, var(--palette-accent-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(var(--palette-warn-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.isDarkTheme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}.isDarkTheme [dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.isDarkTheme .mat-mdc-select-value{color:#ffffffde}.isDarkTheme .mat-mdc-select-placeholder{color:#fff9}.isDarkTheme .mat-mdc-select-disabled .mat-mdc-select-value{color:#ffffff61}.isDarkTheme .mat-mdc-select-arrow{color:#ffffff8a}.isDarkTheme .mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:rgba(var(--palette-primary-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:rgba(var(--palette-accent-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.isDarkTheme .mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:rgba(var(--palette-warn-500-rgb),.87)}.isDarkTheme .mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#ffffff61}.isDarkTheme .mat-mdc-dialog-container{--mdc-dialog-container-color: #424242;--mdc-dialog-with-divider-divider-color: rgba(255, 255, 255, .12);--mdc-dialog-subhead-color: rgba(255, 255, 255, .87);--mdc-dialog-supporting-text-color: rgba(255, 255, 255, .6)}.isDarkTheme .mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #595959;--mdc-chip-elevated-disabled-container-color: #595959;--mdc-chip-label-text-color: #fafafa;--mdc-chip-disabled-label-text-color: #fafafa;--mdc-chip-with-icon-icon-color: #fafafa;--mdc-chip-with-icon-disabled-icon-color: #fafafa;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #fafafa;--mdc-chip-with-trailing-icon-trailing-icon-color: #fafafa;--mdc-chip-with-icon-selected-icon-color: #fafafa}.isDarkTheme .mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.isDarkTheme .mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-primary-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-primary-500-rgb);--mdc-chip-label-text-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-primary-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.isDarkTheme .mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-accent-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-accent-500-rgb);--mdc-chip-label-text-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-accent-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.isDarkTheme .mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: var(--palette-warn-500-rgb);--mdc-chip-elevated-disabled-container-color: var(--palette-warn-500-rgb);--mdc-chip-label-text-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-disabled-label-text-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-disabled-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-trailing-icon-trailing-icon-color: var(--palette-warn-contrast-500-rgb);--mdc-chip-with-icon-selected-icon-color: var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-mdc-chip-focus-overlay{background:white}.isDarkTheme .mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #000;--mdc-switch-disabled-unselected-handle-color: #000;--mdc-switch-disabled-selected-track-color: #f5f5f5;--mdc-switch-disabled-unselected-track-color: #f5f5f5;--mdc-switch-unselected-focus-state-layer-color: #f5f5f5;--mdc-switch-unselected-pressed-state-layer-color: #f5f5f5;--mdc-switch-unselected-hover-state-layer-color: #f5f5f5;--mdc-switch-unselected-focus-track-color: #616161;--mdc-switch-unselected-hover-track-color: #616161;--mdc-switch-unselected-pressed-track-color: #616161;--mdc-switch-unselected-track-color: #616161;--mdc-switch-unselected-focus-handle-color: #fafafa;--mdc-switch-unselected-hover-handle-color: #fafafa;--mdc-switch-unselected-pressed-handle-color: #fafafa;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #9e9e9e;--mdc-switch-selected-icon-color: #212121;--mdc-switch-disabled-selected-icon-color: #212121;--mdc-switch-disabled-unselected-icon-color: #212121;--mdc-switch-unselected-icon-color: #212121}.isDarkTheme .mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: var(--palette-primary-300-rgb);--mdc-switch-selected-handle-color: var(--palette-primary-300-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-primary-300-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-primary-300-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-primary-200-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-primary-200-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-primary-200-rgb);--mdc-switch-selected-focus-track-color: var(--palette-primary-600-rgb);--mdc-switch-selected-hover-track-color: var(--palette-primary-600-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-primary-600-rgb);--mdc-switch-selected-track-color: var(--palette-primary-600-rgb)}.isDarkTheme .mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: var(--palette-accent-300-rgb);--mdc-switch-selected-handle-color: var(--palette-accent-300-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-accent-300-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-accent-300-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-accent-200-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-accent-200-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-accent-200-rgb);--mdc-switch-selected-focus-track-color: var(--palette-accent-600-rgb);--mdc-switch-selected-hover-track-color: var(--palette-accent-600-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-accent-600-rgb);--mdc-switch-selected-track-color: var(--palette-accent-600-rgb)}.isDarkTheme .mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: var(--palette-warn-300-rgb);--mdc-switch-selected-handle-color: var(--palette-warn-300-rgb);--mdc-switch-selected-hover-state-layer-color: var(--palette-warn-300-rgb);--mdc-switch-selected-pressed-state-layer-color: var(--palette-warn-300-rgb);--mdc-switch-selected-focus-handle-color: var(--palette-warn-200-rgb);--mdc-switch-selected-hover-handle-color: var(--palette-warn-200-rgb);--mdc-switch-selected-pressed-handle-color: var(--palette-warn-200-rgb);--mdc-switch-selected-focus-track-color: var(--palette-warn-600-rgb);--mdc-switch-selected-hover-track-color: var(--palette-warn-600-rgb);--mdc-switch-selected-pressed-track-color: var(--palette-warn-600-rgb);--mdc-switch-selected-track-color: var(--palette-warn-600-rgb)}.isDarkTheme .mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-slider{--mdc-slider-label-container-color: white;--mdc-slider-label-label-text-color: black;--mdc-slider-disabled-handle-color: #fff;--mdc-slider-disabled-active-track-color: #fff;--mdc-slider-disabled-inactive-track-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #fff;--mat-mdc-slider-value-indicator-opacity: .9}.isDarkTheme .mat-mdc-slider.mat-primary{--mdc-slider-handle-color: var(--palette-primary-500-rgb);--mdc-slider-focus-handle-color: var(--palette-primary-500-rgb);--mdc-slider-hover-handle-color: var(--palette-primary-500-rgb);--mdc-slider-active-track-color: var(--palette-primary-500-rgb);--mdc-slider-inactive-track-color: var(--palette-primary-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-primary-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-primary-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-primary-500-rgb), .2)}.isDarkTheme .mat-mdc-slider.mat-accent{--mdc-slider-handle-color: var(--palette-accent-500-rgb);--mdc-slider-focus-handle-color: var(--palette-accent-500-rgb);--mdc-slider-hover-handle-color: var(--palette-accent-500-rgb);--mdc-slider-active-track-color: var(--palette-accent-500-rgb);--mdc-slider-inactive-track-color: var(--palette-accent-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-accent-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-accent-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-accent-500-rgb), .2)}.isDarkTheme .mat-mdc-slider.mat-warn{--mdc-slider-handle-color: var(--palette-warn-500-rgb);--mdc-slider-focus-handle-color: var(--palette-warn-500-rgb);--mdc-slider-hover-handle-color: var(--palette-warn-500-rgb);--mdc-slider-active-track-color: var(--palette-warn-500-rgb);--mdc-slider-inactive-track-color: var(--palette-warn-500-rgb);--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: var(--palette-warn-500-rgb);--mat-mdc-slider-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-slider-hover-ripple-color: rgba(var(--palette-warn-500-rgb), .05);--mat-mdc-slider-focus-ripple-color: rgba(var(--palette-warn-500-rgb), .2)}.isDarkTheme .mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #424242);color:var(--mdc-theme-on-surface, #fff)}.isDarkTheme .mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(255, 255, 255, .7))}.isDarkTheme .mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(255, 255, 255, .5))}.isDarkTheme .mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.isDarkTheme .mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(255, 255, 255, .5))}.isDarkTheme .mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(255, 255, 255, .5))}.isDarkTheme .mdc-list-item--disabled .mdc-list-item__start,.isDarkTheme .mdc-list-item--disabled .mdc-list-item__content,.isDarkTheme .mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.isDarkTheme .mdc-list-item--disabled .mdc-list-item__primary-text,.isDarkTheme .mdc-list-item--disabled .mdc-list-item__secondary-text,.isDarkTheme .mdc-list-item--disabled .mdc-list-item__overline-text,.isDarkTheme .mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.isDarkTheme .mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #fff)}.isDarkTheme .mdc-list-item--selected .mdc-list-item__primary-text,.isDarkTheme .mdc-list-item--activated .mdc-list-item__primary-text,.isDarkTheme .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mdc-list-divider:after{border-bottom-color:#fff}.isDarkTheme .mdc-list-divider{background-color:#fff3}.isDarkTheme .mat-mdc-menu-item[disabled],.isDarkTheme .mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.isDarkTheme .mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(255, 255, 255, .5))}.isDarkTheme .mat-mdc-menu-item .mat-icon-no-color,.isDarkTheme .mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-menu-item:hover:not([disabled]),.isDarkTheme .mat-mdc-menu-item.cdk-program-focused:not([disabled]),.isDarkTheme .mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.isDarkTheme .mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(255,255,255,.08)}.isDarkTheme .mat-mdc-list-base{--mdc-list-list-item-label-text-color: white;--mdc-list-list-item-supporting-text-color: rgba(255, 255, 255, .7);--mdc-list-list-item-leading-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-trailing-supporting-text-color: rgba(255, 255, 255, .5);--mdc-list-list-item-trailing-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-selected-trailing-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-disabled-label-text-color: white;--mdc-list-list-item-disabled-leading-icon-color: white;--mdc-list-list-item-disabled-trailing-icon-color: white;--mdc-list-list-item-hover-label-text-color: white;--mdc-list-list-item-hover-leading-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-hover-trailing-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-focus-label-text-color: white;--mdc-list-list-item-hover-state-layer-color: white;--mdc-list-list-item-hover-state-layer-opacity: .08;--mdc-list-list-item-focus-state-layer-color: white;--mdc-list-list-item-focus-state-layer-opacity: .24}.isDarkTheme .mat-mdc-list-option .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-list-option .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-icon-color: var(--palette-primary-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.isDarkTheme .mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-icon-color: var(--palette-accent-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.isDarkTheme .mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__start,.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-icon-color: var(--palette-warn-500-rgb);--mdc-radio-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.isDarkTheme .mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.isDarkTheme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.isDarkTheme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.isDarkTheme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.isDarkTheme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.isDarkTheme .mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.isDarkTheme .mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.isDarkTheme .mat-mdc-paginator{background:#424242;color:#ffffffde}.isDarkTheme .mat-mdc-paginator-icon{fill:#ffffff8a}.isDarkTheme .mat-mdc-paginator-decrement,.isDarkTheme .mat-mdc-paginator-increment{border-top:2px solid rgba(255,255,255,.54);border-right:2px solid rgba(255,255,255,.54)}.isDarkTheme .mat-mdc-paginator-first,.isDarkTheme .mat-mdc-paginator-last{border-top:2px solid rgba(255,255,255,.54)}.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#ffffff1f}.isDarkTheme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#ffffff1f}.isDarkTheme .mat-mdc-tab,.isDarkTheme .mat-mdc-tab-link{background-color:transparent}.isDarkTheme .mat-mdc-tab .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-link .mdc-tab__text-label{color:#fff9}.isDarkTheme .mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.isDarkTheme .mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#ffffff80}.isDarkTheme .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-primary-500-rgb))}.isDarkTheme .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-accent-500-rgb))}.isDarkTheme .mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--palette-warn-500-rgb))}.isDarkTheme .mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.isDarkTheme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-tab-group.mat-background-primary,.isDarkTheme .mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: var(--palette-primary-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #fff}.isDarkTheme .mat-mdc-tab-group.mat-background-accent,.isDarkTheme .mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: var(--palette-accent-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #fff}.isDarkTheme .mat-mdc-tab-group.mat-background-warn,.isDarkTheme .mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: var(--palette-warn-500-rgb);--mat-mdc-tab-header-with-background-foreground-color: #fff}.isDarkTheme .mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #fff)}.isDarkTheme .mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.isDarkTheme .mat-mdc-checkbox .mat-ripple-element{background-color:#ffffff1a}.isDarkTheme .mat-mdc-checkbox .mdc-checkbox__ripple{background:#fff}.isDarkTheme .mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-primary-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-primary-500-rgb);opacity:.1}.isDarkTheme .mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-accent-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-accent-500-rgb);opacity:.1}.isDarkTheme .mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-hover-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-selected-pressed-icon-color: var(--palette-warn-500-rgb);--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.isDarkTheme .mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--palette-warn-500-rgb);opacity:.1}.isDarkTheme .mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-checkbox-disabled label{color:#ffffff80}.isDarkTheme .mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #fff}.isDarkTheme .mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-text-button-label-text-color: rgba(255, 255, 255, .5)}.isDarkTheme .mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #424242;--mdc-filled-button-label-text-color: #fff}.isDarkTheme .mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: var(--palette-primary-500-rgb);--mdc-filled-button-label-text-color: #fff}.isDarkTheme .mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: var(--palette-accent-500-rgb);--mdc-filled-button-label-text-color: #fff}.isDarkTheme .mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: var(--palette-warn-500-rgb);--mdc-filled-button-label-text-color: #fff}.isDarkTheme .mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(255, 255, 255, .12);--mdc-filled-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-filled-button-container-color: rgba(255, 255, 255, .12);--mdc-filled-button-label-text-color: rgba(255, 255, 255, .5)}.isDarkTheme .mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #424242;--mdc-protected-button-label-text-color: #fff}.isDarkTheme .mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: var(--palette-primary-500-rgb);--mdc-protected-button-label-text-color: #fff}.isDarkTheme .mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: var(--palette-accent-500-rgb);--mdc-protected-button-label-text-color: #fff}.isDarkTheme .mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: var(--palette-warn-500-rgb);--mdc-protected-button-label-text-color: #fff}.isDarkTheme .mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(255, 255, 255, .12);--mdc-protected-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-protected-button-container-color: rgba(255, 255, 255, .12);--mdc-protected-button-label-text-color: rgba(255, 255, 255, .5);--mdc-protected-button-container-elevation: 0}.isDarkTheme .mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(255, 255, 255, .12)}.isDarkTheme .mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #fff}.isDarkTheme .mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(255, 255, 255, .5);--mdc-outlined-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-outlined-button-outline-color: rgba(255, 255, 255, .12);--mdc-outlined-button-disabled-outline-color: rgba(255, 255, 255, .12)}.isDarkTheme .mat-mdc-button,.isDarkTheme .mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.isDarkTheme .mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-button.mat-primary,.isDarkTheme .mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-primary-500-rgb), .1)}.isDarkTheme .mat-mdc-button.mat-accent,.isDarkTheme .mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-accent-500-rgb), .1)}.isDarkTheme .mat-mdc-button.mat-warn,.isDarkTheme .mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-warn-500-rgb), .1)}.isDarkTheme .mat-mdc-raised-button,.isDarkTheme .mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.isDarkTheme .mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-raised-button.mat-primary,.isDarkTheme .mat-mdc-unelevated-button.mat-primary,.isDarkTheme .mat-mdc-raised-button.mat-accent,.isDarkTheme .mat-mdc-unelevated-button.mat-accent,.isDarkTheme .mat-mdc-raised-button.mat-warn,.isDarkTheme .mat-mdc-unelevated-button.mat-warn,.isDarkTheme .mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.isDarkTheme .mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: var(--palette-primary-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-primary-500-rgb), .1)}.isDarkTheme .mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: var(--palette-accent-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-accent-500-rgb), .1)}.isDarkTheme .mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: var(--palette-warn-500-rgb);--mat-mdc-button-ripple-color: rgba(var(--palette-warn-500-rgb), .1)}.isDarkTheme .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(255, 255, 255, .5);--mdc-icon-button-disabled-icon-color: rgba(255, 255, 255, .5)}.isDarkTheme .mat-mdc-fab,.isDarkTheme .mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.isDarkTheme .mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.isDarkTheme .mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.isDarkTheme .mat-mdc-fab.mat-primary,.isDarkTheme .mat-mdc-mini-fab.mat-primary,.isDarkTheme .mat-mdc-fab.mat-accent,.isDarkTheme .mat-mdc-mini-fab.mat-accent,.isDarkTheme .mat-mdc-fab.mat-warn,.isDarkTheme .mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.isDarkTheme .mat-mdc-fab.mat-unthemed,.isDarkTheme .mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #424242;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.isDarkTheme .mat-mdc-fab.mat-primary,.isDarkTheme .mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: var(--palette-primary-500-rgb);--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.isDarkTheme .mat-mdc-fab.mat-accent,.isDarkTheme .mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: var(--palette-accent-500-rgb);--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.isDarkTheme .mat-mdc-fab.mat-warn,.isDarkTheme .mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: var(--palette-warn-500-rgb);--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.isDarkTheme .mat-mdc-fab[disabled][disabled],.isDarkTheme .mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(255, 255, 255, .12);--mdc-fab-icon-color: rgba(255, 255, 255, .5);--mat-mdc-fab-color: rgba(255, 255, 255, .5)}.isDarkTheme .mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: rgba(0, 0, 0, .87);--mdc-snackbar-container-color: #d9d9d9;--mdc-snackbar-supporting-text-color: rgba(66, 66, 66, .87)}.isDarkTheme .mdc-data-table{background-color:var(--mdc-theme-surface, #424242);border-color:#ffffff1f}.isDarkTheme .mdc-data-table__row{background-color:inherit}.isDarkTheme .mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #424242)}.isDarkTheme .mdc-data-table__row--selected{background-color:rgba(var(--palette-primary-500-rgb),.04)}.isDarkTheme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.isDarkTheme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.isDarkTheme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#ffffff1f}.isDarkTheme .mdc-data-table__cell,.isDarkTheme .mdc-data-table__header-cell{border-bottom-color:#ffffff1f}.isDarkTheme .mdc-data-table__pagination{border-top-color:#ffffff1f}.isDarkTheme .mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#ffffff0a}.isDarkTheme .mdc-data-table__header-cell,.isDarkTheme .mdc-data-table__pagination-total,.isDarkTheme .mdc-data-table__pagination-rows-per-page-label,.isDarkTheme .mdc-data-table__cell{color:#ffffffde}.isDarkTheme .mat-mdc-table{background:#424242}.isDarkTheme .mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: var(--palette-primary-500-rgb)}.isDarkTheme .mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: var(--palette-accent-500-rgb)}.isDarkTheme .mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: var(--palette-warn-500-rgb)}.isDarkTheme .mat-badge-content{color:var(--palette-primary-contrast-500-rgb);background:var(--palette-primary-500-rgb)}.cdk-high-contrast-active .isDarkTheme .mat-badge-content{outline:solid 1px;border-radius:0}.isDarkTheme .mat-badge-accent .mat-badge-content{background:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-badge-warn .mat-badge-content{color:var(--palette-warn-contrast-500-rgb);background:var(--palette-warn-500-rgb)}.isDarkTheme .mat-badge-disabled .mat-badge-content{background:#6e6e6e;color:#ffffff80}.isDarkTheme .mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:#424242;color:#fff}.isDarkTheme .mat-button-toggle-standalone:not([class*=mat-elevation-z]),.isDarkTheme .mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.isDarkTheme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.isDarkTheme .mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.isDarkTheme .mat-button-toggle{color:#ffffff80}.isDarkTheme .mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#ffffff1f}.isDarkTheme .mat-button-toggle-appearance-standard{color:#fff;background:#424242}.isDarkTheme .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#fff}.isDarkTheme .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #595959}.isDarkTheme [dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #595959}.isDarkTheme .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #595959}.isDarkTheme .mat-button-toggle-checked{background-color:#212121;color:#ffffffb3}.isDarkTheme .mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#fff}.isDarkTheme .mat-button-toggle-disabled{color:#ffffff4d;background-color:#000}.isDarkTheme .mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:#424242}.isDarkTheme .mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#424242}.isDarkTheme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.isDarkTheme .mat-button-toggle-group-appearance-standard{border:solid 1px #595959}.isDarkTheme .mat-calendar-arrow{fill:#fff}.isDarkTheme .mat-datepicker-toggle,.isDarkTheme .mat-datepicker-content .mat-calendar-next-button,.isDarkTheme .mat-datepicker-content .mat-calendar-previous-button{color:#fff}.isDarkTheme .mat-calendar-table-header-divider:after{background:rgba(255,255,255,.12)}.isDarkTheme .mat-calendar-table-header,.isDarkTheme .mat-calendar-body-label{color:#ffffffb3}.isDarkTheme .mat-calendar-body-cell-content,.isDarkTheme .mat-date-range-input-separator{color:#fff;border-color:transparent}.isDarkTheme .mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#ffffff80}.isDarkTheme .mat-form-field-disabled .mat-date-range-input-separator{color:#ffffff80}.isDarkTheme .mat-calendar-body-in-preview{color:#ffffff3d}.isDarkTheme .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#ffffff80}.isDarkTheme .mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#ffffff4d}.isDarkTheme .mat-calendar-body-in-range:before{background:var(--palette-primary-500-rgb)}.isDarkTheme .mat-calendar-body-comparison-identical,.isDarkTheme .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.isDarkTheme .mat-calendar-body-comparison-bridge-start:before,.isDarkTheme [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-primary-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-calendar-body-comparison-bridge-end:before,.isDarkTheme [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-primary-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.isDarkTheme .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.isDarkTheme .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.isDarkTheme .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.isDarkTheme .mat-calendar-body-selected{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.isDarkTheme .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-primary-contrast-500-rgb)}.isDarkTheme .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}@media (hover: hover){.isDarkTheme .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}}.isDarkTheme .mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#424242;color:#fff}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.isDarkTheme .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-accent-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.isDarkTheme .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-accent-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}@media (hover: hover){.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.isDarkTheme .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,var(--palette-warn-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.isDarkTheme .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,var(--palette-warn-500-rgb) 50%,rgba(249,171,0,.2) 50%)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{opacity:.2}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}@media (hover: hover){.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}}.isDarkTheme .mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.isDarkTheme .mat-datepicker-toggle-active{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-datepicker-toggle-active.mat-accent{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-datepicker-toggle-active.mat-warn{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-date-range-input-inner[disabled]{color:#ffffff80}.isDarkTheme .mat-divider{border-top-color:#ffffff1f}.isDarkTheme .mat-divider-vertical{border-right-color:#ffffff1f}.isDarkTheme .mat-expansion-panel{background:#424242;color:#fff}.isDarkTheme .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.isDarkTheme .mat-action-row{border-top-color:#ffffff1f}.isDarkTheme .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.isDarkTheme .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.isDarkTheme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(255,255,255,.04)}@media (hover: none){.isDarkTheme .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:#424242}}.isDarkTheme .mat-expansion-panel-header-title{color:#fff}.isDarkTheme .mat-expansion-panel-header-description,.isDarkTheme .mat-expansion-indicator:after{color:#ffffffb3}.isDarkTheme .mat-expansion-panel-header[aria-disabled=true]{color:#ffffff4d}.isDarkTheme .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.isDarkTheme .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.isDarkTheme .mat-icon.mat-primary{color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-icon.mat-accent{color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-icon.mat-warn{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-drawer-container{background-color:#303030;color:#fff}.isDarkTheme .mat-drawer{background-color:#424242;color:#fff}.isDarkTheme .mat-drawer.mat-drawer-push{background-color:#424242}.isDarkTheme .mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.isDarkTheme .mat-drawer-side{border-right:solid 1px rgba(255,255,255,.12)}.isDarkTheme .mat-drawer-side.mat-drawer-end,.isDarkTheme [dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(255,255,255,.12);border-right:none}.isDarkTheme [dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(255,255,255,.12)}.isDarkTheme .mat-drawer-backdrop.mat-drawer-shown{background-color:#bdbdbd99}.isDarkTheme .mat-step-header.cdk-keyboard-focused,.isDarkTheme .mat-step-header.cdk-program-focused,.isDarkTheme .mat-step-header:hover:not([aria-disabled]),.isDarkTheme .mat-step-header:hover[aria-disabled=false]{background-color:#ffffff0a}.isDarkTheme .mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.isDarkTheme .mat-step-header:hover{background:none}}.isDarkTheme .mat-step-header .mat-step-label,.isDarkTheme .mat-step-header .mat-step-optional{color:#ffffffb3}.isDarkTheme .mat-step-header .mat-step-icon{background-color:#ffffffb3;color:var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-step-header .mat-step-icon-selected,.isDarkTheme .mat-step-header .mat-step-icon-state-done,.isDarkTheme .mat-step-header .mat-step-icon-state-edit{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-step-header.mat-accent .mat-step-icon{color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-step-header.mat-accent .mat-step-icon-selected,.isDarkTheme .mat-step-header.mat-accent .mat-step-icon-state-done,.isDarkTheme .mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-step-header.mat-warn .mat-step-icon{color:var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-step-header.mat-warn .mat-step-icon-selected,.isDarkTheme .mat-step-header.mat-warn .mat-step-icon-state-done,.isDarkTheme .mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-step-header .mat-step-icon-state-error{background-color:transparent;color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-step-header .mat-step-label.mat-step-label-active{color:#fff}.isDarkTheme .mat-step-header .mat-step-label.mat-step-label-error{color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-stepper-horizontal,.isDarkTheme .mat-stepper-vertical{background-color:#424242}.isDarkTheme .mat-stepper-vertical-line:before{border-left-color:#ffffff1f}.isDarkTheme .mat-horizontal-stepper-header:before,.isDarkTheme .mat-horizontal-stepper-header:after,.isDarkTheme .mat-stepper-horizontal-line{border-top-color:#ffffff1f}.isDarkTheme .mat-sort-header-arrow{color:#c6c6c6}.isDarkTheme .mat-toolbar{background:#212121;color:#fff}.isDarkTheme .mat-toolbar.mat-primary{background:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb)}.isDarkTheme .mat-toolbar.mat-accent{background:var(--palette-accent-500-rgb);color:var(--palette-accent-contrast-500-rgb)}.isDarkTheme .mat-toolbar.mat-warn{background:var(--palette-warn-500-rgb);color:var(--palette-warn-contrast-500-rgb)}.isDarkTheme .mat-toolbar .mat-form-field-underline,.isDarkTheme .mat-toolbar .mat-form-field-ripple,.isDarkTheme .mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.isDarkTheme .mat-toolbar .mat-form-field-label,.isDarkTheme .mat-toolbar .mat-focused .mat-form-field-label,.isDarkTheme .mat-toolbar .mat-select-value,.isDarkTheme .mat-toolbar .mat-select-arrow,.isDarkTheme .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.isDarkTheme .mat-toolbar .mat-input-element{caret-color:currentColor}.isDarkTheme .mat-tree{background:#424242}.isDarkTheme .mat-tree-node,.isDarkTheme .mat-nested-tree-node{color:#fff}.mat-datepicker-content .mat-calendar-body-in-range:before{background:var(--palette-primary-500-rgb)}.isDarkTheme .mat-datepicker-content .mat-calendar-body-in-range:before{background:var(--palette-primary-500-rgb)}.mat-datepicker-content .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-datepicker-content .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-primary-500-rgb)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:var(--palette-accent-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:var(--palette-accent-500-rgb)}.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-accent-500-rgb)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:var(--palette-warn-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:var(--palette-warn-500-rgb)}.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}.isDarkTheme .mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.isDarkTheme .mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--palette-warn-500-rgb)}.mat-checkbox.mat-primary .mat-checkbox-checkmark .mat-checkbox-checkmark-path,.mat-checkbox.mat-primary .mat-checkbox-checkmark .mat-checkbox-checkmark-path{stroke:var(--palette-primary-contrast-500-rgb)!important}.mat-checkbox.mat-primary .mat-checkbox-mixedmark,.mat-checkbox.mat-primary .mat-checkbox-mixedmark{background-color:var(--palette-primary-contrast-500-rgb)!important}.mat-checkbox.mat-accent .mat-checkbox-checkmark .mat-checkbox-checkmark-path,.mat-checkbox.mat-accent .mat-checkbox-checkmark .mat-checkbox-checkmark-path{stroke:var(--palette-accent-contrast-500-rgb)!important}.mat-checkbox.mat-accent .mat-checkbox-mixedmark,.mat-checkbox.mat-accent .mat-checkbox-mixedmark{background-color:var(--palette-accent-contrast-500-rgb)!important}.mat-checkbox.mat-warn .mat-checkbox-checkmark .mat-checkbox-checkmark-path,.mat-checkbox.mat-warn .mat-checkbox-checkmark .mat-checkbox-checkmark-path{stroke:var(--palette-warn-contrast-500-rgb)!important}.mat-checkbox.mat-warn .mat-checkbox-mixedmark,.mat-checkbox.mat-warn .mat-checkbox-mixedmark{background-color:var(--palette-warn-contrast-500-rgb)!important}.isDarkTheme .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb,.isDarkTheme .mat-slide-toggle.mat-checked .mat-slide-toggle-bar,.isDarkTheme .mat-slide-toggle.mat-checked .mat-ripple-element,.isLightTheme .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb,.isLightTheme .mat-slide-toggle.mat-checked .mat-slide-toggle-bar,.isLightTheme .mat-slide-toggle.mat-checked .mat-ripple-element{background-color:var(--palette-accent-500-rgb)}.isDarkTheme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb,.isDarkTheme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar,.isDarkTheme .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element,.isLightTheme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb,.isLightTheme .mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar,.isLightTheme .mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element{background-color:var(--palette-primary-500-rgb)}.isDarkTheme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb,.isDarkTheme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar,.isDarkTheme .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element,.isLightTheme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb,.isLightTheme .mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar,.isLightTheme .mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element{background-color:var(--palette-warn-500-rgb)}button.mdc-button{font-weight:700;font-size:1rem;letter-spacing:initial;line-height:1.5rem}button.mdc-button.mat-primary{background-color:var(--palette-primary-500-rgb);color:var(--palette-primary-contrast-500-rgb);border:2px solid;border-color:var(--palette-primary-500-rgb)}button.mdc-button.mat-primary>.mat-icon{z-index:1}button.mdc-button.mat-primary>.mat-mdc-button-persistent-ripple:before{opacity:0!important}button.mdc-button.mat-primary>.mat-mdc-focus-indicator{margin:2px}button.mdc-button.mat-primary:focus:not(:hover){background-color:#fa0;border-color:#fa0}button.mdc-button.mat-primary:focus:not(:hover)>.mat-mdc-focus-indicator{background-color:var(--palette-primary-500-rgb);margin:0;border:2px solid #ffaa00}button.mdc-button.mat-primary:hover{background-color:var(--palette-primary-700-rgb);border-color:var(--palette-primary-700-rgb);color:var(--palette-primary-contrast-700-rgb)}button.mdc-button.mat-primary:active{background-color:#fff;border-color:var(--palette-primary-700-rgb)}button.mdc-button.mat-primary:active>.mat-mdc-focus-indicator{background-color:var(--palette-primary-700-rgb);margin:2px;border:0;border-radius:4px}button.mdc-button.mat-primary:disabled{background-color:var(--palette-primary-100-rgb);border-color:var(--palette-primary-100-rgb);color:var(--palette-primary-500-rgb);color:#63b1d3}button.mdc-button.mat-accent{background-color:var(--palette-primary-contrast-500-rgb);color:var(--palette-primary-500-rgb);border:2px solid;border-color:var(--palette-primary-100-rgb)}button.mdc-button.mat-accent>.mat-mdc-button-persistent-ripple:before{opacity:0!important}button.mdc-button.mat-accent>.mat-mdc-focus-indicator{margin:2px}button.mdc-button.mat-accent:focus:not(:hover){background-color:#fa0;border-color:#fa0;color:var(--palette-primary-500-rgb)}button.mdc-button.mat-accent:focus:not(:hover)>.mat-mdc-focus-indicator{background-color:var(--palette-primary-contrast-500-rgb);margin:0;border:2px solid #ffaa00}button.mdc-button.mat-accent:hover{background-color:var(--palette-primary-50-rgb);border-color:var(--palette-primary-100-rgb);color:var(--palette-primary-500-rgb)}button.mdc-button.mat-accent:active{border-color:var(--palette-primary-700-rgb);color:#fff}button.mdc-button.mat-accent:active>.mat-mdc-focus-indicator{background-color:var(--palette-primary-700-rgb);margin:2px;border:0;border-radius:4px}button.mdc-button.mat-accent:disabled{background-color:#e7e7e5;border-color:#e7e7e5;color:#9d9e9a}a.mdc-button{font-weight:700;font-size:1rem;text-decoration:underline}a.mdc-button.mdc-button{text-decoration-color:var(--palette-primary-500-rgb);color:var(--palette-primary-500-rgb)}a.mdc-button.mdc-button:focus{color:var(--palette-primary-500-rgb);border:.25rem solid #ffaa00}a.mdc-button.mdc-button:hover{background:none;text-decoration-color:var(--palette-primary-700-rgb);color:var(--palette-primary-700-rgb)}a.mdc-button.mdc-button:active{border:solid var(--palette-primary-700-rgb);text-decoration-color:#900;color:#900}a.mdc-button.mdc-button:active span.mat-mdc-button-ripple{background-color:#fff}a.mdc-button.mdc-button[disabled]{color:#9d9e9a;-webkit-text-decoration:underline #9d9e9a;text-decoration:underline #9d9e9a}::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-track{background:#f8f9fa;border:.063rem solid #d3d3d3}::-webkit-scrollbar-thumb{background:#a0abb4;border-radius:.5rem} diff --git a/apps/medical-illustration/index.html b/apps/medical-illustration/index.html index 39ebe549d..0187bd7e6 100644 --- a/apps/medical-illustration/index.html +++ b/apps/medical-illustration/index.html @@ -3,10 +3,42 @@ Medical Illustration Web Component - + - - + + + \ No newline at end of file diff --git a/apps/medical-illustration/main.21a2ea9a9c087919.js b/apps/medical-illustration/main.5fc659f6b7b41d2f.js similarity index 67% rename from apps/medical-illustration/main.21a2ea9a9c087919.js rename to apps/medical-illustration/main.5fc659f6b7b41d2f.js index 07e6133e4..b1ae1b419 100644 --- a/apps/medical-illustration/main.21a2ea9a9c087919.js +++ b/apps/medical-illustration/main.5fc659f6b7b41d2f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmedical_illustration=self.webpackChunkmedical_illustration||[]).push([[179],{654:()=>{function X(e){return"function"==typeof e}function Fr(e){const n=e(r=>{Error.call(r),r.stack=(new Error).stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}const Zi=Fr(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription:\n${n.map((r,i)=>`${i+1}) ${r.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=n});function jn(e,t){if(e){const n=e.indexOf(t);0<=n&&e.splice(n,1)}}class Ie{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;const{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(const o of n)o.remove(this);else n.remove(this);const{initialTeardown:r}=this;if(X(r))try{r()}catch(o){t=o instanceof Zi?o.errors:[o]}const{_finalizers:i}=this;if(i){this._finalizers=null;for(const o of i)try{id(o)}catch(s){t=t??[],s instanceof Zi?t=[...t,...s.errors]:t.push(s)}}if(t)throw new Zi(t)}}add(t){var n;if(t&&t!==this)if(this.closed)id(t);else{if(t instanceof Ie){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(t)}}_hasParent(t){const{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){const{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){const{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&jn(n,t)}remove(t){const{_finalizers:n}=this;n&&jn(n,t),t instanceof Ie&&t._removeParent(this)}}Ie.EMPTY=(()=>{const e=new Ie;return e.closed=!0,e})();const nd=Ie.EMPTY;function rd(e){return e instanceof Ie||e&&"closed"in e&&X(e.remove)&&X(e.add)&&X(e.unsubscribe)}function id(e){X(e)?e():e.unsubscribe()}const gn={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Wi={setTimeout(e,t,...n){const{delegate:r}=Wi;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){const{delegate:t}=Wi;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function od(e){Wi.setTimeout(()=>{const{onUnhandledError:t}=gn;if(!t)throw e;t(e)})}function qi(){}const R_=ia("C",void 0,void 0);function ia(e,t,n){return{kind:e,value:t,error:n}}let mn=null;function Yi(e){if(gn.useDeprecatedSynchronousErrorHandling){const t=!mn;if(t&&(mn={errorThrown:!1,error:null}),e(),t){const{errorThrown:n,error:r}=mn;if(mn=null,n)throw r}}else e()}class oa extends Ie{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,rd(t)&&t.add(this)):this.destination=V_}static create(t,n,r){return new Hn(t,n,r)}next(t){this.isStopped?aa(function O_(e){return ia("N",e,void 0)}(t),this):this._next(t)}error(t){this.isStopped?aa(function k_(e){return ia("E",void 0,e)}(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?aa(R_,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const N_=Function.prototype.bind;function sa(e,t){return N_.call(e,t)}class F_{constructor(t){this.partialObserver=t}next(t){const{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){Xi(r)}}error(t){const{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){Xi(r)}else Xi(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){Xi(n)}}}class Hn extends oa{constructor(t,n,r){let i;if(super(),X(t)||!t)i={next:t??void 0,error:n??void 0,complete:r??void 0};else{let o;this&&gn.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=()=>this.unsubscribe(),i={next:t.next&&sa(t.next,o),error:t.error&&sa(t.error,o),complete:t.complete&&sa(t.complete,o)}):i=t}this.destination=new F_(i)}}function Xi(e){gn.useDeprecatedSynchronousErrorHandling?function P_(e){gn.useDeprecatedSynchronousErrorHandling&&mn&&(mn.errorThrown=!0,mn.error=e)}(e):od(e)}function aa(e,t){const{onStoppedNotification:n}=gn;n&&Wi.setTimeout(()=>n(e,t))}const V_={closed:!0,next:qi,error:function L_(e){throw e},complete:qi},la="function"==typeof Symbol&&Symbol.observable||"@@observable";function ca(e){return e}let fe=(()=>{class e{constructor(n){n&&(this._subscribe=n)}lift(n){const r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,i){const o=function j_(e){return e&&e instanceof oa||function B_(e){return e&&X(e.next)&&X(e.error)&&X(e.complete)}(e)&&rd(e)}(n)?n:new Hn(n,r,i);return Yi(()=>{const{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}forEach(n,r){return new(r=ad(r))((i,o)=>{const s=new Hn({next:a=>{try{n(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:i});this.subscribe(s)})}_subscribe(n){var r;return null===(r=this.source)||void 0===r?void 0:r.subscribe(n)}[la](){return this}pipe(...n){return function sd(e){return 0===e.length?ca:1===e.length?e[0]:function(n){return e.reduce((r,i)=>i(r),n)}}(n)(this)}toPromise(n){return new(n=ad(n))((r,i)=>{let o;this.subscribe(s=>o=s,s=>i(s),()=>r(o))})}}return e.create=t=>new e(t),e})();function ad(e){var t;return null!==(t=e??gn.Promise)&&void 0!==t?t:Promise}const H_=Fr(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let Re=(()=>{class e extends fe{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(n){const r=new ld(this,this);return r.operator=n,r}_throwIfClosed(){if(this.closed)throw new H_}next(n){Yi(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const r of this.currentObservers)r.next(n)}})}error(n){Yi(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=n;const{observers:r}=this;for(;r.length;)r.shift().error(n)}})}complete(){Yi(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:n}=this;for(;n.length;)n.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var n;return(null===(n=this.observers)||void 0===n?void 0:n.length)>0}_trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}_subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)}_innerSubscribe(n){const{hasError:r,isStopped:i,observers:o}=this;return r||i?nd:(this.currentObservers=null,o.push(n),new Ie(()=>{this.currentObservers=null,jn(o,n)}))}_checkFinalizedStatuses(n){const{hasError:r,thrownError:i,isStopped:o}=this;r?n.error(i):o&&n.complete()}asObservable(){const n=new fe;return n.source=this,n}}return e.create=(t,n)=>new ld(t,n),e})();class ld extends Re{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;null===(r=null===(n=this.destination)||void 0===n?void 0:n.next)||void 0===r||r.call(n,t)}error(t){var n,r;null===(r=null===(n=this.destination)||void 0===n?void 0:n.error)||void 0===r||r.call(n,t)}complete(){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===n||n.call(t)}_subscribe(t){var n,r;return null!==(r=null===(n=this.source)||void 0===n?void 0:n.subscribe(t))&&void 0!==r?r:nd}}function Ue(e){return t=>{if(function $_(e){return X(e?.lift)}(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function Ne(e,t,n,r,i){return new U_(e,t,n,r,i)}class U_ extends oa{constructor(t,n,r,i,o,s){super(t),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=n?function(a){try{n(a)}catch(l){t.error(l)}}:super._next,this._error=i?function(a){try{i(a)}catch(l){t.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(a){t.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:n}=this;super.unsubscribe(),!n&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}}}function Me(e,t){return Ue((n,r)=>{let i=0;n.subscribe(Ne(r,o=>{r.next(e.call(t,o,i++))}))})}function yn(e){return this instanceof yn?(this.v=e,this):new yn(e)}function W_(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,t=e[Symbol.asyncIterator];return t?t.call(e):(e=function dd(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(o){n[o]=e[o]&&function(s){return new Promise(function(a,l){!function i(o,s,a,l){Promise.resolve(l).then(function(c){o({value:c,done:a})},s)}(a,l,(s=e[o](s)).done,s.value)})}}}const da=e=>e&&"number"==typeof e.length&&"function"!=typeof e;function fd(e){return X(e?.then)}function hd(e){return X(e[la])}function pd(e){return Symbol.asyncIterator&&X(e?.[Symbol.asyncIterator])}function gd(e){return new TypeError(`You provided ${null!==e&&"object"==typeof e?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const md=function Y_(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function yd(e){return X(e?.[md])}function vd(e){return function Z_(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,r=n.apply(e,t||[]),o=[];return i={},s("next"),s("throw"),s("return"),i[Symbol.asyncIterator]=function(){return this},i;function s(f){r[f]&&(i[f]=function(h){return new Promise(function(p,g){o.push([f,h,p,g])>1||a(f,h)})})}function a(f,h){try{!function l(f){f.value instanceof yn?Promise.resolve(f.value.v).then(c,u):d(o[0][2],f)}(r[f](h))}catch(p){d(o[0][3],p)}}function c(f){a("next",f)}function u(f){a("throw",f)}function d(f,h){f(h),o.shift(),o.length&&a(o[0][0],o[0][1])}}(this,arguments,function*(){const n=e.getReader();try{for(;;){const{value:r,done:i}=yield yn(n.read());if(i)return yield yn(void 0);yield yield yn(r)}}finally{n.releaseLock()}})}function _d(e){return X(e?.getReader)}function Ke(e){if(e instanceof fe)return e;if(null!=e){if(hd(e))return function X_(e){return new fe(t=>{const n=e[la]();if(X(n.subscribe))return n.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(e);if(da(e))return function K_(e){return new fe(t=>{for(let n=0;n{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,od)})}(e);if(pd(e))return Dd(e);if(yd(e))return function J_(e){return new fe(t=>{for(const n of e)if(t.next(n),t.closed)return;t.complete()})}(e);if(_d(e))return function eD(e){return Dd(vd(e))}(e)}throw gd(e)}function Dd(e){return new fe(t=>{(function tD(e,t){var n,r,i,o;return function z_(e,t,n,r){return new(n||(n=Promise))(function(o,s){function a(u){try{c(r.next(u))}catch(d){s(d)}}function l(u){try{c(r.throw(u))}catch(d){s(d)}}function c(u){u.done?o(u.value):function i(o){return o instanceof n?o:new n(function(s){s(o)})}(u.value).then(a,l)}c((r=r.apply(e,t||[])).next())})}(this,void 0,void 0,function*(){try{for(n=W_(e);!(r=yield n.next()).done;)if(t.next(r.value),t.closed)return}catch(s){i={error:s}}finally{try{r&&!r.done&&(o=n.return)&&(yield o.call(n))}finally{if(i)throw i.error}}t.complete()})})(e,t).catch(n=>t.error(n))})}function nn(e,t,n,r=0,i=!1){const o=t.schedule(function(){n(),i?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(o),!i)return o}function Lr(e,t,n=1/0){return X(t)?Lr((r,i)=>Me((o,s)=>t(r,o,i,s))(Ke(e(r,i))),n):("number"==typeof t&&(n=t),Ue((r,i)=>function nD(e,t,n,r,i,o,s,a){const l=[];let c=0,u=0,d=!1;const f=()=>{d&&!l.length&&!c&&t.complete()},h=g=>c{o&&t.next(g),c++;let y=!1;Ke(n(g,u++)).subscribe(Ne(t,v=>{i?.(v),o?h(v):t.next(v)},()=>{y=!0},void 0,()=>{if(y)try{for(c--;l.length&&cp(v)):p(v)}f()}catch(v){t.error(v)}}))};return e.subscribe(Ne(t,h,()=>{d=!0,f()})),()=>{a?.()}}(r,i,e,n)))}function wd(e=1/0){return Lr(ca,e)}const fa=new fe(e=>e.complete());function Cd(e){return e&&X(e.schedule)}function ha(e){return e[e.length-1]}function Ki(e){return Cd(ha(e))?e.pop():void 0}function Ed(e,t=0){return Ue((n,r)=>{n.subscribe(Ne(r,i=>nn(r,e,()=>r.next(i),t),()=>nn(r,e,()=>r.complete(),t),i=>nn(r,e,()=>r.error(i),t)))})}function bd(e,t=0){return Ue((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function Sd(e,t){if(!e)throw new Error("Iterable cannot be null");return new fe(n=>{nn(n,t,()=>{const r=e[Symbol.asyncIterator]();nn(n,t,()=>{r.next().then(i=>{i.done?n.complete():n.next(i.value)})},0,!0)})})}function Qi(e,t){return t?function uD(e,t){if(null!=e){if(hd(e))return function oD(e,t){return Ke(e).pipe(bd(t),Ed(t))}(e,t);if(da(e))return function aD(e,t){return new fe(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}(e,t);if(fd(e))return function sD(e,t){return Ke(e).pipe(bd(t),Ed(t))}(e,t);if(pd(e))return Sd(e,t);if(yd(e))return function lD(e,t){return new fe(n=>{let r;return nn(n,t,()=>{r=e[md](),nn(n,t,()=>{let i,o;try{({value:i,done:o}=r.next())}catch(s){return void n.error(s)}o?n.complete():n.next(i)},0,!0)}),()=>X(r?.return)&&r.return()})}(e,t);if(_d(e))return function cD(e,t){return Sd(vd(e),t)}(e,t)}throw gd(e)}(e,t):Ke(e)}function pa(...e){const t=Ki(e),n=function iD(e,t){return"number"==typeof ha(e)?e.pop():t}(e,1/0),r=e;return r.length?1===r.length?Ke(r[0]):wd(n)(Qi(r,t)):fa}function Id(e={}){const{connector:t=(()=>new Re),resetOnError:n=!0,resetOnComplete:r=!0,resetOnRefCountZero:i=!0}=e;return o=>{let s,a,l,c=0,u=!1,d=!1;const f=()=>{a?.unsubscribe(),a=void 0},h=()=>{f(),s=l=void 0,u=d=!1},p=()=>{const g=s;h(),g?.unsubscribe()};return Ue((g,y)=>{c++,!d&&!u&&f();const v=l=l??t();y.add(()=>{c--,0===c&&!d&&!u&&(a=ga(p,i))}),v.subscribe(y),!s&&c>0&&(s=new Hn({next:S=>v.next(S),error:S=>{d=!0,f(),a=ga(h,n,S),v.error(S)},complete:()=>{u=!0,f(),a=ga(h,r),v.complete()}}),Ke(g).subscribe(s))})(o)}}function ga(e,t,...n){if(!0===t)return void e();if(!1===t)return;const r=new Hn({next:()=>{r.unsubscribe(),e()}});return Ke(t(...n)).subscribe(r)}function ne(e){for(let t in e)if(e[t]===ne)return t;throw Error("Could not find renamed property on target object.")}function ma(e,t){for(const n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function ie(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(ie).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function ya(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}const dD=ne({__forward_ref__:ne});function va(e){return e.__forward_ref__=va,e.toString=function(){return ie(this())},e}function O(e){return _a(e)?e():e}function _a(e){return"function"==typeof e&&e.hasOwnProperty(dD)&&e.__forward_ref__===va}function Da(e){return e&&!!e.\u0275providers}class T extends Error{constructor(t,n){super(Ji(t,n)),this.code=t}}function Ji(e,t){return`NG0${Math.abs(e)}${t?": "+t.trim():""}`}function B(e){return"string"==typeof e?e:null==e?"":String(e)}function eo(e,t){throw new T(-201,!1)}function ft(e,t){null==e&&function ee(e,t,n,r){throw new Error(`ASSERTION ERROR: ${e}`+(null==r?"":` [Expected=> ${n} ${r} ${t} <=Actual]`))}(t,e,null,"!=")}function P(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Qe(e){return{providers:e.providers||[],imports:e.imports||[]}}function to(e){return Td(e,no)||Td(e,Ad)}function Td(e,t){return e.hasOwnProperty(t)?e[t]:null}function xd(e){return e&&(e.hasOwnProperty(wa)||e.hasOwnProperty(_D))?e[wa]:null}const no=ne({\u0275prov:ne}),wa=ne({\u0275inj:ne}),Ad=ne({ngInjectableDef:ne}),_D=ne({ngInjectorDef:ne});var V=(()=>((V=V||{})[V.Default=0]="Default",V[V.Host=1]="Host",V[V.Self=2]="Self",V[V.SkipSelf=4]="SkipSelf",V[V.Optional=8]="Optional",V))();let Ca;function ht(e){const t=Ca;return Ca=e,t}function Rd(e,t,n){const r=to(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&V.Optional?null:void 0!==t?t:void eo(ie(e))}const ae=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),Vr={},Ea="__NG_DI_FLAG__",ro="ngTempTokenPath",wD="ngTokenPath",CD=/\n/gm,ED="\u0275",kd="__source";let Br;function $n(e){const t=Br;return Br=e,t}function bD(e,t=V.Default){if(void 0===Br)throw new T(-203,!1);return null===Br?Rd(e,void 0,t):Br.get(e,t&V.Optional?null:void 0,t)}function D(e,t=V.Default){return(function DD(){return Ca}()||bD)(O(e),t)}function Fe(e,t=V.Default){return D(e,io(t))}function io(e){return typeof e>"u"||"number"==typeof e?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function ba(e){const t=[];for(let n=0;n((At=At||{})[At.OnPush=0]="OnPush",At[At.Default=1]="Default",At))(),Rt=(()=>{return(e=Rt||(Rt={}))[e.Emulated=0]="Emulated",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",Rt;var e})();const $t={},Q=[],oo=ne({\u0275cmp:ne}),Sa=ne({\u0275dir:ne}),Ia=ne({\u0275pipe:ne}),Pd=ne({\u0275mod:ne}),Ut=ne({\u0275fac:ne}),Hr=ne({__NG_ELEMENT_ID__:ne});let TD=0;function Un(e){return Ht(()=>{const t=Fd(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===At.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:null,data:e.data||{},encapsulation:e.encapsulation||Rt.Emulated,id:"c"+TD++,styles:e.styles||Q,_:null,schemas:e.schemas||null,tView:null};Ld(n);const r=e.dependencies;return n.directiveDefs=so(r,!1),n.pipeDefs=so(r,!0),n})}function AD(e){return te(e)||Le(e)}function RD(e){return null!==e}function ot(e){return Ht(()=>({type:e.type,bootstrap:e.bootstrap||Q,declarations:e.declarations||Q,imports:e.imports||Q,exports:e.exports||Q,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Nd(e,t){if(null==e)return $t;const n={};for(const r in e)if(e.hasOwnProperty(r)){let i=e[r],o=i;Array.isArray(i)&&(o=i[1],i=i[0]),n[i]=r,t&&(t[i]=o)}return n}function ke(e){return Ht(()=>{const t=Fd(e);return Ld(t),t})}function Je(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function te(e){return e[oo]||null}function Le(e){return e[Sa]||null}function et(e){return e[Ia]||null}function Fd(e){const t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,exportAs:e.exportAs||null,standalone:!0===e.standalone,selectors:e.selectors||Q,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Nd(e.inputs,t),outputs:Nd(e.outputs)}}function Ld(e){e.features?.forEach(t=>t(e))}function so(e,t){if(!e)return null;const n=t?et:AD;return()=>("function"==typeof e?e():e).map(r=>n(r)).filter(RD)}const zt=0,I=1,U=2,he=3,Dt=4,vn=5,Ve=6,zn=7,me=8,ao=9,lo=10,Z=11,Ma=12,Ur=13,Vd=14,Gn=15,Be=16,zr=17,Zn=18,kt=19,Gr=20,Bd=21,le=22,Ta=1,jd=2,co=7,uo=8,Wn=9,ze=10;function at(e){return Array.isArray(e)&&"object"==typeof e[Ta]}function wt(e){return Array.isArray(e)&&!0===e[Ta]}function xa(e){return 0!=(4&e.flags)}function Zr(e){return e.componentOffset>-1}function fo(e){return 1==(1&e.flags)}function Ct(e){return!!e.template}function OD(e){return 0!=(256&e[U])}function _n(e,t){return e.hasOwnProperty(Ut)?e[Ut]:null}class Ud{constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}}function Gt(){return zd}function zd(e){return e.type.prototype.ngOnChanges&&(e.setInput=LD),FD}function FD(){const e=Zd(this),t=e?.current;if(t){const n=e.previous;if(n===$t)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function LD(e,t,n,r){const i=this.declaredInputs[n],o=Zd(e)||function VD(e,t){return e[Gd]=t}(e,{previous:$t,current:null}),s=o.current||(o.current={}),a=o.previous,l=a[i];s[i]=new Ud(l&&l.currentValue,t,a===$t),e[r]=t}Gt.ngInherit=!0;const Gd="__ngSimpleChanges__";function Zd(e){return e[Gd]||null}const pt=function(e,t,n){};function Oe(e){for(;Array.isArray(e);)e=e[zt];return e}function ho(e,t){return Oe(t[e])}function lt(e,t){return Oe(t[e.index])}function Yd(e,t){return e.data[t]}function ct(e,t){const n=t[e];return at(n)?n:n[zt]}function po(e){return 64==(64&e[U])}function on(e,t){return null==t?null:e[t]}function Xd(e){e[Zn]=0}function Ra(e,t){e[vn]+=t;let n=e,r=e[he];for(;null!==r&&(1===t&&1===n[vn]||-1===t&&0===n[vn]);)r[vn]+=t,n=r,r=r[he]}const j={lFrame:uf(null),bindingsEnabled:!0};function Qd(){return j.bindingsEnabled}function _(){return j.lFrame.lView}function Y(){return j.lFrame.tView}function Pe(){let e=tf();for(;null!==e&&64===e.type;)e=e.parent;return e}function tf(){return j.lFrame.currentTNode}function Ot(e,t){const n=j.lFrame;n.currentTNode=e,n.isParent=t}function ka(){return j.lFrame.isParent}function Oa(){j.lFrame.isParent=!1}function Yn(){return j.lFrame.bindingIndex++}function KD(e,t){const n=j.lFrame;n.bindingIndex=n.bindingRootIndex=e,Pa(t)}function Pa(e){j.lFrame.currentDirectiveIndex=e}function af(){return j.lFrame.currentQueryIndex}function Fa(e){j.lFrame.currentQueryIndex=e}function JD(e){const t=e[I];return 2===t.type?t.declTNode:1===t.type?e[Ve]:null}function lf(e,t,n){if(n&V.SkipSelf){let i=t,o=e;for(;!(i=i.parent,null!==i||n&V.Host||(i=JD(o),null===i||(o=o[Gn],10&i.type))););if(null===i)return!1;t=i,e=o}const r=j.lFrame=cf();return r.currentTNode=t,r.lView=e,!0}function La(e){const t=cf(),n=e[I];j.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function cf(){const e=j.lFrame,t=null===e?null:e.child;return null===t?uf(e):t}function uf(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function df(){const e=j.lFrame;return j.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const ff=df;function Va(){const e=df();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Ze(){return j.lFrame.selectedIndex}function Dn(e){j.lFrame.selectedIndex=e}function go(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n=r)break}else t[l]<0&&(e[Zn]+=65536),(a>11>16&&(3&e[U])===t){e[U]+=2048,pt(4,a,o);try{o.call(a)}finally{pt(5,a,o)}}}else{pt(4,a,o);try{o.call(a)}finally{pt(5,a,o)}}}const Xn=-1;class qr{constructor(t,n,r){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=r}}function Ha(e,t,n){let r=0;for(;rt){s=o-1;break}}}for(;o>16}(e),r=t;for(;n>0;)r=r[Gn],n--;return r}let $a=!0;function Do(e){const t=$a;return $a=e,t}const vf=255,_f=5;let hw=0;const Pt={};function wo(e,t){const n=Df(e,t);if(-1!==n)return n;const r=t[I];r.firstCreatePass&&(e.injectorIndex=t.length,Ua(r.data,e),Ua(t,null),Ua(r.blueprint,null));const i=za(e,t),o=e.injectorIndex;if(yf(i)){const s=vo(i),a=_o(i,t),l=a[I].data;for(let c=0;c<8;c++)t[o+c]=a[s+c]|l[s+c]}return t[o+8]=i,o}function Ua(e,t){e.push(0,0,0,0,0,0,0,0,t)}function Df(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function za(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;null!==i;){if(r=Mf(i),null===r)return Xn;if(n++,i=i[Gn],-1!==r.injectorIndex)return r.injectorIndex|n<<16}return Xn}function Ga(e,t,n){!function pw(e,t,n){let r;"string"==typeof n?r=n.charCodeAt(0)||0:n.hasOwnProperty(Hr)&&(r=n[Hr]),null==r&&(r=n[Hr]=hw++);const i=r&vf;t.data[e+(i>>_f)]|=1<=0?t&vf:vw:t}(n);if("function"==typeof o){if(!lf(t,e,r))return r&V.Host?wf(i,0,r):Cf(t,n,r,i);try{const s=o(r);if(null!=s||r&V.Optional)return s;eo()}finally{ff()}}else if("number"==typeof o){let s=null,a=Df(e,t),l=Xn,c=r&V.Host?t[Be][Ve]:null;for((-1===a||r&V.SkipSelf)&&(l=-1===a?za(e,t):t[a+8],l!==Xn&&If(r,!1)?(s=t[I],a=vo(l),t=_o(l,t)):a=-1);-1!==a;){const u=t[I];if(Sf(o,a,u.data)){const d=mw(a,t,n,s,r,c);if(d!==Pt)return d}l=t[a+8],l!==Xn&&If(r,t[I].data[a+8]===c)&&Sf(o,a,t)?(s=u,a=vo(l),t=_o(l,t)):a=-1}}return i}function mw(e,t,n,r,i,o){const s=t[I],a=s.data[e+8],u=Co(a,s,n,null==r?Zr(a)&&$a:r!=s&&0!=(3&a.type),i&V.Host&&o===a);return null!==u?wn(t,s,u,a):Pt}function Co(e,t,n,r,i){const o=e.providerIndexes,s=t.data,a=1048575&o,l=e.directiveStart,u=o>>20,f=i?a+u:e.directiveEnd;for(let h=r?a:a+u;h=l&&p.type===n)return h}if(i){const h=s[l];if(h&&Ct(h)&&h.type===n)return l}return null}function wn(e,t,n,r){let i=e[n];const o=t.data;if(function cw(e){return e instanceof qr}(i)){const s=i;s.resolving&&function fD(e,t){const n=t?`. Dependency path: ${t.join(" > ")} > ${e}`:"";throw new T(-200,`Circular dependency in DI detected for ${e}${n}`)}(function J(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():B(e)}(o[n]));const a=Do(s.canSeeViewProviders);s.resolving=!0;const l=s.injectImpl?ht(s.injectImpl):null;lf(e,r,V.Default);try{i=e[n]=s.factory(void 0,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&function aw(e,t,n){const{ngOnChanges:r,ngOnInit:i,ngDoCheck:o}=t.type.prototype;if(r){const s=zd(t);(n.preOrderHooks??(n.preOrderHooks=[])).push(e,s),(n.preOrderCheckHooks??(n.preOrderCheckHooks=[])).push(e,s)}i&&(n.preOrderHooks??(n.preOrderHooks=[])).push(0-e,i),o&&((n.preOrderHooks??(n.preOrderHooks=[])).push(e,o),(n.preOrderCheckHooks??(n.preOrderCheckHooks=[])).push(e,o))}(n,o[n],t)}finally{null!==l&&ht(l),Do(a),s.resolving=!1,ff()}}return i}function Sf(e,t,n){return!!(n[t+(e>>_f)]&1<{const t=e.prototype.constructor,n=t[Ut]||Wa(t),r=Object.prototype;let i=Object.getPrototypeOf(e.prototype).constructor;for(;i&&i!==r;){const o=i[Ut]||Wa(i);if(o&&o!==n)return o;i=Object.getPrototypeOf(i)}return o=>new o})}function Wa(e){return _a(e)?()=>{const t=Wa(O(e));return t&&t()}:_n(e)}function Mf(e){const t=e[I],n=t.type;return 2===n?t.declTNode:1===n?e[Ve]:null}const Jn="__parameters__";function tr(e,t,n){return Ht(()=>{const r=function Ya(e){return function(...n){if(e){const r=e(...n);for(const i in r)this[i]=r[i]}}}(t);function i(...o){if(this instanceof i)return r.apply(this,o),this;const s=new i(...o);return a.annotation=s,a;function a(l,c,u){const d=l.hasOwnProperty(Jn)?l[Jn]:Object.defineProperty(l,Jn,{value:[]})[Jn];for(;d.length<=u;)d.push(null);return(d[u]=d[u]||[]).push(s),l}}return n&&(i.prototype=Object.create(n.prototype)),i.prototype.ngMetadataName=e,i.annotationCls=i,i})}class A{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=P({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function Cn(e,t){e.forEach(n=>Array.isArray(n)?Cn(n,t):t(n))}function xf(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function Eo(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function Qr(e,t){const n=[];for(let r=0;r=0?e[1|r]=n:(r=~r,function Ew(e,t,n,r){let i=e.length;if(i==t)e.push(n,r);else if(1===i)e.push(r,e[0]),e[0]=n;else{for(i--,e.push(e[i-1],e[i]);i>t;)e[i]=e[i-2],i--;e[t]=n,e[t+1]=r}}(e,r,t,n)),r}function Ka(e,t){const n=nr(e,t);if(n>=0)return e[1|n]}function nr(e,t){return function Af(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){const o=r+(i-r>>1),s=e[o<t?i=o:r=o+1}return~(i<({token:e})),-1),Jr=jr(tr("Optional"),8);var tt=(()=>((tt=tt||{})[tt.Important=1]="Important",tt[tt.DashCase=2]="DashCase",tt))();const nl=new Map;let Gw=0;const il="__ngContext__";function je(e,t){at(t)?(e[il]=t[Gr],function Ww(e){nl.set(e[Gr],e)}(t)):e[il]=t}let ol;function sl(e,t){return ol(e,t)}function ri(e){const t=e[he];return wt(t)?t[he]:t}function al(e){return Xf(e[Ur])}function ll(e){return Xf(e[Dt])}function Xf(e){for(;null!==e&&!wt(e);)e=e[Dt];return e}function ir(e,t,n,r,i){if(null!=r){let o,s=!1;wt(r)?o=r:at(r)&&(s=!0,r=r[zt]);const a=Oe(r);0===e&&null!==n?null==i?nh(t,n,a):En(t,n,a,i||null,!0):1===e&&null!==n?En(t,n,a,i||null,!0):2===e?function gl(e,t,n){const r=xo(e,t);r&&function hC(e,t,n,r){e.removeChild(t,n,r)}(e,r,t,n)}(t,a,s):3===e&&t.destroyNode(a),null!=o&&function mC(e,t,n,r,i){const o=n[co];o!==Oe(n)&&ir(t,e,r,o,i);for(let a=ze;a0&&(e[n-1][Dt]=r[Dt]);const o=Eo(e,ze+t);!function oC(e,t){ii(e,t,t[Z],2,null,null),t[zt]=null,t[Ve]=null}(r[I],r);const s=o[kt];null!==s&&s.detachView(o[I]),r[he]=null,r[Dt]=null,r[U]&=-65}return r}function Jf(e,t){if(!(128&t[U])){const n=t[Z];n.destroyNode&&ii(e,t,n,3,null,null),function lC(e){let t=e[Ur];if(!t)return fl(e[I],e);for(;t;){let n=null;if(at(t))n=t[Ur];else{const r=t[ze];r&&(n=r)}if(!n){for(;t&&!t[Dt]&&t!==e;)at(t)&&fl(t[I],t),t=t[he];null===t&&(t=e),at(t)&&fl(t[I],t),n=t&&t[Dt]}t=n}}(t)}}function fl(e,t){if(!(128&t[U])){t[U]&=-65,t[U]|=128,function fC(e,t){let n;if(null!=e&&null!=(n=e.destroyHooks))for(let r=0;r=0?r[i=s]():r[i=-s].unsubscribe(),o+=2}else{const s=r[i=n[o+1]];n[o].call(s)}if(null!==r){for(let o=i+1;o-1){const{encapsulation:o}=e.data[r.directiveStart+i];if(o===Rt.None||o===Rt.Emulated)return null}return lt(r,n)}}(e,t.parent,n)}function En(e,t,n,r,i){e.insertBefore(t,n,r,i)}function nh(e,t,n){e.appendChild(t,n)}function rh(e,t,n,r,i){null!==r?En(e,t,n,r,i):nh(e,t,n)}function xo(e,t){return e.parentNode(t)}function ih(e,t,n){return sh(e,t,n)}let hl,vl,sh=function oh(e,t,n){return 40&e.type?lt(e,n):null};function Ao(e,t,n,r){const i=eh(e,r,t),o=t[Z],a=ih(r.parent||t[Ve],r,t);if(null!=i)if(Array.isArray(n))for(let l=0;l{const s=o;bl(s,n,[],r)&&(i||(i=[]),i.push(s))}),void 0!==i&&Ah(i,n),n}function Ah(e,t){for(let n=0;n{t.push(o)})}}function bl(e,t,n,r){if(!(e=O(e)))return!1;let i=null,o=xd(e);const s=!o&&te(e);if(o||s){if(s&&!s.standalone)return!1;i=e}else{const l=e.ngModule;if(o=xd(l),!o)return!1;i=l}const a=r.has(i);if(s){if(a)return!1;if(r.add(i),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const c of l)bl(c,t,n,r)}}else{if(!o)return!1;{if(null!=o.imports&&!a){let c;r.add(i);try{Cn(o.imports,u=>{bl(u,t,n,r)&&(c||(c=[]),c.push(u))})}finally{}void 0!==c&&Ah(c,t)}if(!a){const c=_n(i)||(()=>new i);t.push({provide:i,useFactory:c,deps:Q},{provide:Mh,useValue:i,multi:!0},{provide:Sh,useValue:()=>D(i),multi:!0})}const l=o.providers;null==l||a||Sl(l,u=>{t.push(u)})}}return i!==e&&void 0!==e.providers}function Sl(e,t){for(let n of e)Da(n)&&(n=n.\u0275providers),Array.isArray(n)?Sl(n,t):t(n)}const qC=ne({provide:String,useValue:ne});function Il(e){return null!==e&&"object"==typeof e&&qC in e}function bn(e){return"function"==typeof e}const Ml=new A("Set Injector scope."),No={},XC={};let Tl;function Fo(){return void 0===Tl&&(Tl=new Th),Tl}class Sn{}class Oh extends Sn{get destroyed(){return this._destroyed}constructor(t,n,r,i){super(),this.parent=n,this.source=r,this.scopes=i,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Al(t,s=>this.processProvider(s)),this.records.set(Ih,sr(void 0,this)),i.has("environment")&&this.records.set(Sn,sr(void 0,this));const o=this.records.get(Ml);null!=o&&"string"==typeof o.value&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(Mh.multi,Q,V.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const t of this._ngOnDestroyHooks)t.ngOnDestroy();for(const t of this._onDestroyHooks)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(t){this._onDestroyHooks.push(t)}runInContext(t){this.assertNotDestroyed();const n=$n(this),r=ht(void 0);try{return t()}finally{$n(n),ht(r)}}get(t,n=Vr,r=V.Default){this.assertNotDestroyed(),r=io(r);const i=$n(this),o=ht(void 0);try{if(!(r&V.SkipSelf)){let a=this.records.get(t);if(void 0===a){const l=function tE(e){return"function"==typeof e||"object"==typeof e&&e instanceof A}(t)&&to(t);a=l&&this.injectableDefInScope(l)?sr(xl(t),No):null,this.records.set(t,a)}if(null!=a)return this.hydrate(t,a)}return(r&V.Self?Fo():this.parent).get(t,n=r&V.Optional&&n===Vr?null:n)}catch(s){if("NullInjectorError"===s.name){if((s[ro]=s[ro]||[]).unshift(ie(t)),i)throw s;return function ID(e,t,n,r){const i=e[ro];throw t[kd]&&i.unshift(t[kd]),e.message=function MD(e,t,n,r=null){e=e&&"\n"===e.charAt(0)&&e.charAt(1)==ED?e.slice(2):e;let i=ie(t);if(Array.isArray(t))i=t.map(ie).join(" -> ");else if("object"==typeof t){let o=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];o.push(s+":"+("string"==typeof a?JSON.stringify(a):ie(a)))}i=`{${o.join(", ")}}`}return`${n}${r?"("+r+")":""}[${i}]: ${e.replace(CD,"\n ")}`}("\n"+e.message,i,n,r),e[wD]=i,e[ro]=null,e}(s,t,"R3InjectorError",this.source)}throw s}finally{ht(o),$n(i)}}resolveInjectorInitializers(){const t=$n(this),n=ht(void 0);try{const r=this.get(Sh.multi,Q,V.Self);for(const i of r)i()}finally{$n(t),ht(n)}}toString(){const t=[],n=this.records;for(const r of n.keys())t.push(ie(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new T(205,!1)}processProvider(t){let n=bn(t=O(t))?t:O(t&&t.provide);const r=function QC(e){return Il(e)?sr(void 0,e.useValue):sr(Ph(e),No)}(t);if(bn(t)||!0!==t.multi)this.records.get(n);else{let i=this.records.get(n);i||(i=sr(void 0,No,!0),i.factory=()=>ba(i.multi),this.records.set(n,i)),n=t,i.multi.push(t)}this.records.set(n,r)}hydrate(t,n){return n.value===No&&(n.value=XC,n.value=n.factory()),"object"==typeof n.value&&n.value&&function eE(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}injectableDefInScope(t){if(!t.providedIn)return!1;const n=O(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}}function xl(e){const t=to(e),n=null!==t?t.factory:_n(e);if(null!==n)return n;if(e instanceof A)throw new T(204,!1);if(e instanceof Function)return function KC(e){const t=e.length;if(t>0)throw Qr(t,"?"),new T(204,!1);const n=function yD(e){const t=e&&(e[no]||e[Ad]);return t?(function vD(e){if(e.hasOwnProperty("name"))return e.name;(""+e).match(/^function\s*([^\s(]+)/)}(e),t):null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new T(204,!1)}function Ph(e,t,n){let r;if(bn(e)){const i=O(e);return _n(i)||xl(i)}if(Il(e))r=()=>O(e.useValue);else if(function kh(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...ba(e.deps||[]));else if(function Rh(e){return!(!e||!e.useExisting)}(e))r=()=>D(O(e.useExisting));else{const i=O(e&&(e.useClass||e.provide));if(!function JC(e){return!!e.deps}(e))return _n(i)||xl(i);r=()=>new i(...ba(e.deps))}return r}function sr(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Al(e,t){for(const n of e)Array.isArray(n)?Al(n,t):n&&Da(n)?Al(n.\u0275providers,t):t(n)}class nE{}class Nh{}class iE{resolveComponentFactory(t){throw function rE(e){const t=Error(`No component factory found for ${ie(e)}. Did you add it to @NgModule.entryComponents?`);return t.ngComponent=e,t}(t)}}let an=(()=>{class e{}return e.NULL=new iE,e})();function oE(){return ar(Pe(),_())}function ar(e,t){return new We(lt(e,t))}let We=(()=>{class e{constructor(n){this.nativeElement=n}}return e.__NG_ELEMENT_ID__=oE,e})();function sE(e){return e instanceof We?e.nativeElement:e}class Lo{}let Vo=(()=>{class e{}return e.__NG_ELEMENT_ID__=()=>function aE(){const e=_(),n=ct(Pe().index,e);return(at(n)?n:e)[Z]}(),e})(),lE=(()=>{class e{}return e.\u0275prov=P({token:e,providedIn:"root",factory:()=>null}),e})();class Bo{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const cE=new Bo("15.2.6"),Rl={},kl="ngOriginalError";function Ol(e){return e[kl]}class lr{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Ol(t);for(;n&&Ol(n);)n=Ol(n);return n||null}}function Vh(e,t,n){let r=e.length;for(;;){const i=e.indexOf(t,n);if(-1===i)return i;if(0===i||e.charCodeAt(i-1)<=32){const o=t.length;if(i+o===r||e.charCodeAt(i+o)<=32)return i}n=i+1}}const Bh="ng-template";function DE(e,t,n){let r=0,i=!0;for(;ro?"":i[d+1].toLowerCase();const h=8&r?f:null;if(h&&-1!==Vh(h,c,0)||2&r&&c!==f){if(Et(r))return!1;s=!0}}}}else{if(!s&&!Et(r)&&!Et(l))return!1;if(s&&Et(l))continue;s=!1,r=l|1&r}}return Et(r)||s}function Et(e){return 0==(1&e)}function EE(e,t,n,r){if(null===t)return-1;let i=0;if(r||!n){let o=!1;for(;i-1)for(n++;n0?'="'+a+'"':"")+"]"}else 8&r?i+="."+s:4&r&&(i+=" "+s);else""!==i&&!Et(s)&&(t+=$h(o,i),i=""),r=s,o=o||!Et(r);n++}return""!==i&&(t+=$h(o,i)),t}const H={};function li(e){Uh(Y(),_(),Ze()+e,!1)}function Uh(e,t,n,r){if(!r)if(3==(3&t[U])){const o=e.preOrderCheckHooks;null!==o&&mo(t,o,n)}else{const o=e.preOrderHooks;null!==o&&yo(t,o,0,n)}Dn(n)}function Wh(e,t=null,n=null,r){const i=qh(e,t,n,r);return i.resolveInjectorInitializers(),i}function qh(e,t=null,n=null,r,i=new Set){const o=[n||Q,WC(e)];return r=r||("object"==typeof e?void 0:ie(e)),new Oh(o,t||Fo(),r||null,i)}let bt=(()=>{class e{static create(n,r){if(Array.isArray(n))return Wh({name:""},r,n,"");{const i=n.name??"";return Wh({name:i},n.parent,n.providers,i)}}}return e.THROW_IF_NOT_FOUND=Vr,e.NULL=new Th,e.\u0275prov=P({token:e,providedIn:"any",factory:()=>D(Ih)}),e.__NG_ELEMENT_ID__=-1,e})();function E(e,t=V.Default){const n=_();return null===n?D(e,t):Ef(Pe(),n,O(e),t)}function tp(e,t){const n=e.contentQueries;if(null!==n)for(let r=0;rle&&Uh(e,t,le,!1),pt(s?2:0,i),n(r,i)}finally{Dn(o),pt(s?3:1,i)}}function jl(e,t,n){if(xa(t)){const i=t.directiveEnd;for(let o=t.directiveStart;o0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(s)!=a&&s.push(a),s.push(n,r,o)}}(e,t,r,ci(e,n,i.hostVars,H),i)}function gb(e,t,n,r,i,o){const s=o[t];if(null!==s){const a=r.setInput;for(let l=0;l0&&Wl(n)}}function Wl(e){for(let r=al(e);null!==r;r=ll(r))for(let i=ze;i0&&Wl(o)}const n=e[I].components;if(null!==n)for(let r=0;r0&&Wl(i)}}function Db(e,t){const n=ct(t,e),r=n[I];(function wb(e,t){for(let n=t.length;n-1&&(dl(t,r),Eo(n,r))}this._attachedToViewContainer=!1}Jf(this._lView[I],this._lView)}onDestroy(t){ip(this._lView[I],this._lView,null,t)}markForCheck(){ql(this._cdRefInjectingView||this._lView)}detach(){this._lView[U]&=-65}reattach(){this._lView[U]|=64}detectChanges(){zo(this._lView[I],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new T(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function aC(e,t){ii(e,t,t[Z],2,null,null)}(this._lView[I],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new T(902,!1);this._appRef=t}}class Cb extends ui{constructor(t){super(t),this._view=t}detectChanges(){const t=this._view;zo(t[I],t,t[me],!1)}checkNoChanges(){}get context(){return null}}class gp extends an{constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){const n=te(t);return new di(n,this.ngModule)}}function mp(e){const t=[];for(let n in e)e.hasOwnProperty(n)&&t.push({propName:e[n],templateName:n});return t}class bb{constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,r){r=io(r);const i=this.injector.get(t,Rl,r);return i!==Rl||n===Rl?i:this.parentInjector.get(t,n,r)}}class di extends Nh{get inputs(){return mp(this.componentDef.inputs)}get outputs(){return mp(this.componentDef.outputs)}constructor(t,n){super(),this.componentDef=t,this.ngModule=n,this.componentType=t.type,this.selector=function xE(e){return e.map(TE).join(",")}(t.selectors),this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!n}create(t,n,r,i){let o=(i=i||this.ngModule)instanceof Sn?i:i?.injector;o&&null!==this.componentDef.getStandaloneInjector&&(o=this.componentDef.getStandaloneInjector(o)||o);const s=o?new bb(t,o):t,a=s.get(Lo,null);if(null===a)throw new T(407,!1);const l=s.get(lE,null),c=a.createRenderer(null,this.componentDef),u=this.componentDef.selectors[0][0]||"div",d=r?function eb(e,t,n){return e.selectRootElement(t,n===Rt.ShadowDom)}(c,r,this.componentDef.encapsulation):ul(c,u,function Eb(e){const t=e.toLowerCase();return"svg"===t?"svg":"math"===t?"math":null}(u)),f=this.componentDef.onPush?288:272,h=Ul(0,null,null,1,0,null,null,null,null,null),p=Ho(null,h,null,f,null,null,a,c,l,s,null);let g,y;La(p);try{const v=this.componentDef;let S,m=null;v.findHostDirectiveDefs?(S=[],m=new Map,v.findHostDirectiveDefs(v,S,m),S.push(v)):S=[v];const k=function Ib(e,t){const n=e[I],r=le;return e[r]=t,dr(n,r,2,"#host",null)}(p,d),re=function Mb(e,t,n,r,i,o,s,a){const l=i[I];!function Tb(e,t,n,r){for(const i of e)t.mergedAttrs=Yr(t.mergedAttrs,i.hostAttrs);null!==t.mergedAttrs&&(Go(t,t.mergedAttrs,!0),null!==n&&dh(r,n,t))}(r,e,t,s);const c=o.createRenderer(t,n),u=Ho(i,rp(n),null,n.onPush?32:16,i[e.index],e,o,c,a||null,null,null);return l.firstCreatePass&&Gl(l,e,r.length-1),Uo(i,u),i[e.index]=u}(k,d,v,S,p,a,c);y=Yd(h,le),d&&function Ab(e,t,n,r){if(r)Ha(e,n,["ng-version",cE.full]);else{const{attrs:i,classes:o}=function AE(e){const t=[],n=[];let r=1,i=2;for(;r0&&uh(e,n,o.join(" "))}}(c,v,d,r),void 0!==n&&function Rb(e,t,n){const r=e.projection=[];for(let i=0;i=0;r--){const i=e[r];i.hostVars=t+=i.hostVars,i.hostAttrs=Yr(i.hostAttrs,n=Yr(n,i.hostAttrs))}}(r)}function Kl(e){return e===$t?{}:e===Q?[]:e}function Pb(e,t){const n=e.viewQuery;e.viewQuery=n?(r,i)=>{t(r,i),n(r,i)}:t}function Nb(e,t){const n=e.contentQueries;e.contentQueries=n?(r,i,o)=>{t(r,i,o),n(r,i,o)}:t}function Fb(e,t){const n=e.hostBindings;e.hostBindings=n?(r,i)=>{t(r,i),n(r,i)}:t}function He(e,t,n){return!Object.is(e[t],n)&&(e[t]=n,!0)}function Xo(e,t,n,r,i,o,s,a){const l=_(),c=Y(),u=e+le,d=c.firstCreatePass?function Zb(e,t,n,r,i,o,s,a,l){const c=t.consts,u=dr(t,e,4,s||null,on(c,a));zl(t,n,u,on(c,l)),go(t,u);const d=u.tView=Ul(2,u,r,i,o,t.directiveRegistry,t.pipeRegistry,null,t.schemas,c);return null!==t.queries&&(t.queries.template(t,u),d.queries=t.queries.embeddedTView(u)),u}(u,c,l,t,n,r,i,o,s):c.data[u];Ot(d,!1);const f=l[Z].createComment("");Ao(c,l,f,d),je(f,l),Uo(l,l[u]=up(f,l,f,d)),fo(d)&&Hl(c,l,d),null!=s&&$l(l,d,a)}function ln(e,t,n){const r=_();return He(r,Yn(),t)&&function dt(e,t,n,r,i,o,s,a){const l=lt(t,n);let u,c=t.inputs;!a&&null!=c&&(u=c[r])?(Xl(e,n,u,r,i),Zr(t)&&ap(n,t.index)):3&t.type&&(r=function rb(e){return"class"===e?"className":"for"===e?"htmlFor":"formaction"===e?"formAction":"innerHtml"===e?"innerHTML":"readonly"===e?"readOnly":"tabindex"===e?"tabIndex":e}(r),i=null!=s?s(i,t.value||"",r):i,o.setProperty(l,r,i))}(Y(),function ce(){const e=j.lFrame;return Yd(e.tView,e.selectedIndex)}(),r,e,t,r[Z],n,!1),ln}function Jl(e,t,n,r,i){const s=i?"class":"style";Xl(e,n,t.inputs[s],s,r)}function Mn(e,t,n,r){const i=_(),o=Y(),s=le+e,a=i[Z],l=o.firstCreatePass?function Yb(e,t,n,r,i,o){const s=t.consts,l=dr(t,e,2,r,on(s,i));return zl(t,n,l,on(s,o)),null!==l.attrs&&Go(l,l.attrs,!1),null!==l.mergedAttrs&&Go(l,l.mergedAttrs,!0),null!==t.queries&&t.queries.elementStart(t,l),l}(s,o,i,t,n,r):o.data[s],c=i[s]=ul(a,t,function sw(){return j.lFrame.currentNamespace}()),u=fo(l);return Ot(l,!0),dh(a,c,l),32!=(32&l.flags)&&Ao(o,i,c,l),0===function zD(){return j.lFrame.elementDepthCount}()&&je(c,i),function GD(){j.lFrame.elementDepthCount++}(),u&&(Hl(o,i,l),jl(o,l,i)),null!==r&&$l(i,l),Mn}function Tn(){let e=Pe();ka()?Oa():(e=e.parent,Ot(e,!1));const t=e;!function ZD(){j.lFrame.elementDepthCount--}();const n=Y();return n.firstCreatePass&&(go(n,e),xa(e)&&n.queries.elementEnd(e)),null!=t.classesWithoutHost&&function uw(e){return 0!=(8&e.flags)}(t)&&Jl(n,t,_(),t.classesWithoutHost,!0),null!=t.stylesWithoutHost&&function dw(e){return 0!=(16&e.flags)}(t)&&Jl(n,t,_(),t.stylesWithoutHost,!1),Tn}function Ko(e,t,n,r){return Mn(e,t,n,r),Tn(),Ko}function Qo(e,t,n){const r=_(),i=Y(),o=e+le,s=i.firstCreatePass?function Xb(e,t,n,r,i){const o=t.consts,s=on(o,r),a=dr(t,e,8,"ng-container",s);return null!==s&&Go(a,s,!0),zl(t,n,a,on(o,i)),null!==t.queries&&t.queries.elementStart(t,a),a}(o,i,r,t,n):i.data[o];Ot(s,!0);const a=r[o]=r[Z].createComment("");return Ao(i,r,a,s),je(a,r),fo(s)&&(Hl(i,r,s),jl(i,s,r)),null!=n&&$l(r,s),Qo}function Jo(){let e=Pe();const t=Y();return ka()?Oa():(e=e.parent,Ot(e,!1)),t.firstCreatePass&&(go(t,e),xa(e)&&t.queries.elementEnd(e)),Jo}function ec(e){return!!e&&"function"==typeof e.then}function Op(e){return!!e&&"function"==typeof e.subscribe}const Kb=Op;function es(e,t,n,r){const i=_(),o=Y(),s=Pe();return function Np(e,t,n,r,i,o,s){const a=fo(r),c=e.firstCreatePass&&fp(e),u=t[me],d=dp(t);let f=!0;if(3&r.type||s){const g=lt(r,t),y=s?s(g):g,v=d.length,S=s?k=>s(Oe(k[r.index])):r.index;let m=null;if(!s&&a&&(m=function Qb(e,t,n,r){const i=e.cleanup;if(null!=i)for(let o=0;ol?a[l]:null}"string"==typeof s&&(o+=2)}return null}(e,t,i,r.index)),null!==m)(m.__ngLastListenerFn__||m).__ngNextListenerFn__=o,m.__ngLastListenerFn__=o,f=!1;else{o=Lp(r,t,u,o,!1);const k=n.listen(y,i,o);d.push(o,k),c&&c.push(i,S,v,v+1)}}else o=Lp(r,t,u,o,!1);const h=r.outputs;let p;if(f&&null!==h&&(p=h[i])){const g=p.length;if(g)for(let y=0;y-1?ct(e.index,t):t);let l=Fp(t,n,r,s),c=o.__ngNextListenerFn__;for(;c;)l=Fp(t,n,c,s)&&l,c=c.__ngNextListenerFn__;return i&&!1===l&&(s.preventDefault(),s.returnValue=!1),l}}function wr(e=1){return function ew(e){return(j.lFrame.contextLView=function tw(e,t){for(;e>0;)t=t[Gn],e--;return t}(e,j.lFrame.contextLView))[me]}(e)}function Jb(e,t){let n=null;const r=function bE(e){const t=e.attrs;if(null!=t){const n=t.indexOf(5);if(!(1&n))return t[n+1]}return null}(e);for(let i=0;i>17&32767}function nc(e){return 2|e}function xn(e){return(131068&e)>>2}function rc(e,t){return-131069&e|t<<2}function ic(e){return 1|e}function Yp(e,t,n,r,i){const o=e[n+1],s=null===t;let a=r?cn(o):xn(o),l=!1;for(;0!==a&&(!1===l||s);){const u=e[a+1];oS(e[a],t)&&(l=!0,e[a+1]=r?ic(u):nc(u)),a=r?cn(u):xn(u)}l&&(e[n+1]=r?nc(o):ic(o))}function oS(e,t){return null===e||null==t||(Array.isArray(e)?e[1]:e)===t||!(!Array.isArray(e)||"string"!=typeof t)&&nr(e,t)>=0}function oc(e,t,n){return St(e,t,n,!1),oc}function ns(e,t){return St(e,t,null,!0),ns}function St(e,t,n,r){const i=_(),o=Y(),s=function Wt(e){const t=j.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}(2);o.firstUpdatePass&&function rg(e,t,n,r){const i=e.data;if(null===i[n+1]){const o=i[Ze()],s=function ng(e,t){return t>=e.expandoStartIndex}(e,n);(function ag(e,t){return 0!=(e.flags&(t?8:16))})(o,r)&&null===t&&!s&&(t=!1),t=function pS(e,t,n,r){const i=function Na(e){const t=j.lFrame.currentDirectiveIndex;return-1===t?null:e[t]}(e);let o=r?t.residualClasses:t.residualStyles;if(null===i)0===(r?t.classBindings:t.styleBindings)&&(n=hi(n=sc(null,e,t,n,r),t.attrs,r),o=null);else{const s=t.directiveStylingLast;if(-1===s||e[s]!==i)if(n=sc(i,e,t,n,r),null===o){let l=function gS(e,t,n){const r=n?t.classBindings:t.styleBindings;if(0!==xn(r))return e[cn(r)]}(e,t,r);void 0!==l&&Array.isArray(l)&&(l=sc(null,e,t,l[1],r),l=hi(l,t.attrs,r),function mS(e,t,n,r){e[cn(n?t.classBindings:t.styleBindings)]=r}(e,t,r,l))}else o=function yS(e,t,n){let r;const i=t.directiveEnd;for(let o=1+t.directiveStylingLast;o0)&&(c=!0)):u=n,i)if(0!==l){const f=cn(e[a+1]);e[r+1]=ts(f,a),0!==f&&(e[f+1]=rc(e[f+1],r)),e[a+1]=function tS(e,t){return 131071&e|t<<17}(e[a+1],r)}else e[r+1]=ts(a,0),0!==a&&(e[a+1]=rc(e[a+1],r)),a=r;else e[r+1]=ts(l,0),0===a?a=r:e[l+1]=rc(e[l+1],r),l=r;c&&(e[r+1]=nc(e[r+1])),Yp(e,u,r,!0),Yp(e,u,r,!1),function iS(e,t,n,r,i){const o=i?e.residualClasses:e.residualStyles;null!=o&&"string"==typeof t&&nr(o,t)>=0&&(n[r+1]=ic(n[r+1]))}(t,u,e,r,o),s=ts(a,l),o?t.classBindings=s:t.styleBindings=s}(i,o,t,n,s,r)}}(o,e,s,r),t!==H&&He(i,s,t)&&function og(e,t,n,r,i,o,s,a){if(!(3&t.type))return;const l=e.data,c=l[a+1],u=function nS(e){return 1==(1&e)}(c)?sg(l,t,n,i,xn(c),s):void 0;rs(u)||(rs(o)||function eS(e){return 2==(2&e)}(c)&&(o=sg(l,null,n,i,a,s)),function yC(e,t,n,r,i){if(t)i?e.addClass(n,r):e.removeClass(n,r);else{let o=-1===r.indexOf("-")?void 0:tt.DashCase;null==i?e.removeStyle(n,r,o):("string"==typeof i&&i.endsWith("!important")&&(i=i.slice(0,-10),o|=tt.Important),e.setStyle(n,r,i,o))}}(r,s,ho(Ze(),n),i,o))}(o,o.data[Ze()],i,i[Z],e,i[s+1]=function DS(e,t){return null==e||""===e||("string"==typeof t?e+=t:"object"==typeof e&&(e=ie(function sn(e){return e instanceof mh?e.changingThisBreaksApplicationSecurity:e}(e)))),e}(t,n),r,s)}function sc(e,t,n,r,i){let o=null;const s=n.directiveEnd;let a=n.directiveStylingLast;for(-1===a?a=n.directiveStart:a++;a0;){const l=e[i],c=Array.isArray(l),u=c?l[1]:l,d=null===u;let f=n[i+1];f===H&&(f=d?Q:void 0);let h=d?Ka(f,r):u===r?f:void 0;if(c&&!rs(h)&&(h=Ka(l,r)),rs(h)&&(a=h,s))return a;const p=e[i+1];i=s?cn(p):xn(p)}if(null!==t){let l=o?t.residualClasses:t.residualStyles;null!=l&&(a=Ka(l,r))}return a}function rs(e){return void 0!==e}function ac(e){return lc("",e,""),ac}function lc(e,t,n){const r=_(),i=function hr(e,t,n,r){return He(e,Yn(),n)?t+B(n)+r:H}(r,e,t,n);return i!==H&&function Xt(e,t,n){const r=ho(t,e);!function Kf(e,t,n){e.setValue(t,n)}(e[Z],r,n)}(r,Ze(),i),lc}const br="en-US";let Ag=br;function dc(e,t,n,r,i){if(e=O(e),Array.isArray(e))for(let o=0;o>20;if(bn(e)||!e.multi){const h=new qr(l,i,E),p=hc(a,t,i?u:u+f,d);-1===p?(Ga(wo(c,s),o,a),fc(o,e,t.length),t.push(a),c.directiveStart++,c.directiveEnd++,i&&(c.providerIndexes+=1048576),n.push(h),s.push(h)):(n[p]=h,s[p]=h)}else{const h=hc(a,t,u+f,d),p=hc(a,t,u,u+f),y=p>=0&&n[p];if(i&&!y||!i&&!(h>=0&&n[h])){Ga(wo(c,s),o,a);const v=function VI(e,t,n,r,i){const o=new qr(e,n,E);return o.multi=[],o.index=t,o.componentProviders=0,tm(o,i,r&&!n),o}(i?LI:FI,n.length,i,r,l);!i&&y&&(n[p].providerFactory=v),fc(o,e,t.length,0),t.push(a),c.directiveStart++,c.directiveEnd++,i&&(c.providerIndexes+=1048576),n.push(v),s.push(v)}else fc(o,e,h>-1?h:p,tm(n[i?p:h],l,!i&&r));!i&&r&&y&&n[p].componentProviders++}}}function fc(e,t,n,r){const i=bn(t),o=function YC(e){return!!e.useClass}(t);if(i||o){const l=(o?O(t.useClass):t).prototype.ngOnDestroy;if(l){const c=e.destroyHooks||(e.destroyHooks=[]);if(!i&&t.multi){const u=c.indexOf(n);-1===u?c.push(n,[r,l]):c[u+1].push(r,l)}else c.push(n,l)}}}function tm(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function hc(e,t,n,r){for(let i=n;i{n.providersResolver=(r,i)=>function NI(e,t,n){const r=Y();if(r.firstCreatePass){const i=Ct(e);dc(n,r.data,r.blueprint,i,!0),dc(t,r.data,r.blueprint,i,!1)}}(r,i?i(e):e,t)}}class Sr{}class BI{}class nm extends Sr{constructor(t,n){super(),this._parent=n,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new gp(this);const r=function st(e,t){const n=e[Pd]||null;if(!n&&!0===t)throw new Error(`Type ${ie(e)} does not have '\u0275mod' property.`);return n}(t);this._bootstrapComponents=function Yt(e){return e instanceof Function?e():e}(r.bootstrap),this._r3Injector=qh(t,n,[{provide:Sr,useValue:this},{provide:an,useValue:this.componentFactoryResolver}],ie(t),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(t)}get injector(){return this._r3Injector}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class mc extends BI{constructor(t){super(),this.moduleType=t}create(t){return new nm(this.moduleType,t)}}class HI extends Sr{constructor(t,n,r){super(),this.componentFactoryResolver=new gp(this),this.instance=null;const i=new Oh([...t,{provide:Sr,useValue:this},{provide:an,useValue:this.componentFactoryResolver}],n||Fo(),r,new Set(["environment"]));this.injector=i,i.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}}let $I=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n.id)){const r=xh(0,n.type),i=r.length>0?function rm(e,t,n=null){return new HI(e,t,n).injector}([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n.id,i)}return this.cachedInjectors.get(n.id)}ngOnDestroy(){try{for(const n of this.cachedInjectors.values())null!==n&&n.destroy()}finally{this.cachedInjectors.clear()}}}return e.\u0275prov=P({token:e,providedIn:"environment",factory:()=>new e(D(Sn))}),e})();function ls(e){e.getStandaloneInjector=t=>t.get($I).getOrCreateStandaloneInjector(e)}function um(e,t,n,r,i,o){const s=t+n;return He(e,s,i)?function Ft(e,t,n){return e[t]=n}(e,s+1,o?r.call(o,i):r(i)):function _i(e,t){const n=e[t];return n===H?void 0:n}(e,s+1)}function vc(e,t){const n=Y();let r;const i=e+le;n.firstCreatePass?(r=function l0(e,t){if(t)for(let n=t.length-1;n>=0;n--){const r=t[n];if(e===r.name)return r}}(t,n.pipeRegistry),n.data[i]=r,r.onDestroy&&(n.destroyHooks??(n.destroyHooks=[])).push(i,r.onDestroy)):r=n.data[i];const o=r.factory||(r.factory=_n(r.type)),s=ht(E);try{const a=Do(!1),l=o();return Do(a),function Wb(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}(n,_(),i,l),l}finally{ht(s)}}function _c(e,t,n){const r=e+le,i=_(),o=function qn(e,t){return e[t]}(i,r);return function Di(e,t){return e[I].data[t].pure}(i,r)?um(i,function Ge(){const e=j.lFrame;let t=e.bindingRootIndex;return-1===t&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}(),t,o.transform,n,o):o.transform(n)}function Dc(e){return t=>{setTimeout(e,void 0,t)}}const ue=class h0 extends Re{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,n,r){let i=t,o=n||(()=>null),s=r;if(t&&"object"==typeof t){const l=t;i=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=Dc(o),i&&(i=Dc(i)),s&&(s=Dc(s)));const a=super.subscribe({next:i,error:o,complete:s});return t instanceof Ie&&t.add(a),a}};function p0(){return this._results[Symbol.iterator]()}class wc{get changes(){return this._changes||(this._changes=new ue)}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const n=wc.prototype;n[Symbol.iterator]||(n[Symbol.iterator]=p0)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){const r=this;r.dirty=!1;const i=function gt(e){return e.flat(Number.POSITIVE_INFINITY)}(t);(this._changesDetected=!function ww(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r{class e{}return e.__NG_ELEMENT_ID__=y0,e})();const g0=Bt,m0=class extends g0{constructor(t,n,r){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=r}createEmbeddedView(t,n){const r=this._declarationTContainer.tView,i=Ho(this._declarationLView,r,t,16,null,r.declTNode,null,null,null,null,n||null);i[zr]=this._declarationLView[this._declarationTContainer.index];const s=this._declarationLView[kt];return null!==s&&(i[kt]=s.createEmbeddedView(r)),Bl(r,i,t),new ui(i)}};function y0(){return cs(Pe(),_())}function cs(e,t){return 4&e.type?new m0(t,e,ar(e,t)):null}let yt=(()=>{class e{}return e.__NG_ELEMENT_ID__=v0,e})();function v0(){return ym(Pe(),_())}const _0=yt,gm=class extends _0{constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return ar(this._hostTNode,this._hostLView)}get injector(){return new Kn(this._hostTNode,this._hostLView)}get parentInjector(){const t=za(this._hostTNode,this._hostLView);if(yf(t)){const n=_o(t,this._hostLView),r=vo(t);return new Kn(n[I].data[r+8],n)}return new Kn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=mm(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-ze}createEmbeddedView(t,n,r){let i,o;"number"==typeof r?i=r:null!=r&&(i=r.index,o=r.injector);const s=t.createEmbeddedView(n||{},o);return this.insert(s,i),s}createComponent(t,n,r,i,o){const s=t&&!function Kr(e){return"function"==typeof e}(t);let a;if(s)a=n;else{const d=n||{};a=d.index,r=d.injector,i=d.projectableNodes,o=d.environmentInjector||d.ngModuleRef}const l=s?t:new di(te(t)),c=r||this.parentInjector;if(!o&&null==l.ngModule){const f=(s?c:this.parentInjector).get(Sn,null);f&&(o=f)}const u=l.create(c,i,void 0,o);return this.insert(u.hostView,a),u}insert(t,n){const r=t._lView,i=r[I];if(function UD(e){return wt(e[he])}(r)){const u=this.indexOf(t);if(-1!==u)this.detach(u);else{const d=r[he],f=new gm(d,d[Ve],d[he]);f.detach(f.indexOf(t))}}const o=this._adjustIndex(n),s=this._lContainer;!function cC(e,t,n,r){const i=ze+r,o=n.length;r>0&&(n[i-1][Dt]=t),r0)r.push(s[a/2]);else{const c=o[a+1],u=t[-l];for(let d=ze;d{class e{constructor(n){this.appInits=n,this.resolve=ds,this.reject=ds,this.initialized=!1,this.done=!1,this.donePromise=new Promise((r,i)=>{this.resolve=r,this.reject=i})}runInitializers(){if(this.initialized)return;const n=[],r=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let i=0;i{o.subscribe({complete:a,error:l})});n.push(s)}}Promise.all(n).then(()=>{r()}).catch(i=>{this.reject(i)}),0===n.length&&r(),this.initialized=!0}}return e.\u0275fac=function(n){return new(n||e)(D(zm,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const Ci=new A("AppId",{providedIn:"root",factory:function Gm(){return`${kc()}${kc()}${kc()}`}});function kc(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const Zm=new A("Platform Initializer"),Ei=new A("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),W0=new A("AnimationModuleType"),Kt=new A("LocaleId",{providedIn:"root",factory:()=>Fe(Kt,V.Optional|V.SkipSelf)||function q0(){return typeof $localize<"u"&&$localize.locale||br}()}),J0=(()=>Promise.resolve(0))();function Oc(e){typeof Zone>"u"?J0.then(()=>{e&&e.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",e)}class oe{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ue(!1),this.onMicrotaskEmpty=new ue(!1),this.onStable=new ue(!1),this.onError=new ue(!1),typeof Zone>"u")throw new T(908,!1);Zone.assertZonePatched();const i=this;i._nesting=0,i._outer=i._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(i._inner=i._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(i._inner=i._inner.fork(Zone.longStackTraceZoneSpec)),i.shouldCoalesceEventChangeDetection=!r&&n,i.shouldCoalesceRunChangeDetection=r,i.lastRequestAnimationFrameId=-1,i.nativeRequestAnimationFrame=function eM(){let e=ae.requestAnimationFrame,t=ae.cancelAnimationFrame;if(typeof Zone<"u"&&e&&t){const n=e[Zone.__symbol__("OriginalDelegate")];n&&(e=n);const r=t[Zone.__symbol__("OriginalDelegate")];r&&(t=r)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:t}}().nativeRequestAnimationFrame,function rM(e){const t=()=>{!function nM(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(ae,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,Nc(e),e.isCheckStableRunning=!0,Pc(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),Nc(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,r,i,o,s,a)=>{try{return Ym(e),n.invokeTask(i,o,s,a)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===o.type||e.shouldCoalesceRunChangeDetection)&&t(),Xm(e)}},onInvoke:(n,r,i,o,s,a,l)=>{try{return Ym(e),n.invoke(i,o,s,a,l)}finally{e.shouldCoalesceRunChangeDetection&&t(),Xm(e)}},onHasTask:(n,r,i,o)=>{n.hasTask(i,o),r===i&&("microTask"==o.change?(e._hasPendingMicrotasks=o.microTask,Nc(e),Pc(e)):"macroTask"==o.change&&(e.hasPendingMacrotasks=o.macroTask))},onHandleError:(n,r,i,o)=>(n.handleError(i,o),e.runOutsideAngular(()=>e.onError.emit(o)),!1)})}(i)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!oe.isInAngularZone())throw new T(909,!1)}static assertNotInAngularZone(){if(oe.isInAngularZone())throw new T(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,i){const o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+i,t,tM,ds,ds);try{return o.runTask(s,n,r)}finally{o.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}}const tM={};function Pc(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Nc(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function Ym(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Xm(e){e._nesting--,Pc(e)}class iM{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new ue,this.onMicrotaskEmpty=new ue,this.onStable=new ue,this.onError=new ue}run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,i){return t.apply(n,r)}}const Km=new A(""),hs=new A("");let Vc,Fc=(()=>{class e{constructor(n,r,i){this._ngZone=n,this.registry=r,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,Vc||(function oM(e){Vc=e}(i),i.addToWindow(r)),this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{oe.assertNotInAngularZone(),Oc(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())Oc(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb(this._didWork)}this._didWork=!1});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(r=>!r.updateCb||!r.updateCb(n)||(clearTimeout(r.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,r,i){let o=-1;r&&r>0&&(o=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==o),n(this._didWork,this.getPendingTasks())},r)),this._callbacks.push({doneCb:n,timeoutId:o,updateCb:i})}whenStable(n,r,i){if(i&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,r,i),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(n){this.registry.registerApplication(n,this)}unregisterApplication(n){this.registry.unregisterApplication(n)}findProviders(n,r,i){return[]}}return e.\u0275fac=function(n){return new(n||e)(D(oe),D(Lc),D(hs))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})(),Lc=(()=>{class e{constructor(){this._applications=new Map}registerApplication(n,r){this._applications.set(n,r)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,r=!0){return Vc?.findTestabilityInTree(this,n,r)??null}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();const Qt=!1;let un=null;const Qm=new A("AllowMultipleToken"),Bc=new A("PlatformDestroyListeners"),sM=new A("appBootstrapListener");function ey(e,t,n=[]){const r=`Platform: ${t}`,i=new A(r);return(o=[])=>{let s=jc();if(!s||s.injector.get(Qm,!1)){const a=[...n,...o,{provide:i,useValue:!0}];e?e(a):function cM(e){if(un&&!un.get(Qm,!1))throw new T(400,!1);un=e;const t=e.get(ny);(function Jm(e){const t=e.get(Zm,null);t&&t.forEach(n=>n())})(e)}(function ty(e=[],t){return bt.create({name:t,providers:[{provide:Ml,useValue:"platform"},{provide:Bc,useValue:new Set([()=>un=null])},...e]})}(a,r))}return function dM(e){const t=jc();if(!t)throw new T(401,!1);return t}()}}function jc(){return un?.get(ny)??null}let ny=(()=>{class e{constructor(n){this._injector=n,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(n,r){const i=function iy(e,t){let n;return n="noop"===e?new iM:("zone.js"===e?void 0:e)||new oe(t),n}(r?.ngZone,function ry(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!e||!e.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!e||!e.ngZoneRunCoalescing)||!1}}(r)),o=[{provide:oe,useValue:i}];return i.run(()=>{const s=bt.create({providers:o,parent:this.injector,name:n.moduleType.name}),a=n.create(s),l=a.injector.get(lr,null);if(!l)throw new T(402,!1);return i.runOutsideAngular(()=>{const c=i.onError.subscribe({next:u=>{l.handleError(u)}});a.onDestroy(()=>{ps(this._modules,a),c.unsubscribe()})}),function oy(e,t,n){try{const r=n();return ec(r)?r.catch(i=>{throw t.runOutsideAngular(()=>e.handleError(i)),i}):r}catch(r){throw t.runOutsideAngular(()=>e.handleError(r)),r}}(l,i,()=>{const c=a.injector.get(fs);return c.runInitializers(),c.donePromise.then(()=>(function Rg(e){ft(e,"Expected localeId to be defined"),"string"==typeof e&&(Ag=e.toLowerCase().replace(/_/g,"-"))}(a.injector.get(Kt,br)||br),this._moduleDoBootstrap(a),a))})})}bootstrapModule(n,r=[]){const i=sy({},r);return function aM(e,t,n){const r=new mc(n);return Promise.resolve(r)}(0,0,n).then(o=>this.bootstrapModuleFactory(o,i))}_moduleDoBootstrap(n){const r=n.injector.get(bi);if(n._bootstrapComponents.length>0)n._bootstrapComponents.forEach(i=>r.bootstrap(i));else{if(!n.instance.ngDoBootstrap)throw new T(-403,!1);n.instance.ngDoBootstrap(r)}this._modules.push(n)}onDestroy(n){this._destroyListeners.push(n)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new T(404,!1);this._modules.slice().forEach(r=>r.destroy()),this._destroyListeners.forEach(r=>r());const n=this._injector.get(Bc,null);n&&(n.forEach(r=>r()),n.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return e.\u0275fac=function(n){return new(n||e)(D(bt))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();function sy(e,t){return Array.isArray(t)?t.reduce(sy,e):{...e,...t}}let bi=(()=>{class e{get destroyed(){return this._destroyed}get injector(){return this._injector}constructor(n,r,i){this._zone=n,this._injector=r,this._exceptionHandler=i,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const o=new fe(a=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{a.next(this._stable),a.complete()})}),s=new fe(a=>{let l;this._zone.runOutsideAngular(()=>{l=this._zone.onStable.subscribe(()=>{oe.assertNotInAngularZone(),Oc(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,a.next(!0))})})});const c=this._zone.onUnstable.subscribe(()=>{oe.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{a.next(!1)}))});return()=>{l.unsubscribe(),c.unsubscribe()}});this.isStable=pa(o,s.pipe(Id()))}bootstrap(n,r){const i=n instanceof Nh;if(!this._injector.get(fs).done){!i&&function $r(e){const t=te(e)||Le(e)||et(e);return null!==t&&t.standalone}(n);throw new T(405,Qt)}let s;s=i?n:this._injector.get(an).resolveComponentFactory(n),this.componentTypes.push(s.componentType);const a=function lM(e){return e.isBoundToModule}(s)?void 0:this._injector.get(Sr),c=s.create(bt.NULL,[],r||s.selector,a),u=c.location.nativeElement,d=c.injector.get(Km,null);return d?.registerApplication(u),c.onDestroy(()=>{this.detachView(c.hostView),ps(this.components,c),d?.unregisterApplication(u)}),this._loadComponent(c),c}tick(){if(this._runningTick)throw new T(101,!1);try{this._runningTick=!0;for(let n of this._views)n.detectChanges()}catch(n){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(n))}finally{this._runningTick=!1}}attachView(n){const r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){const r=n;ps(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);const r=this._injector.get(sM,[]);r.push(...this._bootstrapListeners),r.forEach(i=>i(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>ps(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new T(406,!1);const n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return e.\u0275fac=function(n){return new(n||e)(D(oe),D(Sn),D(lr))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();function ps(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}let gs=(()=>{class e{}return e.__NG_ELEMENT_ID__=hM,e})();function hM(e){return function pM(e,t,n){if(Zr(e)&&!n){const r=ct(e.index,t);return new ui(r,r)}return 47&e.type?new ui(t[Be],t):null}(Pe(),_(),16==(16&e))}const MM=ey(null,"core",[]);let TM=(()=>{class e{constructor(n){}}return e.\u0275fac=function(n){return new(n||e)(D(bi))},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})(),Gc=null;function kn(){return Gc}class RM{}const ge=new A("DocumentToken");let Zc=(()=>{class e{historyGo(n){throw new Error("Not implemented")}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:function(){return function kM(){return D(yy)}()},providedIn:"platform"}),e})(),yy=(()=>{class e extends Zc{constructor(n){super(),this._doc=n,this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return kn().getBaseHref(this._doc)}onPopState(n){const r=kn().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",n,!1),()=>r.removeEventListener("popstate",n)}onHashChange(n){const r=kn().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",n,!1),()=>r.removeEventListener("hashchange",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,r,i){vy()?this._history.pushState(n,r,i):this._location.hash=i}replaceState(n,r,i){vy()?this._history.replaceState(n,r,i):this._location.hash=i}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:function(){return function OM(){return new yy(D(ge))}()},providedIn:"platform"}),e})();function vy(){return!!window.history.pushState}function _y(e,t){if(0==e.length)return t;if(0==t.length)return e;let n=0;return e.endsWith("/")&&n++,t.startsWith("/")&&n++,2==n?e+t.substring(1):1==n?e+t:e+"/"+t}function Dy(e){const t=e.match(/#|\?|$/),n=t&&t.index||e.length;return e.slice(0,n-("/"===e[n-1]?1:0))+e.slice(n)}function On(e){return e&&"?"!==e[0]?"?"+e:e}let Wc=(()=>{class e{historyGo(n){throw new Error("Not implemented")}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:function(){return Fe(PM)},providedIn:"root"}),e})();const wy=new A("appBaseHref");let PM=(()=>{class e extends Wc{constructor(n,r){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??Fe(ge).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return _y(this._baseHref,n)}path(n=!1){const r=this._platformLocation.pathname+On(this._platformLocation.search),i=this._platformLocation.hash;return i&&n?`${r}${i}`:r}pushState(n,r,i,o){const s=this.prepareExternalUrl(i+On(o));this._platformLocation.pushState(n,r,s)}replaceState(n,r,i,o){const s=this.prepareExternalUrl(i+On(o));this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}}return e.\u0275fac=function(n){return new(n||e)(D(Zc),D(wy,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),Cy=(()=>{class e{constructor(n){this._subject=new ue,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;const r=this._locationStrategy.getBaseHref();this._basePath=function LM(e){if(new RegExp("^(https?:)?//").test(e)){const[,n]=e.split(/\/\/[^\/]+/);return n}return e}(Dy(Ey(r))),this._locationStrategy.onPopState(i=>{this._subject.emit({url:this.path(!0),pop:!0,state:i.state,type:i.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+On(r))}normalize(n){return e.stripTrailingSlash(function FM(e,t){if(!e||!t.startsWith(e))return t;const n=t.substring(e.length);return""===n||["/",";","?","#"].includes(n[0])?n:t}(this._basePath,Ey(n)))}prepareExternalUrl(n){return n&&"/"!==n[0]&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r="",i=null){this._locationStrategy.pushState(i,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+On(r)),i)}replaceState(n,r="",i=null){this._locationStrategy.replaceState(i,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+On(r)),i)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)})),()=>{const r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(i=>i(n,r))}subscribe(n,r,i){return this._subject.subscribe({next:n,error:r,complete:i})}}return e.normalizeQueryParams=On,e.joinWithSlash=_y,e.stripTrailingSlash=Dy,e.\u0275fac=function(n){return new(n||e)(D(Wc))},e.\u0275prov=P({token:e,factory:function(){return function NM(){return new Cy(D(Wc))}()},providedIn:"root"}),e})();function Ey(e){return e.replace(/\/index.html$/,"")}function ky(e,t){t=encodeURIComponent(t);for(const n of e.split(";")){const r=n.indexOf("="),[i,o]=-1==r?[n,""]:[n.slice(0,r),n.slice(r+1)];if(i.trim()===t)return decodeURIComponent(o)}return null}let Ly=(()=>{class e{constructor(n,r){this._viewContainer=n,this._context=new ST,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=r}set ngIf(n){this._context.$implicit=this._context.ngIf=n,this._updateView()}set ngIfThen(n){Vy("ngIfThen",n),this._thenTemplateRef=n,this._thenViewRef=null,this._updateView()}set ngIfElse(n){Vy("ngIfElse",n),this._elseTemplateRef=n,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(n,r){return!0}}return e.\u0275fac=function(n){return new(n||e)(E(yt),E(Bt))},e.\u0275dir=ke({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),e})();class ST{constructor(){this.$implicit=null,this.ngIf=null}}function Vy(e,t){if(t&&!t.createEmbeddedView)throw new Error(`${e} must be a TemplateRef, but received '${ie(t)}'.`)}class TT{createSubscription(t,n){return t.subscribe({next:n,error:r=>{throw r}})}dispose(t){t.unsubscribe()}}class xT{createSubscription(t,n){return t.then(n,r=>{throw r})}dispose(t){}}const AT=new xT,RT=new TT;let jy=(()=>{class e{constructor(n){this._latestValue=null,this._subscription=null,this._obj=null,this._strategy=null,this._ref=n}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(n){return this._obj?n!==this._obj?(this._dispose(),this.transform(n)):this._latestValue:(n&&this._subscribe(n),this._latestValue)}_subscribe(n){this._obj=n,this._strategy=this._selectStrategy(n),this._subscription=this._strategy.createSubscription(n,r=>this._updateLatestValue(n,r))}_selectStrategy(n){if(ec(n))return AT;if(Op(n))return RT;throw function xt(e,t){return new T(2100,!1)}()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(n,r){n===this._obj&&(this._latestValue=r,this._ref.markForCheck())}}return e.\u0275fac=function(n){return new(n||e)(E(gs,16))},e.\u0275pipe=Je({name:"async",type:e,pure:!1,standalone:!0}),e})(),lu=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})();const $y="browser",YT="server";function Ts(e){return e===$y}function xs(e){return e===YT}class zy{}class Sx extends RM{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class du extends Sx{static makeCurrent(){!function AM(e){Gc||(Gc=e)}(new du)}onAndCancel(t,n,r){return t.addEventListener(n,r,!1),()=>{t.removeEventListener(n,r,!1)}}dispatchEvent(t,n){t.dispatchEvent(n)}remove(t){t.parentNode&&t.parentNode.removeChild(t)}createElement(t,n){return(n=n||this.getDefaultDocument()).createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,n){return"window"===n?window:"document"===n?t:"body"===n?t.body:null}getBaseHref(t){const n=function Ix(){return xi=xi||document.querySelector("base"),xi?xi.getAttribute("href"):null}();return null==n?null:function Mx(e){ks=ks||document.createElement("a"),ks.setAttribute("href",e);const t=ks.pathname;return"/"===t.charAt(0)?t:`/${t}`}(n)}resetBaseElement(){xi=null}getUserAgent(){return window.navigator.userAgent}getCookie(t){return ky(document.cookie,t)}}let ks,xi=null;const Yy=new A("TRANSITION_ID"),xx=[{provide:zm,useFactory:function Tx(e,t,n){return()=>{n.get(fs).donePromise.then(()=>{const r=kn(),i=t.querySelectorAll(`style[ng-transition="${e}"]`);for(let o=0;o{class e{build(){return new XMLHttpRequest}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const Os=new A("EventManagerPlugins");let Ps=(()=>{class e{constructor(n,r){this._zone=r,this._eventNameToPlugin=new Map,n.forEach(i=>{i.manager=this}),this._plugins=n.slice().reverse()}addEventListener(n,r,i){return this._findPluginFor(r).addEventListener(n,r,i)}addGlobalEventListener(n,r,i){return this._findPluginFor(r).addGlobalEventListener(n,r,i)}getZone(){return this._zone}_findPluginFor(n){const r=this._eventNameToPlugin.get(n);if(r)return r;const i=this._plugins;for(let o=0;o{class e{constructor(){this.usageCount=new Map}addStyles(n){for(const r of n)1===this.changeUsageCount(r,1)&&this.onStyleAdded(r)}removeStyles(n){for(const r of n)0===this.changeUsageCount(r,-1)&&this.onStyleRemoved(r)}onStyleRemoved(n){}onStyleAdded(n){}getAllStyles(){return this.usageCount.keys()}changeUsageCount(n,r){const i=this.usageCount;let o=i.get(n)??0;return o+=r,o>0?i.set(n,o):i.delete(n),o}ngOnDestroy(){for(const n of this.getAllStyles())this.onStyleRemoved(n);this.usageCount.clear()}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})(),Ai=(()=>{class e extends Ky{constructor(n){super(),this.doc=n,this.styleRef=new Map,this.hostNodes=new Set,this.resetHostNodes()}onStyleAdded(n){for(const r of this.hostNodes)this.addStyleToHost(r,n)}onStyleRemoved(n){const r=this.styleRef;r.get(n)?.forEach(o=>o.remove()),r.delete(n)}ngOnDestroy(){super.ngOnDestroy(),this.styleRef.clear(),this.resetHostNodes()}addHost(n){this.hostNodes.add(n);for(const r of this.getAllStyles())this.addStyleToHost(n,r)}removeHost(n){this.hostNodes.delete(n)}addStyleToHost(n,r){const i=this.doc.createElement("style");i.textContent=r,n.appendChild(i);const o=this.styleRef.get(r);o?o.push(i):this.styleRef.set(r,[i])}resetHostNodes(){const n=this.hostNodes;n.clear(),n.add(this.doc.head)}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const fu={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},hu=/%COMP%/g,ev=new A("RemoveStylesOnCompDestory",{providedIn:"root",factory:()=>!1});function tv(e,t){return t.flat(100).map(n=>n.replace(hu,e))}function nv(e){return t=>{if("__ngUnwrap__"===t)return e;!1===e(t)&&(t.preventDefault(),t.returnValue=!1)}}let pu=(()=>{class e{constructor(n,r,i,o){this.eventManager=n,this.sharedStylesHost=r,this.appId=i,this.removeStylesOnCompDestory=o,this.rendererByCompId=new Map,this.defaultRenderer=new gu(n)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;const i=this.getOrCreateRenderer(n,r);return i instanceof ov?i.applyToHost(n):i instanceof mu&&i.applyStyles(),i}getOrCreateRenderer(n,r){const i=this.rendererByCompId;let o=i.get(r.id);if(!o){const s=this.eventManager,a=this.sharedStylesHost,l=this.removeStylesOnCompDestory;switch(r.encapsulation){case Rt.Emulated:o=new ov(s,a,r,this.appId,l);break;case Rt.ShadowDom:return new Vx(s,a,n,r);default:o=new mu(s,a,r,l)}o.onDestroy=()=>i.delete(r.id),i.set(r.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}begin(){}end(){}}return e.\u0275fac=function(n){return new(n||e)(D(Ps),D(Ai),D(Ci),D(ev))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();class gu{constructor(t){this.eventManager=t,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(t,n){return n?document.createElementNS(fu[n]||n,t):document.createElement(t)}createComment(t){return document.createComment(t)}createText(t){return document.createTextNode(t)}appendChild(t,n){(iv(t)?t.content:t).appendChild(n)}insertBefore(t,n,r){t&&(iv(t)?t.content:t).insertBefore(n,r)}removeChild(t,n){t&&t.removeChild(n)}selectRootElement(t,n){let r="string"==typeof t?document.querySelector(t):t;if(!r)throw new Error(`The selector "${t}" did not match any elements`);return n||(r.textContent=""),r}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,n,r,i){if(i){n=i+":"+n;const o=fu[i];o?t.setAttributeNS(o,n,r):t.setAttribute(n,r)}else t.setAttribute(n,r)}removeAttribute(t,n,r){if(r){const i=fu[r];i?t.removeAttributeNS(i,n):t.removeAttribute(`${r}:${n}`)}else t.removeAttribute(n)}addClass(t,n){t.classList.add(n)}removeClass(t,n){t.classList.remove(n)}setStyle(t,n,r,i){i&(tt.DashCase|tt.Important)?t.style.setProperty(n,r,i&tt.Important?"important":""):t.style[n]=r}removeStyle(t,n,r){r&tt.DashCase?t.style.removeProperty(n):t.style[n]=""}setProperty(t,n,r){t[n]=r}setValue(t,n){t.nodeValue=n}listen(t,n,r){return"string"==typeof t?this.eventManager.addGlobalEventListener(t,n,nv(r)):this.eventManager.addEventListener(t,n,nv(r))}}function iv(e){return"TEMPLATE"===e.tagName&&void 0!==e.content}class Vx extends gu{constructor(t,n,r,i){super(t),this.sharedStylesHost=n,this.hostEl=r,this.shadowRoot=r.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const o=tv(i.id,i.styles);for(const s of o){const a=document.createElement("style");a.textContent=s,this.shadowRoot.appendChild(a)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}appendChild(t,n){return super.appendChild(this.nodeOrShadowRoot(t),n)}insertBefore(t,n,r){return super.insertBefore(this.nodeOrShadowRoot(t),n,r)}removeChild(t,n){return super.removeChild(this.nodeOrShadowRoot(t),n)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class mu extends gu{constructor(t,n,r,i,o=r.id){super(t),this.sharedStylesHost=n,this.removeStylesOnCompDestory=i,this.rendererUsageCount=0,this.styles=tv(o,r.styles)}applyStyles(){this.sharedStylesHost.addStyles(this.styles),this.rendererUsageCount++}destroy(){this.removeStylesOnCompDestory&&(this.sharedStylesHost.removeStyles(this.styles),this.rendererUsageCount--,0===this.rendererUsageCount&&this.onDestroy?.())}}class ov extends mu{constructor(t,n,r,i,o){const s=i+"-"+r.id;super(t,n,r,o,s),this.contentAttr=function Nx(e){return"_ngcontent-%COMP%".replace(hu,e)}(s),this.hostAttr=function Fx(e){return"_nghost-%COMP%".replace(hu,e)}(s)}applyToHost(t){this.applyStyles(),this.setAttribute(t,this.hostAttr,"")}createElement(t,n){const r=super.createElement(t,n);return super.setAttribute(r,this.contentAttr,""),r}}let Bx=(()=>{class e extends Xy{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,i){return n.addEventListener(r,i,!1),()=>this.removeEventListener(n,r,i)}removeEventListener(n,r,i){return n.removeEventListener(r,i)}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const sv=["alt","control","meta","shift"],jx={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Hx={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};let $x=(()=>{class e extends Xy{constructor(n){super(n)}supports(n){return null!=e.parseEventName(n)}addEventListener(n,r,i){const o=e.parseEventName(r),s=e.eventCallback(o.fullKey,i,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>kn().onAndCancel(n,o.domEventName,s))}static parseEventName(n){const r=n.toLowerCase().split("."),i=r.shift();if(0===r.length||"keydown"!==i&&"keyup"!==i)return null;const o=e._normalizeKey(r.pop());let s="",a=r.indexOf("code");if(a>-1&&(r.splice(a,1),s="code."),sv.forEach(c=>{const u=r.indexOf(c);u>-1&&(r.splice(u,1),s+=c+".")}),s+=o,0!=r.length||0===o.length)return null;const l={};return l.domEventName=i,l.fullKey=s,l}static matchEventFullKeyCode(n,r){let i=jx[n.key]||n.key,o="";return r.indexOf("code.")>-1&&(i=n.code,o="code."),!(null==i||!i)&&(i=i.toLowerCase()," "===i?i="space":"."===i&&(i="dot"),sv.forEach(s=>{s!==i&&(0,Hx[s])(n)&&(o+=s+".")}),o+=i,o===r)}static eventCallback(n,r,i){return o=>{e.matchEventFullKeyCode(o,n)&&i.runGuarded(()=>r(o))}}static _normalizeKey(n){return"esc"===n?"escape":n}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const lv=[{provide:Ei,useValue:$y},{provide:Zm,useValue:function Ux(){du.makeCurrent()},multi:!0},{provide:ge,useFactory:function Gx(){return function CC(e){vl=e}(document),document},deps:[]}],Zx=ey(MM,"browser",lv),cv=new A(""),uv=[{provide:hs,useClass:class Ax{addToWindow(t){ae.getAngularTestability=(r,i=!0)=>{const o=t.findTestabilityInTree(r,i);if(null==o)throw new Error("Could not find testability for element.");return o},ae.getAllAngularTestabilities=()=>t.getAllTestabilities(),ae.getAllAngularRootElements=()=>t.getAllRootElements(),ae.frameworkStabilizers||(ae.frameworkStabilizers=[]),ae.frameworkStabilizers.push(r=>{const i=ae.getAllAngularTestabilities();let o=i.length,s=!1;const a=function(l){s=s||l,o--,0==o&&r(s)};i.forEach(function(l){l.whenStable(a)})})}findTestabilityInTree(t,n,r){return null==n?null:t.getTestability(n)??(r?kn().isShadowRoot(n)?this.findTestabilityInTree(t,n.host,!0):this.findTestabilityInTree(t,n.parentElement,!0):null)}},deps:[]},{provide:Km,useClass:Fc,deps:[oe,Lc,hs]},{provide:Fc,useClass:Fc,deps:[oe,Lc,hs]}],dv=[{provide:Ml,useValue:"root"},{provide:lr,useFactory:function zx(){return new lr},deps:[]},{provide:Os,useClass:Bx,multi:!0,deps:[ge,oe,Ei]},{provide:Os,useClass:$x,multi:!0,deps:[ge]},{provide:pu,useClass:pu,deps:[Ps,Ai,Ci,ev]},{provide:Lo,useExisting:pu},{provide:Ky,useExisting:Ai},{provide:Ai,useClass:Ai,deps:[ge]},{provide:Ps,useClass:Ps,deps:[Os,oe]},{provide:zy,useClass:Rx,deps:[]},[]];let Wx=(()=>{class e{constructor(n){}static withServerTransition(n){return{ngModule:e,providers:[{provide:Ci,useValue:n.appId},{provide:Yy,useExisting:Ci},xx]}}}return e.\u0275fac=function(n){return new(n||e)(D(cv,12))},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({providers:[...dv,...uv],imports:[lu,TM]}),e})();function _u(...e){return Qi(e,Ki(e))}function Du(e,t){return Ue((n,r)=>{let i=0;n.subscribe(Ne(r,o=>e.call(t,o,i++)&&r.next(o)))})}typeof window<"u"&&window;class Ns{}class Fs{}class en{constructor(t){this.normalizedNames=new Map,this.lazyUpdate=null,t?this.lazyInit="string"==typeof t?()=>{this.headers=new Map,t.split("\n").forEach(n=>{const r=n.indexOf(":");if(r>0){const i=n.slice(0,r),o=i.toLowerCase(),s=n.slice(r+1).trim();this.maybeSetNormalizedName(i,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:()=>{this.headers=new Map,Object.keys(t).forEach(n=>{let r=t[n];const i=n.toLowerCase();"string"==typeof r&&(r=[r]),r.length>0&&(this.headers.set(i,r),this.maybeSetNormalizedName(n,i))})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();const n=this.headers.get(t.toLowerCase());return n&&n.length>0?n[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,n){return this.clone({name:t,value:n,op:"a"})}set(t,n){return this.clone({name:t,value:n,op:"s"})}delete(t,n){return this.clone({name:t,value:n,op:"d"})}maybeSetNormalizedName(t,n){this.normalizedNames.has(n)||this.normalizedNames.set(n,t)}init(){this.lazyInit&&(this.lazyInit instanceof en?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init(),Array.from(t.headers.keys()).forEach(n=>{this.headers.set(n,t.headers.get(n)),this.normalizedNames.set(n,t.normalizedNames.get(n))})}clone(t){const n=new en;return n.lazyInit=this.lazyInit&&this.lazyInit instanceof en?this.lazyInit:this,n.lazyUpdate=(this.lazyUpdate||[]).concat([t]),n}applyUpdate(t){const n=t.name.toLowerCase();switch(t.op){case"a":case"s":let r=t.value;if("string"==typeof r&&(r=[r]),0===r.length)return;this.maybeSetNormalizedName(t.name,n);const i=("a"===t.op?this.headers.get(n):void 0)||[];i.push(...r),this.headers.set(n,i);break;case"d":const o=t.value;if(o){let s=this.headers.get(n);if(!s)return;s=s.filter(a=>-1===o.indexOf(a)),0===s.length?(this.headers.delete(n),this.normalizedNames.delete(n)):this.headers.set(n,s)}else this.headers.delete(n),this.normalizedNames.delete(n)}}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(n=>t(this.normalizedNames.get(n),this.headers.get(n)))}}class nA{encodeKey(t){return pv(t)}encodeValue(t){return pv(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}}const iA=/%(\d[a-f0-9])/gi,oA={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function pv(e){return encodeURIComponent(e).replace(iA,(t,n)=>oA[n]??t)}function Ls(e){return`${e}`}class fn{constructor(t={}){if(this.updates=null,this.cloneFrom=null,this.encoder=t.encoder||new nA,t.fromString){if(t.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function rA(e,t){const n=new Map;return e.length>0&&e.replace(/^\?/,"").split("&").forEach(i=>{const o=i.indexOf("="),[s,a]=-1==o?[t.decodeKey(i),""]:[t.decodeKey(i.slice(0,o)),t.decodeValue(i.slice(o+1))],l=n.get(s)||[];l.push(a),n.set(s,l)}),n}(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(n=>{const r=t.fromObject[n],i=Array.isArray(r)?r.map(Ls):[Ls(r)];this.map.set(n,i)})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();const n=this.map.get(t);return n?n[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,n){return this.clone({param:t,value:n,op:"a"})}appendAll(t){const n=[];return Object.keys(t).forEach(r=>{const i=t[r];Array.isArray(i)?i.forEach(o=>{n.push({param:r,value:o,op:"a"})}):n.push({param:r,value:i,op:"a"})}),this.clone(n)}set(t,n){return this.clone({param:t,value:n,op:"s"})}delete(t,n){return this.clone({param:t,value:n,op:"d"})}toString(){return this.init(),this.keys().map(t=>{const n=this.encoder.encodeKey(t);return this.map.get(t).map(r=>n+"="+this.encoder.encodeValue(r)).join("&")}).filter(t=>""!==t).join("&")}clone(t){const n=new fn({encoder:this.encoder});return n.cloneFrom=this.cloneFrom||this,n.updates=(this.updates||[]).concat(t),n}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(t=>this.map.set(t,this.cloneFrom.map.get(t))),this.updates.forEach(t=>{switch(t.op){case"a":case"s":const n=("a"===t.op?this.map.get(t.param):void 0)||[];n.push(Ls(t.value)),this.map.set(t.param,n);break;case"d":if(void 0===t.value){this.map.delete(t.param);break}{let r=this.map.get(t.param)||[];const i=r.indexOf(Ls(t.value));-1!==i&&r.splice(i,1),r.length>0?this.map.set(t.param,r):this.map.delete(t.param)}}}),this.cloneFrom=this.updates=null)}}class sA{constructor(){this.map=new Map}set(t,n){return this.map.set(t,n),this}get(t){return this.map.has(t)||this.map.set(t,t.defaultValue()),this.map.get(t)}delete(t){return this.map.delete(t),this}has(t){return this.map.has(t)}keys(){return this.map.keys()}}function gv(e){return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer}function mv(e){return typeof Blob<"u"&&e instanceof Blob}function yv(e){return typeof FormData<"u"&&e instanceof FormData}class Ri{constructor(t,n,r,i){let o;if(this.url=n,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=t.toUpperCase(),function aA(e){switch(e){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||i?(this.body=void 0!==r?r:null,o=i):o=r,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params)),this.headers||(this.headers=new en),this.context||(this.context=new sA),this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=n;else{const a=n.indexOf("?");this.urlWithParams=n+(-1===a?"?":ad.set(f,t.setHeaders[f]),l)),t.setParams&&(c=Object.keys(t.setParams).reduce((d,f)=>d.set(f,t.setParams[f]),c)),new Ri(n,r,o,{params:c,headers:l,context:u,reportProgress:a,responseType:i,withCredentials:s})}}var be=(()=>((be=be||{})[be.Sent=0]="Sent",be[be.UploadProgress=1]="UploadProgress",be[be.ResponseHeader=2]="ResponseHeader",be[be.DownloadProgress=3]="DownloadProgress",be[be.Response=4]="Response",be[be.User=5]="User",be))();class wu{constructor(t,n=200,r="OK"){this.headers=t.headers||new en,this.status=void 0!==t.status?t.status:n,this.statusText=t.statusText||r,this.url=t.url||null,this.ok=this.status>=200&&this.status<300}}class Cu extends wu{constructor(t={}){super(t),this.type=be.ResponseHeader}clone(t={}){return new Cu({headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class Vs extends wu{constructor(t={}){super(t),this.type=be.Response,this.body=void 0!==t.body?t.body:null}clone(t={}){return new Vs({body:void 0!==t.body?t.body:this.body,headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class vv extends wu{constructor(t){super(t,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${t.url||"(unknown url)"}`:`Http failure response for ${t.url||"(unknown url)"}: ${t.status} ${t.statusText}`,this.error=t.error||null}}function Eu(e,t){return{body:t,headers:e.headers,context:e.context,observe:e.observe,params:e.params,reportProgress:e.reportProgress,responseType:e.responseType,withCredentials:e.withCredentials}}let ki=(()=>{class e{constructor(n){this.handler=n}request(n,r,i={}){let o;if(n instanceof Ri)o=n;else{let l,c;l=i.headers instanceof en?i.headers:new en(i.headers),i.params&&(c=i.params instanceof fn?i.params:new fn({fromObject:i.params})),o=new Ri(n,r,void 0!==i.body?i.body:null,{headers:l,context:i.context,params:c,reportProgress:i.reportProgress,responseType:i.responseType||"json",withCredentials:i.withCredentials})}const s=_u(o).pipe(function tA(e,t){return X(t)?Lr(e,t,1):Lr(e,1)}(l=>this.handler.handle(l)));if(n instanceof Ri||"events"===i.observe)return s;const a=s.pipe(Du(l=>l instanceof Vs));switch(i.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return a.pipe(Me(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return l.body}));case"blob":return a.pipe(Me(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new Error("Response is not a Blob.");return l.body}));case"text":return a.pipe(Me(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new Error("Response is not a string.");return l.body}));default:return a.pipe(Me(l=>l.body))}case"response":return a;default:throw new Error(`Unreachable: unhandled observe type ${i.observe}}`)}}delete(n,r={}){return this.request("DELETE",n,r)}get(n,r={}){return this.request("GET",n,r)}head(n,r={}){return this.request("HEAD",n,r)}jsonp(n,r){return this.request("JSONP",n,{params:(new fn).append(r,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(n,r={}){return this.request("OPTIONS",n,r)}patch(n,r,i={}){return this.request("PATCH",n,Eu(i,r))}post(n,r,i={}){return this.request("POST",n,Eu(i,r))}put(n,r,i={}){return this.request("PUT",n,Eu(i,r))}}return e.\u0275fac=function(n){return new(n||e)(D(Ns))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();function _v(e,t){return t(e)}function cA(e,t){return(n,r)=>t.intercept(n,{handle:i=>e(i,r)})}const dA=new A("HTTP_INTERCEPTORS"),Oi=new A("HTTP_INTERCEPTOR_FNS");function fA(){let e=null;return(t,n)=>(null===e&&(e=(Fe(dA,{optional:!0})??[]).reduceRight(cA,_v)),e(t,n))}let Dv=(()=>{class e extends Ns{constructor(n,r){super(),this.backend=n,this.injector=r,this.chain=null}handle(n){if(null===this.chain){const r=Array.from(new Set(this.injector.get(Oi)));this.chain=r.reduceRight((i,o)=>function uA(e,t,n){return(r,i)=>n.runInContext(()=>t(r,o=>e(o,i)))}(i,o,this.injector),_v)}return this.chain(n,r=>this.backend.handle(r))}}return e.\u0275fac=function(n){return new(n||e)(D(Fs),D(Sn))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const mA=/^\)\]\}',?\n/;let Cv=(()=>{class e{constructor(n){this.xhrFactory=n}handle(n){if("JSONP"===n.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new fe(r=>{const i=this.xhrFactory.build();if(i.open(n.method,n.urlWithParams),n.withCredentials&&(i.withCredentials=!0),n.headers.forEach((h,p)=>i.setRequestHeader(h,p.join(","))),n.headers.has("Accept")||i.setRequestHeader("Accept","application/json, text/plain, */*"),!n.headers.has("Content-Type")){const h=n.detectContentTypeHeader();null!==h&&i.setRequestHeader("Content-Type",h)}if(n.responseType){const h=n.responseType.toLowerCase();i.responseType="json"!==h?h:"text"}const o=n.serializeBody();let s=null;const a=()=>{if(null!==s)return s;const h=i.statusText||"OK",p=new en(i.getAllResponseHeaders()),g=function yA(e){return"responseURL"in e&&e.responseURL?e.responseURL:/^X-Request-URL:/m.test(e.getAllResponseHeaders())?e.getResponseHeader("X-Request-URL"):null}(i)||n.url;return s=new Cu({headers:p,status:i.status,statusText:h,url:g}),s},l=()=>{let{headers:h,status:p,statusText:g,url:y}=a(),v=null;204!==p&&(v=typeof i.response>"u"?i.responseText:i.response),0===p&&(p=v?200:0);let S=p>=200&&p<300;if("json"===n.responseType&&"string"==typeof v){const m=v;v=v.replace(mA,"");try{v=""!==v?JSON.parse(v):null}catch(k){v=m,S&&(S=!1,v={error:k,text:v})}}S?(r.next(new Vs({body:v,headers:h,status:p,statusText:g,url:y||void 0})),r.complete()):r.error(new vv({error:v,headers:h,status:p,statusText:g,url:y||void 0}))},c=h=>{const{url:p}=a(),g=new vv({error:h,status:i.status||0,statusText:i.statusText||"Unknown Error",url:p||void 0});r.error(g)};let u=!1;const d=h=>{u||(r.next(a()),u=!0);let p={type:be.DownloadProgress,loaded:h.loaded};h.lengthComputable&&(p.total=h.total),"text"===n.responseType&&i.responseText&&(p.partialText=i.responseText),r.next(p)},f=h=>{let p={type:be.UploadProgress,loaded:h.loaded};h.lengthComputable&&(p.total=h.total),r.next(p)};return i.addEventListener("load",l),i.addEventListener("error",c),i.addEventListener("timeout",c),i.addEventListener("abort",c),n.reportProgress&&(i.addEventListener("progress",d),null!==o&&i.upload&&i.upload.addEventListener("progress",f)),i.send(o),r.next({type:be.Sent}),()=>{i.removeEventListener("error",c),i.removeEventListener("abort",c),i.removeEventListener("load",l),i.removeEventListener("timeout",c),n.reportProgress&&(i.removeEventListener("progress",d),null!==o&&i.upload&&i.upload.removeEventListener("progress",f)),i.readyState!==i.DONE&&i.abort()}})}}return e.\u0275fac=function(n){return new(n||e)(D(zy))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const bu=new A("XSRF_ENABLED"),Ev=new A("XSRF_COOKIE_NAME",{providedIn:"root",factory:()=>"XSRF-TOKEN"}),bv=new A("XSRF_HEADER_NAME",{providedIn:"root",factory:()=>"X-XSRF-TOKEN"});class Sv{}let DA=(()=>{class e{constructor(n,r,i){this.doc=n,this.platform=r,this.cookieName=i,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const n=this.doc.cookie||"";return n!==this.lastCookieString&&(this.parseCount++,this.lastToken=ky(n,this.cookieName),this.lastCookieString=n),this.lastToken}}return e.\u0275fac=function(n){return new(n||e)(D(ge),D(Ei),D(Ev))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();function wA(e,t){const n=e.url.toLowerCase();if(!Fe(bu)||"GET"===e.method||"HEAD"===e.method||n.startsWith("http://")||n.startsWith("https://"))return t(e);const r=Fe(Sv).getToken(),i=Fe(bv);return null!=r&&!e.headers.has(i)&&(e=e.clone({headers:e.headers.set(i,r)})),t(e)}var _e=(()=>((_e=_e||{})[_e.Interceptors=0]="Interceptors",_e[_e.LegacyInterceptors=1]="LegacyInterceptors",_e[_e.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",_e[_e.NoXsrfProtection=3]="NoXsrfProtection",_e[_e.JsonpSupport=4]="JsonpSupport",_e[_e.RequestsMadeViaParent=5]="RequestsMadeViaParent",_e))();function Tr(e,t){return{\u0275kind:e,\u0275providers:t}}function CA(...e){const t=[ki,Cv,Dv,{provide:Ns,useExisting:Dv},{provide:Fs,useExisting:Cv},{provide:Oi,useValue:wA,multi:!0},{provide:bu,useValue:!0},{provide:Sv,useClass:DA}];for(const n of e)t.push(...n.\u0275providers);return function ZC(e){return{\u0275providers:e}}(t)}const Iv=new A("LEGACY_INTERCEPTOR_FN");let bA=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({providers:[CA(Tr(_e.LegacyInterceptors,[{provide:Iv,useFactory:fA},{provide:Oi,useExisting:Iv,multi:!0}]))]}),e})();const Su={now:()=>(Su.delegate||Date).now(),delegate:void 0};class SA extends Re{constructor(t=1/0,n=1/0,r=Su){super(),this._bufferSize=t,this._windowTime=n,this._timestampProvider=r,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=n===1/0,this._bufferSize=Math.max(1,t),this._windowTime=Math.max(1,n)}next(t){const{isStopped:n,_buffer:r,_infiniteTimeWindow:i,_timestampProvider:o,_windowTime:s}=this;n||(r.push(t),!i&&r.push(o.now()+s)),this._trimBuffer(),super.next(t)}_subscribe(t){this._throwIfClosed(),this._trimBuffer();const n=this._innerSubscribe(t),{_infiniteTimeWindow:r,_buffer:i}=this,o=i.slice();for(let s=0;sclearTimeout(n)},scheduleBeforeRender(e){if(typeof window>"u")return Bs.schedule(e,0);if(typeof window.requestAnimationFrame>"u")return Bs.schedule(e,16);const t=window.requestAnimationFrame(e);return()=>window.cancelAnimationFrame(t)}};let Iu;function NA(e,t,n){let r=n;return function TA(e){return!!e&&e.nodeType===Node.ELEMENT_NODE}(e)&&t.some((i,o)=>!("*"===i||!function AA(e,t){if(!Iu){const n=Element.prototype;Iu=n.matches||n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}return e.nodeType===Node.ELEMENT_NODE&&Iu.call(e,t)}(e,i)||(r=o,0))),r}class LA{constructor(t,n){this.componentFactory=n.get(an).resolveComponentFactory(t)}create(t){return new VA(this.componentFactory,t)}}class VA{constructor(t,n){this.componentFactory=t,this.injector=n,this.eventEmitters=new SA(1),this.events=this.eventEmitters.pipe(function IA(e,t){return Ue((n,r)=>{let i=null,o=0,s=!1;const a=()=>s&&!i&&r.complete();n.subscribe(Ne(r,l=>{i?.unsubscribe();let c=0;const u=o++;Ke(e(l,u)).subscribe(i=Ne(r,d=>r.next(t?t(l,d,u,c++):d),()=>{i=null,a()}))},()=>{s=!0,a()}))})}(r=>pa(...r))),this.componentRef=null,this.viewChangeDetectorRef=null,this.inputChanges=null,this.hasInputChanges=!1,this.implementsOnChanges=!1,this.scheduledChangeDetectionFn=null,this.scheduledDestroyFn=null,this.initialInputValues=new Map,this.unchangedInputs=new Set(this.componentFactory.inputs.map(({propName:r})=>r)),this.ngZone=this.injector.get(oe),this.elementZone=typeof Zone>"u"?null:this.ngZone.run(()=>Zone.current)}connect(t){this.runInZone(()=>{if(null!==this.scheduledDestroyFn)return this.scheduledDestroyFn(),void(this.scheduledDestroyFn=null);null===this.componentRef&&this.initializeComponent(t)})}disconnect(){this.runInZone(()=>{null===this.componentRef||null!==this.scheduledDestroyFn||(this.scheduledDestroyFn=Bs.schedule(()=>{null!==this.componentRef&&(this.componentRef.destroy(),this.componentRef=null,this.viewChangeDetectorRef=null)},10))})}getInputValue(t){return this.runInZone(()=>null===this.componentRef?this.initialInputValues.get(t):this.componentRef.instance[t])}setInputValue(t,n){this.runInZone(()=>{null!==this.componentRef?function RA(e,t){return e===t||e!=e&&t!=t}(n,this.getInputValue(t))&&(void 0!==n||!this.unchangedInputs.has(t))||(this.recordInputChange(t,n),this.unchangedInputs.delete(t),this.hasInputChanges=!0,this.componentRef.instance[t]=n,this.scheduleDetectChanges()):this.initialInputValues.set(t,n)})}initializeComponent(t){const n=bt.create({providers:[],parent:this.injector}),r=function PA(e,t){const n=e.childNodes,r=t.map(()=>[]);let i=-1;t.some((o,s)=>"*"===o&&(i=s,!0));for(let o=0,s=n.length;o{this.initialInputValues.has(t)&&this.setInputValue(t,this.initialInputValues.get(t))}),this.initialInputValues.clear()}initializeOutputs(t){const n=this.componentFactory.outputs.map(({propName:r,templateName:i})=>t.instance[r].pipe(Me(s=>({name:i,value:s}))));this.eventEmitters.next(n)}callNgOnChanges(t){if(!this.implementsOnChanges||null===this.inputChanges)return;const n=this.inputChanges;this.inputChanges=null,t.instance.ngOnChanges(n)}markViewForCheck(t){this.hasInputChanges&&(this.hasInputChanges=!1,t.markForCheck())}scheduleDetectChanges(){this.scheduledChangeDetectionFn||(this.scheduledChangeDetectionFn=Bs.scheduleBeforeRender(()=>{this.scheduledChangeDetectionFn=null,this.detectChanges()}))}recordInputChange(t,n){if(!this.implementsOnChanges)return;null===this.inputChanges&&(this.inputChanges={});const r=this.inputChanges[t];if(r)return void(r.currentValue=n);const i=this.unchangedInputs.has(t),o=i?void 0:this.getInputValue(t);this.inputChanges[t]=new Ud(o,n,i)}detectChanges(){null!==this.componentRef&&(this.callNgOnChanges(this.componentRef),this.markViewForCheck(this.viewChangeDetectorRef),this.componentRef.changeDetectorRef.detectChanges())}runInZone(t){return this.elementZone&&Zone.current!==this.elementZone?this.ngZone.run(t):t()}}class BA extends HTMLElement{constructor(){super(...arguments),this.ngElementEventsSubscription=null}}function xr(e){return null!=e&&"false"!=`${e}`}function Mv(e){return Array.isArray(e)?e:[e]}function Se(e){return null==e?"":"string"==typeof e?e:`${e}px`}const{isArray:UA}=Array;function Tv(e){return Me(t=>function zA(e,t){return UA(t)?e(...t):e(t)}(e,t))}const GA=["addListener","removeListener"],ZA=["addEventListener","removeEventListener"],WA=["on","off"];function js(e,t,n,r){if(X(n)&&(r=n,n=void 0),r)return js(e,t,n).pipe(Tv(r));const[i,o]=function XA(e){return X(e.addEventListener)&&X(e.removeEventListener)}(e)?ZA.map(s=>a=>e[s](t,a,n)):function qA(e){return X(e.addListener)&&X(e.removeListener)}(e)?GA.map(xv(e,t)):function YA(e){return X(e.on)&&X(e.off)}(e)?WA.map(xv(e,t)):[];if(!i&&da(e))return Lr(s=>js(s,t,n))(Ke(e));if(!i)throw new TypeError("Invalid event target");return new fe(s=>{const a=(...l)=>s.next(1o(a)})}function xv(e,t){return n=>r=>e[n](t,r)}class KA extends Ie{constructor(t,n){super()}schedule(t,n=0){return this}}const Hs={setInterval(e,t,...n){const{delegate:r}=Hs;return r?.setInterval?r.setInterval(e,t,...n):setInterval(e,t,...n)},clearInterval(e){const{delegate:t}=Hs;return(t?.clearInterval||clearInterval)(e)},delegate:void 0};class Mu extends KA{constructor(t,n){super(t,n),this.scheduler=t,this.work=n,this.pending=!1}schedule(t,n=0){var r;if(this.closed)return this;this.state=t;const i=this.id,o=this.scheduler;return null!=i&&(this.id=this.recycleAsyncId(o,i,n)),this.pending=!0,this.delay=n,this.id=null!==(r=this.id)&&void 0!==r?r:this.requestAsyncId(o,this.id,n),this}requestAsyncId(t,n,r=0){return Hs.setInterval(t.flush.bind(t,this),r)}recycleAsyncId(t,n,r=0){if(null!=r&&this.delay===r&&!1===this.pending)return n;null!=n&&Hs.clearInterval(n)}execute(t,n){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const r=this._execute(t,n);if(r)return r;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(t,n){let i,r=!1;try{this.work(t)}catch(o){r=!0,i=o||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),i}unsubscribe(){if(!this.closed){const{id:t,scheduler:n}=this,{actions:r}=n;this.work=this.state=this.scheduler=null,this.pending=!1,jn(r,this),null!=t&&(this.id=this.recycleAsyncId(n,t,null)),this.delay=null,super.unsubscribe()}}}const Pi={schedule(e){let t=requestAnimationFrame,n=cancelAnimationFrame;const{delegate:r}=Pi;r&&(t=r.requestAnimationFrame,n=r.cancelAnimationFrame);const i=t(o=>{n=void 0,e(o)});return new Ie(()=>n?.(i))},requestAnimationFrame(...e){const{delegate:t}=Pi;return(t?.requestAnimationFrame||requestAnimationFrame)(...e)},cancelAnimationFrame(...e){const{delegate:t}=Pi;return(t?.cancelAnimationFrame||cancelAnimationFrame)(...e)},delegate:void 0};class Ni{constructor(t,n=Ni.now){this.schedulerActionCtor=t,this.now=n}schedule(t,n=0,r){return new this.schedulerActionCtor(this,t).schedule(r,n)}}Ni.now=Su.now;class Tu extends Ni{constructor(t,n=Ni.now){super(t,n),this.actions=[],this._active=!1}flush(t){const{actions:n}=this;if(this._active)return void n.push(t);let r;this._active=!0;do{if(r=t.execute(t.state,t.delay))break}while(t=n.shift());if(this._active=!1,r){for(;t=n.shift();)t.unsubscribe();throw r}}}const eR=new class JA extends Tu{flush(t){this._active=!0;const n=this._scheduled;this._scheduled=void 0;const{actions:r}=this;let i;t=t||r.shift();do{if(i=t.execute(t.state,t.delay))break}while((t=r[0])&&t.id===n&&r.shift());if(this._active=!1,i){for(;(t=r[0])&&t.id===n&&r.shift();)t.unsubscribe();throw i}}}(class QA extends Mu{constructor(t,n){super(t,n),this.scheduler=t,this.work=n}requestAsyncId(t,n,r=0){return null!==r&&r>0?super.requestAsyncId(t,n,r):(t.actions.push(this),t._scheduled||(t._scheduled=Pi.requestAnimationFrame(()=>t.flush(void 0))))}recycleAsyncId(t,n,r=0){var i;if(null!=r?r>0:this.delay>0)return super.recycleAsyncId(t,n,r);const{actions:o}=t;null!=n&&(null===(i=o[o.length-1])||void 0===i?void 0:i.id)!==n&&(Pi.cancelAnimationFrame(n),t._scheduled=void 0)}});let xu,tR=1;const $s={};function Av(e){return e in $s&&(delete $s[e],!0)}const nR={setImmediate(e){const t=tR++;return $s[t]=!0,xu||(xu=Promise.resolve()),xu.then(()=>Av(t)&&e()),t},clearImmediate(e){Av(e)}},{setImmediate:rR,clearImmediate:iR}=nR,Us={setImmediate(...e){const{delegate:t}=Us;return(t?.setImmediate||rR)(...e)},clearImmediate(e){const{delegate:t}=Us;return(t?.clearImmediate||iR)(e)},delegate:void 0},aR=new class sR extends Tu{flush(t){this._active=!0;const n=this._scheduled;this._scheduled=void 0;const{actions:r}=this;let i;t=t||r.shift();do{if(i=t.execute(t.state,t.delay))break}while((t=r[0])&&t.id===n&&r.shift());if(this._active=!1,i){for(;(t=r[0])&&t.id===n&&r.shift();)t.unsubscribe();throw i}}}(class oR extends Mu{constructor(t,n){super(t,n),this.scheduler=t,this.work=n}requestAsyncId(t,n,r=0){return null!==r&&r>0?super.requestAsyncId(t,n,r):(t.actions.push(this),t._scheduled||(t._scheduled=Us.setImmediate(t.flush.bind(t,void 0))))}recycleAsyncId(t,n,r=0){var i;if(null!=r?r>0:this.delay>0)return super.recycleAsyncId(t,n,r);const{actions:o}=t;null!=n&&(null===(i=o[o.length-1])||void 0===i?void 0:i.id)!==n&&(Us.clearImmediate(n),t._scheduled=void 0)}}),Rv=new Tu(Mu),lR=Rv;function kv(e=0,t,n=lR){let r=-1;return null!=t&&(Cd(t)?n=t:r=t),new fe(i=>{let o=function uR(e){return e instanceof Date&&!isNaN(e)}(e)?+e-n.now():e;o<0&&(o=0);let s=0;return n.schedule(function(){i.closed||(i.next(s++),0<=r?this.schedule(void 0,r):i.complete())},o)})}function Au(e,t=Rv){return function cR(e){return Ue((t,n)=>{let r=!1,i=null,o=null,s=!1;const a=()=>{if(o?.unsubscribe(),o=null,r){r=!1;const c=i;i=null,n.next(c)}s&&n.complete()},l=()=>{o=null,s&&n.complete()};t.subscribe(Ne(n,c=>{r=!0,i=c,o||Ke(e(c)).subscribe(o=Ne(n,a,l))},()=>{s=!0,(!r||!o||o.closed)&&n.complete()}))})}(()=>kv(e,t))}function zs(e){return Ue((t,n)=>{Ke(e).subscribe(Ne(n,()=>n.complete(),qi)),!n.closed&&t.subscribe(n)})}function Ov(...e){return function dR(){return wd(1)}()(Qi(e,Ki(e)))}let Ru;try{Ru=typeof Intl<"u"&&Intl.v8BreakIterator}catch{Ru=!1}let Gs,Pn,Ar=(()=>{class e{constructor(n){this._platformId=n,this.isBrowser=this._platformId?Ts(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!Ru)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}}return e.\u0275fac=function(n){return new(n||e)(D(Ei))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();function Nv(){if(null==Pn){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return Pn=!1,Pn;if("scrollBehavior"in document.documentElement.style)Pn=!0;else{const e=Element.prototype.scrollTo;Pn=!!e&&!/\{\s*\[native code\]\s*\}/.test(e.toString())}}return Pn}function Li(){if("object"!=typeof document||!document)return 0;if(null==Gs){const e=document.createElement("div"),t=e.style;e.dir="rtl",t.width="1px",t.overflow="auto",t.visibility="hidden",t.pointerEvents="none",t.position="absolute";const n=document.createElement("div"),r=n.style;r.width="2px",r.height="1px",e.appendChild(n),document.body.appendChild(e),Gs=0,0===e.scrollLeft&&(e.scrollLeft=1,Gs=0===e.scrollLeft?1:2),e.remove()}return Gs}function Fv(e){return e.composedPath?e.composedPath()[0]:e.target}function Lv(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}const gR=new A("cdk-dir-doc",{providedIn:"root",factory:function mR(){return Fe(ge)}}),yR=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let Vi=(()=>{class e{constructor(n){this.value="ltr",this.change=new ue,n&&(this.value=function vR(e){const t=e?.toLowerCase()||"";return"auto"===t&&typeof navigator<"u"&&navigator?.language?yR.test(navigator.language)?"rtl":"ltr":"rtl"===t?"rtl":"ltr"}((n.body?n.body.dir:null)||(n.documentElement?n.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}}return e.\u0275fac=function(n){return new(n||e)(D(gR,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),Ou=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})();const _R=["contentWrapper"],DR=["*"],wR=new A("VIRTUAL_SCROLL_STRATEGY");let Zs=(()=>{class e{constructor(n,r,i){this._ngZone=n,this._platform=r,this._scrolled=new Re,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=i}register(n){this.scrollContainers.has(n)||this.scrollContainers.set(n,n.elementScrolled().subscribe(()=>this._scrolled.next(n)))}deregister(n){const r=this.scrollContainers.get(n);r&&(r.unsubscribe(),this.scrollContainers.delete(n))}scrolled(n=20){return this._platform.isBrowser?new fe(r=>{this._globalSubscription||this._addGlobalListener();const i=n>0?this._scrolled.pipe(Au(n)).subscribe(r):this._scrolled.subscribe(r);return this._scrolledCount++,()=>{i.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):_u()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((n,r)=>this.deregister(r)),this._scrolled.complete()}ancestorScrolled(n,r){const i=this.getAncestorScrollContainers(n);return this.scrolled(r).pipe(Du(o=>!o||i.indexOf(o)>-1))}getAncestorScrollContainers(n){const r=[];return this.scrollContainers.forEach((i,o)=>{this._scrollableContainsElement(o,n)&&r.push(o)}),r}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(n,r){let i=function $A(e){return e instanceof We?e.nativeElement:e}(r),o=n.getElementRef().nativeElement;do{if(i==o)return!0}while(i=i.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>js(this._getWindow().document,"scroll").subscribe(()=>this._scrolled.next()))}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}}return e.\u0275fac=function(n){return new(n||e)(D(oe),D(Ar),D(ge,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),Vv=(()=>{class e{constructor(n,r,i,o){this.elementRef=n,this.scrollDispatcher=r,this.ngZone=i,this.dir=o,this._destroyed=new Re,this._elementScrolled=new fe(s=>this.ngZone.runOutsideAngular(()=>js(this.elementRef.nativeElement,"scroll").pipe(zs(this._destroyed)).subscribe(s)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(n){const r=this.elementRef.nativeElement,i=this.dir&&"rtl"==this.dir.value;null==n.left&&(n.left=i?n.end:n.start),null==n.right&&(n.right=i?n.start:n.end),null!=n.bottom&&(n.top=r.scrollHeight-r.clientHeight-n.bottom),i&&0!=Li()?(null!=n.left&&(n.right=r.scrollWidth-r.clientWidth-n.left),2==Li()?n.left=n.right:1==Li()&&(n.left=n.right?-n.right:n.right)):null!=n.right&&(n.left=r.scrollWidth-r.clientWidth-n.right),this._applyScrollToOptions(n)}_applyScrollToOptions(n){const r=this.elementRef.nativeElement;Nv()?r.scrollTo(n):(null!=n.top&&(r.scrollTop=n.top),null!=n.left&&(r.scrollLeft=n.left))}measureScrollOffset(n){const r="left",i="right",o=this.elementRef.nativeElement;if("top"==n)return o.scrollTop;if("bottom"==n)return o.scrollHeight-o.clientHeight-o.scrollTop;const s=this.dir&&"rtl"==this.dir.value;return"start"==n?n=s?i:r:"end"==n&&(n=s?r:i),s&&2==Li()?n==r?o.scrollWidth-o.clientWidth-o.scrollLeft:o.scrollLeft:s&&1==Li()?n==r?o.scrollLeft+o.scrollWidth-o.clientWidth:-o.scrollLeft:n==r?o.scrollLeft:o.scrollWidth-o.clientWidth-o.scrollLeft}}return e.\u0275fac=function(n){return new(n||e)(E(We),E(Zs),E(oe),E(Vi,8))},e.\u0275dir=ke({type:e,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0}),e})(),Pu=(()=>{class e{constructor(n,r,i){this._platform=n,this._change=new Re,this._changeListener=o=>{this._change.next(o)},this._document=i,r.runOutsideAngular(()=>{if(n.isBrowser){const o=this._getWindow();o.addEventListener("resize",this._changeListener),o.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){const n=this._getWindow();n.removeEventListener("resize",this._changeListener),n.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const n={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),n}getViewportRect(){const n=this.getViewportScrollPosition(),{width:r,height:i}=this.getViewportSize();return{top:n.top,left:n.left,bottom:n.top+i,right:n.left+r,height:i,width:r}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const n=this._document,r=this._getWindow(),i=n.documentElement,o=i.getBoundingClientRect();return{top:-o.top||n.body.scrollTop||r.scrollY||i.scrollTop||0,left:-o.left||n.body.scrollLeft||r.scrollX||i.scrollLeft||0}}change(n=20){return n>0?this._change.pipe(Au(n)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const n=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:n.innerWidth,height:n.innerHeight}:{width:0,height:0}}}return e.\u0275fac=function(n){return new(n||e)(D(Ar),D(oe),D(ge,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const Bv=new A("VIRTUAL_SCROLLABLE");let bR=(()=>{class e extends Vv{constructor(n,r,i,o){super(n,r,i,o)}measureViewportSize(n){const r=this.elementRef.nativeElement;return"horizontal"===n?r.clientWidth:r.clientHeight}}return e.\u0275fac=function(n){return new(n||e)(E(We),E(Zs),E(oe),E(Vi,8))},e.\u0275dir=ke({type:e,features:[Wo]}),e})();const IR=typeof requestAnimationFrame<"u"?eR:aR;let MR=(()=>{class e extends bR{get orientation(){return this._orientation}set orientation(n){this._orientation!==n&&(this._orientation=n,this._calculateSpacerSize())}get appendOnly(){return this._appendOnly}set appendOnly(n){this._appendOnly=xr(n)}constructor(n,r,i,o,s,a,l,c){super(n,a,i,s),this.elementRef=n,this._changeDetectorRef=r,this._scrollStrategy=o,this.scrollable=c,this._platform=Fe(Ar),this._detachedSubject=new Re,this._renderedRangeSubject=new Re,this._orientation="vertical",this._appendOnly=!1,this.scrolledIndexChange=new fe(u=>this._scrollStrategy.scrolledIndexChange.subscribe(d=>Promise.resolve().then(()=>this.ngZone.run(()=>u.next(d))))),this.renderedRangeStream=this._renderedRangeSubject,this._totalContentSize=0,this._totalContentWidth="",this._totalContentHeight="",this._renderedRange={start:0,end:0},this._dataLength=0,this._viewportSize=0,this._renderedContentOffset=0,this._renderedContentOffsetNeedsRewrite=!1,this._isChangeDetectionPending=!1,this._runAfterChangeDetection=[],this._viewportChanges=Ie.EMPTY,this._viewportChanges=l.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this)}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe(function fR(...e){const t=Ki(e);return Ue((n,r)=>{(t?Ov(e,n,t):Ov(e,n)).subscribe(r)})}(null),Au(0,IR)).subscribe(()=>this._scrollStrategy.onContentScrolled()),this._markChangeDetectionNeeded()})))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),super.ngOnDestroy()}attach(n){this.ngZone.runOutsideAngular(()=>{this._forOf=n,this._forOf.dataStream.pipe(zs(this._detachedSubject)).subscribe(r=>{const i=r.length;i!==this._dataLength&&(this._dataLength=i,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()})})}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(n){return this.getElementRef().nativeElement.getBoundingClientRect()[n]}setTotalContentSize(n){this._totalContentSize!==n&&(this._totalContentSize=n,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(n){(function SR(e,t){return e.start==t.start&&e.end==t.end})(this._renderedRange,n)||(this.appendOnly&&(n={start:0,end:Math.max(this._renderedRange.end,n.end)}),this._renderedRangeSubject.next(this._renderedRange=n),this._markChangeDetectionNeeded(()=>this._scrollStrategy.onContentRendered()))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(n,r="to-start"){n=this.appendOnly&&"to-start"===r?0:n;const o="horizontal"==this.orientation,s=o?"X":"Y";let l=`translate${s}(${Number((o&&this.dir&&"rtl"==this.dir.value?-1:1)*n)}px)`;this._renderedContentOffset=n,"to-end"===r&&(l+=` translate${s}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=l&&(this._renderedContentTransform=l,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(n,r="auto"){const i={behavior:r};"horizontal"===this.orientation?i.start=n:i.top=n,this.scrollable.scrollTo(i)}scrollToIndex(n,r="auto"){this._scrollStrategy.scrollToIndex(n,r)}measureScrollOffset(n){let r;return r=this.scrollable==this?i=>super.measureScrollOffset(i):i=>this.scrollable.measureScrollOffset(i),Math.max(0,r(n??("horizontal"===this.orientation?"start":"top"))-this.measureViewportOffset())}measureViewportOffset(n){let r;const i="left",o="right",s="rtl"==this.dir?.value;r="start"==n?s?o:i:"end"==n?s?i:o:n||("horizontal"===this.orientation?"left":"top");const a=this.scrollable.measureBoundingClientRectWithScrollOffset(r);return this.elementRef.nativeElement.getBoundingClientRect()[r]-a}measureRenderedContentSize(){const n=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?n.offsetWidth:n.offsetHeight}measureRangeSize(n){return this._forOf?this._forOf.measureRangeSize(n,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(n){n&&this._runAfterChangeDetection.push(n),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._doChangeDetection()})))}_doChangeDetection(){this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run(()=>this._changeDetectorRef.markForCheck());const n=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(const r of n)r()}_calculateSpacerSize(){this._totalContentHeight="horizontal"===this.orientation?"":`${this._totalContentSize}px`,this._totalContentWidth="horizontal"===this.orientation?`${this._totalContentSize}px`:""}}return e.\u0275fac=function(n){return new(n||e)(E(We),E(gs),E(oe),E(wR,8),E(Vi,8),E(Zs),E(Pu),E(Bv,8))},e.\u0275cmp=Un({type:e,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(n,r){if(1&n&&wm(_R,7),2&n){let i;Dm(i=function Cm(){return function S0(e,t){return e[kt].queries[t].queryList}(_(),af())}())&&(r._contentWrapper=i.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(n,r){2&n&&ns("cdk-virtual-scroll-orientation-horizontal","horizontal"===r.orientation)("cdk-virtual-scroll-orientation-vertical","horizontal"!==r.orientation)},inputs:{orientation:"orientation",appendOnly:"appendOnly"},outputs:{scrolledIndexChange:"scrolledIndexChange"},standalone:!0,features:[gc([{provide:Vv,useFactory:(t,n)=>t||n,deps:[[new Jr,new So(Bv)],e]}]),Wo,ls],ngContentSelectors:DR,decls:4,vars:4,consts:[[1,"cdk-virtual-scroll-content-wrapper"],["contentWrapper",""],[1,"cdk-virtual-scroll-spacer"]],template:function(n,r){1&n&&(function Vp(e){const t=_()[Be][Ve];if(!t.projection){const r=t.projection=Qr(e?e.length:1,null),i=r.slice();let o=t.child;for(;null!==o;){const s=e?Jb(o,e):0;null!==s&&(i[s]?i[s].projectionNext=o:r[s]=o,i[s]=o),o=o.next}}}(),Mn(0,"div",0,1),function Bp(e,t=0,n){const r=_(),i=Y(),o=dr(i,le+e,16,null,n||null);null===o.projection&&(o.projection=t),Oa(),32!=(32&o.flags)&&function gC(e,t,n){ch(t[Z],0,t,n,eh(e,n,t),ih(n.parent||t[Ve],n,t))}(i,r,o)}(2),Tn(),Ko(3,"div",2)),2&n&&(li(3),oc("width",r._totalContentWidth)("height",r._totalContentHeight))},styles:["cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}"],encapsulation:2,changeDetection:0}),e})(),jv=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})(),Hv=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({imports:[Ou,jv,MR,Ou,jv]}),e})();class Nu{attach(t){return this._attachedHost=t,t.attach(this)}detach(){let t=this._attachedHost;null!=t&&(this._attachedHost=null,t.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(t){this._attachedHost=t}}class AR extends Nu{constructor(t,n,r,i,o){super(),this.component=t,this.viewContainerRef=n,this.injector=r,this.componentFactoryResolver=i,this.projectableNodes=o}}class $v extends Nu{constructor(t,n,r,i){super(),this.templateRef=t,this.viewContainerRef=n,this.context=r,this.injector=i}get origin(){return this.templateRef.elementRef}attach(t,n=this.context){return this.context=n,super.attach(t)}detach(){return this.context=void 0,super.detach()}}class RR extends Nu{constructor(t){super(),this.element=t instanceof We?t.nativeElement:t}}class kR{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(t){return t instanceof AR?(this._attachedPortal=t,this.attachComponentPortal(t)):t instanceof $v?(this._attachedPortal=t,this.attachTemplatePortal(t)):this.attachDomPortal&&t instanceof RR?(this._attachedPortal=t,this.attachDomPortal(t)):void 0}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(t){this._disposeFn=t}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class OR extends kR{constructor(t,n,r,i,o){super(),this.outletElement=t,this._componentFactoryResolver=n,this._appRef=r,this._defaultInjector=i,this.attachDomPortal=s=>{const a=s.element,l=this._document.createComment("dom-portal");a.parentNode.insertBefore(l,a),this.outletElement.appendChild(a),this._attachedPortal=s,super.setDisposeFn(()=>{l.parentNode&&l.parentNode.replaceChild(a,l)})},this._document=o}attachComponentPortal(t){const r=(t.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(t.component);let i;return t.viewContainerRef?(i=t.viewContainerRef.createComponent(r,t.viewContainerRef.length,t.injector||t.viewContainerRef.injector,t.projectableNodes||void 0),this.setDisposeFn(()=>i.destroy())):(i=r.create(t.injector||this._defaultInjector||bt.NULL),this._appRef.attachView(i.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(i.hostView),i.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(i)),this._attachedPortal=t,i}attachTemplatePortal(t){let n=t.viewContainerRef,r=n.createEmbeddedView(t.templateRef,t.context,{injector:t.injector});return r.rootNodes.forEach(i=>this.outletElement.appendChild(i)),r.detectChanges(),this.setDisposeFn(()=>{let i=n.indexOf(r);-1!==i&&n.remove(i)}),this._attachedPortal=t,r}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(t){return t.hostView.rootNodes[0]}}let PR=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})();const Uv=Nv();class LR{constructor(t,n){this._viewportRuler=t,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=n}attach(){}enable(){if(this._canBeEnabled()){const t=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=t.style.left||"",this._previousHTMLStyles.top=t.style.top||"",t.style.left=Se(-this._previousScrollPosition.left),t.style.top=Se(-this._previousScrollPosition.top),t.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const t=this._document.documentElement,r=t.style,i=this._document.body.style,o=r.scrollBehavior||"",s=i.scrollBehavior||"";this._isEnabled=!1,r.left=this._previousHTMLStyles.left,r.top=this._previousHTMLStyles.top,t.classList.remove("cdk-global-scrollblock"),Uv&&(r.scrollBehavior=i.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),Uv&&(r.scrollBehavior=o,i.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const n=this._document.body,r=this._viewportRuler.getViewportSize();return n.scrollHeight>r.height||n.scrollWidth>r.width}}class VR{constructor(t,n,r,i){this._scrollDispatcher=t,this._ngZone=n,this._viewportRuler=r,this._config=i,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(t){this._overlayRef=t}enable(){if(this._scrollSubscription)return;const t=this._scrollDispatcher.scrolled(0).pipe(Du(n=>!n||!this._overlayRef.overlayElement.contains(n.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=t.subscribe(()=>{const n=this._viewportRuler.getViewportScrollPosition().top;Math.abs(n-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=t.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}class zv{enable(){}disable(){}attach(){}}function Fu(e,t){return t.some(n=>e.bottomn.bottom||e.rightn.right)}function Gv(e,t){return t.some(n=>e.topn.bottom||e.leftn.right)}class BR{constructor(t,n,r,i){this._scrollDispatcher=t,this._viewportRuler=n,this._ngZone=r,this._config=i,this._scrollSubscription=null}attach(t){this._overlayRef=t}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const n=this._overlayRef.overlayElement.getBoundingClientRect(),{width:r,height:i}=this._viewportRuler.getViewportSize();Fu(n,[{width:r,height:i,bottom:i,right:r,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let jR=(()=>{class e{constructor(n,r,i,o){this._scrollDispatcher=n,this._viewportRuler=r,this._ngZone=i,this.noop=()=>new zv,this.close=s=>new VR(this._scrollDispatcher,this._ngZone,this._viewportRuler,s),this.block=()=>new LR(this._viewportRuler,this._document),this.reposition=s=>new BR(this._scrollDispatcher,this._viewportRuler,this._ngZone,s),this._document=o}}return e.\u0275fac=function(n){return new(n||e)(D(Zs),D(Pu),D(oe),D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class Zv{constructor(t){if(this.scrollStrategy=new zv,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,t){const n=Object.keys(t);for(const r of n)void 0!==t[r]&&(this[r]=t[r])}}}class HR{constructor(t,n){this.connectionPair=t,this.scrollableViewProperties=n}}let Wv=(()=>{class e{constructor(n){this._attachedOverlays=[],this._document=n}ngOnDestroy(){this.detach()}add(n){this.remove(n),this._attachedOverlays.push(n)}remove(n){const r=this._attachedOverlays.indexOf(n);r>-1&&this._attachedOverlays.splice(r,1),0===this._attachedOverlays.length&&this.detach()}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),$R=(()=>{class e extends Wv{constructor(n,r){super(n),this._ngZone=r,this._keydownListener=i=>{const o=this._attachedOverlays;for(let s=o.length-1;s>-1;s--)if(o[s]._keydownEvents.observers.length>0){const a=o[s]._keydownEvents;this._ngZone?this._ngZone.run(()=>a.next(i)):a.next(i);break}}}add(n){super.add(n),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}}return e.\u0275fac=function(n){return new(n||e)(D(ge),D(oe,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),UR=(()=>{class e extends Wv{constructor(n,r,i){super(n),this._platform=r,this._ngZone=i,this._cursorStyleIsSet=!1,this._pointerDownListener=o=>{this._pointerDownEventTarget=Fv(o)},this._clickListener=o=>{const s=Fv(o),a="click"===o.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:s;this._pointerDownEventTarget=null;const l=this._attachedOverlays.slice();for(let c=l.length-1;c>-1;c--){const u=l[c];if(u._outsidePointerEvents.observers.length<1||!u.hasAttached())continue;if(u.overlayElement.contains(s)||u.overlayElement.contains(a))break;const d=u._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>d.next(o)):d.next(o)}}}add(n){if(super.add(n),!this._isAttached){const r=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(r)):this._addEventListeners(r),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=r.style.cursor,r.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const n=this._document.body;n.removeEventListener("pointerdown",this._pointerDownListener,!0),n.removeEventListener("click",this._clickListener,!0),n.removeEventListener("auxclick",this._clickListener,!0),n.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(n.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(n){n.addEventListener("pointerdown",this._pointerDownListener,!0),n.addEventListener("click",this._clickListener,!0),n.addEventListener("auxclick",this._clickListener,!0),n.addEventListener("contextmenu",this._clickListener,!0)}}return e.\u0275fac=function(n){return new(n||e)(D(ge),D(Ar),D(oe,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),qv=(()=>{class e{constructor(n,r){this._platform=r,this._document=n}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const n="cdk-overlay-container";if(this._platform.isBrowser||Lv()){const i=this._document.querySelectorAll(`.${n}[platform="server"], .${n}[platform="test"]`);for(let o=0;othis._backdropClick.next(d),this._backdropTransitionendHandler=d=>{this._disposeBackdrop(d.target)},this._keydownEvents=new Re,this._outsidePointerEvents=new Re,i.scrollStrategy&&(this._scrollStrategy=i.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=i.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(t){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const n=this._portalOutlet.attach(t);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(function TR(e){return e<=0?()=>fa:Ue((t,n)=>{let r=0;t.subscribe(Ne(n,i=>{++r<=e&&(n.next(i),e<=r&&n.complete())}))})}(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof n?.onDestroy&&n.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),n}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const t=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),t}dispose(){const t=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._previousHostParent=this._pane=this._host=null,t&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(t){t!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=t,this.hasAttached()&&(t.attach(this),this.updatePosition()))}updateSize(t){this._config={...this._config,...t},this._updateElementSize()}setDirection(t){this._config={...this._config,direction:t},this._updateElementDirection()}addPanelClass(t){this._pane&&this._toggleClasses(this._pane,t,!0)}removePanelClass(t){this._pane&&this._toggleClasses(this._pane,t,!1)}getDirection(){const t=this._config.direction;return t?"string"==typeof t?t:t.value:"ltr"}updateScrollStrategy(t){t!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=t,this.hasAttached()&&(t.attach(this),t.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const t=this._pane.style;t.width=Se(this._config.width),t.height=Se(this._config.height),t.minWidth=Se(this._config.minWidth),t.minHeight=Se(this._config.minHeight),t.maxWidth=Se(this._config.maxWidth),t.maxHeight=Se(this._config.maxHeight)}_togglePointerEvents(t){this._pane.style.pointerEvents=t?"":"none"}_attachBackdrop(){const t="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(t)})}):this._backdropElement.classList.add(t)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const t=this._backdropElement;if(t){if(this._animationsDisabled)return void this._disposeBackdrop(t);t.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{t.addEventListener("transitionend",this._backdropTransitionendHandler)}),t.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(t)},500))}}_toggleClasses(t,n,r){const i=Mv(n||[]).filter(o=>!!o);i.length&&(r?t.classList.add(...i):t.classList.remove(...i))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{const t=this._ngZone.onStable.pipe(zs(pa(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),t.unsubscribe())})})}_disposeScrollStrategy(){const t=this._scrollStrategy;t&&(t.disable(),t.detach&&t.detach())}_disposeBackdrop(t){t&&(t.removeEventListener("click",this._backdropClickHandler),t.removeEventListener("transitionend",this._backdropTransitionendHandler),t.remove(),this._backdropElement===t&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const Yv="cdk-overlay-connected-position-bounding-box",GR=/([A-Za-z%]+)$/;class ZR{get positions(){return this._preferredPositions}constructor(t,n,r,i,o){this._viewportRuler=n,this._document=r,this._platform=i,this._overlayContainer=o,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new Re,this._resizeSubscription=Ie.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(t)}attach(t){this._validatePositions(),t.hostElement.classList.add(Yv),this._overlayRef=t,this._boundingBox=t.hostElement,this._pane=t.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const t=this._originRect,n=this._overlayRect,r=this._viewportRect,i=this._containerRect,o=[];let s;for(let a of this._preferredPositions){let l=this._getOriginPoint(t,i,a),c=this._getOverlayPoint(l,n,a),u=this._getOverlayFit(c,n,r,a);if(u.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(a,l);this._canFitWithFlexibleDimensions(u,c,r)?o.push({position:a,origin:l,overlayRect:n,boundingBoxRect:this._calculateBoundingBoxRect(l,a)}):(!s||s.overlayFit.visibleAreal&&(l=u,a=c)}return this._isPushed=!1,void this._applyPosition(a.position,a.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(s.position,s.originPoint);this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Nn(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(Yv),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const t=this._lastPosition;if(t){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const n=this._getOriginPoint(this._originRect,this._containerRect,t);this._applyPosition(t,n)}else this.apply()}withScrollableContainers(t){return this._scrollables=t,this}withPositions(t){return this._preferredPositions=t,-1===t.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(t){return this._viewportMargin=t,this}withFlexibleDimensions(t=!0){return this._hasFlexibleDimensions=t,this}withGrowAfterOpen(t=!0){return this._growAfterOpen=t,this}withPush(t=!0){return this._canPush=t,this}withLockedPosition(t=!0){return this._positionLocked=t,this}setOrigin(t){return this._origin=t,this}withDefaultOffsetX(t){return this._offsetX=t,this}withDefaultOffsetY(t){return this._offsetY=t,this}withTransformOriginOn(t){return this._transformOriginSelector=t,this}_getOriginPoint(t,n,r){let i,o;if("center"==r.originX)i=t.left+t.width/2;else{const s=this._isRtl()?t.right:t.left,a=this._isRtl()?t.left:t.right;i="start"==r.originX?s:a}return n.left<0&&(i-=n.left),o="center"==r.originY?t.top+t.height/2:"top"==r.originY?t.top:t.bottom,n.top<0&&(o-=n.top),{x:i,y:o}}_getOverlayPoint(t,n,r){let i,o;return i="center"==r.overlayX?-n.width/2:"start"===r.overlayX?this._isRtl()?-n.width:0:this._isRtl()?0:-n.width,o="center"==r.overlayY?-n.height/2:"top"==r.overlayY?0:-n.height,{x:t.x+i,y:t.y+o}}_getOverlayFit(t,n,r,i){const o=Kv(n);let{x:s,y:a}=t,l=this._getOffset(i,"x"),c=this._getOffset(i,"y");l&&(s+=l),c&&(a+=c);let f=0-a,h=a+o.height-r.height,p=this._subtractOverflows(o.width,0-s,s+o.width-r.width),g=this._subtractOverflows(o.height,f,h),y=p*g;return{visibleArea:y,isCompletelyWithinViewport:o.width*o.height===y,fitsInViewportVertically:g===o.height,fitsInViewportHorizontally:p==o.width}}_canFitWithFlexibleDimensions(t,n,r){if(this._hasFlexibleDimensions){const i=r.bottom-n.y,o=r.right-n.x,s=Xv(this._overlayRef.getConfig().minHeight),a=Xv(this._overlayRef.getConfig().minWidth);return(t.fitsInViewportVertically||null!=s&&s<=i)&&(t.fitsInViewportHorizontally||null!=a&&a<=o)}return!1}_pushOverlayOnScreen(t,n,r){if(this._previousPushAmount&&this._positionLocked)return{x:t.x+this._previousPushAmount.x,y:t.y+this._previousPushAmount.y};const i=Kv(n),o=this._viewportRect,s=Math.max(t.x+i.width-o.width,0),a=Math.max(t.y+i.height-o.height,0),l=Math.max(o.top-r.top-t.y,0),c=Math.max(o.left-r.left-t.x,0);let u=0,d=0;return u=i.width<=o.width?c||-s:t.xp&&!this._isInitialRender&&!this._growAfterOpen&&(s=t.y-p/2)}if("end"===n.overlayX&&!i||"start"===n.overlayX&&i)f=r.width-t.x+this._viewportMargin,u=t.x-this._viewportMargin;else if("start"===n.overlayX&&!i||"end"===n.overlayX&&i)d=t.x,u=r.right-t.x;else{const h=Math.min(r.right-t.x+r.left,t.x),p=this._lastBoundingBoxSize.width;u=2*h,d=t.x-h,u>p&&!this._isInitialRender&&!this._growAfterOpen&&(d=t.x-p/2)}return{top:s,left:d,bottom:a,right:f,width:u,height:o}}_setBoundingBoxStyles(t,n){const r=this._calculateBoundingBoxRect(t,n);!this._isInitialRender&&!this._growAfterOpen&&(r.height=Math.min(r.height,this._lastBoundingBoxSize.height),r.width=Math.min(r.width,this._lastBoundingBoxSize.width));const i={};if(this._hasExactPosition())i.top=i.left="0",i.bottom=i.right=i.maxHeight=i.maxWidth="",i.width=i.height="100%";else{const o=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;i.height=Se(r.height),i.top=Se(r.top),i.bottom=Se(r.bottom),i.width=Se(r.width),i.left=Se(r.left),i.right=Se(r.right),i.alignItems="center"===n.overlayX?"center":"end"===n.overlayX?"flex-end":"flex-start",i.justifyContent="center"===n.overlayY?"center":"bottom"===n.overlayY?"flex-end":"flex-start",o&&(i.maxHeight=Se(o)),s&&(i.maxWidth=Se(s))}this._lastBoundingBoxSize=r,Nn(this._boundingBox.style,i)}_resetBoundingBoxStyles(){Nn(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Nn(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(t,n){const r={},i=this._hasExactPosition(),o=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(i){const u=this._viewportRuler.getViewportScrollPosition();Nn(r,this._getExactOverlayY(n,t,u)),Nn(r,this._getExactOverlayX(n,t,u))}else r.position="static";let a="",l=this._getOffset(n,"x"),c=this._getOffset(n,"y");l&&(a+=`translateX(${l}px) `),c&&(a+=`translateY(${c}px)`),r.transform=a.trim(),s.maxHeight&&(i?r.maxHeight=Se(s.maxHeight):o&&(r.maxHeight="")),s.maxWidth&&(i?r.maxWidth=Se(s.maxWidth):o&&(r.maxWidth="")),Nn(this._pane.style,r)}_getExactOverlayY(t,n,r){let i={top:"",bottom:""},o=this._getOverlayPoint(n,this._overlayRect,t);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,r)),"bottom"===t.overlayY?i.bottom=this._document.documentElement.clientHeight-(o.y+this._overlayRect.height)+"px":i.top=Se(o.y),i}_getExactOverlayX(t,n,r){let s,i={left:"",right:""},o=this._getOverlayPoint(n,this._overlayRect,t);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,r)),s=this._isRtl()?"end"===t.overlayX?"left":"right":"end"===t.overlayX?"right":"left","right"===s?i.right=this._document.documentElement.clientWidth-(o.x+this._overlayRect.width)+"px":i.left=Se(o.x),i}_getScrollVisibility(){const t=this._getOriginRect(),n=this._pane.getBoundingClientRect(),r=this._scrollables.map(i=>i.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:Gv(t,r),isOriginOutsideView:Fu(t,r),isOverlayClipped:Gv(n,r),isOverlayOutsideView:Fu(n,r)}}_subtractOverflows(t,...n){return n.reduce((r,i)=>r-Math.max(i,0),t)}_getNarrowedViewportRect(){const t=this._document.documentElement.clientWidth,n=this._document.documentElement.clientHeight,r=this._viewportRuler.getViewportScrollPosition();return{top:r.top+this._viewportMargin,left:r.left+this._viewportMargin,right:r.left+t-this._viewportMargin,bottom:r.top+n-this._viewportMargin,width:t-2*this._viewportMargin,height:n-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(t,n){return"x"===n?null==t.offsetX?this._offsetX:t.offsetX:null==t.offsetY?this._offsetY:t.offsetY}_validatePositions(){}_addPanelClasses(t){this._pane&&Mv(t).forEach(n=>{""!==n&&-1===this._appliedPanelClasses.indexOf(n)&&(this._appliedPanelClasses.push(n),this._pane.classList.add(n))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(t=>{this._pane.classList.remove(t)}),this._appliedPanelClasses=[])}_getOriginRect(){const t=this._origin;if(t instanceof We)return t.nativeElement.getBoundingClientRect();if(t instanceof Element)return t.getBoundingClientRect();const n=t.width||0,r=t.height||0;return{top:t.y,bottom:t.y+r,left:t.x,right:t.x+n,height:r,width:n}}}function Nn(e,t){for(let n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function Xv(e){if("number"!=typeof e&&null!=e){const[t,n]=e.split(GR);return n&&"px"!==n?null:parseFloat(t)}return e||null}function Kv(e){return{top:Math.floor(e.top),right:Math.floor(e.right),bottom:Math.floor(e.bottom),left:Math.floor(e.left),width:Math.floor(e.width),height:Math.floor(e.height)}}const Qv="cdk-global-overlay-wrapper";class WR{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(t){const n=t.getConfig();this._overlayRef=t,this._width&&!n.width&&t.updateSize({width:this._width}),this._height&&!n.height&&t.updateSize({height:this._height}),t.hostElement.classList.add(Qv),this._isDisposed=!1}top(t=""){return this._bottomOffset="",this._topOffset=t,this._alignItems="flex-start",this}left(t=""){return this._xOffset=t,this._xPosition="left",this}bottom(t=""){return this._topOffset="",this._bottomOffset=t,this._alignItems="flex-end",this}right(t=""){return this._xOffset=t,this._xPosition="right",this}start(t=""){return this._xOffset=t,this._xPosition="start",this}end(t=""){return this._xOffset=t,this._xPosition="end",this}width(t=""){return this._overlayRef?this._overlayRef.updateSize({width:t}):this._width=t,this}height(t=""){return this._overlayRef?this._overlayRef.updateSize({height:t}):this._height=t,this}centerHorizontally(t=""){return this.left(t),this._xPosition="center",this}centerVertically(t=""){return this.top(t),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const t=this._overlayRef.overlayElement.style,n=this._overlayRef.hostElement.style,r=this._overlayRef.getConfig(),{width:i,height:o,maxWidth:s,maxHeight:a}=r,l=!("100%"!==i&&"100vw"!==i||s&&"100%"!==s&&"100vw"!==s),c=!("100%"!==o&&"100vh"!==o||a&&"100%"!==a&&"100vh"!==a),u=this._xPosition,d=this._xOffset,f="rtl"===this._overlayRef.getConfig().direction;let h="",p="",g="";l?g="flex-start":"center"===u?(g="center",f?p=d:h=d):f?"left"===u||"end"===u?(g="flex-end",h=d):("right"===u||"start"===u)&&(g="flex-start",p=d):"left"===u||"start"===u?(g="flex-start",h=d):("right"===u||"end"===u)&&(g="flex-end",p=d),t.position=this._cssPosition,t.marginLeft=l?"0":h,t.marginTop=c?"0":this._topOffset,t.marginBottom=this._bottomOffset,t.marginRight=l?"0":p,n.justifyContent=g,n.alignItems=c?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const t=this._overlayRef.overlayElement.style,n=this._overlayRef.hostElement,r=n.style;n.classList.remove(Qv),r.justifyContent=r.alignItems=t.marginTop=t.marginBottom=t.marginLeft=t.marginRight=t.position="",this._overlayRef=null,this._isDisposed=!0}}let qR=(()=>{class e{constructor(n,r,i,o){this._viewportRuler=n,this._document=r,this._platform=i,this._overlayContainer=o}global(){return new WR}flexibleConnectedTo(n){return new ZR(n,this._viewportRuler,this._document,this._platform,this._overlayContainer)}}return e.\u0275fac=function(n){return new(n||e)(D(Pu),D(ge),D(Ar),D(qv))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),YR=0,Lu=(()=>{class e{constructor(n,r,i,o,s,a,l,c,u,d,f,h){this.scrollStrategies=n,this._overlayContainer=r,this._componentFactoryResolver=i,this._positionBuilder=o,this._keyboardDispatcher=s,this._injector=a,this._ngZone=l,this._document=c,this._directionality=u,this._location=d,this._outsideClickDispatcher=f,this._animationsModuleType=h}create(n){const r=this._createHostElement(),i=this._createPaneElement(r),o=this._createPortalOutlet(i),s=new Zv(n);return s.direction=s.direction||this._directionality.value,new zR(o,r,i,s,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType)}position(){return this._positionBuilder}_createPaneElement(n){const r=this._document.createElement("div");return r.id="cdk-overlay-"+YR++,r.classList.add("cdk-overlay-pane"),n.appendChild(r),r}_createHostElement(){const n=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(n),n}_createPortalOutlet(n){return this._appRef||(this._appRef=this._injector.get(bi)),new OR(n,this._componentFactoryResolver,this._appRef,this._injector,this._document)}}return e.\u0275fac=function(n){return new(n||e)(D(jR),D(qv),D(an),D(qR),D($R),D(bt),D(oe),D(ge),D(Vi),D(Cy),D(UR),D(W0,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const XR=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],Jv=new A("cdk-connected-overlay-scroll-strategy");let KR=(()=>{class e{constructor(n){this.elementRef=n}}return e.\u0275fac=function(n){return new(n||e)(E(We))},e.\u0275dir=ke({type:e,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0}),e})(),QR=(()=>{class e{get offsetX(){return this._offsetX}set offsetX(n){this._offsetX=n,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(n){this._offsetY=n,this._position&&this._updatePositionStrategy(this._position)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(n){this._hasBackdrop=xr(n)}get lockPosition(){return this._lockPosition}set lockPosition(n){this._lockPosition=xr(n)}get flexibleDimensions(){return this._flexibleDimensions}set flexibleDimensions(n){this._flexibleDimensions=xr(n)}get growAfterOpen(){return this._growAfterOpen}set growAfterOpen(n){this._growAfterOpen=xr(n)}get push(){return this._push}set push(n){this._push=xr(n)}constructor(n,r,i,o,s){this._overlay=n,this._dir=s,this._hasBackdrop=!1,this._lockPosition=!1,this._growAfterOpen=!1,this._flexibleDimensions=!1,this._push=!1,this._backdropSubscription=Ie.EMPTY,this._attachSubscription=Ie.EMPTY,this._detachSubscription=Ie.EMPTY,this._positionSubscription=Ie.EMPTY,this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.backdropClick=new ue,this.positionChange=new ue,this.attach=new ue,this.detach=new ue,this.overlayKeydown=new ue,this.overlayOutsideClick=new ue,this._templatePortal=new $v(r,i),this._scrollStrategyFactory=o,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(n){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),n.origin&&this.open&&this._position.apply()),n.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=XR);const n=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=n.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=n.detachments().subscribe(()=>this.detach.emit()),n.keydownEvents().subscribe(r=>{this.overlayKeydown.next(r),27===r.keyCode&&!this.disableClose&&!function FR(e,...t){return t.length?t.some(n=>e[n]):e.altKey||e.shiftKey||e.ctrlKey||e.metaKey}(r)&&(r.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(r=>{this.overlayOutsideClick.next(r)})}_buildConfig(){const n=this._position=this.positionStrategy||this._createPositionStrategy(),r=new Zv({direction:this._dir,positionStrategy:n,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop});return(this.width||0===this.width)&&(r.width=this.width),(this.height||0===this.height)&&(r.height=this.height),(this.minWidth||0===this.minWidth)&&(r.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(r.minHeight=this.minHeight),this.backdropClass&&(r.backdropClass=this.backdropClass),this.panelClass&&(r.panelClass=this.panelClass),r}_updatePositionStrategy(n){const r=this.positions.map(i=>({originX:i.originX,originY:i.originY,overlayX:i.overlayX,overlayY:i.overlayY,offsetX:i.offsetX||this.offsetX,offsetY:i.offsetY||this.offsetY,panelClass:i.panelClass||void 0}));return n.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(r).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const n=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(n),n}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof KR?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(n=>{this.backdropClick.emit(n)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(function xR(e,t=!1){return Ue((n,r)=>{let i=0;n.subscribe(Ne(r,o=>{const s=e(o,i++);(s||t)&&r.next(o),!s&&r.complete()}))})}(()=>this.positionChange.observers.length>0)).subscribe(n=>{this.positionChange.emit(n),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}}return e.\u0275fac=function(n){return new(n||e)(E(Lu),E(Bt),E(yt),E(Jv),E(Vi,8))},e.\u0275dir=ke({type:e,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:["cdkConnectedOverlayOrigin","origin"],positions:["cdkConnectedOverlayPositions","positions"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:["cdkConnectedOverlayOpen","open"],disableClose:["cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop"],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition"],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions"],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen"],push:["cdkConnectedOverlayPush","push"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[Gt]}),e})();const ek={provide:Jv,deps:[Lu],useFactory:function JR(e){return()=>e.scrollStrategies.reposition()}};let tk=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({providers:[Lu,ek],imports:[Ou,PR,Hv,Hv]}),e})(),nk=(()=>{var e;class t{constructor(){this.text=""}}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275cmp=Un({type:e,selectors:[["hra-ui-tooltip"]],inputs:{text:"text"},standalone:!0,features:[ls],decls:2,vars:1,consts:[[1,"tooltip"]],template:function(r,i){1&r&&(Mn(0,"div",0),function lg(e,t=""){const n=_(),r=Y(),i=e+le,o=r.firstCreatePass?dr(r,i,1,t,null):r.data[i],s=n[i]=function cl(e,t){return e.createText(t)}(n[Z],t);Ao(r,n,s,o),Ot(o,!1)}(1),Tn()),2&r&&(li(1),ac(i.text))},dependencies:[lu],styles:["[_nghost-%COMP%] .tooltip[_ngcontent-%COMP%]{display:flex;flex-direction:column;background:white;box-shadow:1px .125rem 1rem .125rem #00000029;border-radius:.5rem;padding:1rem}"],changeDetection:0}),t})();var Vu=function e(){},e_=function(){function e(t){this._ranScripts={},this._renderer=t.createRenderer(null,null)}return e.prototype.insertEl=function(t,n,r,i,o){if(i&&!o){var s=t._prevSVG&&t._prevSVG.parentNode;s&&this._renderer.removeChild(s,t._prevSVG),n.innerHTML=""}o?this._renderer.insertBefore(n,r,n.firstChild):this._renderer.appendChild(n,r),"svg"===r.nodeName&&(t._prevSVG=r)},e.prototype.evalScripts=function(t,n,r){for(var i=t.querySelectorAll("script"),o=[],s=0;s0&&("always"===r||"once"===r&&!this._ranScripts[n])){for(s=0;s{var s;null===(s=r.subscribe)||void 0===s||s.call(r);let a=!0;i.subscribe(Ne(o,l=>{var c;null===(c=r.next)||void 0===c||c.call(r,l),o.next(l)},()=>{var l;a=!1,null===(l=r.complete)||void 0===l||l.call(r),o.complete()},l=>{var c;a=!1,null===(c=r.error)||void 0===c||c.call(r,l),o.error(l)},()=>{var l,c;a&&(null===(l=r.unsubscribe)||void 0===l||l.call(r)),null===(c=r.finalize)||void 0===c||c.call(r)}))}):ca}function r_(e){return Ue((t,n)=>{let o,r=null,i=!1;r=t.subscribe(Ne(n,void 0,void 0,s=>{o=Ke(e(s,r_(e)(t))),r?(r.unsubscribe(),r=null,o.subscribe(n)):i=!0})),i&&(r.unsubscribe(),r=null,o.subscribe(n))})}var i_=function(){function e(t,n,r,i,o,s){this._appBase=t,this._location=n,this._config=r,this._http=r&&!r.bypassHttpClientInterceptorChain?i:new ki(o),this._renderer=s.createRenderer(null,null),this.setBaseUrl(),e._cache||(e._cache=new Map),e._inProgressReqs||(e._inProgressReqs=new Map)}return e.prototype.getSVG=function(t,n,r){var i=this;void 0===r&&(r=!0);var o=(n?this.getAbsoluteUrl(t):t).replace(/#.+$/,"");if(r&&e._cache.has(o))return _u(this._cloneSVG(e._cache.get(o)));if(e._inProgressReqs.has(o))return e._inProgressReqs.get(o);var s=this._http.get(o,{responseType:"text"}).pipe(n_(function(){e._inProgressReqs.delete(o)}),r_(function(a){return e._inProgressReqs.delete(o),function rk(e,t){const n=X(e)?e:()=>e,r=i=>i.error(n());return new fe(t?i=>t.schedule(r,0,i):r)}(a.message)}),Id(),Me(function(a){var l=i._svgElementFromString(a);return e._cache.set(o,l),i._cloneSVG(l)}));return e._inProgressReqs.set(o,s),s},e.prototype.setBaseUrl=function(){this._config?this._baseUrl=this._config.baseUrl:null!==this._appBase?this._baseUrl=this._appBase:null!==this._location&&(this._baseUrl=this._location.getBaseHrefFromDOM())},e.prototype.getAbsoluteUrl=function(t){this._baseUrl&&!/^https?:\/\//i.test(t)&&0===(t=this._baseUrl+t).indexOf("//")&&(t=t.substring(1));var n=this._renderer.createElement("BASE");return n.href=t,n.href},e.prototype._svgElementFromString=function(t){var n=this._renderer.createElement("DIV");n.innerHTML=t;var r=n.querySelector("svg");if(!r)throw new Error("No SVG found in loaded contents");return r},e.prototype._cloneSVG=function(t){return t.cloneNode(!0)},e.\u0275prov=P({token:e,factory:e.\u0275fac=function(n){return new(n||e)(D(wy,8),D(Zc,8),D(Vu,8),D(ki),D(Fs),D(Lo))},providedIn:"root"}),e}();function o_(e,t){for(var n=0;n-1}(n.inlineSVG)){var i=n.inlineSVG.split("#")[1];r=function sk(e,t,n){var r=t.querySelector('[id="'.concat(n,'"]'));if(!r)throw new Error('Symbol "'.concat(n,'" not found'));var i=e.createElement("svg","svg");e.appendChild(i,r);var o=e.createElement("use","svg");return e.setAttribute(o,"href","#".concat(n),"xlink"),e.appendChild(i,o),i}(n._renderer,r,i)}n._processSvg(r)},function(r){n._fail(r)}))}},e.prototype._processSvg=function(t){if(t){if(this.removeSVGAttributes&&Ts(this.platformId)&&o_(t,this.removeSVGAttributes),this.setSVGAttributes&&function ak(e,t){for(var n in t)e.setAttribute(n,t[n])}(t,this.setSVGAttributes),this.onSVGLoaded&&(t=this.onSVGLoaded(t,this._el.nativeElement)),this._insertEl(t),Ts(this.platformId)&&this._inlineSVGService.evalScripts(t,this.inlineSVG,this.evalScripts),this.forceEvalStyles){var n=t.querySelectorAll("style");Array.from(n).forEach(function(r){return r.textContent+=""})}this.onSVGInserted.emit(t)}},e.prototype._insertEl=function(t){if(this.injectComponent){if(!this._svgComp){var n=this._resolver.resolveComponentFactory(t_);this._svgComp=this._viewContainerRef.createComponent(n)}this._svgComp.instance.context=this,this._svgComp.instance.replaceContents=this.replaceContents,this._svgComp.instance.prepend=this.prepend,this._svgComp.instance.content=t,this._renderer.appendChild(this._el.nativeElement,this._svgComp.injector.get(t_)._el.nativeElement)}else this._inlineSVGService.insertEl(this,this._el.nativeElement,t,this.replaceContents,this.prepend)},e.prototype._fail=function(t){if(this.onSVGFailed.emit(t),this.fallbackImgUrl){var n=this._renderer.createElement("IMG");this._renderer.setAttribute(n,"src",this.fallbackImgUrl),this._insertEl(n)}else this.fallbackSVG&&this.fallbackSVG!==this.inlineSVG&&(this.inlineSVG=this.fallbackSVG,this._insertSVG())},e.prototype._isValidPlatform=function(){return xs(this.platformId)||Ts(this.platformId)},e.prototype._isSSRDisabled=function(){return xs(this.platformId)&&this._config&&this._config.clientOnly},e.\u0275fac=function(n){return new(n||e)(E(We),E(yt),E(an),E(i_),E(Vo),E(e_),E(Vu,8),E(Ei))},e.\u0275dir=ke({type:e,selectors:[["","inlineSVG",""]],inputs:{inlineSVG:"inlineSVG",resolveSVGUrl:"resolveSVGUrl",replaceContents:"replaceContents",prepend:"prepend",injectComponent:"injectComponent",cacheSVG:"cacheSVG",setSVGAttributes:"setSVGAttributes",removeSVGAttributes:"removeSVGAttributes",forceEvalStyles:"forceEvalStyles",evalScripts:"evalScripts",fallbackImgUrl:"fallbackImgUrl",fallbackSVG:"fallbackSVG",onSVGLoaded:"onSVGLoaded"},outputs:{onSVGInserted:"onSVGInserted",onSVGFailed:"onSVGFailed"},features:[gc([i_]),Gt]}),e}(),ck=function(){function e(){}return e.forRoot=function(t){return{ngModule:e,providers:[{provide:Vu,useValue:t}]}},e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e}();class uk extends Re{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){const{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}}function s_(e,t,n){return n?s_(e,t).pipe(Tv(n)):new fe(r=>{const i=(...s)=>r.next(1===s.length?s[0]:s),o=e(i);return X(t)?()=>t(i,o):void 0})}function fk(e,t){if(1&e){const n=function kp(){return _()}();Mn(0,"div",2),es("onSVGInserted",function(i){return function Jd(e){return j.lFrame.contextLView=e,e[me]}(n),function ef(e){return j.lFrame.contextLView=null,e}(wr().setSvgElement(i))}),vc(1,"async"),Tn()}if(2&e){const n=wr();ns("hover-active",_c(1,4,n.nodeHoverData$)),ln("inlineSVG",n.url)("evalScripts",n.NEVER_EVAL_SCRIPTS)}}function hk(e,t){if(1&e&&Ko(0,"hra-ui-tooltip",4),2&e){const n=wr().ngIf;ln("text",wr().formatNodeName(n.node))}}function pk(e,t){if(1&e&&(Qo(0),Xo(1,hk,1,1,"ng-template",3),Jo()),2&e){const n=t.ngIf,r=wr();li(1),ln("cdkConnectedOverlayOrigin",n.origin)("cdkConnectedOverlayPositions",r.TOOLTIP_POSITIONS)("cdkConnectedOverlayViewportMargin",16)("cdkConnectedOverlayOpen",!0)}}const mk=[{originX:"center",originY:"center",overlayX:"start",overlayY:"center",offsetX:8},{originX:"center",originY:"center",overlayX:"end",overlayY:"center",offsetX:-8},{originX:"center",originY:"center",overlayX:"center",overlayY:"top",offsetY:8},{originX:"center",originY:"center",overlayX:"center",overlayY:"bottom",offsetY:-8}];let a_=(()=>{var e;class t{constructor(){this.mapping=[],this.nodeHover=new ue,this.nodeClick=new ue,this.NEVER_EVAL_SCRIPTS="never",this.TOOLTIP_POSITIONS=mk,this.nodeHoverData$=new uk(void 0),this.nodeHoverDelayedData$=this.nodeHoverData$.pipe(function dk(e){return Ue((t,n)=>{let r=!1,i=null,o=null;const s=()=>{if(o?.unsubscribe(),o=null,r){r=!1;const a=i;i=null,n.next(a)}};t.subscribe(Ne(n,a=>{o?.unsubscribe(),r=!0,i=a,o=Ne(n,s,qi),Ke(e(a)).subscribe(o)},()=>{s(),n.complete()},void 0,()=>{i=o=null}))})}(r=>kv(r?200:0))),this.renderer=Fe(Vo),this.destroy$=new Re,this.highlightedElements=[]}ngOnChanges(r){"highlightId"in r&&(this.resetHighlight(),this.setHighlight())}setHighlight(){const{mapping:r,highlightId:i,crosswalkEl:o}=this,s=r.find(({ontologyId:u})=>u===i);if(!s||!o)return;let a=this.encodeId(s.id);const l=o.querySelector(`#${a}`);if(!l)return;"g"!==l.nodeName&&(a=l.parentElement?.id??"");const c=o.querySelectorAll(`#${a} :is(path, polygon, polyline)`);this.highlightedElements=Array.from(c),c.forEach(u=>u.classList.add("click-active"))}resetHighlight(){for(const r of this.highlightedElements)r.classList.remove("click-active");this.highlightedElements=[]}ngOnDestroy(){this.clear()}setSvgElement(r){this.clear(),this.crosswalkEl=r.querySelector('[id^="Crosswalk"]')??void 0,this.crosswalkEl&&(this.renderer.appendChild(r,this.crosswalkEl),this.attachCrosswalkHover(this.crosswalkEl))}formatNodeName(r){return r.replace(/_/g," ")}attachCrosswalkHover(r){this.attachEvent(r,"mouseover").subscribe(i=>this.onCrosswalkHover(i)),this.attachEvent(r,"mouseout").subscribe(()=>this.onCrosswalkHover(void 0)),this.attachEvent(r,"click").subscribe(i=>this.nodeClick.emit(this.getNode(i)))}onCrosswalkHover(r){if(r){const i=this.getNode(r);i&&(this.nodeHoverData$.next({node:i.label,origin:{x:r.clientX,y:r.clientY}}),this.nodeHover.emit(i))}else this.nodeHoverData$.next(void 0),this.nodeHover.emit()}clear(){this.destroy$.next(),this.destroy$.complete(),this.destroy$=new Re}getNode(r){const a=[r.target.id,r.target.parentElement?.id??"",r.target.parentElement?.parentElement?.id??""];for(const l of a){const c=this.decodeId(l),u=this.mapping.find(d=>d.id?.toLowerCase()===c.toLowerCase());if(u)return u}}decodeId(r){return r.replace(/_x([\da-f]+)_/gi,(o,s)=>String.fromCharCode(Number.parseInt(s,16)))}encodeId(r){return r.replace(/[^a-z0-9-]/gi,o=>`_x${o.charCodeAt(0).toString(16).toUpperCase()}_`)}attachEvent(r,i){const{renderer:o,destroy$:s}=this;return s_(c=>o.listen(r,i,c),(c,u)=>u()).pipe(zs(s))}}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275cmp=Un({type:e,selectors:[["hra-interactive-svg"]],inputs:{url:"url",mapping:"mapping",highlightId:"highlightId"},outputs:{nodeHover:"nodeHover",nodeClick:"nodeClick"},standalone:!0,features:[Gt,ls],decls:3,vars:4,consts:[["class","svg",3,"hover-active","inlineSVG","evalScripts","onSVGInserted",4,"ngIf"],[4,"ngIf"],[1,"svg",3,"inlineSVG","evalScripts","onSVGInserted"],["cdkConnectedOverlay","","cdkConnectedOverlayPanelClass","hra-interactive-svg-tooltip-panel",3,"cdkConnectedOverlayOrigin","cdkConnectedOverlayPositions","cdkConnectedOverlayViewportMargin","cdkConnectedOverlayOpen"],[3,"text"]],template:function(r,i){1&r&&(Xo(0,fk,2,6,"div",0),Xo(1,pk,2,4,"ng-container",1),vc(2,"async")),2&r&&(ln("ngIf",i.url),li(1),ln("ngIf",_c(2,2,i.nodeHoverDelayedData$)))},dependencies:[lu,Ly,jy,ck,lk,tk,QR,nk],styles:[".svg{max-height:calc(100vh - 14rem);overflow-y:auto}svg{max-height:calc(100vh - 10rem);width:100%}[id^=Crosswalk] :is(path,polygon,polyline){fill:transparent;stroke:transparent}.hover-active [id^=Crosswalk] g:hover>:is(path,polygon,polyline),.hover-active [id^=Crosswalk] g>g:hover>:is(path,polygon,polyline),[id^=Crosswalk] .click-active{fill:red;mix-blend-mode:saturation}\n"],encapsulation:3,changeDetection:0}),t})(),l_=(()=>{var e;class t{}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac}),t})(),yk=(()=>{var e;class t extends l_{sendMessage(r){const i=document.createElement("a");document.body.appendChild(i),i.target="_blank",i.href=`mailto:${r.email}?subject=${r.subject}&body=${r.message}`,i.click(),i.remove()}}return(e=t).\u0275fac=function(){let n;return function(i){return(n||(n=Za(e)))(i||e)}}(),e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),t})();function c_(e,t,n,r,i,o,s){try{var a=e[o](s),l=a.value}catch(c){return void n(c)}a.done?t(l):Promise.resolve(l).then(r,i)}function hn(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(l){c_(o,r,i,s,a,"next",l)}function a(l){c_(o,r,i,s,a,"throw",l)}s(void 0)})}}var K,e;(e=K||(K={})).assertEqual=i=>i,e.assertIs=function t(i){},e.assertNever=function n(i){throw new Error},e.arrayToEnum=i=>{const o={};for(const s of i)o[s]=s;return o},e.getValidEnumValues=i=>{const o=e.objectKeys(i).filter(a=>"number"!=typeof i[i[a]]),s={};for(const a of o)s[a]=i[a];return e.objectValues(s)},e.objectValues=i=>e.objectKeys(i).map(function(o){return i[o]}),e.objectKeys="function"==typeof Object.keys?i=>Object.keys(i):i=>{const o=[];for(const s in i)Object.prototype.hasOwnProperty.call(i,s)&&o.push(s);return o},e.find=(i,o)=>{for(const s of i)if(o(s))return s},e.isInteger="function"==typeof Number.isInteger?i=>Number.isInteger(i):i=>"number"==typeof i&&isFinite(i)&&Math.floor(i)===i,e.joinValues=function r(i,o=" | "){return i.map(s=>"string"==typeof s?`'${s}'`:s).join(o)},e.jsonStringifyReplacer=(i,o)=>"bigint"==typeof o?o.toString():o;var Ws=(()=>(function(e){e.mergeShapes=(t,n)=>({...t,...n})}(Ws||(Ws={})),Ws))();const b=K.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),pn=e=>{switch(typeof e){case"undefined":return b.undefined;case"string":return b.string;case"number":return isNaN(e)?b.nan:b.number;case"boolean":return b.boolean;case"function":return b.function;case"bigint":return b.bigint;case"symbol":return b.symbol;case"object":return Array.isArray(e)?b.array:null===e?b.null:e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch?b.promise:typeof Map<"u"&&e instanceof Map?b.map:typeof Set<"u"&&e instanceof Set?b.set:typeof Date<"u"&&e instanceof Date?b.date:b.object;default:return b.unknown}},w=K.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);let tn=(()=>{class e extends Error{constructor(n){super(),this.issues=[],this.addIssue=i=>{this.issues=[...this.issues,i]},this.addIssues=(i=[])=>{this.issues=[...this.issues,...i]};const r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=n}get errors(){return this.issues}format(n){const r=n||function(s){return s.message},i={_errors:[]},o=s=>{for(const a of s.issues)if("invalid_union"===a.code)a.unionErrors.map(o);else if("invalid_return_type"===a.code)o(a.returnTypeError);else if("invalid_arguments"===a.code)o(a.argumentsError);else if(0===a.path.length)i._errors.push(r(a));else{let l=i,c=0;for(;cr.message)){const r={},i=[];for(const o of this.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(n(o))):i.push(n(o));return{formErrors:i,fieldErrors:r}}get formErrors(){return this.flatten()}}return e.create=t=>new e(t),e})();const Bi=(e,t)=>{let n;switch(e.code){case w.invalid_type:n=e.received===b.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case w.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,K.jsonStringifyReplacer)}`;break;case w.unrecognized_keys:n=`Unrecognized key(s) in object: ${K.joinValues(e.keys,", ")}`;break;case w.invalid_union:n="Invalid input";break;case w.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${K.joinValues(e.options)}`;break;case w.invalid_enum_value:n=`Invalid enum value. Expected ${K.joinValues(e.options)}, received '${e.received}'`;break;case w.invalid_arguments:n="Invalid function arguments";break;case w.invalid_return_type:n="Invalid function return type";break;case w.invalid_date:n="Invalid date";break;case w.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:K.assertNever(e.validation):n="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case w.too_small:n="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"date"===e.type?`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:"Invalid input";break;case w.too_big:n="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:"Invalid input";break;case w.custom:n="Invalid input";break;case w.invalid_intersection_types:n="Intersection results could not be merged";break;case w.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case w.not_finite:n="Number must be finite";break;default:n=t.defaultError,K.assertNever(e)}return{message:n}};let u_=Bi;function qs(){return u_}const Ys=e=>{const{data:t,path:n,errorMaps:r,issueData:i}=e,o=[...n,...i.path||[]],s={...i,path:o};let a="";const l=r.filter(c=>!!c).slice().reverse();for(const c of l)a=c(s,{data:t,defaultError:a}).message;return{...i,path:o,message:i.message||a}};function M(e,t){const n=Ys({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,qs(),Bi].filter(r=>!!r)});e.common.issues.push(n)}class $e{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const i of n){if("aborted"===i.status)return $;"dirty"===i.status&&t.dirty(),r.push(i.value)}return{status:t.value,value:r}}static mergeObjectAsync(t,n){return hn(function*(){const r=[];for(const i of n)r.push({key:yield i.key,value:yield i.value});return $e.mergeObjectSync(t,r)})()}static mergeObjectSync(t,n){const r={};for(const i of n){const{key:o,value:s}=i;if("aborted"===o.status||"aborted"===s.status)return $;"dirty"===o.status&&t.dirty(),"dirty"===s.status&&t.dirty(),(typeof s.value<"u"||i.alwaysSet)&&(r[o.value]=s.value)}return{status:t.value,value:r}}}const $=Object.freeze({status:"aborted"}),d_=e=>({status:"dirty",value:e}),Xe=e=>({status:"valid",value:e}),Bu=e=>"aborted"===e.status,ju=e=>"dirty"===e.status,Xs=e=>"valid"===e.status,Ks=e=>typeof Promise<"u"&&e instanceof Promise;var x=(()=>(function(e){e.errToObj=t=>"string"==typeof t?{message:t}:t||{},e.toString=t=>"string"==typeof t?t:t?.message}(x||(x={})),x))();class jt{constructor(t,n,r,i){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=i}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const f_=(e,t)=>{if(Xs(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new tn(e.common.issues);return this._error=n,this._error}}};function G(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:i}:{errorMap:(s,a)=>"invalid_type"!==s.code?{message:a.defaultError}:typeof a.data>"u"?{message:r??a.defaultError}:{message:n??a.defaultError},description:i}}class W{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return pn(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:pn(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new $e,ctx:{common:t.parent.common,data:t.data,parsedType:pn(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(Ks(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){var r;const i={common:{issues:[],async:null!==(r=n?.async)&&void 0!==r&&r,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:pn(t)},o=this._parseSync({data:t,path:i.path,parent:i});return f_(i,o)}parseAsync(t,n){var r=this;return hn(function*(){const i=yield r.safeParseAsync(t,n);if(i.success)return i.data;throw i.error})()}safeParseAsync(t,n){var r=this;return hn(function*(){const i={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:r._def.errorMap,parent:null,data:t,parsedType:pn(t)},o=r._parse({data:t,path:i.path,parent:i}),s=yield Ks(o)?o:Promise.resolve(o);return f_(i,s)})()}refine(t,n){const r=i=>"string"==typeof n||typeof n>"u"?{message:n}:"function"==typeof n?n(i):n;return this._refinement((i,o)=>{const s=t(i),a=()=>o.addIssue({code:w.custom,...r(i)});return typeof Promise<"u"&&s instanceof Promise?s.then(l=>!!l||(a(),!1)):!!s||(a(),!1)})}refinement(t,n){return this._refinement((r,i)=>!!t(r)||(i.addIssue("function"==typeof n?n(r,i):n),!1))}_refinement(t){return new Ln({schema:this,typeName:F.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Vn.create(this,this._def)}nullable(){return Ui.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Hi.create(this,this._def)}promise(){return ra.create(this,this._def)}or(t){return Wu.create([this,t],this._def)}and(t){return Yu.create(this,t,this._def)}transform(t){return new Ln({...G(this._def),schema:this,typeName:F.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n="function"==typeof t?t:()=>t;return new Ju({...G(this._def),innerType:this,defaultValue:n,typeName:F.ZodDefault})}brand(){return new D_({typeName:F.ZodBranded,type:this,...G(this._def)})}catch(t){const n="function"==typeof t?t:()=>t;return new v_({...G(this._def),innerType:this,catchValue:n,typeName:F.ZodCatch})}describe(t){return new(0,this.constructor)({...this._def,description:t})}pipe(t){return zi.create(this,t)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const wk=/^c[^\s-]{8,}$/i,Ck=/^[a-z][a-z0-9]*$/,Ek=/[0-9A-HJKMNP-TV-Z]{26}/,bk=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,Sk=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/,Ik=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,Mk=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,Tk=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,xk=e=>e.precision?e.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}Z$`):0===e.precision?e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function Ak(e,t){return!(("v4"!==t&&t||!Mk.test(e))&&("v6"!==t&&t||!Tk.test(e)))}let Qs=(()=>{class e extends W{constructor(){super(...arguments),this._regex=(n,r,i)=>this.refinement(o=>n.test(o),{validation:r,code:w.invalid_string,...x.errToObj(i)}),this.nonempty=n=>this.min(1,x.errToObj(n)),this.trim=()=>new e({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new e({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new e({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(n){if(this._def.coerce&&(n.data=String(n.data)),this._getType(n)!==b.string){const s=this._getOrReturnCtx(n);return M(s,{code:w.invalid_type,expected:b.string,received:s.parsedType}),$}const i=new $e;let o;for(const s of this._def.checks)if("min"===s.kind)n.data.lengths.value&&(o=this._getOrReturnCtx(n,o),M(o,{code:w.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),i.dirty());else if("length"===s.kind){const a=n.data.length>s.value,l=n.data.length"u"?null:n?.precision,offset:null!==(r=n?.offset)&&void 0!==r&&r,...x.errToObj(n?.message)})}regex(n,r){return this._addCheck({kind:"regex",regex:n,...x.errToObj(r)})}includes(n,r){return this._addCheck({kind:"includes",value:n,position:r?.position,...x.errToObj(r?.message)})}startsWith(n,r){return this._addCheck({kind:"startsWith",value:n,...x.errToObj(r)})}endsWith(n,r){return this._addCheck({kind:"endsWith",value:n,...x.errToObj(r)})}min(n,r){return this._addCheck({kind:"min",value:n,...x.errToObj(r)})}max(n,r){return this._addCheck({kind:"max",value:n,...x.errToObj(r)})}length(n,r){return this._addCheck({kind:"length",value:n,...x.errToObj(r)})}get isDatetime(){return!!this._def.checks.find(n=>"datetime"===n.kind)}get isEmail(){return!!this._def.checks.find(n=>"email"===n.kind)}get isURL(){return!!this._def.checks.find(n=>"url"===n.kind)}get isEmoji(){return!!this._def.checks.find(n=>"emoji"===n.kind)}get isUUID(){return!!this._def.checks.find(n=>"uuid"===n.kind)}get isCUID(){return!!this._def.checks.find(n=>"cuid"===n.kind)}get isCUID2(){return!!this._def.checks.find(n=>"cuid2"===n.kind)}get isULID(){return!!this._def.checks.find(n=>"ulid"===n.kind)}get isIP(){return!!this._def.checks.find(n=>"ip"===n.kind)}get minLength(){let n=null;for(const r of this._def.checks)"min"===r.kind&&(null===n||r.value>n)&&(n=r.value);return n}get maxLength(){let n=null;for(const r of this._def.checks)"max"===r.kind&&(null===n||r.value{var n;return new e({checks:[],typeName:F.ZodString,coerce:null!==(n=t?.coerce)&&void 0!==n&&n,...G(t)})},e})();function Rk(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,i=n>r?n:r;return parseInt(e.toFixed(i).replace(".",""))%parseInt(t.toFixed(i).replace(".",""))/Math.pow(10,i)}let Hu=(()=>{class e extends W{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(n){if(this._def.coerce&&(n.data=Number(n.data)),this._getType(n)!==b.number){const s=this._getOrReturnCtx(n);return M(s,{code:w.invalid_type,expected:b.number,received:s.parsedType}),$}let i;const o=new $e;for(const s of this._def.checks)"int"===s.kind?K.isInteger(n.data)||(i=this._getOrReturnCtx(n,i),M(i,{code:w.invalid_type,expected:"integer",received:"float",message:s.message}),o.dirty()):"min"===s.kind?(s.inclusive?n.datas.value:n.data>=s.value)&&(i=this._getOrReturnCtx(n,i),M(i,{code:w.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),o.dirty()):"multipleOf"===s.kind?0!==Rk(n.data,s.value)&&(i=this._getOrReturnCtx(n,i),M(i,{code:w.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):"finite"===s.kind?Number.isFinite(n.data)||(i=this._getOrReturnCtx(n,i),M(i,{code:w.not_finite,message:s.message}),o.dirty()):K.assertNever(s);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,x.toString(r))}gt(n,r){return this.setLimit("min",n,!1,x.toString(r))}lte(n,r){return this.setLimit("max",n,!0,x.toString(r))}lt(n,r){return this.setLimit("max",n,!1,x.toString(r))}setLimit(n,r,i,o){return new e({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:i,message:x.toString(o)}]})}_addCheck(n){return new e({...this._def,checks:[...this._def.checks,n]})}int(n){return this._addCheck({kind:"int",message:x.toString(n)})}positive(n){return this._addCheck({kind:"min",value:0,inclusive:!1,message:x.toString(n)})}negative(n){return this._addCheck({kind:"max",value:0,inclusive:!1,message:x.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:0,inclusive:!0,message:x.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:0,inclusive:!0,message:x.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:x.toString(r)})}finite(n){return this._addCheck({kind:"finite",message:x.toString(n)})}safe(n){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:x.toString(n)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:x.toString(n)})}get minValue(){let n=null;for(const r of this._def.checks)"min"===r.kind&&(null===n||r.value>n)&&(n=r.value);return n}get maxValue(){let n=null;for(const r of this._def.checks)"max"===r.kind&&(null===n||r.value"int"===n.kind||"multipleOf"===n.kind&&K.isInteger(n.value))}get isFinite(){let n=null,r=null;for(const i of this._def.checks){if("finite"===i.kind||"int"===i.kind||"multipleOf"===i.kind)return!0;"min"===i.kind?(null===r||i.value>r)&&(r=i.value):"max"===i.kind&&(null===n||i.valuenew e({checks:[],typeName:F.ZodNumber,coerce:t?.coerce||!1,...G(t)}),e})(),$u=(()=>{class e extends W{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(n){if(this._def.coerce&&(n.data=BigInt(n.data)),this._getType(n)!==b.bigint){const s=this._getOrReturnCtx(n);return M(s,{code:w.invalid_type,expected:b.bigint,received:s.parsedType}),$}let i;const o=new $e;for(const s of this._def.checks)"min"===s.kind?(s.inclusive?n.datas.value:n.data>=s.value)&&(i=this._getOrReturnCtx(n,i),M(i,{code:w.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),o.dirty()):"multipleOf"===s.kind?n.data%s.value!==BigInt(0)&&(i=this._getOrReturnCtx(n,i),M(i,{code:w.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):K.assertNever(s);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,x.toString(r))}gt(n,r){return this.setLimit("min",n,!1,x.toString(r))}lte(n,r){return this.setLimit("max",n,!0,x.toString(r))}lt(n,r){return this.setLimit("max",n,!1,x.toString(r))}setLimit(n,r,i,o){return new e({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:i,message:x.toString(o)}]})}_addCheck(n){return new e({...this._def,checks:[...this._def.checks,n]})}positive(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:x.toString(n)})}negative(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:x.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:x.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:x.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:x.toString(r)})}get minValue(){let n=null;for(const r of this._def.checks)"min"===r.kind&&(null===n||r.value>n)&&(n=r.value);return n}get maxValue(){let n=null;for(const r of this._def.checks)"max"===r.kind&&(null===n||r.value{var n;return new e({checks:[],typeName:F.ZodBigInt,coerce:null!==(n=t?.coerce)&&void 0!==n&&n,...G(t)})},e})(),Uu=(()=>{class e extends W{_parse(n){if(this._def.coerce&&(n.data=Boolean(n.data)),this._getType(n)!==b.boolean){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.boolean,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodBoolean,coerce:t?.coerce||!1,...G(t)}),e})(),zu=(()=>{class e extends W{_parse(n){if(this._def.coerce&&(n.data=new Date(n.data)),this._getType(n)!==b.date){const s=this._getOrReturnCtx(n);return M(s,{code:w.invalid_type,expected:b.date,received:s.parsedType}),$}if(isNaN(n.data.getTime()))return M(this._getOrReturnCtx(n),{code:w.invalid_date}),$;const i=new $e;let o;for(const s of this._def.checks)"min"===s.kind?n.data.getTime()s.value&&(o=this._getOrReturnCtx(n,o),M(o,{code:w.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),i.dirty()):K.assertNever(s);return{status:i.value,value:new Date(n.data.getTime())}}_addCheck(n){return new e({...this._def,checks:[...this._def.checks,n]})}min(n,r){return this._addCheck({kind:"min",value:n.getTime(),message:x.toString(r)})}max(n,r){return this._addCheck({kind:"max",value:n.getTime(),message:x.toString(r)})}get minDate(){let n=null;for(const r of this._def.checks)"min"===r.kind&&(null===n||r.value>n)&&(n=r.value);return null!=n?new Date(n):null}get maxDate(){let n=null;for(const r of this._def.checks)"max"===r.kind&&(null===n||r.valuenew e({checks:[],coerce:t?.coerce||!1,typeName:F.ZodDate,...G(t)}),e})(),h_=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.symbol){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.symbol,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodSymbol,...G(t)}),e})(),Gu=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.undefined){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.undefined,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodUndefined,...G(t)}),e})(),Zu=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.null){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.null,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodNull,...G(t)}),e})(),Js=(()=>{class e extends W{constructor(){super(...arguments),this._any=!0}_parse(n){return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodAny,...G(t)}),e})(),ji=(()=>{class e extends W{constructor(){super(...arguments),this._unknown=!0}_parse(n){return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodUnknown,...G(t)}),e})(),Fn=(()=>{class e extends W{_parse(n){const r=this._getOrReturnCtx(n);return M(r,{code:w.invalid_type,expected:b.never,received:r.parsedType}),$}}return e.create=t=>new e({typeName:F.ZodNever,...G(t)}),e})(),p_=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.undefined){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.void,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodVoid,...G(t)}),e})(),Hi=(()=>{class e extends W{_parse(n){const{ctx:r,status:i}=this._processInputParams(n),o=this._def;if(r.parsedType!==b.array)return M(r,{code:w.invalid_type,expected:b.array,received:r.parsedType}),$;if(null!==o.exactLength){const a=r.data.length>o.exactLength.value,l=r.data.lengtho.maxLength.value&&(M(r,{code:w.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),i.dirty()),r.common.async)return Promise.all([...r.data].map((a,l)=>o.type._parseAsync(new jt(r,a,r.path,l)))).then(a=>$e.mergeArray(i,a));const s=[...r.data].map((a,l)=>o.type._parseSync(new jt(r,a,r.path,l)));return $e.mergeArray(i,s)}get element(){return this._def.type}min(n,r){return new e({...this._def,minLength:{value:n,message:x.toString(r)}})}max(n,r){return new e({...this._def,maxLength:{value:n,message:x.toString(r)}})}length(n,r){return new e({...this._def,exactLength:{value:n,message:x.toString(r)}})}nonempty(n){return this.min(1,n)}}return e.create=(t,n)=>new e({type:t,minLength:null,maxLength:null,exactLength:null,typeName:F.ZodArray,...G(n)}),e})();function kr(e){if(e instanceof Or){const t={};for(const n in e.shape)t[n]=Vn.create(kr(e.shape[n]));return new Or({...e._def,shape:()=>t})}return e instanceof Hi?new Hi({...e._def,type:kr(e.element)}):e instanceof Vn?Vn.create(kr(e.unwrap())):e instanceof Ui?Ui.create(kr(e.unwrap())):e instanceof Pr?Pr.create(e.items.map(t=>kr(t))):e}let Or=(()=>{class e extends W{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;const n=this._def.shape(),r=K.objectKeys(n);return this._cached={shape:n,keys:r}}_parse(n){if(this._getType(n)!==b.object){const u=this._getOrReturnCtx(n);return M(u,{code:w.invalid_type,expected:b.object,received:u.parsedType}),$}const{status:i,ctx:o}=this._processInputParams(n),{shape:s,keys:a}=this._getCached(),l=[];if(!(this._def.catchall instanceof Fn&&"strip"===this._def.unknownKeys))for(const u in o.data)a.includes(u)||l.push(u);const c=[];for(const u of a)c.push({key:{status:"valid",value:u},value:s[u]._parse(new jt(o,o.data[u],o.path,u)),alwaysSet:u in o.data});if(this._def.catchall instanceof Fn){const u=this._def.unknownKeys;if("passthrough"===u)for(const d of l)c.push({key:{status:"valid",value:d},value:{status:"valid",value:o.data[d]}});else if("strict"===u)l.length>0&&(M(o,{code:w.unrecognized_keys,keys:l}),i.dirty());else if("strip"!==u)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const u=this._def.catchall;for(const d of l)c.push({key:{status:"valid",value:d},value:u._parse(new jt(o,o.data[d],o.path,d)),alwaysSet:d in o.data})}return o.common.async?Promise.resolve().then(hn(function*(){const u=[];for(const d of c){const f=yield d.key;u.push({key:f,value:yield d.value,alwaysSet:d.alwaysSet})}return u})).then(u=>$e.mergeObjectSync(i,u)):$e.mergeObjectSync(i,c)}get shape(){return this._def.shape()}strict(n){return new e({...this._def,unknownKeys:"strict",...void 0!==n?{errorMap:(r,i)=>{var o,s,a,l;const c=null!==(a=null===(s=(o=this._def).errorMap)||void 0===s?void 0:s.call(o,r,i).message)&&void 0!==a?a:i.defaultError;return"unrecognized_keys"===r.code?{message:null!==(l=x.errToObj(n).message)&&void 0!==l?l:c}:{message:c}}}:{}})}strip(){return new e({...this._def,unknownKeys:"strip"})}passthrough(){return new e({...this._def,unknownKeys:"passthrough"})}extend(n){return new e({...this._def,shape:()=>({...this._def.shape(),...n})})}merge(n){return new e({unknownKeys:n._def.unknownKeys,catchall:n._def.catchall,shape:()=>({...this._def.shape(),...n._def.shape()}),typeName:F.ZodObject})}setKey(n,r){return this.augment({[n]:r})}catchall(n){return new e({...this._def,catchall:n})}pick(n){const r={};return K.objectKeys(n).forEach(i=>{n[i]&&this.shape[i]&&(r[i]=this.shape[i])}),new e({...this._def,shape:()=>r})}omit(n){const r={};return K.objectKeys(this.shape).forEach(i=>{n[i]||(r[i]=this.shape[i])}),new e({...this._def,shape:()=>r})}deepPartial(){return kr(this)}partial(n){const r={};return K.objectKeys(this.shape).forEach(i=>{const o=this.shape[i];r[i]=n&&!n[i]?o:o.optional()}),new e({...this._def,shape:()=>r})}required(n){const r={};return K.objectKeys(this.shape).forEach(i=>{if(n&&!n[i])r[i]=this.shape[i];else{let s=this.shape[i];for(;s instanceof Vn;)s=s._def.innerType;r[i]=s}}),new e({...this._def,shape:()=>r})}keyof(){return y_(K.objectKeys(this.shape))}}return e.create=(t,n)=>new e({shape:()=>t,unknownKeys:"strip",catchall:Fn.create(),typeName:F.ZodObject,...G(n)}),e.strictCreate=(t,n)=>new e({shape:()=>t,unknownKeys:"strict",catchall:Fn.create(),typeName:F.ZodObject,...G(n)}),e.lazycreate=(t,n)=>new e({shape:t,unknownKeys:"strip",catchall:Fn.create(),typeName:F.ZodObject,...G(n)}),e})(),Wu=(()=>{class e extends W{_parse(n){const{ctx:r}=this._processInputParams(n),i=this._def.options;if(r.common.async)return Promise.all(i.map(function(){var s=hn(function*(a){const l={...r,common:{...r.common,issues:[]},parent:null};return{result:yield a._parseAsync({data:r.data,path:r.path,parent:l}),ctx:l}});return function(a){return s.apply(this,arguments)}}())).then(function o(s){for(const l of s)if("valid"===l.result.status)return l.result;for(const l of s)if("dirty"===l.result.status)return r.common.issues.push(...l.ctx.common.issues),l.result;const a=s.map(l=>new tn(l.ctx.common.issues));return M(r,{code:w.invalid_union,unionErrors:a}),$});{let s;const a=[];for(const c of i){const u={...r,common:{...r.common,issues:[]},parent:null},d=c._parseSync({data:r.data,path:r.path,parent:u});if("valid"===d.status)return d;"dirty"===d.status&&!s&&(s={result:d,ctx:u}),u.common.issues.length&&a.push(u.common.issues)}if(s)return r.common.issues.push(...s.ctx.common.issues),s.result;const l=a.map(c=>new tn(c));return M(r,{code:w.invalid_union,unionErrors:l}),$}}get options(){return this._def.options}}return e.create=(t,n)=>new e({options:t,typeName:F.ZodUnion,...G(n)}),e})();const ea=e=>e instanceof Xu?ea(e.schema):e instanceof Ln?ea(e.innerType()):e instanceof Ku?[e.value]:e instanceof na?e.options:e instanceof Qu?Object.keys(e.enum):e instanceof Ju?ea(e._def.innerType):e instanceof Gu?[void 0]:e instanceof Zu?[null]:null;class ta extends W{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==b.object)return M(n,{code:w.invalid_type,expected:b.object,received:n.parsedType}),$;const r=this.discriminator,o=this.optionsMap.get(n.data[r]);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(M(n,{code:w.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),$)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){const i=new Map;for(const o of n){const s=ea(o.shape[t]);if(!s)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const a of s){if(i.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);i.set(a,o)}}return new ta({typeName:F.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...G(r)})}}function qu(e,t){const n=pn(e),r=pn(t);if(e===t)return{valid:!0,data:e};if(n===b.object&&r===b.object){const i=K.objectKeys(t),o=K.objectKeys(e).filter(a=>-1!==i.indexOf(a)),s={...e,...t};for(const a of o){const l=qu(e[a],t[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}if(n===b.array&&r===b.array){if(e.length!==t.length)return{valid:!1};const i=[];for(let o=0;o{class e extends W{_parse(n){const{status:r,ctx:i}=this._processInputParams(n),o=(s,a)=>{if(Bu(s)||Bu(a))return $;const l=qu(s.value,a.value);return l.valid?((ju(s)||ju(a))&&r.dirty(),{status:r.value,value:l.data}):(M(i,{code:w.invalid_intersection_types}),$)};return i.common.async?Promise.all([this._def.left._parseAsync({data:i.data,path:i.path,parent:i}),this._def.right._parseAsync({data:i.data,path:i.path,parent:i})]).then(([s,a])=>o(s,a)):o(this._def.left._parseSync({data:i.data,path:i.path,parent:i}),this._def.right._parseSync({data:i.data,path:i.path,parent:i}))}}return e.create=(t,n,r)=>new e({left:t,right:n,typeName:F.ZodIntersection,...G(r)}),e})(),Pr=(()=>{class e extends W{_parse(n){const{status:r,ctx:i}=this._processInputParams(n);if(i.parsedType!==b.array)return M(i,{code:w.invalid_type,expected:b.array,received:i.parsedType}),$;if(i.data.lengththis._def.items.length&&(M(i,{code:w.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());const s=[...i.data].map((a,l)=>{const c=this._def.items[l]||this._def.rest;return c?c._parse(new jt(i,a,i.path,l)):null}).filter(a=>!!a);return i.common.async?Promise.all(s).then(a=>$e.mergeArray(r,a)):$e.mergeArray(r,s)}get items(){return this._def.items}rest(n){return new e({...this._def,rest:n})}}return e.create=(t,n)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new e({items:t,typeName:F.ZodTuple,rest:null,...G(n)})},e})();class $i extends W{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==b.object)return M(r,{code:w.invalid_type,expected:b.object,received:r.parsedType}),$;const i=[],o=this._def.keyType,s=this._def.valueType;for(const a in r.data)i.push({key:o._parse(new jt(r,a,r.path,a)),value:s._parse(new jt(r,r.data[a],r.path,a))});return r.common.async?$e.mergeObjectAsync(n,i):$e.mergeObjectSync(n,i)}get element(){return this._def.valueType}static create(t,n,r){return new $i(n instanceof W?{keyType:t,valueType:n,typeName:F.ZodRecord,...G(r)}:{keyType:Qs.create(),valueType:t,typeName:F.ZodRecord,...G(n)})}}let g_=(()=>{class e extends W{_parse(n){const{status:r,ctx:i}=this._processInputParams(n);if(i.parsedType!==b.map)return M(i,{code:w.invalid_type,expected:b.map,received:i.parsedType}),$;const o=this._def.keyType,s=this._def.valueType,a=[...i.data.entries()].map(([l,c],u)=>({key:o._parse(new jt(i,l,i.path,[u,"key"])),value:s._parse(new jt(i,c,i.path,[u,"value"]))}));if(i.common.async){const l=new Map;return Promise.resolve().then(hn(function*(){for(const c of a){const u=yield c.key,d=yield c.value;if("aborted"===u.status||"aborted"===d.status)return $;("dirty"===u.status||"dirty"===d.status)&&r.dirty(),l.set(u.value,d.value)}return{status:r.value,value:l}}))}{const l=new Map;for(const c of a){const u=c.key,d=c.value;if("aborted"===u.status||"aborted"===d.status)return $;("dirty"===u.status||"dirty"===d.status)&&r.dirty(),l.set(u.value,d.value)}return{status:r.value,value:l}}}}return e.create=(t,n,r)=>new e({valueType:n,keyType:t,typeName:F.ZodMap,...G(r)}),e})(),m_=(()=>{class e extends W{_parse(n){const{status:r,ctx:i}=this._processInputParams(n);if(i.parsedType!==b.set)return M(i,{code:w.invalid_type,expected:b.set,received:i.parsedType}),$;const o=this._def;null!==o.minSize&&i.data.sizeo.maxSize.value&&(M(i,{code:w.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty());const s=this._def.valueType;function a(c){const u=new Set;for(const d of c){if("aborted"===d.status)return $;"dirty"===d.status&&r.dirty(),u.add(d.value)}return{status:r.value,value:u}}const l=[...i.data.values()].map((c,u)=>s._parse(new jt(i,c,i.path,u)));return i.common.async?Promise.all(l).then(c=>a(c)):a(l)}min(n,r){return new e({...this._def,minSize:{value:n,message:x.toString(r)}})}max(n,r){return new e({...this._def,maxSize:{value:n,message:x.toString(r)}})}size(n,r){return this.min(n,r).max(n,r)}nonempty(n){return this.min(1,n)}}return e.create=(t,n)=>new e({valueType:t,minSize:null,maxSize:null,typeName:F.ZodSet,...G(n)}),e})();class Nr extends W{constructor(){super(...arguments),this.validate=this.implement}_parse(t){var n=this;const{ctx:r}=this._processInputParams(t);if(r.parsedType!==b.function)return M(r,{code:w.invalid_type,expected:b.function,received:r.parsedType}),$;function i(l,c){return Ys({data:l,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,qs(),Bi].filter(u=>!!u),issueData:{code:w.invalid_arguments,argumentsError:c}})}function o(l,c){return Ys({data:l,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,qs(),Bi].filter(u=>!!u),issueData:{code:w.invalid_return_type,returnTypeError:c}})}const s={errorMap:r.common.contextualErrorMap},a=r.data;return Xe(this._def.returns instanceof ra?hn(function*(...l){const c=new tn([]),u=yield n._def.args.parseAsync(l,s).catch(h=>{throw c.addIssue(i(l,h)),c}),d=yield a(...u);return yield n._def.returns._def.type.parseAsync(d,s).catch(h=>{throw c.addIssue(o(d,h)),c})}):(...l)=>{const c=this._def.args.safeParse(l,s);if(!c.success)throw new tn([i(l,c.error)]);const u=a(...c.data),d=this._def.returns.safeParse(u,s);if(!d.success)throw new tn([o(u,d.error)]);return d.data})}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new Nr({...this._def,args:Pr.create(t).rest(ji.create())})}returns(t){return new Nr({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new Nr({args:t||Pr.create([]).rest(ji.create()),returns:n||ji.create(),typeName:F.ZodFunction,...G(r)})}}let Xu=(()=>{class e extends W{get schema(){return this._def.getter()}_parse(n){const{ctx:r}=this._processInputParams(n);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}}return e.create=(t,n)=>new e({getter:t,typeName:F.ZodLazy,...G(n)}),e})(),Ku=(()=>{class e extends W{_parse(n){if(n.data!==this._def.value){const r=this._getOrReturnCtx(n);return M(r,{received:r.data,code:w.invalid_literal,expected:this._def.value}),$}return{status:"valid",value:n.data}}get value(){return this._def.value}}return e.create=(t,n)=>new e({value:t,typeName:F.ZodLiteral,...G(n)}),e})();function y_(e,t){return new na({values:e,typeName:F.ZodEnum,...G(t)})}let na=(()=>{class e extends W{_parse(n){if("string"!=typeof n.data){const r=this._getOrReturnCtx(n);return M(r,{expected:K.joinValues(this._def.values),received:r.parsedType,code:w.invalid_type}),$}if(-1===this._def.values.indexOf(n.data)){const r=this._getOrReturnCtx(n);return M(r,{received:r.data,code:w.invalid_enum_value,options:this._def.values}),$}return Xe(n.data)}get options(){return this._def.values}get enum(){const n={};for(const r of this._def.values)n[r]=r;return n}get Values(){const n={};for(const r of this._def.values)n[r]=r;return n}get Enum(){const n={};for(const r of this._def.values)n[r]=r;return n}extract(n){return e.create(n)}exclude(n){return e.create(this.options.filter(r=>!n.includes(r)))}}return e.create=y_,e})(),Qu=(()=>{class e extends W{_parse(n){const r=K.getValidEnumValues(this._def.values),i=this._getOrReturnCtx(n);if(i.parsedType!==b.string&&i.parsedType!==b.number){const o=K.objectValues(r);return M(i,{expected:K.joinValues(o),received:i.parsedType,code:w.invalid_type}),$}if(-1===r.indexOf(n.data)){const o=K.objectValues(r);return M(i,{received:i.data,code:w.invalid_enum_value,options:o}),$}return Xe(n.data)}get enum(){return this._def.values}}return e.create=(t,n)=>new e({values:t,typeName:F.ZodNativeEnum,...G(n)}),e})(),ra=(()=>{class e extends W{unwrap(){return this._def.type}_parse(n){const{ctx:r}=this._processInputParams(n);if(r.parsedType!==b.promise&&!1===r.common.async)return M(r,{code:w.invalid_type,expected:b.promise,received:r.parsedType}),$;const i=r.parsedType===b.promise?r.data:Promise.resolve(r.data);return Xe(i.then(o=>this._def.type.parseAsync(o,{path:r.path,errorMap:r.common.contextualErrorMap})))}}return e.create=(t,n)=>new e({type:t,typeName:F.ZodPromise,...G(n)}),e})(),Ln=(()=>{class e extends W{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===F.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(n){const{status:r,ctx:i}=this._processInputParams(n),o=this._def.effect||null;if("preprocess"===o.type){const a=o.transform(i.data);return i.common.async?Promise.resolve(a).then(l=>this._def.schema._parseAsync({data:l,path:i.path,parent:i})):this._def.schema._parseSync({data:a,path:i.path,parent:i})}const s={addIssue:a=>{M(i,a),a.fatal?r.abort():r.dirty()},get path(){return i.path}};if(s.addIssue=s.addIssue.bind(s),"refinement"===o.type){const a=l=>{const c=o.refinement(l,s);if(i.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return l};if(!1===i.common.async){const l=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});return"aborted"===l.status?$:("dirty"===l.status&&r.dirty(),a(l.value),{status:r.value,value:l.value})}return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(l=>"aborted"===l.status?$:("dirty"===l.status&&r.dirty(),a(l.value).then(()=>({status:r.value,value:l.value}))))}if("transform"===o.type){if(!1===i.common.async){const a=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});if(!Xs(a))return a;const l=o.transform(a.value,s);if(l instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:l}}return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(a=>Xs(a)?Promise.resolve(o.transform(a.value,s)).then(l=>({status:r.value,value:l})):a)}K.assertNever(o)}}return e.create=(t,n,r)=>new e({schema:t,typeName:F.ZodEffects,effect:n,...G(r)}),e.createWithPreprocess=(t,n,r)=>new e({schema:n,effect:{type:"preprocess",transform:t},typeName:F.ZodEffects,...G(r)}),e})(),Vn=(()=>{class e extends W{_parse(n){return this._getType(n)===b.undefined?Xe(void 0):this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}return e.create=(t,n)=>new e({innerType:t,typeName:F.ZodOptional,...G(n)}),e})(),Ui=(()=>{class e extends W{_parse(n){return this._getType(n)===b.null?Xe(null):this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}return e.create=(t,n)=>new e({innerType:t,typeName:F.ZodNullable,...G(n)}),e})(),Ju=(()=>{class e extends W{_parse(n){const{ctx:r}=this._processInputParams(n);let i=r.data;return r.parsedType===b.undefined&&(i=this._def.defaultValue()),this._def.innerType._parse({data:i,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}return e.create=(t,n)=>new e({innerType:t,typeName:F.ZodDefault,defaultValue:"function"==typeof n.default?n.default:()=>n.default,...G(n)}),e})(),v_=(()=>{class e extends W{_parse(n){const{ctx:r}=this._processInputParams(n),i={...r,common:{...r.common,issues:[]}},o=this._def.innerType._parse({data:i.data,path:i.path,parent:{...i}});return Ks(o)?o.then(s=>({status:"valid",value:"valid"===s.status?s.value:this._def.catchValue({get error(){return new tn(i.common.issues)},input:i.data})})):{status:"valid",value:"valid"===o.status?o.value:this._def.catchValue({get error(){return new tn(i.common.issues)},input:i.data})}}removeCatch(){return this._def.innerType}}return e.create=(t,n)=>new e({innerType:t,typeName:F.ZodCatch,catchValue:"function"==typeof n.catch?n.catch:()=>n.catch,...G(n)}),e})(),__=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.nan){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.nan,received:i.parsedType}),$}return{status:"valid",value:n.data}}}return e.create=t=>new e({typeName:F.ZodNaN,...G(t)}),e})();const kk=Symbol("zod_brand");class D_ extends W{_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.type._parse({data:n.data,path:n.path,parent:n})}unwrap(){return this._def.type}}class zi extends W{_parse(t){var n=this;const{status:r,ctx:i}=this._processInputParams(t);if(i.common.async)return function(){var s=hn(function*(){const a=yield n._def.in._parseAsync({data:i.data,path:i.path,parent:i});return"aborted"===a.status?$:"dirty"===a.status?(r.dirty(),d_(a.value)):n._def.out._parseAsync({data:a.value,path:i.path,parent:i})});return function(){return s.apply(this,arguments)}}()();{const o=this._def.in._parseSync({data:i.data,path:i.path,parent:i});return"aborted"===o.status?$:"dirty"===o.status?(r.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:i.path,parent:i})}}static create(t,n){return new zi({in:t,out:n,typeName:F.ZodPipeline})}}const w_=(e,t={},n)=>e?Js.create().superRefine((r,i)=>{var o,s;if(!e(r)){const a="function"==typeof t?t(r):"string"==typeof t?{message:t}:t,l=null===(s=null!==(o=a.fatal)&&void 0!==o?o:n)||void 0===s||s;i.addIssue({code:"custom",..."string"==typeof a?{message:a}:a,fatal:l})}}):Js.create(),Ok={object:Or.lazycreate};var F=(()=>(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline"}(F||(F={})),F))();const C_=Qs.create,E_=Hu.create,b_=Uu.create,S_=Ln.create;var L=Object.freeze({__proto__:null,defaultErrorMap:Bi,setErrorMap:function _k(e){u_=e},getErrorMap:qs,makeIssue:Ys,EMPTY_PATH:[],addIssueToContext:M,ParseStatus:$e,INVALID:$,DIRTY:d_,OK:Xe,isAborted:Bu,isDirty:ju,isValid:Xs,isAsync:Ks,get util(){return K},get objectUtil(){return Ws},ZodParsedType:b,getParsedType:pn,ZodType:W,ZodString:Qs,ZodNumber:Hu,ZodBigInt:$u,ZodBoolean:Uu,ZodDate:zu,ZodSymbol:h_,ZodUndefined:Gu,ZodNull:Zu,ZodAny:Js,ZodUnknown:ji,ZodNever:Fn,ZodVoid:p_,ZodArray:Hi,ZodObject:Or,ZodUnion:Wu,ZodDiscriminatedUnion:ta,ZodIntersection:Yu,ZodTuple:Pr,ZodRecord:$i,ZodMap:g_,ZodSet:m_,ZodFunction:Nr,ZodLazy:Xu,ZodLiteral:Ku,ZodEnum:na,ZodNativeEnum:Qu,ZodPromise:ra,ZodEffects:Ln,ZodTransformer:Ln,ZodOptional:Vn,ZodNullable:Ui,ZodDefault:Ju,ZodCatch:v_,ZodNaN:__,BRAND:kk,ZodBranded:D_,ZodPipeline:zi,custom:w_,Schema:W,ZodSchema:W,late:Ok,get ZodFirstPartyTypeKind(){return F},coerce:{string:e=>Qs.create({...e,coerce:!0}),number:e=>Hu.create({...e,coerce:!0}),boolean:e=>Uu.create({...e,coerce:!0}),bigint:e=>$u.create({...e,coerce:!0}),date:e=>zu.create({...e,coerce:!0})},any:Js.create,array:Hi.create,bigint:$u.create,boolean:b_,date:zu.create,discriminatedUnion:ta.create,effect:S_,enum:na.create,function:Nr.create,instanceof:(e,t={message:`Input not instance of ${e.name}`})=>w_(n=>n instanceof e,t),intersection:Yu.create,lazy:Xu.create,literal:Ku.create,map:g_.create,nan:__.create,nativeEnum:Qu.create,never:Fn.create,null:Zu.create,nullable:Ui.create,number:E_,object:Or.create,oboolean:()=>b_().optional(),onumber:()=>E_().optional(),optional:Vn.create,ostring:()=>C_().optional(),pipeline:zi.create,preprocess:Ln.createWithPreprocess,promise:ra.create,record:$i.create,set:m_.create,strictObject:Or.strictCreate,string:C_,symbol:h_.create,transformer:S_,tuple:Pr.create,undefined:Gu.create,union:Wu.create,unknown:ji.create,void:p_.create,NEVER:$,ZodIssueCode:w,quotelessJson:e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError:tn}),Gi=(()=>(function(e){e.Internal="internal",e.External="external"}(Gi||(Gi={})),Gi))();const dO=L.object({type:L.literal(Gi.External),url:L.string(),rel:L.string().default("noopener"),target:L.string()}).partial({rel:!0,target:!0}),fO=L.object({type:L.literal(Gi.Internal),commands:L.any().array(),extras:L.object({queryParams:L.record(L.any()).nullable(),fragment:L.string(),queryParamsHandling:L.enum(["merge","preserve",""]).nullable(),preserveFragment:L.boolean(),onSameUrlNavigation:L.literal("reload"),skipLocationChange:L.boolean(),replaceUrl:L.boolean()}).partial()}).partial({extras:!0}),hO=L.record(L.string().transform(e=>`LinkId:'${e}'`).brand("LinkId"),L.discriminatedUnion("type",[dO,fO]));function I_(e){return hO.keySchema.parse(e)}I_("@@__EMPTY__");const pO=Fr(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}),M_=L.string().url().brand("URL"),Bn=M_.brand("IRI");let T_=(()=>{var e;class t{}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac}),t})();const x_=new A("Endpoints"),mO=new A("Mapping of file formats",{providedIn:"root",factory:()=>({"image/svg+xml":"svg","image/png":"png","application/pdf":"ai"})}),A_=L.object({"@id":Bn}),ed=L.object({"@graph":A_.extend({"@id":Bn,label:L.string(),organ_id:L.string(),organ_label:L.string(),representation_of:L.string(),illustration_files:L.object({file:M_,file_format:L.string()}).array(),mapping:L.object({svg_id:L.string(),label:L.string(),representation_of:L.string()}).array()}).array()}),yO=L.object({"@graph":A_.extend({"@id":Bn,data_sources:L.object({label:L.string(),description:L.string(),link:L.string()}).array()}).array()}),vO=L.object({cell_source:Bn}),_O=L.object({"@graph":vO.extend({cell_source:Bn,biomarker_type:L.string(),summary:L.object({cell_id:Bn,cell_label:L.string(),gene_id:Bn,gene_label:L.string(),mean_expression:L.number(),count:L.number(),percentage:L.number(),dataset_count:L.number().optional()}).array()}).array()}),DO=I_("FTU"),td="https://purl.humanatlas.io/2d-ftu/";function wO(e){return e.slice(0,1).toUpperCase()+e.slice(1)}let CO=(()=>{var e;class t extends T_{constructor(){super(...arguments),this.http=Fe(ki),this.endpoints=Fe(x_),this.fileFormatMapping=Fe(mO),this.cache=new Map}getTissueLibrary(){return this.fetchData(void 0,this.endpoints.illustrations,ed).pipe(Me(r=>this.constructTissueLibrary(r["@graph"])))}getIllustrationUrl(r){return this.getDataFileReferences(r).pipe(Me(i=>this.findIllustrationUrl(i)))}getIllustrationMapping(r){return this.fetchData(r,this.endpoints.illustrations,ed).pipe(Me(i=>this.findGraphItem(i,r).mapping),Me(i=>i?this.toIllustrationMapping(i):[]))}getCellSummaries(r){return this.fetchData(r,this.endpoints.summaries,_O).pipe(Me(i=>this.findCellSummaries(i,r)),Me(i=>i?this.constructCellSummaries(i):[]))}getDataFileReferences(r){return this.fetchData(r,this.endpoints.illustrations,ed).pipe(Me(i=>this.findGraphItem(i,r).illustration_files),Me(i=>i?this.toDataFileReferences(i):[]))}getSourceReferences(r){return this.fetchData(r,this.endpoints.datasets,yO).pipe(Me(i=>this.findGraphItem(i,r).data_sources),Me(i=>i?this.toSourceReferences(i):[]))}fetchData(r,i,o){const{http:s,cachedIri:a,cache:l}=this;if(void 0!==r&&r!==a&&(this.cachedIri=r,this.cache=new Map),!l.has(i)){const u=s.get(i,{params:{id:r??""},responseType:"json"}).pipe(Me(d=>o.parse(d)));l.set(i,function gO(e,t){const n="object"==typeof t;return new Promise((r,i)=>{const o=new Hn({next:s=>{r(s),o.unsubscribe()},error:i,complete:()=>{n?r(t.defaultValue):i(new pO)}});e.subscribe(o)})}(u))}return Qi(l.get(i))}findGraphItem(r,i){const o=r["@graph"].find(({"@id":s})=>s===i);return void 0===o?(console.error(`Iri not found in data: ${i}`),{}):o}findCellSummaries(r,i){const o=r["@graph"].filter(({cell_source:s})=>s===i);return void 0===o||0==o.length?(console.error(`Cell Summary not found in data: ${i}`),[]):o}findIllustrationUrl(r){const{fileFormatMapping:i}=this,o=i["image/svg+xml"],s=r.find(({format:a})=>a===o);return void 0===s?(console.error("Illustration url not found"),""):s.url}toIllustrationMapping(r){const o=[];for(const{label:s,svg_id:a,representation_of:l}of r)o.push({label:s,id:a,ontologyId:l.slice("http://purl.obolibrary.org/obo/".length)});return o}toDataFileReferences(r){const{fileFormatMapping:i}=this,o=[];for(const{file:s,file_format:a}of r)a in i&&o.push({format:i[a],url:s});return o}toSourceReferences(r){const i=[];for(const{label:o,link:s,description:a}of r)i.push({label:o,link:s,title:a});return i}constructCellSummaries(r){const i=[];return r.forEach(o=>{const s=o.summary.map(c=>({id:c.cell_id,label:c.cell_label})),a=o.summary.map(c=>({id:c.gene_id,label:c.gene_label})),l=o.summary.map(c=>({cell:c.cell_id,biomarker:c.gene_id,count:c.count,percentage:c.percentage,meanExpression:c.mean_expression,dataset_count:c.dataset_count}));i.push({label:`${wO(o.biomarker_type)} Biomarkers`,cells:s,biomarkers:a,summaries:l}),i.push({label:"Protein Biomarkers",cells:[],biomarkers:[],summaries:[]}),i.push({label:"Lipid Biomarkers",cells:[],biomarkers:[],summaries:[]})}),i}constructTissueLibrary(r){const i={};for(const{"@id":o,label:s,organ_id:a,organ_label:l}of r){const c=td+a;i[c]??={id:c,label:l.toLowerCase(),parent:td,children:[]},i[o]={id:o,label:s.toLowerCase(),parent:c,children:[],link:DO},i[c]?.children.push(o)}return{root:td,nodes:i}}}return(e=t).\u0275fac=function(){let n;return function(i){return(n||(n=Za(e)))(i||e)}}(),e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),t})(),EO=(()=>{var e;class t{}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({providers:[{provide:l_,useExisting:yk},{provide:T_,useExisting:CO},{provide:x_,useValue:{illustrations:"assets/TEMP/2d-ftu-illustrations.jsonld",summaries:"assets/TEMP/ftu-cell-summaries.jsonld",datasets:"assets/TEMP/ftu-datasets.jsonld"}}]}),t})(),bO=(()=>{var e;class t{constructor(){this.http=Fe(ki),this.lookupSrc="",this.illustrationSrc="",this.highlightId="",this.nodeHovered=new ue,this.nodeClicked=new ue,this.url="",this.mapping=[],this.cdr=Fe(gs)}ngOnChanges(){"string"==typeof this.lookupSrc?this.getData(this.illustrationSrc,this.lookupSrc).subscribe():this.setUrlAndMapping(this.lookupSrc,this.illustrationSrc)}getData(r,i){return this.http.get(i,{responseType:"json"}).pipe(n_(o=>{this.setUrlAndMapping(o,r)}))}setUrlAndMapping(r,i){if("string"==typeof i){const o=r["@graph"].find(s=>s["@id"]===this.illustrationSrc);this.setUrlandMappingValues(o)}else this.setUrlandMappingValues(i)}setUrlandMappingValues(r){if(r){const i=r.illustration_files.find(o=>"image/svg+xml"===o.file_format);i&&(this.url=i.file,this.mapping=this.cellEntryToNodeEntry(r.mapping),this.cdr.markForCheck())}}cellEntryToNodeEntry(r){return r.map(i=>({label:i.label,id:i.svg_id,ontologyId:i.representation_of.split("/").slice(-1)[0]}))}}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275cmp=Un({type:e,selectors:[["hra-root-wc"]],inputs:{lookupSrc:"lookupSrc",illustrationSrc:"illustrationSrc",highlightId:"highlightId"},outputs:{nodeHovered:"nodeHovered",nodeClicked:"nodeClicked"},features:[Gt],decls:1,vars:3,consts:[[3,"url","mapping","highlightId","nodeHover","nodeClick"]],template:function(r,i){1&r&&(Mn(0,"hra-interactive-svg",0),es("nodeHover",function(s){return i.nodeHovered.emit(s)})("nodeClick",function(s){return i.nodeClicked.emit(s)}),Tn()),2&r&&ln("url",i.url)("mapping",i.mapping)("highlightId",i.highlightId)},dependencies:[a_],styles:["hra-interactive-svg[_ngcontent-%COMP%]{display:flex;height:100%;width:100%} .svg, svg{display:flex;width:100%;height:100%}"],changeDetection:0}),t})(),SO=(()=>{var e;class t{constructor(){this.injector=Fe(bt)}ngDoBootstrap(){const r=function jA(e,t){const n=function OA(e,t){return t.get(an).resolveComponentFactory(e).inputs}(e,t.injector),r=t.strategyFactory||new LA(e,t.injector),i=function kA(e){const t={};return e.forEach(({propName:n,templateName:r})=>{t[function MA(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}(r)]=n}),t}(n);class o extends BA{get ngElementStrategy(){if(!this._ngElementStrategy){const a=this._ngElementStrategy=r.create(this.injector||t.injector);n.forEach(({propName:l})=>{if(!this.hasOwnProperty(l))return;const c=this[l];delete this[l],a.setInputValue(l,c)})}return this._ngElementStrategy}constructor(a){super(),this.injector=a}attributeChangedCallback(a,l,c,u){this.ngElementStrategy.setInputValue(i[a],c)}connectedCallback(){let a=!1;this.ngElementStrategy.events&&(this.subscribeToEvents(),a=!0),this.ngElementStrategy.connect(this),a||this.subscribeToEvents()}disconnectedCallback(){this._ngElementStrategy&&this._ngElementStrategy.disconnect(),this.ngElementEventsSubscription&&(this.ngElementEventsSubscription.unsubscribe(),this.ngElementEventsSubscription=null)}subscribeToEvents(){this.ngElementEventsSubscription=this.ngElementStrategy.events.subscribe(a=>{const l=new CustomEvent(a.name,{detail:a.value});this.dispatchEvent(l)})}}return o.observedAttributes=Object.keys(i),n.forEach(({propName:s})=>{Object.defineProperty(o.prototype,s,{get(){return this.ngElementStrategy.getInputValue(s)},set(a){this.ngElementStrategy.setInputValue(s,a)},configurable:!0,enumerable:!0})}),o}(bO,{injector:this.injector});customElements.define("hra-illustration-wc",r)}}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({imports:[Wx,a_,bA,EO]}),t})();Zx().bootstrapModule(SO).catch(e=>console.error(e))}},X=>{X(X.s=654)}]); \ No newline at end of file +"use strict";(self.webpackChunkmedical_illustration=self.webpackChunkmedical_illustration||[]).push([[179],{654:()=>{function X(e){return"function"==typeof e}function Fr(e){const n=e(r=>{Error.call(r),r.stack=(new Error).stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}const Zi=Fr(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription:\n${n.map((r,i)=>`${i+1}) ${r.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=n});function jn(e,t){if(e){const n=e.indexOf(t);0<=n&&e.splice(n,1)}}class Ie{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;const{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(const o of n)o.remove(this);else n.remove(this);const{initialTeardown:r}=this;if(X(r))try{r()}catch(o){t=o instanceof Zi?o.errors:[o]}const{_finalizers:i}=this;if(i){this._finalizers=null;for(const o of i)try{id(o)}catch(s){t=t??[],s instanceof Zi?t=[...t,...s.errors]:t.push(s)}}if(t)throw new Zi(t)}}add(t){var n;if(t&&t!==this)if(this.closed)id(t);else{if(t instanceof Ie){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(t)}}_hasParent(t){const{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){const{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){const{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&jn(n,t)}remove(t){const{_finalizers:n}=this;n&&jn(n,t),t instanceof Ie&&t._removeParent(this)}}Ie.EMPTY=(()=>{const e=new Ie;return e.closed=!0,e})();const nd=Ie.EMPTY;function rd(e){return e instanceof Ie||e&&"closed"in e&&X(e.remove)&&X(e.add)&&X(e.unsubscribe)}function id(e){X(e)?e():e.unsubscribe()}const gn={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Wi={setTimeout(e,t,...n){const{delegate:r}=Wi;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){const{delegate:t}=Wi;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function od(e){Wi.setTimeout(()=>{const{onUnhandledError:t}=gn;if(!t)throw e;t(e)})}function qi(){}const k_=ia("C",void 0,void 0);function ia(e,t,n){return{kind:e,value:t,error:n}}let mn=null;function Yi(e){if(gn.useDeprecatedSynchronousErrorHandling){const t=!mn;if(t&&(mn={errorThrown:!1,error:null}),e(),t){const{errorThrown:n,error:r}=mn;if(mn=null,n)throw r}}else e()}class oa extends Ie{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,rd(t)&&t.add(this)):this.destination=B_}static create(t,n,r){return new Hn(t,n,r)}next(t){this.isStopped?aa(function P_(e){return ia("N",e,void 0)}(t),this):this._next(t)}error(t){this.isStopped?aa(function O_(e){return ia("E",void 0,e)}(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?aa(k_,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const F_=Function.prototype.bind;function sa(e,t){return F_.call(e,t)}class L_{constructor(t){this.partialObserver=t}next(t){const{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){Xi(r)}}error(t){const{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){Xi(r)}else Xi(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){Xi(n)}}}class Hn extends oa{constructor(t,n,r){let i;if(super(),X(t)||!t)i={next:t??void 0,error:n??void 0,complete:r??void 0};else{let o;this&&gn.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=()=>this.unsubscribe(),i={next:t.next&&sa(t.next,o),error:t.error&&sa(t.error,o),complete:t.complete&&sa(t.complete,o)}):i=t}this.destination=new L_(i)}}function Xi(e){gn.useDeprecatedSynchronousErrorHandling?function N_(e){gn.useDeprecatedSynchronousErrorHandling&&mn&&(mn.errorThrown=!0,mn.error=e)}(e):od(e)}function aa(e,t){const{onStoppedNotification:n}=gn;n&&Wi.setTimeout(()=>n(e,t))}const B_={closed:!0,next:qi,error:function V_(e){throw e},complete:qi},la="function"==typeof Symbol&&Symbol.observable||"@@observable";function ca(e){return e}let fe=(()=>{class e{constructor(n){n&&(this._subscribe=n)}lift(n){const r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,i){const o=function H_(e){return e&&e instanceof oa||function j_(e){return e&&X(e.next)&&X(e.error)&&X(e.complete)}(e)&&rd(e)}(n)?n:new Hn(n,r,i);return Yi(()=>{const{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}forEach(n,r){return new(r=ad(r))((i,o)=>{const s=new Hn({next:a=>{try{n(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:i});this.subscribe(s)})}_subscribe(n){var r;return null===(r=this.source)||void 0===r?void 0:r.subscribe(n)}[la](){return this}pipe(...n){return function sd(e){return 0===e.length?ca:1===e.length?e[0]:function(n){return e.reduce((r,i)=>i(r),n)}}(n)(this)}toPromise(n){return new(n=ad(n))((r,i)=>{let o;this.subscribe(s=>o=s,s=>i(s),()=>r(o))})}}return e.create=t=>new e(t),e})();function ad(e){var t;return null!==(t=e??gn.Promise)&&void 0!==t?t:Promise}const $_=Fr(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let Re=(()=>{class e extends fe{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(n){const r=new ld(this,this);return r.operator=n,r}_throwIfClosed(){if(this.closed)throw new $_}next(n){Yi(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const r of this.currentObservers)r.next(n)}})}error(n){Yi(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=n;const{observers:r}=this;for(;r.length;)r.shift().error(n)}})}complete(){Yi(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:n}=this;for(;n.length;)n.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var n;return(null===(n=this.observers)||void 0===n?void 0:n.length)>0}_trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}_subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)}_innerSubscribe(n){const{hasError:r,isStopped:i,observers:o}=this;return r||i?nd:(this.currentObservers=null,o.push(n),new Ie(()=>{this.currentObservers=null,jn(o,n)}))}_checkFinalizedStatuses(n){const{hasError:r,thrownError:i,isStopped:o}=this;r?n.error(i):o&&n.complete()}asObservable(){const n=new fe;return n.source=this,n}}return e.create=(t,n)=>new ld(t,n),e})();class ld extends Re{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;null===(r=null===(n=this.destination)||void 0===n?void 0:n.next)||void 0===r||r.call(n,t)}error(t){var n,r;null===(r=null===(n=this.destination)||void 0===n?void 0:n.error)||void 0===r||r.call(n,t)}complete(){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===n||n.call(t)}_subscribe(t){var n,r;return null!==(r=null===(n=this.source)||void 0===n?void 0:n.subscribe(t))&&void 0!==r?r:nd}}function Ue(e){return t=>{if(function U_(e){return X(e?.lift)}(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function Ne(e,t,n,r,i){return new z_(e,t,n,r,i)}class z_ extends oa{constructor(t,n,r,i,o,s){super(t),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=n?function(a){try{n(a)}catch(l){t.error(l)}}:super._next,this._error=i?function(a){try{i(a)}catch(l){t.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(a){t.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:n}=this;super.unsubscribe(),!n&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}}}function Me(e,t){return Ue((n,r)=>{let i=0;n.subscribe(Ne(r,o=>{r.next(e.call(t,o,i++))}))})}function yn(e){return this instanceof yn?(this.v=e,this):new yn(e)}function q_(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,t=e[Symbol.asyncIterator];return t?t.call(e):(e=function dd(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(o){n[o]=e[o]&&function(s){return new Promise(function(a,l){!function i(o,s,a,l){Promise.resolve(l).then(function(c){o({value:c,done:a})},s)}(a,l,(s=e[o](s)).done,s.value)})}}}const da=e=>e&&"number"==typeof e.length&&"function"!=typeof e;function fd(e){return X(e?.then)}function hd(e){return X(e[la])}function pd(e){return Symbol.asyncIterator&&X(e?.[Symbol.asyncIterator])}function gd(e){return new TypeError(`You provided ${null!==e&&"object"==typeof e?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const md=function X_(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function yd(e){return X(e?.[md])}function vd(e){return function W_(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,r=n.apply(e,t||[]),o=[];return i={},s("next"),s("throw"),s("return"),i[Symbol.asyncIterator]=function(){return this},i;function s(f){r[f]&&(i[f]=function(h){return new Promise(function(p,g){o.push([f,h,p,g])>1||a(f,h)})})}function a(f,h){try{!function l(f){f.value instanceof yn?Promise.resolve(f.value.v).then(c,u):d(o[0][2],f)}(r[f](h))}catch(p){d(o[0][3],p)}}function c(f){a("next",f)}function u(f){a("throw",f)}function d(f,h){f(h),o.shift(),o.length&&a(o[0][0],o[0][1])}}(this,arguments,function*(){const n=e.getReader();try{for(;;){const{value:r,done:i}=yield yn(n.read());if(i)return yield yn(void 0);yield yield yn(r)}}finally{n.releaseLock()}})}function _d(e){return X(e?.getReader)}function Ke(e){if(e instanceof fe)return e;if(null!=e){if(hd(e))return function K_(e){return new fe(t=>{const n=e[la]();if(X(n.subscribe))return n.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(e);if(da(e))return function Q_(e){return new fe(t=>{for(let n=0;n{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,od)})}(e);if(pd(e))return Dd(e);if(yd(e))return function eD(e){return new fe(t=>{for(const n of e)if(t.next(n),t.closed)return;t.complete()})}(e);if(_d(e))return function tD(e){return Dd(vd(e))}(e)}throw gd(e)}function Dd(e){return new fe(t=>{(function nD(e,t){var n,r,i,o;return function G_(e,t,n,r){return new(n||(n=Promise))(function(o,s){function a(u){try{c(r.next(u))}catch(d){s(d)}}function l(u){try{c(r.throw(u))}catch(d){s(d)}}function c(u){u.done?o(u.value):function i(o){return o instanceof n?o:new n(function(s){s(o)})}(u.value).then(a,l)}c((r=r.apply(e,t||[])).next())})}(this,void 0,void 0,function*(){try{for(n=q_(e);!(r=yield n.next()).done;)if(t.next(r.value),t.closed)return}catch(s){i={error:s}}finally{try{r&&!r.done&&(o=n.return)&&(yield o.call(n))}finally{if(i)throw i.error}}t.complete()})})(e,t).catch(n=>t.error(n))})}function nn(e,t,n,r=0,i=!1){const o=t.schedule(function(){n(),i?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(o),!i)return o}function Lr(e,t,n=1/0){return X(t)?Lr((r,i)=>Me((o,s)=>t(r,o,i,s))(Ke(e(r,i))),n):("number"==typeof t&&(n=t),Ue((r,i)=>function rD(e,t,n,r,i,o,s,a){const l=[];let c=0,u=0,d=!1;const f=()=>{d&&!l.length&&!c&&t.complete()},h=g=>c{o&&t.next(g),c++;let y=!1;Ke(n(g,u++)).subscribe(Ne(t,v=>{i?.(v),o?h(v):t.next(v)},()=>{y=!0},void 0,()=>{if(y)try{for(c--;l.length&&cp(v)):p(v)}f()}catch(v){t.error(v)}}))};return e.subscribe(Ne(t,h,()=>{d=!0,f()})),()=>{a?.()}}(r,i,e,n)))}function wd(e=1/0){return Lr(ca,e)}const fa=new fe(e=>e.complete());function Cd(e){return e&&X(e.schedule)}function ha(e){return e[e.length-1]}function Ki(e){return Cd(ha(e))?e.pop():void 0}function Ed(e,t=0){return Ue((n,r)=>{n.subscribe(Ne(r,i=>nn(r,e,()=>r.next(i),t),()=>nn(r,e,()=>r.complete(),t),i=>nn(r,e,()=>r.error(i),t)))})}function bd(e,t=0){return Ue((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function Sd(e,t){if(!e)throw new Error("Iterable cannot be null");return new fe(n=>{nn(n,t,()=>{const r=e[Symbol.asyncIterator]();nn(n,t,()=>{r.next().then(i=>{i.done?n.complete():n.next(i.value)})},0,!0)})})}function Qi(e,t){return t?function dD(e,t){if(null!=e){if(hd(e))return function sD(e,t){return Ke(e).pipe(bd(t),Ed(t))}(e,t);if(da(e))return function lD(e,t){return new fe(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}(e,t);if(fd(e))return function aD(e,t){return Ke(e).pipe(bd(t),Ed(t))}(e,t);if(pd(e))return Sd(e,t);if(yd(e))return function cD(e,t){return new fe(n=>{let r;return nn(n,t,()=>{r=e[md](),nn(n,t,()=>{let i,o;try{({value:i,done:o}=r.next())}catch(s){return void n.error(s)}o?n.complete():n.next(i)},0,!0)}),()=>X(r?.return)&&r.return()})}(e,t);if(_d(e))return function uD(e,t){return Sd(vd(e),t)}(e,t)}throw gd(e)}(e,t):Ke(e)}function pa(...e){const t=Ki(e),n=function oD(e,t){return"number"==typeof ha(e)?e.pop():t}(e,1/0),r=e;return r.length?1===r.length?Ke(r[0]):wd(n)(Qi(r,t)):fa}function Id(e={}){const{connector:t=(()=>new Re),resetOnError:n=!0,resetOnComplete:r=!0,resetOnRefCountZero:i=!0}=e;return o=>{let s,a,l,c=0,u=!1,d=!1;const f=()=>{a?.unsubscribe(),a=void 0},h=()=>{f(),s=l=void 0,u=d=!1},p=()=>{const g=s;h(),g?.unsubscribe()};return Ue((g,y)=>{c++,!d&&!u&&f();const v=l=l??t();y.add(()=>{c--,0===c&&!d&&!u&&(a=ga(p,i))}),v.subscribe(y),!s&&c>0&&(s=new Hn({next:S=>v.next(S),error:S=>{d=!0,f(),a=ga(h,n,S),v.error(S)},complete:()=>{u=!0,f(),a=ga(h,r),v.complete()}}),Ke(g).subscribe(s))})(o)}}function ga(e,t,...n){if(!0===t)return void e();if(!1===t)return;const r=new Hn({next:()=>{r.unsubscribe(),e()}});return Ke(t(...n)).subscribe(r)}function ne(e){for(let t in e)if(e[t]===ne)return t;throw Error("Could not find renamed property on target object.")}function ma(e,t){for(const n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function ie(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(ie).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function ya(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}const fD=ne({__forward_ref__:ne});function va(e){return e.__forward_ref__=va,e.toString=function(){return ie(this())},e}function O(e){return _a(e)?e():e}function _a(e){return"function"==typeof e&&e.hasOwnProperty(fD)&&e.__forward_ref__===va}function Da(e){return e&&!!e.\u0275providers}class T extends Error{constructor(t,n){super(Ji(t,n)),this.code=t}}function Ji(e,t){return`NG0${Math.abs(e)}${t?": "+t.trim():""}`}function B(e){return"string"==typeof e?e:null==e?"":String(e)}function eo(e,t){throw new T(-201,!1)}function ft(e,t){null==e&&function ee(e,t,n,r){throw new Error(`ASSERTION ERROR: ${e}`+(null==r?"":` [Expected=> ${n} ${r} ${t} <=Actual]`))}(t,e,null,"!=")}function P(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Qe(e){return{providers:e.providers||[],imports:e.imports||[]}}function to(e){return Td(e,no)||Td(e,Ad)}function Td(e,t){return e.hasOwnProperty(t)?e[t]:null}function xd(e){return e&&(e.hasOwnProperty(wa)||e.hasOwnProperty(DD))?e[wa]:null}const no=ne({\u0275prov:ne}),wa=ne({\u0275inj:ne}),Ad=ne({ngInjectableDef:ne}),DD=ne({ngInjectorDef:ne});var V=(()=>((V=V||{})[V.Default=0]="Default",V[V.Host=1]="Host",V[V.Self=2]="Self",V[V.SkipSelf=4]="SkipSelf",V[V.Optional=8]="Optional",V))();let Ca;function ht(e){const t=Ca;return Ca=e,t}function Rd(e,t,n){const r=to(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&V.Optional?null:void 0!==t?t:void eo(ie(e))}const ae=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),Vr={},Ea="__NG_DI_FLAG__",ro="ngTempTokenPath",CD="ngTokenPath",ED=/\n/gm,bD="\u0275",kd="__source";let Br;function $n(e){const t=Br;return Br=e,t}function SD(e,t=V.Default){if(void 0===Br)throw new T(-203,!1);return null===Br?Rd(e,void 0,t):Br.get(e,t&V.Optional?null:void 0,t)}function D(e,t=V.Default){return(function wD(){return Ca}()||SD)(O(e),t)}function Fe(e,t=V.Default){return D(e,io(t))}function io(e){return typeof e>"u"||"number"==typeof e?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function ba(e){const t=[];for(let n=0;n((At=At||{})[At.OnPush=0]="OnPush",At[At.Default=1]="Default",At))(),Rt=(()=>{return(e=Rt||(Rt={}))[e.Emulated=0]="Emulated",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",Rt;var e})();const $t={},Q=[],oo=ne({\u0275cmp:ne}),Sa=ne({\u0275dir:ne}),Ia=ne({\u0275pipe:ne}),Pd=ne({\u0275mod:ne}),Ut=ne({\u0275fac:ne}),Hr=ne({__NG_ELEMENT_ID__:ne});let xD=0;function Un(e){return Ht(()=>{const t=Fd(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===At.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:null,data:e.data||{},encapsulation:e.encapsulation||Rt.Emulated,id:"c"+xD++,styles:e.styles||Q,_:null,schemas:e.schemas||null,tView:null};Ld(n);const r=e.dependencies;return n.directiveDefs=so(r,!1),n.pipeDefs=so(r,!0),n})}function RD(e){return te(e)||Le(e)}function kD(e){return null!==e}function ot(e){return Ht(()=>({type:e.type,bootstrap:e.bootstrap||Q,declarations:e.declarations||Q,imports:e.imports||Q,exports:e.exports||Q,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Nd(e,t){if(null==e)return $t;const n={};for(const r in e)if(e.hasOwnProperty(r)){let i=e[r],o=i;Array.isArray(i)&&(o=i[1],i=i[0]),n[i]=r,t&&(t[i]=o)}return n}function ke(e){return Ht(()=>{const t=Fd(e);return Ld(t),t})}function Je(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function te(e){return e[oo]||null}function Le(e){return e[Sa]||null}function et(e){return e[Ia]||null}function Fd(e){const t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,exportAs:e.exportAs||null,standalone:!0===e.standalone,selectors:e.selectors||Q,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Nd(e.inputs,t),outputs:Nd(e.outputs)}}function Ld(e){e.features?.forEach(t=>t(e))}function so(e,t){if(!e)return null;const n=t?et:RD;return()=>("function"==typeof e?e():e).map(r=>n(r)).filter(kD)}const zt=0,I=1,U=2,he=3,Dt=4,vn=5,Ve=6,zn=7,me=8,ao=9,lo=10,Z=11,Ma=12,Ur=13,Vd=14,Gn=15,Be=16,zr=17,Zn=18,kt=19,Gr=20,Bd=21,le=22,Ta=1,jd=2,co=7,uo=8,Wn=9,ze=10;function at(e){return Array.isArray(e)&&"object"==typeof e[Ta]}function wt(e){return Array.isArray(e)&&!0===e[Ta]}function xa(e){return 0!=(4&e.flags)}function Zr(e){return e.componentOffset>-1}function fo(e){return 1==(1&e.flags)}function Ct(e){return!!e.template}function PD(e){return 0!=(256&e[U])}function _n(e,t){return e.hasOwnProperty(Ut)?e[Ut]:null}class Ud{constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}}function Gt(){return zd}function zd(e){return e.type.prototype.ngOnChanges&&(e.setInput=VD),LD}function LD(){const e=Zd(this),t=e?.current;if(t){const n=e.previous;if(n===$t)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function VD(e,t,n,r){const i=this.declaredInputs[n],o=Zd(e)||function BD(e,t){return e[Gd]=t}(e,{previous:$t,current:null}),s=o.current||(o.current={}),a=o.previous,l=a[i];s[i]=new Ud(l&&l.currentValue,t,a===$t),e[r]=t}Gt.ngInherit=!0;const Gd="__ngSimpleChanges__";function Zd(e){return e[Gd]||null}const pt=function(e,t,n){};function Oe(e){for(;Array.isArray(e);)e=e[zt];return e}function ho(e,t){return Oe(t[e])}function lt(e,t){return Oe(t[e.index])}function Yd(e,t){return e.data[t]}function ct(e,t){const n=t[e];return at(n)?n:n[zt]}function po(e){return 64==(64&e[U])}function on(e,t){return null==t?null:e[t]}function Xd(e){e[Zn]=0}function Ra(e,t){e[vn]+=t;let n=e,r=e[he];for(;null!==r&&(1===t&&1===n[vn]||-1===t&&0===n[vn]);)r[vn]+=t,n=r,r=r[he]}const j={lFrame:uf(null),bindingsEnabled:!0};function Qd(){return j.bindingsEnabled}function _(){return j.lFrame.lView}function Y(){return j.lFrame.tView}function Pe(){let e=tf();for(;null!==e&&64===e.type;)e=e.parent;return e}function tf(){return j.lFrame.currentTNode}function Ot(e,t){const n=j.lFrame;n.currentTNode=e,n.isParent=t}function ka(){return j.lFrame.isParent}function Oa(){j.lFrame.isParent=!1}function Yn(){return j.lFrame.bindingIndex++}function QD(e,t){const n=j.lFrame;n.bindingIndex=n.bindingRootIndex=e,Pa(t)}function Pa(e){j.lFrame.currentDirectiveIndex=e}function af(){return j.lFrame.currentQueryIndex}function Fa(e){j.lFrame.currentQueryIndex=e}function ew(e){const t=e[I];return 2===t.type?t.declTNode:1===t.type?e[Ve]:null}function lf(e,t,n){if(n&V.SkipSelf){let i=t,o=e;for(;!(i=i.parent,null!==i||n&V.Host||(i=ew(o),null===i||(o=o[Gn],10&i.type))););if(null===i)return!1;t=i,e=o}const r=j.lFrame=cf();return r.currentTNode=t,r.lView=e,!0}function La(e){const t=cf(),n=e[I];j.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function cf(){const e=j.lFrame,t=null===e?null:e.child;return null===t?uf(e):t}function uf(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function df(){const e=j.lFrame;return j.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const ff=df;function Va(){const e=df();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Ze(){return j.lFrame.selectedIndex}function Dn(e){j.lFrame.selectedIndex=e}function go(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n=r)break}else t[l]<0&&(e[Zn]+=65536),(a>11>16&&(3&e[U])===t){e[U]+=2048,pt(4,a,o);try{o.call(a)}finally{pt(5,a,o)}}}else{pt(4,a,o);try{o.call(a)}finally{pt(5,a,o)}}}const Xn=-1;class qr{constructor(t,n,r){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=r}}function Ha(e,t,n){let r=0;for(;rt){s=o-1;break}}}for(;o>16}(e),r=t;for(;n>0;)r=r[Gn],n--;return r}let $a=!0;function Do(e){const t=$a;return $a=e,t}const vf=255,_f=5;let pw=0;const Pt={};function wo(e,t){const n=Df(e,t);if(-1!==n)return n;const r=t[I];r.firstCreatePass&&(e.injectorIndex=t.length,Ua(r.data,e),Ua(t,null),Ua(r.blueprint,null));const i=za(e,t),o=e.injectorIndex;if(yf(i)){const s=vo(i),a=_o(i,t),l=a[I].data;for(let c=0;c<8;c++)t[o+c]=a[s+c]|l[s+c]}return t[o+8]=i,o}function Ua(e,t){e.push(0,0,0,0,0,0,0,0,t)}function Df(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function za(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;null!==i;){if(r=Mf(i),null===r)return Xn;if(n++,i=i[Gn],-1!==r.injectorIndex)return r.injectorIndex|n<<16}return Xn}function Ga(e,t,n){!function gw(e,t,n){let r;"string"==typeof n?r=n.charCodeAt(0)||0:n.hasOwnProperty(Hr)&&(r=n[Hr]),null==r&&(r=n[Hr]=pw++);const i=r&vf;t.data[e+(i>>_f)]|=1<=0?t&vf:_w:t}(n);if("function"==typeof o){if(!lf(t,e,r))return r&V.Host?wf(i,0,r):Cf(t,n,r,i);try{const s=o(r);if(null!=s||r&V.Optional)return s;eo()}finally{ff()}}else if("number"==typeof o){let s=null,a=Df(e,t),l=Xn,c=r&V.Host?t[Be][Ve]:null;for((-1===a||r&V.SkipSelf)&&(l=-1===a?za(e,t):t[a+8],l!==Xn&&If(r,!1)?(s=t[I],a=vo(l),t=_o(l,t)):a=-1);-1!==a;){const u=t[I];if(Sf(o,a,u.data)){const d=yw(a,t,n,s,r,c);if(d!==Pt)return d}l=t[a+8],l!==Xn&&If(r,t[I].data[a+8]===c)&&Sf(o,a,t)?(s=u,a=vo(l),t=_o(l,t)):a=-1}}return i}function yw(e,t,n,r,i,o){const s=t[I],a=s.data[e+8],u=Co(a,s,n,null==r?Zr(a)&&$a:r!=s&&0!=(3&a.type),i&V.Host&&o===a);return null!==u?wn(t,s,u,a):Pt}function Co(e,t,n,r,i){const o=e.providerIndexes,s=t.data,a=1048575&o,l=e.directiveStart,u=o>>20,f=i?a+u:e.directiveEnd;for(let h=r?a:a+u;h=l&&p.type===n)return h}if(i){const h=s[l];if(h&&Ct(h)&&h.type===n)return l}return null}function wn(e,t,n,r){let i=e[n];const o=t.data;if(function uw(e){return e instanceof qr}(i)){const s=i;s.resolving&&function hD(e,t){const n=t?`. Dependency path: ${t.join(" > ")} > ${e}`:"";throw new T(-200,`Circular dependency in DI detected for ${e}${n}`)}(function J(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():B(e)}(o[n]));const a=Do(s.canSeeViewProviders);s.resolving=!0;const l=s.injectImpl?ht(s.injectImpl):null;lf(e,r,V.Default);try{i=e[n]=s.factory(void 0,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&function lw(e,t,n){const{ngOnChanges:r,ngOnInit:i,ngDoCheck:o}=t.type.prototype;if(r){const s=zd(t);(n.preOrderHooks??(n.preOrderHooks=[])).push(e,s),(n.preOrderCheckHooks??(n.preOrderCheckHooks=[])).push(e,s)}i&&(n.preOrderHooks??(n.preOrderHooks=[])).push(0-e,i),o&&((n.preOrderHooks??(n.preOrderHooks=[])).push(e,o),(n.preOrderCheckHooks??(n.preOrderCheckHooks=[])).push(e,o))}(n,o[n],t)}finally{null!==l&&ht(l),Do(a),s.resolving=!1,ff()}}return i}function Sf(e,t,n){return!!(n[t+(e>>_f)]&1<{const t=e.prototype.constructor,n=t[Ut]||Wa(t),r=Object.prototype;let i=Object.getPrototypeOf(e.prototype).constructor;for(;i&&i!==r;){const o=i[Ut]||Wa(i);if(o&&o!==n)return o;i=Object.getPrototypeOf(i)}return o=>new o})}function Wa(e){return _a(e)?()=>{const t=Wa(O(e));return t&&t()}:_n(e)}function Mf(e){const t=e[I],n=t.type;return 2===n?t.declTNode:1===n?e[Ve]:null}const Jn="__parameters__";function tr(e,t,n){return Ht(()=>{const r=function Ya(e){return function(...n){if(e){const r=e(...n);for(const i in r)this[i]=r[i]}}}(t);function i(...o){if(this instanceof i)return r.apply(this,o),this;const s=new i(...o);return a.annotation=s,a;function a(l,c,u){const d=l.hasOwnProperty(Jn)?l[Jn]:Object.defineProperty(l,Jn,{value:[]})[Jn];for(;d.length<=u;)d.push(null);return(d[u]=d[u]||[]).push(s),l}}return n&&(i.prototype=Object.create(n.prototype)),i.prototype.ngMetadataName=e,i.annotationCls=i,i})}class A{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=P({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function Cn(e,t){e.forEach(n=>Array.isArray(n)?Cn(n,t):t(n))}function xf(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function Eo(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function Qr(e,t){const n=[];for(let r=0;r=0?e[1|r]=n:(r=~r,function bw(e,t,n,r){let i=e.length;if(i==t)e.push(n,r);else if(1===i)e.push(r,e[0]),e[0]=n;else{for(i--,e.push(e[i-1],e[i]);i>t;)e[i]=e[i-2],i--;e[t]=n,e[t+1]=r}}(e,r,t,n)),r}function Ka(e,t){const n=nr(e,t);if(n>=0)return e[1|n]}function nr(e,t){return function Af(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){const o=r+(i-r>>1),s=e[o<t?i=o:r=o+1}return~(i<({token:e})),-1),Jr=jr(tr("Optional"),8);var tt=(()=>((tt=tt||{})[tt.Important=1]="Important",tt[tt.DashCase=2]="DashCase",tt))();const nl=new Map;let Zw=0;const il="__ngContext__";function je(e,t){at(t)?(e[il]=t[Gr],function qw(e){nl.set(e[Gr],e)}(t)):e[il]=t}let ol;function sl(e,t){return ol(e,t)}function ri(e){const t=e[he];return wt(t)?t[he]:t}function al(e){return Xf(e[Ur])}function ll(e){return Xf(e[Dt])}function Xf(e){for(;null!==e&&!wt(e);)e=e[Dt];return e}function ir(e,t,n,r,i){if(null!=r){let o,s=!1;wt(r)?o=r:at(r)&&(s=!0,r=r[zt]);const a=Oe(r);0===e&&null!==n?null==i?nh(t,n,a):En(t,n,a,i||null,!0):1===e&&null!==n?En(t,n,a,i||null,!0):2===e?function gl(e,t,n){const r=xo(e,t);r&&function pC(e,t,n,r){e.removeChild(t,n,r)}(e,r,t,n)}(t,a,s):3===e&&t.destroyNode(a),null!=o&&function yC(e,t,n,r,i){const o=n[co];o!==Oe(n)&&ir(t,e,r,o,i);for(let a=ze;a0&&(e[n-1][Dt]=r[Dt]);const o=Eo(e,ze+t);!function sC(e,t){ii(e,t,t[Z],2,null,null),t[zt]=null,t[Ve]=null}(r[I],r);const s=o[kt];null!==s&&s.detachView(o[I]),r[he]=null,r[Dt]=null,r[U]&=-65}return r}function Jf(e,t){if(!(128&t[U])){const n=t[Z];n.destroyNode&&ii(e,t,n,3,null,null),function cC(e){let t=e[Ur];if(!t)return fl(e[I],e);for(;t;){let n=null;if(at(t))n=t[Ur];else{const r=t[ze];r&&(n=r)}if(!n){for(;t&&!t[Dt]&&t!==e;)at(t)&&fl(t[I],t),t=t[he];null===t&&(t=e),at(t)&&fl(t[I],t),n=t&&t[Dt]}t=n}}(t)}}function fl(e,t){if(!(128&t[U])){t[U]&=-65,t[U]|=128,function hC(e,t){let n;if(null!=e&&null!=(n=e.destroyHooks))for(let r=0;r=0?r[i=s]():r[i=-s].unsubscribe(),o+=2}else{const s=r[i=n[o+1]];n[o].call(s)}if(null!==r){for(let o=i+1;o-1){const{encapsulation:o}=e.data[r.directiveStart+i];if(o===Rt.None||o===Rt.Emulated)return null}return lt(r,n)}}(e,t.parent,n)}function En(e,t,n,r,i){e.insertBefore(t,n,r,i)}function nh(e,t,n){e.appendChild(t,n)}function rh(e,t,n,r,i){null!==r?En(e,t,n,r,i):nh(e,t,n)}function xo(e,t){return e.parentNode(t)}function ih(e,t,n){return sh(e,t,n)}let hl,vl,sh=function oh(e,t,n){return 40&e.type?lt(e,n):null};function Ao(e,t,n,r){const i=eh(e,r,t),o=t[Z],a=ih(r.parent||t[Ve],r,t);if(null!=i)if(Array.isArray(n))for(let l=0;l{const s=o;bl(s,n,[],r)&&(i||(i=[]),i.push(s))}),void 0!==i&&Ah(i,n),n}function Ah(e,t){for(let n=0;n{t.push(o)})}}function bl(e,t,n,r){if(!(e=O(e)))return!1;let i=null,o=xd(e);const s=!o&&te(e);if(o||s){if(s&&!s.standalone)return!1;i=e}else{const l=e.ngModule;if(o=xd(l),!o)return!1;i=l}const a=r.has(i);if(s){if(a)return!1;if(r.add(i),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const c of l)bl(c,t,n,r)}}else{if(!o)return!1;{if(null!=o.imports&&!a){let c;r.add(i);try{Cn(o.imports,u=>{bl(u,t,n,r)&&(c||(c=[]),c.push(u))})}finally{}void 0!==c&&Ah(c,t)}if(!a){const c=_n(i)||(()=>new i);t.push({provide:i,useFactory:c,deps:Q},{provide:Mh,useValue:i,multi:!0},{provide:Sh,useValue:()=>D(i),multi:!0})}const l=o.providers;null==l||a||Sl(l,u=>{t.push(u)})}}return i!==e&&void 0!==e.providers}function Sl(e,t){for(let n of e)Da(n)&&(n=n.\u0275providers),Array.isArray(n)?Sl(n,t):t(n)}const YC=ne({provide:String,useValue:ne});function Il(e){return null!==e&&"object"==typeof e&&YC in e}function bn(e){return"function"==typeof e}const Ml=new A("Set Injector scope."),No={},KC={};let Tl;function Fo(){return void 0===Tl&&(Tl=new Th),Tl}class Sn{}class Oh extends Sn{get destroyed(){return this._destroyed}constructor(t,n,r,i){super(),this.parent=n,this.source=r,this.scopes=i,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Al(t,s=>this.processProvider(s)),this.records.set(Ih,sr(void 0,this)),i.has("environment")&&this.records.set(Sn,sr(void 0,this));const o=this.records.get(Ml);null!=o&&"string"==typeof o.value&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(Mh.multi,Q,V.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const t of this._ngOnDestroyHooks)t.ngOnDestroy();for(const t of this._onDestroyHooks)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(t){this._onDestroyHooks.push(t)}runInContext(t){this.assertNotDestroyed();const n=$n(this),r=ht(void 0);try{return t()}finally{$n(n),ht(r)}}get(t,n=Vr,r=V.Default){this.assertNotDestroyed(),r=io(r);const i=$n(this),o=ht(void 0);try{if(!(r&V.SkipSelf)){let a=this.records.get(t);if(void 0===a){const l=function nE(e){return"function"==typeof e||"object"==typeof e&&e instanceof A}(t)&&to(t);a=l&&this.injectableDefInScope(l)?sr(xl(t),No):null,this.records.set(t,a)}if(null!=a)return this.hydrate(t,a)}return(r&V.Self?Fo():this.parent).get(t,n=r&V.Optional&&n===Vr?null:n)}catch(s){if("NullInjectorError"===s.name){if((s[ro]=s[ro]||[]).unshift(ie(t)),i)throw s;return function MD(e,t,n,r){const i=e[ro];throw t[kd]&&i.unshift(t[kd]),e.message=function TD(e,t,n,r=null){e=e&&"\n"===e.charAt(0)&&e.charAt(1)==bD?e.slice(2):e;let i=ie(t);if(Array.isArray(t))i=t.map(ie).join(" -> ");else if("object"==typeof t){let o=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];o.push(s+":"+("string"==typeof a?JSON.stringify(a):ie(a)))}i=`{${o.join(", ")}}`}return`${n}${r?"("+r+")":""}[${i}]: ${e.replace(ED,"\n ")}`}("\n"+e.message,i,n,r),e[CD]=i,e[ro]=null,e}(s,t,"R3InjectorError",this.source)}throw s}finally{ht(o),$n(i)}}resolveInjectorInitializers(){const t=$n(this),n=ht(void 0);try{const r=this.get(Sh.multi,Q,V.Self);for(const i of r)i()}finally{$n(t),ht(n)}}toString(){const t=[],n=this.records;for(const r of n.keys())t.push(ie(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new T(205,!1)}processProvider(t){let n=bn(t=O(t))?t:O(t&&t.provide);const r=function JC(e){return Il(e)?sr(void 0,e.useValue):sr(Ph(e),No)}(t);if(bn(t)||!0!==t.multi)this.records.get(n);else{let i=this.records.get(n);i||(i=sr(void 0,No,!0),i.factory=()=>ba(i.multi),this.records.set(n,i)),n=t,i.multi.push(t)}this.records.set(n,r)}hydrate(t,n){return n.value===No&&(n.value=KC,n.value=n.factory()),"object"==typeof n.value&&n.value&&function tE(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}injectableDefInScope(t){if(!t.providedIn)return!1;const n=O(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}}function xl(e){const t=to(e),n=null!==t?t.factory:_n(e);if(null!==n)return n;if(e instanceof A)throw new T(204,!1);if(e instanceof Function)return function QC(e){const t=e.length;if(t>0)throw Qr(t,"?"),new T(204,!1);const n=function vD(e){const t=e&&(e[no]||e[Ad]);return t?(function _D(e){if(e.hasOwnProperty("name"))return e.name;(""+e).match(/^function\s*([^\s(]+)/)}(e),t):null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new T(204,!1)}function Ph(e,t,n){let r;if(bn(e)){const i=O(e);return _n(i)||xl(i)}if(Il(e))r=()=>O(e.useValue);else if(function kh(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...ba(e.deps||[]));else if(function Rh(e){return!(!e||!e.useExisting)}(e))r=()=>D(O(e.useExisting));else{const i=O(e&&(e.useClass||e.provide));if(!function eE(e){return!!e.deps}(e))return _n(i)||xl(i);r=()=>new i(...ba(e.deps))}return r}function sr(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Al(e,t){for(const n of e)Array.isArray(n)?Al(n,t):n&&Da(n)?Al(n.\u0275providers,t):t(n)}class rE{}class Nh{}class oE{resolveComponentFactory(t){throw function iE(e){const t=Error(`No component factory found for ${ie(e)}. Did you add it to @NgModule.entryComponents?`);return t.ngComponent=e,t}(t)}}let an=(()=>{class e{}return e.NULL=new oE,e})();function sE(){return ar(Pe(),_())}function ar(e,t){return new We(lt(e,t))}let We=(()=>{class e{constructor(n){this.nativeElement=n}}return e.__NG_ELEMENT_ID__=sE,e})();function aE(e){return e instanceof We?e.nativeElement:e}class Lo{}let Vo=(()=>{class e{}return e.__NG_ELEMENT_ID__=()=>function lE(){const e=_(),n=ct(Pe().index,e);return(at(n)?n:e)[Z]}(),e})(),cE=(()=>{class e{}return e.\u0275prov=P({token:e,providedIn:"root",factory:()=>null}),e})();class Bo{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const uE=new Bo("15.2.6"),Rl={},kl="ngOriginalError";function Ol(e){return e[kl]}class lr{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Ol(t);for(;n&&Ol(n);)n=Ol(n);return n||null}}function Vh(e,t,n){let r=e.length;for(;;){const i=e.indexOf(t,n);if(-1===i)return i;if(0===i||e.charCodeAt(i-1)<=32){const o=t.length;if(i+o===r||e.charCodeAt(i+o)<=32)return i}n=i+1}}const Bh="ng-template";function wE(e,t,n){let r=0,i=!0;for(;ro?"":i[d+1].toLowerCase();const h=8&r?f:null;if(h&&-1!==Vh(h,c,0)||2&r&&c!==f){if(Et(r))return!1;s=!0}}}}else{if(!s&&!Et(r)&&!Et(l))return!1;if(s&&Et(l))continue;s=!1,r=l|1&r}}return Et(r)||s}function Et(e){return 0==(1&e)}function bE(e,t,n,r){if(null===t)return-1;let i=0;if(r||!n){let o=!1;for(;i-1)for(n++;n0?'="'+a+'"':"")+"]"}else 8&r?i+="."+s:4&r&&(i+=" "+s);else""!==i&&!Et(s)&&(t+=$h(o,i),i=""),r=s,o=o||!Et(r);n++}return""!==i&&(t+=$h(o,i)),t}const H={};function li(e){Uh(Y(),_(),Ze()+e,!1)}function Uh(e,t,n,r){if(!r)if(3==(3&t[U])){const o=e.preOrderCheckHooks;null!==o&&mo(t,o,n)}else{const o=e.preOrderHooks;null!==o&&yo(t,o,0,n)}Dn(n)}function Wh(e,t=null,n=null,r){const i=qh(e,t,n,r);return i.resolveInjectorInitializers(),i}function qh(e,t=null,n=null,r,i=new Set){const o=[n||Q,qC(e)];return r=r||("object"==typeof e?void 0:ie(e)),new Oh(o,t||Fo(),r||null,i)}let bt=(()=>{class e{static create(n,r){if(Array.isArray(n))return Wh({name:""},r,n,"");{const i=n.name??"";return Wh({name:i},n.parent,n.providers,i)}}}return e.THROW_IF_NOT_FOUND=Vr,e.NULL=new Th,e.\u0275prov=P({token:e,providedIn:"any",factory:()=>D(Ih)}),e.__NG_ELEMENT_ID__=-1,e})();function E(e,t=V.Default){const n=_();return null===n?D(e,t):Ef(Pe(),n,O(e),t)}function tp(e,t){const n=e.contentQueries;if(null!==n)for(let r=0;rle&&Uh(e,t,le,!1),pt(s?2:0,i),n(r,i)}finally{Dn(o),pt(s?3:1,i)}}function jl(e,t,n){if(xa(t)){const i=t.directiveEnd;for(let o=t.directiveStart;o0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(s)!=a&&s.push(a),s.push(n,r,o)}}(e,t,r,ci(e,n,i.hostVars,H),i)}function mb(e,t,n,r,i,o){const s=o[t];if(null!==s){const a=r.setInput;for(let l=0;l0&&Wl(n)}}function Wl(e){for(let r=al(e);null!==r;r=ll(r))for(let i=ze;i0&&Wl(o)}const n=e[I].components;if(null!==n)for(let r=0;r0&&Wl(i)}}function wb(e,t){const n=ct(t,e),r=n[I];(function Cb(e,t){for(let n=t.length;n-1&&(dl(t,r),Eo(n,r))}this._attachedToViewContainer=!1}Jf(this._lView[I],this._lView)}onDestroy(t){ip(this._lView[I],this._lView,null,t)}markForCheck(){ql(this._cdRefInjectingView||this._lView)}detach(){this._lView[U]&=-65}reattach(){this._lView[U]|=64}detectChanges(){zo(this._lView[I],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new T(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function lC(e,t){ii(e,t,t[Z],2,null,null)}(this._lView[I],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new T(902,!1);this._appRef=t}}class Eb extends ui{constructor(t){super(t),this._view=t}detectChanges(){const t=this._view;zo(t[I],t,t[me],!1)}checkNoChanges(){}get context(){return null}}class gp extends an{constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){const n=te(t);return new di(n,this.ngModule)}}function mp(e){const t=[];for(let n in e)e.hasOwnProperty(n)&&t.push({propName:e[n],templateName:n});return t}class Sb{constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,r){r=io(r);const i=this.injector.get(t,Rl,r);return i!==Rl||n===Rl?i:this.parentInjector.get(t,n,r)}}class di extends Nh{get inputs(){return mp(this.componentDef.inputs)}get outputs(){return mp(this.componentDef.outputs)}constructor(t,n){super(),this.componentDef=t,this.ngModule=n,this.componentType=t.type,this.selector=function AE(e){return e.map(xE).join(",")}(t.selectors),this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!n}create(t,n,r,i){let o=(i=i||this.ngModule)instanceof Sn?i:i?.injector;o&&null!==this.componentDef.getStandaloneInjector&&(o=this.componentDef.getStandaloneInjector(o)||o);const s=o?new Sb(t,o):t,a=s.get(Lo,null);if(null===a)throw new T(407,!1);const l=s.get(cE,null),c=a.createRenderer(null,this.componentDef),u=this.componentDef.selectors[0][0]||"div",d=r?function tb(e,t,n){return e.selectRootElement(t,n===Rt.ShadowDom)}(c,r,this.componentDef.encapsulation):ul(c,u,function bb(e){const t=e.toLowerCase();return"svg"===t?"svg":"math"===t?"math":null}(u)),f=this.componentDef.onPush?288:272,h=Ul(0,null,null,1,0,null,null,null,null,null),p=Ho(null,h,null,f,null,null,a,c,l,s,null);let g,y;La(p);try{const v=this.componentDef;let S,m=null;v.findHostDirectiveDefs?(S=[],m=new Map,v.findHostDirectiveDefs(v,S,m),S.push(v)):S=[v];const k=function Mb(e,t){const n=e[I],r=le;return e[r]=t,dr(n,r,2,"#host",null)}(p,d),re=function Tb(e,t,n,r,i,o,s,a){const l=i[I];!function xb(e,t,n,r){for(const i of e)t.mergedAttrs=Yr(t.mergedAttrs,i.hostAttrs);null!==t.mergedAttrs&&(Go(t,t.mergedAttrs,!0),null!==n&&dh(r,n,t))}(r,e,t,s);const c=o.createRenderer(t,n),u=Ho(i,rp(n),null,n.onPush?32:16,i[e.index],e,o,c,a||null,null,null);return l.firstCreatePass&&Gl(l,e,r.length-1),Uo(i,u),i[e.index]=u}(k,d,v,S,p,a,c);y=Yd(h,le),d&&function Rb(e,t,n,r){if(r)Ha(e,n,["ng-version",uE.full]);else{const{attrs:i,classes:o}=function RE(e){const t=[],n=[];let r=1,i=2;for(;r0&&uh(e,n,o.join(" "))}}(c,v,d,r),void 0!==n&&function kb(e,t,n){const r=e.projection=[];for(let i=0;i=0;r--){const i=e[r];i.hostVars=t+=i.hostVars,i.hostAttrs=Yr(i.hostAttrs,n=Yr(n,i.hostAttrs))}}(r)}function Kl(e){return e===$t?{}:e===Q?[]:e}function Nb(e,t){const n=e.viewQuery;e.viewQuery=n?(r,i)=>{t(r,i),n(r,i)}:t}function Fb(e,t){const n=e.contentQueries;e.contentQueries=n?(r,i,o)=>{t(r,i,o),n(r,i,o)}:t}function Lb(e,t){const n=e.hostBindings;e.hostBindings=n?(r,i)=>{t(r,i),n(r,i)}:t}function He(e,t,n){return!Object.is(e[t],n)&&(e[t]=n,!0)}function Xo(e,t,n,r,i,o,s,a){const l=_(),c=Y(),u=e+le,d=c.firstCreatePass?function Wb(e,t,n,r,i,o,s,a,l){const c=t.consts,u=dr(t,e,4,s||null,on(c,a));zl(t,n,u,on(c,l)),go(t,u);const d=u.tView=Ul(2,u,r,i,o,t.directiveRegistry,t.pipeRegistry,null,t.schemas,c);return null!==t.queries&&(t.queries.template(t,u),d.queries=t.queries.embeddedTView(u)),u}(u,c,l,t,n,r,i,o,s):c.data[u];Ot(d,!1);const f=l[Z].createComment("");Ao(c,l,f,d),je(f,l),Uo(l,l[u]=up(f,l,f,d)),fo(d)&&Hl(c,l,d),null!=s&&$l(l,d,a)}function ln(e,t,n){const r=_();return He(r,Yn(),t)&&function dt(e,t,n,r,i,o,s,a){const l=lt(t,n);let u,c=t.inputs;!a&&null!=c&&(u=c[r])?(Xl(e,n,u,r,i),Zr(t)&&ap(n,t.index)):3&t.type&&(r=function ib(e){return"class"===e?"className":"for"===e?"htmlFor":"formaction"===e?"formAction":"innerHtml"===e?"innerHTML":"readonly"===e?"readOnly":"tabindex"===e?"tabIndex":e}(r),i=null!=s?s(i,t.value||"",r):i,o.setProperty(l,r,i))}(Y(),function ce(){const e=j.lFrame;return Yd(e.tView,e.selectedIndex)}(),r,e,t,r[Z],n,!1),ln}function Jl(e,t,n,r,i){const s=i?"class":"style";Xl(e,n,t.inputs[s],s,r)}function Mn(e,t,n,r){const i=_(),o=Y(),s=le+e,a=i[Z],l=o.firstCreatePass?function Xb(e,t,n,r,i,o){const s=t.consts,l=dr(t,e,2,r,on(s,i));return zl(t,n,l,on(s,o)),null!==l.attrs&&Go(l,l.attrs,!1),null!==l.mergedAttrs&&Go(l,l.mergedAttrs,!0),null!==t.queries&&t.queries.elementStart(t,l),l}(s,o,i,t,n,r):o.data[s],c=i[s]=ul(a,t,function aw(){return j.lFrame.currentNamespace}()),u=fo(l);return Ot(l,!0),dh(a,c,l),32!=(32&l.flags)&&Ao(o,i,c,l),0===function GD(){return j.lFrame.elementDepthCount}()&&je(c,i),function ZD(){j.lFrame.elementDepthCount++}(),u&&(Hl(o,i,l),jl(o,l,i)),null!==r&&$l(i,l),Mn}function Tn(){let e=Pe();ka()?Oa():(e=e.parent,Ot(e,!1));const t=e;!function WD(){j.lFrame.elementDepthCount--}();const n=Y();return n.firstCreatePass&&(go(n,e),xa(e)&&n.queries.elementEnd(e)),null!=t.classesWithoutHost&&function dw(e){return 0!=(8&e.flags)}(t)&&Jl(n,t,_(),t.classesWithoutHost,!0),null!=t.stylesWithoutHost&&function fw(e){return 0!=(16&e.flags)}(t)&&Jl(n,t,_(),t.stylesWithoutHost,!1),Tn}function Ko(e,t,n,r){return Mn(e,t,n,r),Tn(),Ko}function Qo(e,t,n){const r=_(),i=Y(),o=e+le,s=i.firstCreatePass?function Kb(e,t,n,r,i){const o=t.consts,s=on(o,r),a=dr(t,e,8,"ng-container",s);return null!==s&&Go(a,s,!0),zl(t,n,a,on(o,i)),null!==t.queries&&t.queries.elementStart(t,a),a}(o,i,r,t,n):i.data[o];Ot(s,!0);const a=r[o]=r[Z].createComment("");return Ao(i,r,a,s),je(a,r),fo(s)&&(Hl(i,r,s),jl(i,s,r)),null!=n&&$l(r,s),Qo}function Jo(){let e=Pe();const t=Y();return ka()?Oa():(e=e.parent,Ot(e,!1)),t.firstCreatePass&&(go(t,e),xa(e)&&t.queries.elementEnd(e)),Jo}function ec(e){return!!e&&"function"==typeof e.then}function Op(e){return!!e&&"function"==typeof e.subscribe}const Qb=Op;function es(e,t,n,r){const i=_(),o=Y(),s=Pe();return function Np(e,t,n,r,i,o,s){const a=fo(r),c=e.firstCreatePass&&fp(e),u=t[me],d=dp(t);let f=!0;if(3&r.type||s){const g=lt(r,t),y=s?s(g):g,v=d.length,S=s?k=>s(Oe(k[r.index])):r.index;let m=null;if(!s&&a&&(m=function Jb(e,t,n,r){const i=e.cleanup;if(null!=i)for(let o=0;ol?a[l]:null}"string"==typeof s&&(o+=2)}return null}(e,t,i,r.index)),null!==m)(m.__ngLastListenerFn__||m).__ngNextListenerFn__=o,m.__ngLastListenerFn__=o,f=!1;else{o=Lp(r,t,u,o,!1);const k=n.listen(y,i,o);d.push(o,k),c&&c.push(i,S,v,v+1)}}else o=Lp(r,t,u,o,!1);const h=r.outputs;let p;if(f&&null!==h&&(p=h[i])){const g=p.length;if(g)for(let y=0;y-1?ct(e.index,t):t);let l=Fp(t,n,r,s),c=o.__ngNextListenerFn__;for(;c;)l=Fp(t,n,c,s)&&l,c=c.__ngNextListenerFn__;return i&&!1===l&&(s.preventDefault(),s.returnValue=!1),l}}function wr(e=1){return function tw(e){return(j.lFrame.contextLView=function nw(e,t){for(;e>0;)t=t[Gn],e--;return t}(e,j.lFrame.contextLView))[me]}(e)}function eS(e,t){let n=null;const r=function SE(e){const t=e.attrs;if(null!=t){const n=t.indexOf(5);if(!(1&n))return t[n+1]}return null}(e);for(let i=0;i>17&32767}function nc(e){return 2|e}function xn(e){return(131068&e)>>2}function rc(e,t){return-131069&e|t<<2}function ic(e){return 1|e}function Yp(e,t,n,r,i){const o=e[n+1],s=null===t;let a=r?cn(o):xn(o),l=!1;for(;0!==a&&(!1===l||s);){const u=e[a+1];sS(e[a],t)&&(l=!0,e[a+1]=r?ic(u):nc(u)),a=r?cn(u):xn(u)}l&&(e[n+1]=r?nc(o):ic(o))}function sS(e,t){return null===e||null==t||(Array.isArray(e)?e[1]:e)===t||!(!Array.isArray(e)||"string"!=typeof t)&&nr(e,t)>=0}function oc(e,t,n){return St(e,t,n,!1),oc}function ns(e,t){return St(e,t,null,!0),ns}function St(e,t,n,r){const i=_(),o=Y(),s=function Wt(e){const t=j.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}(2);o.firstUpdatePass&&function rg(e,t,n,r){const i=e.data;if(null===i[n+1]){const o=i[Ze()],s=function ng(e,t){return t>=e.expandoStartIndex}(e,n);(function ag(e,t){return 0!=(e.flags&(t?8:16))})(o,r)&&null===t&&!s&&(t=!1),t=function gS(e,t,n,r){const i=function Na(e){const t=j.lFrame.currentDirectiveIndex;return-1===t?null:e[t]}(e);let o=r?t.residualClasses:t.residualStyles;if(null===i)0===(r?t.classBindings:t.styleBindings)&&(n=hi(n=sc(null,e,t,n,r),t.attrs,r),o=null);else{const s=t.directiveStylingLast;if(-1===s||e[s]!==i)if(n=sc(i,e,t,n,r),null===o){let l=function mS(e,t,n){const r=n?t.classBindings:t.styleBindings;if(0!==xn(r))return e[cn(r)]}(e,t,r);void 0!==l&&Array.isArray(l)&&(l=sc(null,e,t,l[1],r),l=hi(l,t.attrs,r),function yS(e,t,n,r){e[cn(n?t.classBindings:t.styleBindings)]=r}(e,t,r,l))}else o=function vS(e,t,n){let r;const i=t.directiveEnd;for(let o=1+t.directiveStylingLast;o0)&&(c=!0)):u=n,i)if(0!==l){const f=cn(e[a+1]);e[r+1]=ts(f,a),0!==f&&(e[f+1]=rc(e[f+1],r)),e[a+1]=function nS(e,t){return 131071&e|t<<17}(e[a+1],r)}else e[r+1]=ts(a,0),0!==a&&(e[a+1]=rc(e[a+1],r)),a=r;else e[r+1]=ts(l,0),0===a?a=r:e[l+1]=rc(e[l+1],r),l=r;c&&(e[r+1]=nc(e[r+1])),Yp(e,u,r,!0),Yp(e,u,r,!1),function oS(e,t,n,r,i){const o=i?e.residualClasses:e.residualStyles;null!=o&&"string"==typeof t&&nr(o,t)>=0&&(n[r+1]=ic(n[r+1]))}(t,u,e,r,o),s=ts(a,l),o?t.classBindings=s:t.styleBindings=s}(i,o,t,n,s,r)}}(o,e,s,r),t!==H&&He(i,s,t)&&function og(e,t,n,r,i,o,s,a){if(!(3&t.type))return;const l=e.data,c=l[a+1],u=function rS(e){return 1==(1&e)}(c)?sg(l,t,n,i,xn(c),s):void 0;rs(u)||(rs(o)||function tS(e){return 2==(2&e)}(c)&&(o=sg(l,null,n,i,a,s)),function vC(e,t,n,r,i){if(t)i?e.addClass(n,r):e.removeClass(n,r);else{let o=-1===r.indexOf("-")?void 0:tt.DashCase;null==i?e.removeStyle(n,r,o):("string"==typeof i&&i.endsWith("!important")&&(i=i.slice(0,-10),o|=tt.Important),e.setStyle(n,r,i,o))}}(r,s,ho(Ze(),n),i,o))}(o,o.data[Ze()],i,i[Z],e,i[s+1]=function wS(e,t){return null==e||""===e||("string"==typeof t?e+=t:"object"==typeof e&&(e=ie(function sn(e){return e instanceof mh?e.changingThisBreaksApplicationSecurity:e}(e)))),e}(t,n),r,s)}function sc(e,t,n,r,i){let o=null;const s=n.directiveEnd;let a=n.directiveStylingLast;for(-1===a?a=n.directiveStart:a++;a0;){const l=e[i],c=Array.isArray(l),u=c?l[1]:l,d=null===u;let f=n[i+1];f===H&&(f=d?Q:void 0);let h=d?Ka(f,r):u===r?f:void 0;if(c&&!rs(h)&&(h=Ka(l,r)),rs(h)&&(a=h,s))return a;const p=e[i+1];i=s?cn(p):xn(p)}if(null!==t){let l=o?t.residualClasses:t.residualStyles;null!=l&&(a=Ka(l,r))}return a}function rs(e){return void 0!==e}function ac(e){return lc("",e,""),ac}function lc(e,t,n){const r=_(),i=function hr(e,t,n,r){return He(e,Yn(),n)?t+B(n)+r:H}(r,e,t,n);return i!==H&&function Xt(e,t,n){const r=ho(t,e);!function Kf(e,t,n){e.setValue(t,n)}(e[Z],r,n)}(r,Ze(),i),lc}const br="en-US";let Ag=br;function dc(e,t,n,r,i){if(e=O(e),Array.isArray(e))for(let o=0;o>20;if(bn(e)||!e.multi){const h=new qr(l,i,E),p=hc(a,t,i?u:u+f,d);-1===p?(Ga(wo(c,s),o,a),fc(o,e,t.length),t.push(a),c.directiveStart++,c.directiveEnd++,i&&(c.providerIndexes+=1048576),n.push(h),s.push(h)):(n[p]=h,s[p]=h)}else{const h=hc(a,t,u+f,d),p=hc(a,t,u,u+f),y=p>=0&&n[p];if(i&&!y||!i&&!(h>=0&&n[h])){Ga(wo(c,s),o,a);const v=function BI(e,t,n,r,i){const o=new qr(e,n,E);return o.multi=[],o.index=t,o.componentProviders=0,tm(o,i,r&&!n),o}(i?VI:LI,n.length,i,r,l);!i&&y&&(n[p].providerFactory=v),fc(o,e,t.length,0),t.push(a),c.directiveStart++,c.directiveEnd++,i&&(c.providerIndexes+=1048576),n.push(v),s.push(v)}else fc(o,e,h>-1?h:p,tm(n[i?p:h],l,!i&&r));!i&&r&&y&&n[p].componentProviders++}}}function fc(e,t,n,r){const i=bn(t),o=function XC(e){return!!e.useClass}(t);if(i||o){const l=(o?O(t.useClass):t).prototype.ngOnDestroy;if(l){const c=e.destroyHooks||(e.destroyHooks=[]);if(!i&&t.multi){const u=c.indexOf(n);-1===u?c.push(n,[r,l]):c[u+1].push(r,l)}else c.push(n,l)}}}function tm(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function hc(e,t,n,r){for(let i=n;i{n.providersResolver=(r,i)=>function FI(e,t,n){const r=Y();if(r.firstCreatePass){const i=Ct(e);dc(n,r.data,r.blueprint,i,!0),dc(t,r.data,r.blueprint,i,!1)}}(r,i?i(e):e,t)}}class Sr{}class jI{}class nm extends Sr{constructor(t,n){super(),this._parent=n,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new gp(this);const r=function st(e,t){const n=e[Pd]||null;if(!n&&!0===t)throw new Error(`Type ${ie(e)} does not have '\u0275mod' property.`);return n}(t);this._bootstrapComponents=function Yt(e){return e instanceof Function?e():e}(r.bootstrap),this._r3Injector=qh(t,n,[{provide:Sr,useValue:this},{provide:an,useValue:this.componentFactoryResolver}],ie(t),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(t)}get injector(){return this._r3Injector}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class mc extends jI{constructor(t){super(),this.moduleType=t}create(t){return new nm(this.moduleType,t)}}class $I extends Sr{constructor(t,n,r){super(),this.componentFactoryResolver=new gp(this),this.instance=null;const i=new Oh([...t,{provide:Sr,useValue:this},{provide:an,useValue:this.componentFactoryResolver}],n||Fo(),r,new Set(["environment"]));this.injector=i,i.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}}let UI=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n.id)){const r=xh(0,n.type),i=r.length>0?function rm(e,t,n=null){return new $I(e,t,n).injector}([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n.id,i)}return this.cachedInjectors.get(n.id)}ngOnDestroy(){try{for(const n of this.cachedInjectors.values())null!==n&&n.destroy()}finally{this.cachedInjectors.clear()}}}return e.\u0275prov=P({token:e,providedIn:"environment",factory:()=>new e(D(Sn))}),e})();function ls(e){e.getStandaloneInjector=t=>t.get(UI).getOrCreateStandaloneInjector(e)}function um(e,t,n,r,i,o){const s=t+n;return He(e,s,i)?function Ft(e,t,n){return e[t]=n}(e,s+1,o?r.call(o,i):r(i)):function _i(e,t){const n=e[t];return n===H?void 0:n}(e,s+1)}function vc(e,t){const n=Y();let r;const i=e+le;n.firstCreatePass?(r=function c0(e,t){if(t)for(let n=t.length-1;n>=0;n--){const r=t[n];if(e===r.name)return r}}(t,n.pipeRegistry),n.data[i]=r,r.onDestroy&&(n.destroyHooks??(n.destroyHooks=[])).push(i,r.onDestroy)):r=n.data[i];const o=r.factory||(r.factory=_n(r.type)),s=ht(E);try{const a=Do(!1),l=o();return Do(a),function qb(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}(n,_(),i,l),l}finally{ht(s)}}function _c(e,t,n){const r=e+le,i=_(),o=function qn(e,t){return e[t]}(i,r);return function Di(e,t){return e[I].data[t].pure}(i,r)?um(i,function Ge(){const e=j.lFrame;let t=e.bindingRootIndex;return-1===t&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}(),t,o.transform,n,o):o.transform(n)}function Dc(e){return t=>{setTimeout(e,void 0,t)}}const ue=class p0 extends Re{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,n,r){let i=t,o=n||(()=>null),s=r;if(t&&"object"==typeof t){const l=t;i=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=Dc(o),i&&(i=Dc(i)),s&&(s=Dc(s)));const a=super.subscribe({next:i,error:o,complete:s});return t instanceof Ie&&t.add(a),a}};function g0(){return this._results[Symbol.iterator]()}class wc{get changes(){return this._changes||(this._changes=new ue)}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const n=wc.prototype;n[Symbol.iterator]||(n[Symbol.iterator]=g0)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){const r=this;r.dirty=!1;const i=function gt(e){return e.flat(Number.POSITIVE_INFINITY)}(t);(this._changesDetected=!function Cw(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r{class e{}return e.__NG_ELEMENT_ID__=v0,e})();const m0=Bt,y0=class extends m0{constructor(t,n,r){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=r}createEmbeddedView(t,n){const r=this._declarationTContainer.tView,i=Ho(this._declarationLView,r,t,16,null,r.declTNode,null,null,null,null,n||null);i[zr]=this._declarationLView[this._declarationTContainer.index];const s=this._declarationLView[kt];return null!==s&&(i[kt]=s.createEmbeddedView(r)),Bl(r,i,t),new ui(i)}};function v0(){return cs(Pe(),_())}function cs(e,t){return 4&e.type?new y0(t,e,ar(e,t)):null}let yt=(()=>{class e{}return e.__NG_ELEMENT_ID__=_0,e})();function _0(){return ym(Pe(),_())}const D0=yt,gm=class extends D0{constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return ar(this._hostTNode,this._hostLView)}get injector(){return new Kn(this._hostTNode,this._hostLView)}get parentInjector(){const t=za(this._hostTNode,this._hostLView);if(yf(t)){const n=_o(t,this._hostLView),r=vo(t);return new Kn(n[I].data[r+8],n)}return new Kn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=mm(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-ze}createEmbeddedView(t,n,r){let i,o;"number"==typeof r?i=r:null!=r&&(i=r.index,o=r.injector);const s=t.createEmbeddedView(n||{},o);return this.insert(s,i),s}createComponent(t,n,r,i,o){const s=t&&!function Kr(e){return"function"==typeof e}(t);let a;if(s)a=n;else{const d=n||{};a=d.index,r=d.injector,i=d.projectableNodes,o=d.environmentInjector||d.ngModuleRef}const l=s?t:new di(te(t)),c=r||this.parentInjector;if(!o&&null==l.ngModule){const f=(s?c:this.parentInjector).get(Sn,null);f&&(o=f)}const u=l.create(c,i,void 0,o);return this.insert(u.hostView,a),u}insert(t,n){const r=t._lView,i=r[I];if(function zD(e){return wt(e[he])}(r)){const u=this.indexOf(t);if(-1!==u)this.detach(u);else{const d=r[he],f=new gm(d,d[Ve],d[he]);f.detach(f.indexOf(t))}}const o=this._adjustIndex(n),s=this._lContainer;!function uC(e,t,n,r){const i=ze+r,o=n.length;r>0&&(n[i-1][Dt]=t),r0)r.push(s[a/2]);else{const c=o[a+1],u=t[-l];for(let d=ze;d{class e{constructor(n){this.appInits=n,this.resolve=ds,this.reject=ds,this.initialized=!1,this.done=!1,this.donePromise=new Promise((r,i)=>{this.resolve=r,this.reject=i})}runInitializers(){if(this.initialized)return;const n=[],r=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let i=0;i{o.subscribe({complete:a,error:l})});n.push(s)}}Promise.all(n).then(()=>{r()}).catch(i=>{this.reject(i)}),0===n.length&&r(),this.initialized=!0}}return e.\u0275fac=function(n){return new(n||e)(D(zm,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const Ci=new A("AppId",{providedIn:"root",factory:function Gm(){return`${kc()}${kc()}${kc()}`}});function kc(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const Zm=new A("Platform Initializer"),Ei=new A("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),q0=new A("AnimationModuleType"),Kt=new A("LocaleId",{providedIn:"root",factory:()=>Fe(Kt,V.Optional|V.SkipSelf)||function Y0(){return typeof $localize<"u"&&$localize.locale||br}()}),eM=(()=>Promise.resolve(0))();function Oc(e){typeof Zone>"u"?eM.then(()=>{e&&e.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",e)}class oe{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ue(!1),this.onMicrotaskEmpty=new ue(!1),this.onStable=new ue(!1),this.onError=new ue(!1),typeof Zone>"u")throw new T(908,!1);Zone.assertZonePatched();const i=this;i._nesting=0,i._outer=i._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(i._inner=i._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(i._inner=i._inner.fork(Zone.longStackTraceZoneSpec)),i.shouldCoalesceEventChangeDetection=!r&&n,i.shouldCoalesceRunChangeDetection=r,i.lastRequestAnimationFrameId=-1,i.nativeRequestAnimationFrame=function tM(){let e=ae.requestAnimationFrame,t=ae.cancelAnimationFrame;if(typeof Zone<"u"&&e&&t){const n=e[Zone.__symbol__("OriginalDelegate")];n&&(e=n);const r=t[Zone.__symbol__("OriginalDelegate")];r&&(t=r)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:t}}().nativeRequestAnimationFrame,function iM(e){const t=()=>{!function rM(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(ae,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,Nc(e),e.isCheckStableRunning=!0,Pc(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),Nc(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,r,i,o,s,a)=>{try{return Ym(e),n.invokeTask(i,o,s,a)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===o.type||e.shouldCoalesceRunChangeDetection)&&t(),Xm(e)}},onInvoke:(n,r,i,o,s,a,l)=>{try{return Ym(e),n.invoke(i,o,s,a,l)}finally{e.shouldCoalesceRunChangeDetection&&t(),Xm(e)}},onHasTask:(n,r,i,o)=>{n.hasTask(i,o),r===i&&("microTask"==o.change?(e._hasPendingMicrotasks=o.microTask,Nc(e),Pc(e)):"macroTask"==o.change&&(e.hasPendingMacrotasks=o.macroTask))},onHandleError:(n,r,i,o)=>(n.handleError(i,o),e.runOutsideAngular(()=>e.onError.emit(o)),!1)})}(i)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!oe.isInAngularZone())throw new T(909,!1)}static assertNotInAngularZone(){if(oe.isInAngularZone())throw new T(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,i){const o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+i,t,nM,ds,ds);try{return o.runTask(s,n,r)}finally{o.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}}const nM={};function Pc(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Nc(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function Ym(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Xm(e){e._nesting--,Pc(e)}class oM{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new ue,this.onMicrotaskEmpty=new ue,this.onStable=new ue,this.onError=new ue}run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,i){return t.apply(n,r)}}const Km=new A(""),hs=new A("");let Vc,Fc=(()=>{class e{constructor(n,r,i){this._ngZone=n,this.registry=r,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,Vc||(function sM(e){Vc=e}(i),i.addToWindow(r)),this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{oe.assertNotInAngularZone(),Oc(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())Oc(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb(this._didWork)}this._didWork=!1});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(r=>!r.updateCb||!r.updateCb(n)||(clearTimeout(r.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,r,i){let o=-1;r&&r>0&&(o=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==o),n(this._didWork,this.getPendingTasks())},r)),this._callbacks.push({doneCb:n,timeoutId:o,updateCb:i})}whenStable(n,r,i){if(i&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,r,i),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(n){this.registry.registerApplication(n,this)}unregisterApplication(n){this.registry.unregisterApplication(n)}findProviders(n,r,i){return[]}}return e.\u0275fac=function(n){return new(n||e)(D(oe),D(Lc),D(hs))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})(),Lc=(()=>{class e{constructor(){this._applications=new Map}registerApplication(n,r){this._applications.set(n,r)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,r=!0){return Vc?.findTestabilityInTree(this,n,r)??null}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();const Qt=!1;let un=null;const Qm=new A("AllowMultipleToken"),Bc=new A("PlatformDestroyListeners"),aM=new A("appBootstrapListener");function ey(e,t,n=[]){const r=`Platform: ${t}`,i=new A(r);return(o=[])=>{let s=jc();if(!s||s.injector.get(Qm,!1)){const a=[...n,...o,{provide:i,useValue:!0}];e?e(a):function uM(e){if(un&&!un.get(Qm,!1))throw new T(400,!1);un=e;const t=e.get(ny);(function Jm(e){const t=e.get(Zm,null);t&&t.forEach(n=>n())})(e)}(function ty(e=[],t){return bt.create({name:t,providers:[{provide:Ml,useValue:"platform"},{provide:Bc,useValue:new Set([()=>un=null])},...e]})}(a,r))}return function fM(e){const t=jc();if(!t)throw new T(401,!1);return t}()}}function jc(){return un?.get(ny)??null}let ny=(()=>{class e{constructor(n){this._injector=n,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(n,r){const i=function iy(e,t){let n;return n="noop"===e?new oM:("zone.js"===e?void 0:e)||new oe(t),n}(r?.ngZone,function ry(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!e||!e.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!e||!e.ngZoneRunCoalescing)||!1}}(r)),o=[{provide:oe,useValue:i}];return i.run(()=>{const s=bt.create({providers:o,parent:this.injector,name:n.moduleType.name}),a=n.create(s),l=a.injector.get(lr,null);if(!l)throw new T(402,!1);return i.runOutsideAngular(()=>{const c=i.onError.subscribe({next:u=>{l.handleError(u)}});a.onDestroy(()=>{ps(this._modules,a),c.unsubscribe()})}),function oy(e,t,n){try{const r=n();return ec(r)?r.catch(i=>{throw t.runOutsideAngular(()=>e.handleError(i)),i}):r}catch(r){throw t.runOutsideAngular(()=>e.handleError(r)),r}}(l,i,()=>{const c=a.injector.get(fs);return c.runInitializers(),c.donePromise.then(()=>(function Rg(e){ft(e,"Expected localeId to be defined"),"string"==typeof e&&(Ag=e.toLowerCase().replace(/_/g,"-"))}(a.injector.get(Kt,br)||br),this._moduleDoBootstrap(a),a))})})}bootstrapModule(n,r=[]){const i=sy({},r);return function lM(e,t,n){const r=new mc(n);return Promise.resolve(r)}(0,0,n).then(o=>this.bootstrapModuleFactory(o,i))}_moduleDoBootstrap(n){const r=n.injector.get(bi);if(n._bootstrapComponents.length>0)n._bootstrapComponents.forEach(i=>r.bootstrap(i));else{if(!n.instance.ngDoBootstrap)throw new T(-403,!1);n.instance.ngDoBootstrap(r)}this._modules.push(n)}onDestroy(n){this._destroyListeners.push(n)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new T(404,!1);this._modules.slice().forEach(r=>r.destroy()),this._destroyListeners.forEach(r=>r());const n=this._injector.get(Bc,null);n&&(n.forEach(r=>r()),n.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return e.\u0275fac=function(n){return new(n||e)(D(bt))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();function sy(e,t){return Array.isArray(t)?t.reduce(sy,e):{...e,...t}}let bi=(()=>{class e{get destroyed(){return this._destroyed}get injector(){return this._injector}constructor(n,r,i){this._zone=n,this._injector=r,this._exceptionHandler=i,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const o=new fe(a=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{a.next(this._stable),a.complete()})}),s=new fe(a=>{let l;this._zone.runOutsideAngular(()=>{l=this._zone.onStable.subscribe(()=>{oe.assertNotInAngularZone(),Oc(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,a.next(!0))})})});const c=this._zone.onUnstable.subscribe(()=>{oe.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{a.next(!1)}))});return()=>{l.unsubscribe(),c.unsubscribe()}});this.isStable=pa(o,s.pipe(Id()))}bootstrap(n,r){const i=n instanceof Nh;if(!this._injector.get(fs).done){!i&&function $r(e){const t=te(e)||Le(e)||et(e);return null!==t&&t.standalone}(n);throw new T(405,Qt)}let s;s=i?n:this._injector.get(an).resolveComponentFactory(n),this.componentTypes.push(s.componentType);const a=function cM(e){return e.isBoundToModule}(s)?void 0:this._injector.get(Sr),c=s.create(bt.NULL,[],r||s.selector,a),u=c.location.nativeElement,d=c.injector.get(Km,null);return d?.registerApplication(u),c.onDestroy(()=>{this.detachView(c.hostView),ps(this.components,c),d?.unregisterApplication(u)}),this._loadComponent(c),c}tick(){if(this._runningTick)throw new T(101,!1);try{this._runningTick=!0;for(let n of this._views)n.detectChanges()}catch(n){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(n))}finally{this._runningTick=!1}}attachView(n){const r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){const r=n;ps(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);const r=this._injector.get(aM,[]);r.push(...this._bootstrapListeners),r.forEach(i=>i(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>ps(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new T(406,!1);const n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return e.\u0275fac=function(n){return new(n||e)(D(oe),D(Sn),D(lr))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();function ps(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}let gs=(()=>{class e{}return e.__NG_ELEMENT_ID__=pM,e})();function pM(e){return function gM(e,t,n){if(Zr(e)&&!n){const r=ct(e.index,t);return new ui(r,r)}return 47&e.type?new ui(t[Be],t):null}(Pe(),_(),16==(16&e))}const TM=ey(null,"core",[]);let xM=(()=>{class e{constructor(n){}}return e.\u0275fac=function(n){return new(n||e)(D(bi))},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})(),Gc=null;function kn(){return Gc}class kM{}const ge=new A("DocumentToken");let Zc=(()=>{class e{historyGo(n){throw new Error("Not implemented")}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:function(){return function OM(){return D(yy)}()},providedIn:"platform"}),e})(),yy=(()=>{class e extends Zc{constructor(n){super(),this._doc=n,this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return kn().getBaseHref(this._doc)}onPopState(n){const r=kn().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",n,!1),()=>r.removeEventListener("popstate",n)}onHashChange(n){const r=kn().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",n,!1),()=>r.removeEventListener("hashchange",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,r,i){vy()?this._history.pushState(n,r,i):this._location.hash=i}replaceState(n,r,i){vy()?this._history.replaceState(n,r,i):this._location.hash=i}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:function(){return function PM(){return new yy(D(ge))}()},providedIn:"platform"}),e})();function vy(){return!!window.history.pushState}function _y(e,t){if(0==e.length)return t;if(0==t.length)return e;let n=0;return e.endsWith("/")&&n++,t.startsWith("/")&&n++,2==n?e+t.substring(1):1==n?e+t:e+"/"+t}function Dy(e){const t=e.match(/#|\?|$/),n=t&&t.index||e.length;return e.slice(0,n-("/"===e[n-1]?1:0))+e.slice(n)}function On(e){return e&&"?"!==e[0]?"?"+e:e}let Wc=(()=>{class e{historyGo(n){throw new Error("Not implemented")}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:function(){return Fe(NM)},providedIn:"root"}),e})();const wy=new A("appBaseHref");let NM=(()=>{class e extends Wc{constructor(n,r){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??Fe(ge).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return _y(this._baseHref,n)}path(n=!1){const r=this._platformLocation.pathname+On(this._platformLocation.search),i=this._platformLocation.hash;return i&&n?`${r}${i}`:r}pushState(n,r,i,o){const s=this.prepareExternalUrl(i+On(o));this._platformLocation.pushState(n,r,s)}replaceState(n,r,i,o){const s=this.prepareExternalUrl(i+On(o));this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}}return e.\u0275fac=function(n){return new(n||e)(D(Zc),D(wy,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),Cy=(()=>{class e{constructor(n){this._subject=new ue,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;const r=this._locationStrategy.getBaseHref();this._basePath=function VM(e){if(new RegExp("^(https?:)?//").test(e)){const[,n]=e.split(/\/\/[^\/]+/);return n}return e}(Dy(Ey(r))),this._locationStrategy.onPopState(i=>{this._subject.emit({url:this.path(!0),pop:!0,state:i.state,type:i.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+On(r))}normalize(n){return e.stripTrailingSlash(function LM(e,t){if(!e||!t.startsWith(e))return t;const n=t.substring(e.length);return""===n||["/",";","?","#"].includes(n[0])?n:t}(this._basePath,Ey(n)))}prepareExternalUrl(n){return n&&"/"!==n[0]&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r="",i=null){this._locationStrategy.pushState(i,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+On(r)),i)}replaceState(n,r="",i=null){this._locationStrategy.replaceState(i,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+On(r)),i)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)})),()=>{const r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(i=>i(n,r))}subscribe(n,r,i){return this._subject.subscribe({next:n,error:r,complete:i})}}return e.normalizeQueryParams=On,e.joinWithSlash=_y,e.stripTrailingSlash=Dy,e.\u0275fac=function(n){return new(n||e)(D(Wc))},e.\u0275prov=P({token:e,factory:function(){return function FM(){return new Cy(D(Wc))}()},providedIn:"root"}),e})();function Ey(e){return e.replace(/\/index.html$/,"")}function ky(e,t){t=encodeURIComponent(t);for(const n of e.split(";")){const r=n.indexOf("="),[i,o]=-1==r?[n,""]:[n.slice(0,r),n.slice(r+1)];if(i.trim()===t)return decodeURIComponent(o)}return null}let Ly=(()=>{class e{constructor(n,r){this._viewContainer=n,this._context=new IT,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=r}set ngIf(n){this._context.$implicit=this._context.ngIf=n,this._updateView()}set ngIfThen(n){Vy("ngIfThen",n),this._thenTemplateRef=n,this._thenViewRef=null,this._updateView()}set ngIfElse(n){Vy("ngIfElse",n),this._elseTemplateRef=n,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(n,r){return!0}}return e.\u0275fac=function(n){return new(n||e)(E(yt),E(Bt))},e.\u0275dir=ke({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),e})();class IT{constructor(){this.$implicit=null,this.ngIf=null}}function Vy(e,t){if(t&&!t.createEmbeddedView)throw new Error(`${e} must be a TemplateRef, but received '${ie(t)}'.`)}class xT{createSubscription(t,n){return t.subscribe({next:n,error:r=>{throw r}})}dispose(t){t.unsubscribe()}}class AT{createSubscription(t,n){return t.then(n,r=>{throw r})}dispose(t){}}const RT=new AT,kT=new xT;let jy=(()=>{class e{constructor(n){this._latestValue=null,this._subscription=null,this._obj=null,this._strategy=null,this._ref=n}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(n){return this._obj?n!==this._obj?(this._dispose(),this.transform(n)):this._latestValue:(n&&this._subscribe(n),this._latestValue)}_subscribe(n){this._obj=n,this._strategy=this._selectStrategy(n),this._subscription=this._strategy.createSubscription(n,r=>this._updateLatestValue(n,r))}_selectStrategy(n){if(ec(n))return RT;if(Op(n))return kT;throw function xt(e,t){return new T(2100,!1)}()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(n,r){n===this._obj&&(this._latestValue=r,this._ref.markForCheck())}}return e.\u0275fac=function(n){return new(n||e)(E(gs,16))},e.\u0275pipe=Je({name:"async",type:e,pure:!1,standalone:!0}),e})(),lu=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})();const $y="browser",XT="server";function Ts(e){return e===$y}function xs(e){return e===XT}class zy{}class Ix extends kM{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class du extends Ix{static makeCurrent(){!function RM(e){Gc||(Gc=e)}(new du)}onAndCancel(t,n,r){return t.addEventListener(n,r,!1),()=>{t.removeEventListener(n,r,!1)}}dispatchEvent(t,n){t.dispatchEvent(n)}remove(t){t.parentNode&&t.parentNode.removeChild(t)}createElement(t,n){return(n=n||this.getDefaultDocument()).createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,n){return"window"===n?window:"document"===n?t:"body"===n?t.body:null}getBaseHref(t){const n=function Mx(){return xi=xi||document.querySelector("base"),xi?xi.getAttribute("href"):null}();return null==n?null:function Tx(e){ks=ks||document.createElement("a"),ks.setAttribute("href",e);const t=ks.pathname;return"/"===t.charAt(0)?t:`/${t}`}(n)}resetBaseElement(){xi=null}getUserAgent(){return window.navigator.userAgent}getCookie(t){return ky(document.cookie,t)}}let ks,xi=null;const Yy=new A("TRANSITION_ID"),Ax=[{provide:zm,useFactory:function xx(e,t,n){return()=>{n.get(fs).donePromise.then(()=>{const r=kn(),i=t.querySelectorAll(`style[ng-transition="${e}"]`);for(let o=0;o{class e{build(){return new XMLHttpRequest}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const Os=new A("EventManagerPlugins");let Ps=(()=>{class e{constructor(n,r){this._zone=r,this._eventNameToPlugin=new Map,n.forEach(i=>{i.manager=this}),this._plugins=n.slice().reverse()}addEventListener(n,r,i){return this._findPluginFor(r).addEventListener(n,r,i)}addGlobalEventListener(n,r,i){return this._findPluginFor(r).addGlobalEventListener(n,r,i)}getZone(){return this._zone}_findPluginFor(n){const r=this._eventNameToPlugin.get(n);if(r)return r;const i=this._plugins;for(let o=0;o{class e{constructor(){this.usageCount=new Map}addStyles(n){for(const r of n)1===this.changeUsageCount(r,1)&&this.onStyleAdded(r)}removeStyles(n){for(const r of n)0===this.changeUsageCount(r,-1)&&this.onStyleRemoved(r)}onStyleRemoved(n){}onStyleAdded(n){}getAllStyles(){return this.usageCount.keys()}changeUsageCount(n,r){const i=this.usageCount;let o=i.get(n)??0;return o+=r,o>0?i.set(n,o):i.delete(n),o}ngOnDestroy(){for(const n of this.getAllStyles())this.onStyleRemoved(n);this.usageCount.clear()}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})(),Ai=(()=>{class e extends Ky{constructor(n){super(),this.doc=n,this.styleRef=new Map,this.hostNodes=new Set,this.resetHostNodes()}onStyleAdded(n){for(const r of this.hostNodes)this.addStyleToHost(r,n)}onStyleRemoved(n){const r=this.styleRef;r.get(n)?.forEach(o=>o.remove()),r.delete(n)}ngOnDestroy(){super.ngOnDestroy(),this.styleRef.clear(),this.resetHostNodes()}addHost(n){this.hostNodes.add(n);for(const r of this.getAllStyles())this.addStyleToHost(n,r)}removeHost(n){this.hostNodes.delete(n)}addStyleToHost(n,r){const i=this.doc.createElement("style");i.textContent=r,n.appendChild(i);const o=this.styleRef.get(r);o?o.push(i):this.styleRef.set(r,[i])}resetHostNodes(){const n=this.hostNodes;n.clear(),n.add(this.doc.head)}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const fu={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},hu=/%COMP%/g,ev=new A("RemoveStylesOnCompDestory",{providedIn:"root",factory:()=>!1});function tv(e,t){return t.flat(100).map(n=>n.replace(hu,e))}function nv(e){return t=>{if("__ngUnwrap__"===t)return e;!1===e(t)&&(t.preventDefault(),t.returnValue=!1)}}let pu=(()=>{class e{constructor(n,r,i,o){this.eventManager=n,this.sharedStylesHost=r,this.appId=i,this.removeStylesOnCompDestory=o,this.rendererByCompId=new Map,this.defaultRenderer=new gu(n)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;const i=this.getOrCreateRenderer(n,r);return i instanceof ov?i.applyToHost(n):i instanceof mu&&i.applyStyles(),i}getOrCreateRenderer(n,r){const i=this.rendererByCompId;let o=i.get(r.id);if(!o){const s=this.eventManager,a=this.sharedStylesHost,l=this.removeStylesOnCompDestory;switch(r.encapsulation){case Rt.Emulated:o=new ov(s,a,r,this.appId,l);break;case Rt.ShadowDom:return new Bx(s,a,n,r);default:o=new mu(s,a,r,l)}o.onDestroy=()=>i.delete(r.id),i.set(r.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}begin(){}end(){}}return e.\u0275fac=function(n){return new(n||e)(D(Ps),D(Ai),D(Ci),D(ev))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();class gu{constructor(t){this.eventManager=t,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(t,n){return n?document.createElementNS(fu[n]||n,t):document.createElement(t)}createComment(t){return document.createComment(t)}createText(t){return document.createTextNode(t)}appendChild(t,n){(iv(t)?t.content:t).appendChild(n)}insertBefore(t,n,r){t&&(iv(t)?t.content:t).insertBefore(n,r)}removeChild(t,n){t&&t.removeChild(n)}selectRootElement(t,n){let r="string"==typeof t?document.querySelector(t):t;if(!r)throw new Error(`The selector "${t}" did not match any elements`);return n||(r.textContent=""),r}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,n,r,i){if(i){n=i+":"+n;const o=fu[i];o?t.setAttributeNS(o,n,r):t.setAttribute(n,r)}else t.setAttribute(n,r)}removeAttribute(t,n,r){if(r){const i=fu[r];i?t.removeAttributeNS(i,n):t.removeAttribute(`${r}:${n}`)}else t.removeAttribute(n)}addClass(t,n){t.classList.add(n)}removeClass(t,n){t.classList.remove(n)}setStyle(t,n,r,i){i&(tt.DashCase|tt.Important)?t.style.setProperty(n,r,i&tt.Important?"important":""):t.style[n]=r}removeStyle(t,n,r){r&tt.DashCase?t.style.removeProperty(n):t.style[n]=""}setProperty(t,n,r){t[n]=r}setValue(t,n){t.nodeValue=n}listen(t,n,r){return"string"==typeof t?this.eventManager.addGlobalEventListener(t,n,nv(r)):this.eventManager.addEventListener(t,n,nv(r))}}function iv(e){return"TEMPLATE"===e.tagName&&void 0!==e.content}class Bx extends gu{constructor(t,n,r,i){super(t),this.sharedStylesHost=n,this.hostEl=r,this.shadowRoot=r.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const o=tv(i.id,i.styles);for(const s of o){const a=document.createElement("style");a.textContent=s,this.shadowRoot.appendChild(a)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}appendChild(t,n){return super.appendChild(this.nodeOrShadowRoot(t),n)}insertBefore(t,n,r){return super.insertBefore(this.nodeOrShadowRoot(t),n,r)}removeChild(t,n){return super.removeChild(this.nodeOrShadowRoot(t),n)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class mu extends gu{constructor(t,n,r,i,o=r.id){super(t),this.sharedStylesHost=n,this.removeStylesOnCompDestory=i,this.rendererUsageCount=0,this.styles=tv(o,r.styles)}applyStyles(){this.sharedStylesHost.addStyles(this.styles),this.rendererUsageCount++}destroy(){this.removeStylesOnCompDestory&&(this.sharedStylesHost.removeStyles(this.styles),this.rendererUsageCount--,0===this.rendererUsageCount&&this.onDestroy?.())}}class ov extends mu{constructor(t,n,r,i,o){const s=i+"-"+r.id;super(t,n,r,o,s),this.contentAttr=function Fx(e){return"_ngcontent-%COMP%".replace(hu,e)}(s),this.hostAttr=function Lx(e){return"_nghost-%COMP%".replace(hu,e)}(s)}applyToHost(t){this.applyStyles(),this.setAttribute(t,this.hostAttr,"")}createElement(t,n){const r=super.createElement(t,n);return super.setAttribute(r,this.contentAttr,""),r}}let jx=(()=>{class e extends Xy{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,i){return n.addEventListener(r,i,!1),()=>this.removeEventListener(n,r,i)}removeEventListener(n,r,i){return n.removeEventListener(r,i)}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const sv=["alt","control","meta","shift"],Hx={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},$x={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};let Ux=(()=>{class e extends Xy{constructor(n){super(n)}supports(n){return null!=e.parseEventName(n)}addEventListener(n,r,i){const o=e.parseEventName(r),s=e.eventCallback(o.fullKey,i,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>kn().onAndCancel(n,o.domEventName,s))}static parseEventName(n){const r=n.toLowerCase().split("."),i=r.shift();if(0===r.length||"keydown"!==i&&"keyup"!==i)return null;const o=e._normalizeKey(r.pop());let s="",a=r.indexOf("code");if(a>-1&&(r.splice(a,1),s="code."),sv.forEach(c=>{const u=r.indexOf(c);u>-1&&(r.splice(u,1),s+=c+".")}),s+=o,0!=r.length||0===o.length)return null;const l={};return l.domEventName=i,l.fullKey=s,l}static matchEventFullKeyCode(n,r){let i=Hx[n.key]||n.key,o="";return r.indexOf("code.")>-1&&(i=n.code,o="code."),!(null==i||!i)&&(i=i.toLowerCase()," "===i?i="space":"."===i&&(i="dot"),sv.forEach(s=>{s!==i&&(0,$x[s])(n)&&(o+=s+".")}),o+=i,o===r)}static eventCallback(n,r,i){return o=>{e.matchEventFullKeyCode(o,n)&&i.runGuarded(()=>r(o))}}static _normalizeKey(n){return"esc"===n?"escape":n}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const lv=[{provide:Ei,useValue:$y},{provide:Zm,useValue:function zx(){du.makeCurrent()},multi:!0},{provide:ge,useFactory:function Zx(){return function EC(e){vl=e}(document),document},deps:[]}],Wx=ey(TM,"browser",lv),cv=new A(""),uv=[{provide:hs,useClass:class Rx{addToWindow(t){ae.getAngularTestability=(r,i=!0)=>{const o=t.findTestabilityInTree(r,i);if(null==o)throw new Error("Could not find testability for element.");return o},ae.getAllAngularTestabilities=()=>t.getAllTestabilities(),ae.getAllAngularRootElements=()=>t.getAllRootElements(),ae.frameworkStabilizers||(ae.frameworkStabilizers=[]),ae.frameworkStabilizers.push(r=>{const i=ae.getAllAngularTestabilities();let o=i.length,s=!1;const a=function(l){s=s||l,o--,0==o&&r(s)};i.forEach(function(l){l.whenStable(a)})})}findTestabilityInTree(t,n,r){return null==n?null:t.getTestability(n)??(r?kn().isShadowRoot(n)?this.findTestabilityInTree(t,n.host,!0):this.findTestabilityInTree(t,n.parentElement,!0):null)}},deps:[]},{provide:Km,useClass:Fc,deps:[oe,Lc,hs]},{provide:Fc,useClass:Fc,deps:[oe,Lc,hs]}],dv=[{provide:Ml,useValue:"root"},{provide:lr,useFactory:function Gx(){return new lr},deps:[]},{provide:Os,useClass:jx,multi:!0,deps:[ge,oe,Ei]},{provide:Os,useClass:Ux,multi:!0,deps:[ge]},{provide:pu,useClass:pu,deps:[Ps,Ai,Ci,ev]},{provide:Lo,useExisting:pu},{provide:Ky,useExisting:Ai},{provide:Ai,useClass:Ai,deps:[ge]},{provide:Ps,useClass:Ps,deps:[Os,oe]},{provide:zy,useClass:kx,deps:[]},[]];let qx=(()=>{class e{constructor(n){}static withServerTransition(n){return{ngModule:e,providers:[{provide:Ci,useValue:n.appId},{provide:Yy,useExisting:Ci},Ax]}}}return e.\u0275fac=function(n){return new(n||e)(D(cv,12))},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({providers:[...dv,...uv],imports:[lu,xM]}),e})();function _u(...e){return Qi(e,Ki(e))}function Du(e,t){return Ue((n,r)=>{let i=0;n.subscribe(Ne(r,o=>e.call(t,o,i++)&&r.next(o)))})}typeof window<"u"&&window;class Ns{}class Fs{}class en{constructor(t){this.normalizedNames=new Map,this.lazyUpdate=null,t?this.lazyInit="string"==typeof t?()=>{this.headers=new Map,t.split("\n").forEach(n=>{const r=n.indexOf(":");if(r>0){const i=n.slice(0,r),o=i.toLowerCase(),s=n.slice(r+1).trim();this.maybeSetNormalizedName(i,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:()=>{this.headers=new Map,Object.keys(t).forEach(n=>{let r=t[n];const i=n.toLowerCase();"string"==typeof r&&(r=[r]),r.length>0&&(this.headers.set(i,r),this.maybeSetNormalizedName(n,i))})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();const n=this.headers.get(t.toLowerCase());return n&&n.length>0?n[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,n){return this.clone({name:t,value:n,op:"a"})}set(t,n){return this.clone({name:t,value:n,op:"s"})}delete(t,n){return this.clone({name:t,value:n,op:"d"})}maybeSetNormalizedName(t,n){this.normalizedNames.has(n)||this.normalizedNames.set(n,t)}init(){this.lazyInit&&(this.lazyInit instanceof en?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init(),Array.from(t.headers.keys()).forEach(n=>{this.headers.set(n,t.headers.get(n)),this.normalizedNames.set(n,t.normalizedNames.get(n))})}clone(t){const n=new en;return n.lazyInit=this.lazyInit&&this.lazyInit instanceof en?this.lazyInit:this,n.lazyUpdate=(this.lazyUpdate||[]).concat([t]),n}applyUpdate(t){const n=t.name.toLowerCase();switch(t.op){case"a":case"s":let r=t.value;if("string"==typeof r&&(r=[r]),0===r.length)return;this.maybeSetNormalizedName(t.name,n);const i=("a"===t.op?this.headers.get(n):void 0)||[];i.push(...r),this.headers.set(n,i);break;case"d":const o=t.value;if(o){let s=this.headers.get(n);if(!s)return;s=s.filter(a=>-1===o.indexOf(a)),0===s.length?(this.headers.delete(n),this.normalizedNames.delete(n)):this.headers.set(n,s)}else this.headers.delete(n),this.normalizedNames.delete(n)}}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(n=>t(this.normalizedNames.get(n),this.headers.get(n)))}}class rA{encodeKey(t){return pv(t)}encodeValue(t){return pv(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}}const oA=/%(\d[a-f0-9])/gi,sA={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function pv(e){return encodeURIComponent(e).replace(oA,(t,n)=>sA[n]??t)}function Ls(e){return`${e}`}class fn{constructor(t={}){if(this.updates=null,this.cloneFrom=null,this.encoder=t.encoder||new rA,t.fromString){if(t.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function iA(e,t){const n=new Map;return e.length>0&&e.replace(/^\?/,"").split("&").forEach(i=>{const o=i.indexOf("="),[s,a]=-1==o?[t.decodeKey(i),""]:[t.decodeKey(i.slice(0,o)),t.decodeValue(i.slice(o+1))],l=n.get(s)||[];l.push(a),n.set(s,l)}),n}(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(n=>{const r=t.fromObject[n],i=Array.isArray(r)?r.map(Ls):[Ls(r)];this.map.set(n,i)})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();const n=this.map.get(t);return n?n[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,n){return this.clone({param:t,value:n,op:"a"})}appendAll(t){const n=[];return Object.keys(t).forEach(r=>{const i=t[r];Array.isArray(i)?i.forEach(o=>{n.push({param:r,value:o,op:"a"})}):n.push({param:r,value:i,op:"a"})}),this.clone(n)}set(t,n){return this.clone({param:t,value:n,op:"s"})}delete(t,n){return this.clone({param:t,value:n,op:"d"})}toString(){return this.init(),this.keys().map(t=>{const n=this.encoder.encodeKey(t);return this.map.get(t).map(r=>n+"="+this.encoder.encodeValue(r)).join("&")}).filter(t=>""!==t).join("&")}clone(t){const n=new fn({encoder:this.encoder});return n.cloneFrom=this.cloneFrom||this,n.updates=(this.updates||[]).concat(t),n}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(t=>this.map.set(t,this.cloneFrom.map.get(t))),this.updates.forEach(t=>{switch(t.op){case"a":case"s":const n=("a"===t.op?this.map.get(t.param):void 0)||[];n.push(Ls(t.value)),this.map.set(t.param,n);break;case"d":if(void 0===t.value){this.map.delete(t.param);break}{let r=this.map.get(t.param)||[];const i=r.indexOf(Ls(t.value));-1!==i&&r.splice(i,1),r.length>0?this.map.set(t.param,r):this.map.delete(t.param)}}}),this.cloneFrom=this.updates=null)}}class aA{constructor(){this.map=new Map}set(t,n){return this.map.set(t,n),this}get(t){return this.map.has(t)||this.map.set(t,t.defaultValue()),this.map.get(t)}delete(t){return this.map.delete(t),this}has(t){return this.map.has(t)}keys(){return this.map.keys()}}function gv(e){return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer}function mv(e){return typeof Blob<"u"&&e instanceof Blob}function yv(e){return typeof FormData<"u"&&e instanceof FormData}class Ri{constructor(t,n,r,i){let o;if(this.url=n,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=t.toUpperCase(),function lA(e){switch(e){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||i?(this.body=void 0!==r?r:null,o=i):o=r,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params)),this.headers||(this.headers=new en),this.context||(this.context=new aA),this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=n;else{const a=n.indexOf("?");this.urlWithParams=n+(-1===a?"?":ad.set(f,t.setHeaders[f]),l)),t.setParams&&(c=Object.keys(t.setParams).reduce((d,f)=>d.set(f,t.setParams[f]),c)),new Ri(n,r,o,{params:c,headers:l,context:u,reportProgress:a,responseType:i,withCredentials:s})}}var be=(()=>((be=be||{})[be.Sent=0]="Sent",be[be.UploadProgress=1]="UploadProgress",be[be.ResponseHeader=2]="ResponseHeader",be[be.DownloadProgress=3]="DownloadProgress",be[be.Response=4]="Response",be[be.User=5]="User",be))();class wu{constructor(t,n=200,r="OK"){this.headers=t.headers||new en,this.status=void 0!==t.status?t.status:n,this.statusText=t.statusText||r,this.url=t.url||null,this.ok=this.status>=200&&this.status<300}}class Cu extends wu{constructor(t={}){super(t),this.type=be.ResponseHeader}clone(t={}){return new Cu({headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class Vs extends wu{constructor(t={}){super(t),this.type=be.Response,this.body=void 0!==t.body?t.body:null}clone(t={}){return new Vs({body:void 0!==t.body?t.body:this.body,headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}class vv extends wu{constructor(t){super(t,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${t.url||"(unknown url)"}`:`Http failure response for ${t.url||"(unknown url)"}: ${t.status} ${t.statusText}`,this.error=t.error||null}}function Eu(e,t){return{body:t,headers:e.headers,context:e.context,observe:e.observe,params:e.params,reportProgress:e.reportProgress,responseType:e.responseType,withCredentials:e.withCredentials}}let ki=(()=>{class e{constructor(n){this.handler=n}request(n,r,i={}){let o;if(n instanceof Ri)o=n;else{let l,c;l=i.headers instanceof en?i.headers:new en(i.headers),i.params&&(c=i.params instanceof fn?i.params:new fn({fromObject:i.params})),o=new Ri(n,r,void 0!==i.body?i.body:null,{headers:l,context:i.context,params:c,reportProgress:i.reportProgress,responseType:i.responseType||"json",withCredentials:i.withCredentials})}const s=_u(o).pipe(function nA(e,t){return X(t)?Lr(e,t,1):Lr(e,1)}(l=>this.handler.handle(l)));if(n instanceof Ri||"events"===i.observe)return s;const a=s.pipe(Du(l=>l instanceof Vs));switch(i.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return a.pipe(Me(l=>{if(null!==l.body&&!(l.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return l.body}));case"blob":return a.pipe(Me(l=>{if(null!==l.body&&!(l.body instanceof Blob))throw new Error("Response is not a Blob.");return l.body}));case"text":return a.pipe(Me(l=>{if(null!==l.body&&"string"!=typeof l.body)throw new Error("Response is not a string.");return l.body}));default:return a.pipe(Me(l=>l.body))}case"response":return a;default:throw new Error(`Unreachable: unhandled observe type ${i.observe}}`)}}delete(n,r={}){return this.request("DELETE",n,r)}get(n,r={}){return this.request("GET",n,r)}head(n,r={}){return this.request("HEAD",n,r)}jsonp(n,r){return this.request("JSONP",n,{params:(new fn).append(r,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(n,r={}){return this.request("OPTIONS",n,r)}patch(n,r,i={}){return this.request("PATCH",n,Eu(i,r))}post(n,r,i={}){return this.request("POST",n,Eu(i,r))}put(n,r,i={}){return this.request("PUT",n,Eu(i,r))}}return e.\u0275fac=function(n){return new(n||e)(D(Ns))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();function _v(e,t){return t(e)}function uA(e,t){return(n,r)=>t.intercept(n,{handle:i=>e(i,r)})}const fA=new A("HTTP_INTERCEPTORS"),Oi=new A("HTTP_INTERCEPTOR_FNS");function hA(){let e=null;return(t,n)=>(null===e&&(e=(Fe(fA,{optional:!0})??[]).reduceRight(uA,_v)),e(t,n))}let Dv=(()=>{class e extends Ns{constructor(n,r){super(),this.backend=n,this.injector=r,this.chain=null}handle(n){if(null===this.chain){const r=Array.from(new Set(this.injector.get(Oi)));this.chain=r.reduceRight((i,o)=>function dA(e,t,n){return(r,i)=>n.runInContext(()=>t(r,o=>e(o,i)))}(i,o,this.injector),_v)}return this.chain(n,r=>this.backend.handle(r))}}return e.\u0275fac=function(n){return new(n||e)(D(Fs),D(Sn))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const yA=/^\)\]\}',?\n/;let Cv=(()=>{class e{constructor(n){this.xhrFactory=n}handle(n){if("JSONP"===n.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new fe(r=>{const i=this.xhrFactory.build();if(i.open(n.method,n.urlWithParams),n.withCredentials&&(i.withCredentials=!0),n.headers.forEach((h,p)=>i.setRequestHeader(h,p.join(","))),n.headers.has("Accept")||i.setRequestHeader("Accept","application/json, text/plain, */*"),!n.headers.has("Content-Type")){const h=n.detectContentTypeHeader();null!==h&&i.setRequestHeader("Content-Type",h)}if(n.responseType){const h=n.responseType.toLowerCase();i.responseType="json"!==h?h:"text"}const o=n.serializeBody();let s=null;const a=()=>{if(null!==s)return s;const h=i.statusText||"OK",p=new en(i.getAllResponseHeaders()),g=function vA(e){return"responseURL"in e&&e.responseURL?e.responseURL:/^X-Request-URL:/m.test(e.getAllResponseHeaders())?e.getResponseHeader("X-Request-URL"):null}(i)||n.url;return s=new Cu({headers:p,status:i.status,statusText:h,url:g}),s},l=()=>{let{headers:h,status:p,statusText:g,url:y}=a(),v=null;204!==p&&(v=typeof i.response>"u"?i.responseText:i.response),0===p&&(p=v?200:0);let S=p>=200&&p<300;if("json"===n.responseType&&"string"==typeof v){const m=v;v=v.replace(yA,"");try{v=""!==v?JSON.parse(v):null}catch(k){v=m,S&&(S=!1,v={error:k,text:v})}}S?(r.next(new Vs({body:v,headers:h,status:p,statusText:g,url:y||void 0})),r.complete()):r.error(new vv({error:v,headers:h,status:p,statusText:g,url:y||void 0}))},c=h=>{const{url:p}=a(),g=new vv({error:h,status:i.status||0,statusText:i.statusText||"Unknown Error",url:p||void 0});r.error(g)};let u=!1;const d=h=>{u||(r.next(a()),u=!0);let p={type:be.DownloadProgress,loaded:h.loaded};h.lengthComputable&&(p.total=h.total),"text"===n.responseType&&i.responseText&&(p.partialText=i.responseText),r.next(p)},f=h=>{let p={type:be.UploadProgress,loaded:h.loaded};h.lengthComputable&&(p.total=h.total),r.next(p)};return i.addEventListener("load",l),i.addEventListener("error",c),i.addEventListener("timeout",c),i.addEventListener("abort",c),n.reportProgress&&(i.addEventListener("progress",d),null!==o&&i.upload&&i.upload.addEventListener("progress",f)),i.send(o),r.next({type:be.Sent}),()=>{i.removeEventListener("error",c),i.removeEventListener("abort",c),i.removeEventListener("load",l),i.removeEventListener("timeout",c),n.reportProgress&&(i.removeEventListener("progress",d),null!==o&&i.upload&&i.upload.removeEventListener("progress",f)),i.readyState!==i.DONE&&i.abort()}})}}return e.\u0275fac=function(n){return new(n||e)(D(zy))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();const bu=new A("XSRF_ENABLED"),Ev=new A("XSRF_COOKIE_NAME",{providedIn:"root",factory:()=>"XSRF-TOKEN"}),bv=new A("XSRF_HEADER_NAME",{providedIn:"root",factory:()=>"X-XSRF-TOKEN"});class Sv{}let wA=(()=>{class e{constructor(n,r,i){this.doc=n,this.platform=r,this.cookieName=i,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const n=this.doc.cookie||"";return n!==this.lastCookieString&&(this.parseCount++,this.lastToken=ky(n,this.cookieName),this.lastCookieString=n),this.lastToken}}return e.\u0275fac=function(n){return new(n||e)(D(ge),D(Ei),D(Ev))},e.\u0275prov=P({token:e,factory:e.\u0275fac}),e})();function CA(e,t){const n=e.url.toLowerCase();if(!Fe(bu)||"GET"===e.method||"HEAD"===e.method||n.startsWith("http://")||n.startsWith("https://"))return t(e);const r=Fe(Sv).getToken(),i=Fe(bv);return null!=r&&!e.headers.has(i)&&(e=e.clone({headers:e.headers.set(i,r)})),t(e)}var _e=(()=>((_e=_e||{})[_e.Interceptors=0]="Interceptors",_e[_e.LegacyInterceptors=1]="LegacyInterceptors",_e[_e.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",_e[_e.NoXsrfProtection=3]="NoXsrfProtection",_e[_e.JsonpSupport=4]="JsonpSupport",_e[_e.RequestsMadeViaParent=5]="RequestsMadeViaParent",_e))();function Tr(e,t){return{\u0275kind:e,\u0275providers:t}}function EA(...e){const t=[ki,Cv,Dv,{provide:Ns,useExisting:Dv},{provide:Fs,useExisting:Cv},{provide:Oi,useValue:CA,multi:!0},{provide:bu,useValue:!0},{provide:Sv,useClass:wA}];for(const n of e)t.push(...n.\u0275providers);return function WC(e){return{\u0275providers:e}}(t)}const Iv=new A("LEGACY_INTERCEPTOR_FN");let SA=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({providers:[EA(Tr(_e.LegacyInterceptors,[{provide:Iv,useFactory:hA},{provide:Oi,useExisting:Iv,multi:!0}]))]}),e})();const Su={now:()=>(Su.delegate||Date).now(),delegate:void 0};class IA extends Re{constructor(t=1/0,n=1/0,r=Su){super(),this._bufferSize=t,this._windowTime=n,this._timestampProvider=r,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=n===1/0,this._bufferSize=Math.max(1,t),this._windowTime=Math.max(1,n)}next(t){const{isStopped:n,_buffer:r,_infiniteTimeWindow:i,_timestampProvider:o,_windowTime:s}=this;n||(r.push(t),!i&&r.push(o.now()+s)),this._trimBuffer(),super.next(t)}_subscribe(t){this._throwIfClosed(),this._trimBuffer();const n=this._innerSubscribe(t),{_infiniteTimeWindow:r,_buffer:i}=this,o=i.slice();for(let s=0;sclearTimeout(n)},scheduleBeforeRender(e){if(typeof window>"u")return Bs.schedule(e,0);if(typeof window.requestAnimationFrame>"u")return Bs.schedule(e,16);const t=window.requestAnimationFrame(e);return()=>window.cancelAnimationFrame(t)}};let Iu;function FA(e,t,n){let r=n;return function xA(e){return!!e&&e.nodeType===Node.ELEMENT_NODE}(e)&&t.some((i,o)=>!("*"===i||!function RA(e,t){if(!Iu){const n=Element.prototype;Iu=n.matches||n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}return e.nodeType===Node.ELEMENT_NODE&&Iu.call(e,t)}(e,i)||(r=o,0))),r}class VA{constructor(t,n){this.componentFactory=n.get(an).resolveComponentFactory(t)}create(t){return new BA(this.componentFactory,t)}}class BA{constructor(t,n){this.componentFactory=t,this.injector=n,this.eventEmitters=new IA(1),this.events=this.eventEmitters.pipe(function MA(e,t){return Ue((n,r)=>{let i=null,o=0,s=!1;const a=()=>s&&!i&&r.complete();n.subscribe(Ne(r,l=>{i?.unsubscribe();let c=0;const u=o++;Ke(e(l,u)).subscribe(i=Ne(r,d=>r.next(t?t(l,d,u,c++):d),()=>{i=null,a()}))},()=>{s=!0,a()}))})}(r=>pa(...r))),this.componentRef=null,this.viewChangeDetectorRef=null,this.inputChanges=null,this.hasInputChanges=!1,this.implementsOnChanges=!1,this.scheduledChangeDetectionFn=null,this.scheduledDestroyFn=null,this.initialInputValues=new Map,this.unchangedInputs=new Set(this.componentFactory.inputs.map(({propName:r})=>r)),this.ngZone=this.injector.get(oe),this.elementZone=typeof Zone>"u"?null:this.ngZone.run(()=>Zone.current)}connect(t){this.runInZone(()=>{if(null!==this.scheduledDestroyFn)return this.scheduledDestroyFn(),void(this.scheduledDestroyFn=null);null===this.componentRef&&this.initializeComponent(t)})}disconnect(){this.runInZone(()=>{null===this.componentRef||null!==this.scheduledDestroyFn||(this.scheduledDestroyFn=Bs.schedule(()=>{null!==this.componentRef&&(this.componentRef.destroy(),this.componentRef=null,this.viewChangeDetectorRef=null)},10))})}getInputValue(t){return this.runInZone(()=>null===this.componentRef?this.initialInputValues.get(t):this.componentRef.instance[t])}setInputValue(t,n){this.runInZone(()=>{null!==this.componentRef?function kA(e,t){return e===t||e!=e&&t!=t}(n,this.getInputValue(t))&&(void 0!==n||!this.unchangedInputs.has(t))||(this.recordInputChange(t,n),this.unchangedInputs.delete(t),this.hasInputChanges=!0,this.componentRef.instance[t]=n,this.scheduleDetectChanges()):this.initialInputValues.set(t,n)})}initializeComponent(t){const n=bt.create({providers:[],parent:this.injector}),r=function NA(e,t){const n=e.childNodes,r=t.map(()=>[]);let i=-1;t.some((o,s)=>"*"===o&&(i=s,!0));for(let o=0,s=n.length;o{this.initialInputValues.has(t)&&this.setInputValue(t,this.initialInputValues.get(t))}),this.initialInputValues.clear()}initializeOutputs(t){const n=this.componentFactory.outputs.map(({propName:r,templateName:i})=>t.instance[r].pipe(Me(s=>({name:i,value:s}))));this.eventEmitters.next(n)}callNgOnChanges(t){if(!this.implementsOnChanges||null===this.inputChanges)return;const n=this.inputChanges;this.inputChanges=null,t.instance.ngOnChanges(n)}markViewForCheck(t){this.hasInputChanges&&(this.hasInputChanges=!1,t.markForCheck())}scheduleDetectChanges(){this.scheduledChangeDetectionFn||(this.scheduledChangeDetectionFn=Bs.scheduleBeforeRender(()=>{this.scheduledChangeDetectionFn=null,this.detectChanges()}))}recordInputChange(t,n){if(!this.implementsOnChanges)return;null===this.inputChanges&&(this.inputChanges={});const r=this.inputChanges[t];if(r)return void(r.currentValue=n);const i=this.unchangedInputs.has(t),o=i?void 0:this.getInputValue(t);this.inputChanges[t]=new Ud(o,n,i)}detectChanges(){null!==this.componentRef&&(this.callNgOnChanges(this.componentRef),this.markViewForCheck(this.viewChangeDetectorRef),this.componentRef.changeDetectorRef.detectChanges())}runInZone(t){return this.elementZone&&Zone.current!==this.elementZone?this.ngZone.run(t):t()}}class jA extends HTMLElement{constructor(){super(...arguments),this.ngElementEventsSubscription=null}}function xr(e){return null!=e&&"false"!=`${e}`}function Mv(e){return Array.isArray(e)?e:[e]}function Se(e){return null==e?"":"string"==typeof e?e:`${e}px`}const{isArray:zA}=Array;function Tv(e){return Me(t=>function GA(e,t){return zA(t)?e(...t):e(t)}(e,t))}const ZA=["addListener","removeListener"],WA=["addEventListener","removeEventListener"],qA=["on","off"];function js(e,t,n,r){if(X(n)&&(r=n,n=void 0),r)return js(e,t,n).pipe(Tv(r));const[i,o]=function KA(e){return X(e.addEventListener)&&X(e.removeEventListener)}(e)?WA.map(s=>a=>e[s](t,a,n)):function YA(e){return X(e.addListener)&&X(e.removeListener)}(e)?ZA.map(xv(e,t)):function XA(e){return X(e.on)&&X(e.off)}(e)?qA.map(xv(e,t)):[];if(!i&&da(e))return Lr(s=>js(s,t,n))(Ke(e));if(!i)throw new TypeError("Invalid event target");return new fe(s=>{const a=(...l)=>s.next(1o(a)})}function xv(e,t){return n=>r=>e[n](t,r)}class QA extends Ie{constructor(t,n){super()}schedule(t,n=0){return this}}const Hs={setInterval(e,t,...n){const{delegate:r}=Hs;return r?.setInterval?r.setInterval(e,t,...n):setInterval(e,t,...n)},clearInterval(e){const{delegate:t}=Hs;return(t?.clearInterval||clearInterval)(e)},delegate:void 0};class Mu extends QA{constructor(t,n){super(t,n),this.scheduler=t,this.work=n,this.pending=!1}schedule(t,n=0){var r;if(this.closed)return this;this.state=t;const i=this.id,o=this.scheduler;return null!=i&&(this.id=this.recycleAsyncId(o,i,n)),this.pending=!0,this.delay=n,this.id=null!==(r=this.id)&&void 0!==r?r:this.requestAsyncId(o,this.id,n),this}requestAsyncId(t,n,r=0){return Hs.setInterval(t.flush.bind(t,this),r)}recycleAsyncId(t,n,r=0){if(null!=r&&this.delay===r&&!1===this.pending)return n;null!=n&&Hs.clearInterval(n)}execute(t,n){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const r=this._execute(t,n);if(r)return r;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(t,n){let i,r=!1;try{this.work(t)}catch(o){r=!0,i=o||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),i}unsubscribe(){if(!this.closed){const{id:t,scheduler:n}=this,{actions:r}=n;this.work=this.state=this.scheduler=null,this.pending=!1,jn(r,this),null!=t&&(this.id=this.recycleAsyncId(n,t,null)),this.delay=null,super.unsubscribe()}}}const Pi={schedule(e){let t=requestAnimationFrame,n=cancelAnimationFrame;const{delegate:r}=Pi;r&&(t=r.requestAnimationFrame,n=r.cancelAnimationFrame);const i=t(o=>{n=void 0,e(o)});return new Ie(()=>n?.(i))},requestAnimationFrame(...e){const{delegate:t}=Pi;return(t?.requestAnimationFrame||requestAnimationFrame)(...e)},cancelAnimationFrame(...e){const{delegate:t}=Pi;return(t?.cancelAnimationFrame||cancelAnimationFrame)(...e)},delegate:void 0};class Ni{constructor(t,n=Ni.now){this.schedulerActionCtor=t,this.now=n}schedule(t,n=0,r){return new this.schedulerActionCtor(this,t).schedule(r,n)}}Ni.now=Su.now;class Tu extends Ni{constructor(t,n=Ni.now){super(t,n),this.actions=[],this._active=!1}flush(t){const{actions:n}=this;if(this._active)return void n.push(t);let r;this._active=!0;do{if(r=t.execute(t.state,t.delay))break}while(t=n.shift());if(this._active=!1,r){for(;t=n.shift();)t.unsubscribe();throw r}}}const tR=new class eR extends Tu{flush(t){this._active=!0;const n=this._scheduled;this._scheduled=void 0;const{actions:r}=this;let i;t=t||r.shift();do{if(i=t.execute(t.state,t.delay))break}while((t=r[0])&&t.id===n&&r.shift());if(this._active=!1,i){for(;(t=r[0])&&t.id===n&&r.shift();)t.unsubscribe();throw i}}}(class JA extends Mu{constructor(t,n){super(t,n),this.scheduler=t,this.work=n}requestAsyncId(t,n,r=0){return null!==r&&r>0?super.requestAsyncId(t,n,r):(t.actions.push(this),t._scheduled||(t._scheduled=Pi.requestAnimationFrame(()=>t.flush(void 0))))}recycleAsyncId(t,n,r=0){var i;if(null!=r?r>0:this.delay>0)return super.recycleAsyncId(t,n,r);const{actions:o}=t;null!=n&&(null===(i=o[o.length-1])||void 0===i?void 0:i.id)!==n&&(Pi.cancelAnimationFrame(n),t._scheduled=void 0)}});let xu,nR=1;const $s={};function Av(e){return e in $s&&(delete $s[e],!0)}const rR={setImmediate(e){const t=nR++;return $s[t]=!0,xu||(xu=Promise.resolve()),xu.then(()=>Av(t)&&e()),t},clearImmediate(e){Av(e)}},{setImmediate:iR,clearImmediate:oR}=rR,Us={setImmediate(...e){const{delegate:t}=Us;return(t?.setImmediate||iR)(...e)},clearImmediate(e){const{delegate:t}=Us;return(t?.clearImmediate||oR)(e)},delegate:void 0},lR=new class aR extends Tu{flush(t){this._active=!0;const n=this._scheduled;this._scheduled=void 0;const{actions:r}=this;let i;t=t||r.shift();do{if(i=t.execute(t.state,t.delay))break}while((t=r[0])&&t.id===n&&r.shift());if(this._active=!1,i){for(;(t=r[0])&&t.id===n&&r.shift();)t.unsubscribe();throw i}}}(class sR extends Mu{constructor(t,n){super(t,n),this.scheduler=t,this.work=n}requestAsyncId(t,n,r=0){return null!==r&&r>0?super.requestAsyncId(t,n,r):(t.actions.push(this),t._scheduled||(t._scheduled=Us.setImmediate(t.flush.bind(t,void 0))))}recycleAsyncId(t,n,r=0){var i;if(null!=r?r>0:this.delay>0)return super.recycleAsyncId(t,n,r);const{actions:o}=t;null!=n&&(null===(i=o[o.length-1])||void 0===i?void 0:i.id)!==n&&(Us.clearImmediate(n),t._scheduled=void 0)}}),Rv=new Tu(Mu),cR=Rv;function kv(e=0,t,n=cR){let r=-1;return null!=t&&(Cd(t)?n=t:r=t),new fe(i=>{let o=function dR(e){return e instanceof Date&&!isNaN(e)}(e)?+e-n.now():e;o<0&&(o=0);let s=0;return n.schedule(function(){i.closed||(i.next(s++),0<=r?this.schedule(void 0,r):i.complete())},o)})}function Au(e,t=Rv){return function uR(e){return Ue((t,n)=>{let r=!1,i=null,o=null,s=!1;const a=()=>{if(o?.unsubscribe(),o=null,r){r=!1;const c=i;i=null,n.next(c)}s&&n.complete()},l=()=>{o=null,s&&n.complete()};t.subscribe(Ne(n,c=>{r=!0,i=c,o||Ke(e(c)).subscribe(o=Ne(n,a,l))},()=>{s=!0,(!r||!o||o.closed)&&n.complete()}))})}(()=>kv(e,t))}function zs(e){return Ue((t,n)=>{Ke(e).subscribe(Ne(n,()=>n.complete(),qi)),!n.closed&&t.subscribe(n)})}function Ov(...e){return function fR(){return wd(1)}()(Qi(e,Ki(e)))}let Ru;try{Ru=typeof Intl<"u"&&Intl.v8BreakIterator}catch{Ru=!1}let Gs,Pn,Ar=(()=>{class e{constructor(n){this._platformId=n,this.isBrowser=this._platformId?Ts(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!Ru)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}}return e.\u0275fac=function(n){return new(n||e)(D(Ei))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();function Nv(){if(null==Pn){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return Pn=!1,Pn;if("scrollBehavior"in document.documentElement.style)Pn=!0;else{const e=Element.prototype.scrollTo;Pn=!!e&&!/\{\s*\[native code\]\s*\}/.test(e.toString())}}return Pn}function Li(){if("object"!=typeof document||!document)return 0;if(null==Gs){const e=document.createElement("div"),t=e.style;e.dir="rtl",t.width="1px",t.overflow="auto",t.visibility="hidden",t.pointerEvents="none",t.position="absolute";const n=document.createElement("div"),r=n.style;r.width="2px",r.height="1px",e.appendChild(n),document.body.appendChild(e),Gs=0,0===e.scrollLeft&&(e.scrollLeft=1,Gs=0===e.scrollLeft?1:2),e.remove()}return Gs}function Fv(e){return e.composedPath?e.composedPath()[0]:e.target}function Lv(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}const mR=new A("cdk-dir-doc",{providedIn:"root",factory:function yR(){return Fe(ge)}}),vR=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let Vi=(()=>{class e{constructor(n){this.value="ltr",this.change=new ue,n&&(this.value=function _R(e){const t=e?.toLowerCase()||"";return"auto"===t&&typeof navigator<"u"&&navigator?.language?vR.test(navigator.language)?"rtl":"ltr":"rtl"===t?"rtl":"ltr"}((n.body?n.body.dir:null)||(n.documentElement?n.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}}return e.\u0275fac=function(n){return new(n||e)(D(mR,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),Ou=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})();const DR=["contentWrapper"],wR=["*"],CR=new A("VIRTUAL_SCROLL_STRATEGY");let Zs=(()=>{class e{constructor(n,r,i){this._ngZone=n,this._platform=r,this._scrolled=new Re,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=i}register(n){this.scrollContainers.has(n)||this.scrollContainers.set(n,n.elementScrolled().subscribe(()=>this._scrolled.next(n)))}deregister(n){const r=this.scrollContainers.get(n);r&&(r.unsubscribe(),this.scrollContainers.delete(n))}scrolled(n=20){return this._platform.isBrowser?new fe(r=>{this._globalSubscription||this._addGlobalListener();const i=n>0?this._scrolled.pipe(Au(n)).subscribe(r):this._scrolled.subscribe(r);return this._scrolledCount++,()=>{i.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):_u()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((n,r)=>this.deregister(r)),this._scrolled.complete()}ancestorScrolled(n,r){const i=this.getAncestorScrollContainers(n);return this.scrolled(r).pipe(Du(o=>!o||i.indexOf(o)>-1))}getAncestorScrollContainers(n){const r=[];return this.scrollContainers.forEach((i,o)=>{this._scrollableContainsElement(o,n)&&r.push(o)}),r}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(n,r){let i=function UA(e){return e instanceof We?e.nativeElement:e}(r),o=n.getElementRef().nativeElement;do{if(i==o)return!0}while(i=i.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>js(this._getWindow().document,"scroll").subscribe(()=>this._scrolled.next()))}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}}return e.\u0275fac=function(n){return new(n||e)(D(oe),D(Ar),D(ge,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),Vv=(()=>{class e{constructor(n,r,i,o){this.elementRef=n,this.scrollDispatcher=r,this.ngZone=i,this.dir=o,this._destroyed=new Re,this._elementScrolled=new fe(s=>this.ngZone.runOutsideAngular(()=>js(this.elementRef.nativeElement,"scroll").pipe(zs(this._destroyed)).subscribe(s)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(n){const r=this.elementRef.nativeElement,i=this.dir&&"rtl"==this.dir.value;null==n.left&&(n.left=i?n.end:n.start),null==n.right&&(n.right=i?n.start:n.end),null!=n.bottom&&(n.top=r.scrollHeight-r.clientHeight-n.bottom),i&&0!=Li()?(null!=n.left&&(n.right=r.scrollWidth-r.clientWidth-n.left),2==Li()?n.left=n.right:1==Li()&&(n.left=n.right?-n.right:n.right)):null!=n.right&&(n.left=r.scrollWidth-r.clientWidth-n.right),this._applyScrollToOptions(n)}_applyScrollToOptions(n){const r=this.elementRef.nativeElement;Nv()?r.scrollTo(n):(null!=n.top&&(r.scrollTop=n.top),null!=n.left&&(r.scrollLeft=n.left))}measureScrollOffset(n){const r="left",i="right",o=this.elementRef.nativeElement;if("top"==n)return o.scrollTop;if("bottom"==n)return o.scrollHeight-o.clientHeight-o.scrollTop;const s=this.dir&&"rtl"==this.dir.value;return"start"==n?n=s?i:r:"end"==n&&(n=s?r:i),s&&2==Li()?n==r?o.scrollWidth-o.clientWidth-o.scrollLeft:o.scrollLeft:s&&1==Li()?n==r?o.scrollLeft+o.scrollWidth-o.clientWidth:-o.scrollLeft:n==r?o.scrollLeft:o.scrollWidth-o.clientWidth-o.scrollLeft}}return e.\u0275fac=function(n){return new(n||e)(E(We),E(Zs),E(oe),E(Vi,8))},e.\u0275dir=ke({type:e,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0}),e})(),Pu=(()=>{class e{constructor(n,r,i){this._platform=n,this._change=new Re,this._changeListener=o=>{this._change.next(o)},this._document=i,r.runOutsideAngular(()=>{if(n.isBrowser){const o=this._getWindow();o.addEventListener("resize",this._changeListener),o.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){const n=this._getWindow();n.removeEventListener("resize",this._changeListener),n.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const n={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),n}getViewportRect(){const n=this.getViewportScrollPosition(),{width:r,height:i}=this.getViewportSize();return{top:n.top,left:n.left,bottom:n.top+i,right:n.left+r,height:i,width:r}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const n=this._document,r=this._getWindow(),i=n.documentElement,o=i.getBoundingClientRect();return{top:-o.top||n.body.scrollTop||r.scrollY||i.scrollTop||0,left:-o.left||n.body.scrollLeft||r.scrollX||i.scrollLeft||0}}change(n=20){return n>0?this._change.pipe(Au(n)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const n=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:n.innerWidth,height:n.innerHeight}:{width:0,height:0}}}return e.\u0275fac=function(n){return new(n||e)(D(Ar),D(oe),D(ge,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const Bv=new A("VIRTUAL_SCROLLABLE");let SR=(()=>{class e extends Vv{constructor(n,r,i,o){super(n,r,i,o)}measureViewportSize(n){const r=this.elementRef.nativeElement;return"horizontal"===n?r.clientWidth:r.clientHeight}}return e.\u0275fac=function(n){return new(n||e)(E(We),E(Zs),E(oe),E(Vi,8))},e.\u0275dir=ke({type:e,features:[Wo]}),e})();const MR=typeof requestAnimationFrame<"u"?tR:lR;let TR=(()=>{class e extends SR{get orientation(){return this._orientation}set orientation(n){this._orientation!==n&&(this._orientation=n,this._calculateSpacerSize())}get appendOnly(){return this._appendOnly}set appendOnly(n){this._appendOnly=xr(n)}constructor(n,r,i,o,s,a,l,c){super(n,a,i,s),this.elementRef=n,this._changeDetectorRef=r,this._scrollStrategy=o,this.scrollable=c,this._platform=Fe(Ar),this._detachedSubject=new Re,this._renderedRangeSubject=new Re,this._orientation="vertical",this._appendOnly=!1,this.scrolledIndexChange=new fe(u=>this._scrollStrategy.scrolledIndexChange.subscribe(d=>Promise.resolve().then(()=>this.ngZone.run(()=>u.next(d))))),this.renderedRangeStream=this._renderedRangeSubject,this._totalContentSize=0,this._totalContentWidth="",this._totalContentHeight="",this._renderedRange={start:0,end:0},this._dataLength=0,this._viewportSize=0,this._renderedContentOffset=0,this._renderedContentOffsetNeedsRewrite=!1,this._isChangeDetectionPending=!1,this._runAfterChangeDetection=[],this._viewportChanges=Ie.EMPTY,this._viewportChanges=l.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this)}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe(function hR(...e){const t=Ki(e);return Ue((n,r)=>{(t?Ov(e,n,t):Ov(e,n)).subscribe(r)})}(null),Au(0,MR)).subscribe(()=>this._scrollStrategy.onContentScrolled()),this._markChangeDetectionNeeded()})))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),super.ngOnDestroy()}attach(n){this.ngZone.runOutsideAngular(()=>{this._forOf=n,this._forOf.dataStream.pipe(zs(this._detachedSubject)).subscribe(r=>{const i=r.length;i!==this._dataLength&&(this._dataLength=i,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()})})}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(n){return this.getElementRef().nativeElement.getBoundingClientRect()[n]}setTotalContentSize(n){this._totalContentSize!==n&&(this._totalContentSize=n,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(n){(function IR(e,t){return e.start==t.start&&e.end==t.end})(this._renderedRange,n)||(this.appendOnly&&(n={start:0,end:Math.max(this._renderedRange.end,n.end)}),this._renderedRangeSubject.next(this._renderedRange=n),this._markChangeDetectionNeeded(()=>this._scrollStrategy.onContentRendered()))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(n,r="to-start"){n=this.appendOnly&&"to-start"===r?0:n;const o="horizontal"==this.orientation,s=o?"X":"Y";let l=`translate${s}(${Number((o&&this.dir&&"rtl"==this.dir.value?-1:1)*n)}px)`;this._renderedContentOffset=n,"to-end"===r&&(l+=` translate${s}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=l&&(this._renderedContentTransform=l,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(n,r="auto"){const i={behavior:r};"horizontal"===this.orientation?i.start=n:i.top=n,this.scrollable.scrollTo(i)}scrollToIndex(n,r="auto"){this._scrollStrategy.scrollToIndex(n,r)}measureScrollOffset(n){let r;return r=this.scrollable==this?i=>super.measureScrollOffset(i):i=>this.scrollable.measureScrollOffset(i),Math.max(0,r(n??("horizontal"===this.orientation?"start":"top"))-this.measureViewportOffset())}measureViewportOffset(n){let r;const i="left",o="right",s="rtl"==this.dir?.value;r="start"==n?s?o:i:"end"==n?s?i:o:n||("horizontal"===this.orientation?"left":"top");const a=this.scrollable.measureBoundingClientRectWithScrollOffset(r);return this.elementRef.nativeElement.getBoundingClientRect()[r]-a}measureRenderedContentSize(){const n=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?n.offsetWidth:n.offsetHeight}measureRangeSize(n){return this._forOf?this._forOf.measureRangeSize(n,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(n){n&&this._runAfterChangeDetection.push(n),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._doChangeDetection()})))}_doChangeDetection(){this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run(()=>this._changeDetectorRef.markForCheck());const n=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(const r of n)r()}_calculateSpacerSize(){this._totalContentHeight="horizontal"===this.orientation?"":`${this._totalContentSize}px`,this._totalContentWidth="horizontal"===this.orientation?`${this._totalContentSize}px`:""}}return e.\u0275fac=function(n){return new(n||e)(E(We),E(gs),E(oe),E(CR,8),E(Vi,8),E(Zs),E(Pu),E(Bv,8))},e.\u0275cmp=Un({type:e,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(n,r){if(1&n&&wm(DR,7),2&n){let i;Dm(i=function Cm(){return function I0(e,t){return e[kt].queries[t].queryList}(_(),af())}())&&(r._contentWrapper=i.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(n,r){2&n&&ns("cdk-virtual-scroll-orientation-horizontal","horizontal"===r.orientation)("cdk-virtual-scroll-orientation-vertical","horizontal"!==r.orientation)},inputs:{orientation:"orientation",appendOnly:"appendOnly"},outputs:{scrolledIndexChange:"scrolledIndexChange"},standalone:!0,features:[gc([{provide:Vv,useFactory:(t,n)=>t||n,deps:[[new Jr,new So(Bv)],e]}]),Wo,ls],ngContentSelectors:wR,decls:4,vars:4,consts:[[1,"cdk-virtual-scroll-content-wrapper"],["contentWrapper",""],[1,"cdk-virtual-scroll-spacer"]],template:function(n,r){1&n&&(function Vp(e){const t=_()[Be][Ve];if(!t.projection){const r=t.projection=Qr(e?e.length:1,null),i=r.slice();let o=t.child;for(;null!==o;){const s=e?eS(o,e):0;null!==s&&(i[s]?i[s].projectionNext=o:r[s]=o,i[s]=o),o=o.next}}}(),Mn(0,"div",0,1),function Bp(e,t=0,n){const r=_(),i=Y(),o=dr(i,le+e,16,null,n||null);null===o.projection&&(o.projection=t),Oa(),32!=(32&o.flags)&&function mC(e,t,n){ch(t[Z],0,t,n,eh(e,n,t),ih(n.parent||t[Ve],n,t))}(i,r,o)}(2),Tn(),Ko(3,"div",2)),2&n&&(li(3),oc("width",r._totalContentWidth)("height",r._totalContentHeight))},styles:["cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}"],encapsulation:2,changeDetection:0}),e})(),jv=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})(),Hv=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({imports:[Ou,jv,TR,Ou,jv]}),e})();class Nu{attach(t){return this._attachedHost=t,t.attach(this)}detach(){let t=this._attachedHost;null!=t&&(this._attachedHost=null,t.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(t){this._attachedHost=t}}class RR extends Nu{constructor(t,n,r,i,o){super(),this.component=t,this.viewContainerRef=n,this.injector=r,this.componentFactoryResolver=i,this.projectableNodes=o}}class $v extends Nu{constructor(t,n,r,i){super(),this.templateRef=t,this.viewContainerRef=n,this.context=r,this.injector=i}get origin(){return this.templateRef.elementRef}attach(t,n=this.context){return this.context=n,super.attach(t)}detach(){return this.context=void 0,super.detach()}}class kR extends Nu{constructor(t){super(),this.element=t instanceof We?t.nativeElement:t}}class OR{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(t){return t instanceof RR?(this._attachedPortal=t,this.attachComponentPortal(t)):t instanceof $v?(this._attachedPortal=t,this.attachTemplatePortal(t)):this.attachDomPortal&&t instanceof kR?(this._attachedPortal=t,this.attachDomPortal(t)):void 0}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(t){this._disposeFn=t}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class PR extends OR{constructor(t,n,r,i,o){super(),this.outletElement=t,this._componentFactoryResolver=n,this._appRef=r,this._defaultInjector=i,this.attachDomPortal=s=>{const a=s.element,l=this._document.createComment("dom-portal");a.parentNode.insertBefore(l,a),this.outletElement.appendChild(a),this._attachedPortal=s,super.setDisposeFn(()=>{l.parentNode&&l.parentNode.replaceChild(a,l)})},this._document=o}attachComponentPortal(t){const r=(t.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(t.component);let i;return t.viewContainerRef?(i=t.viewContainerRef.createComponent(r,t.viewContainerRef.length,t.injector||t.viewContainerRef.injector,t.projectableNodes||void 0),this.setDisposeFn(()=>i.destroy())):(i=r.create(t.injector||this._defaultInjector||bt.NULL),this._appRef.attachView(i.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(i.hostView),i.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(i)),this._attachedPortal=t,i}attachTemplatePortal(t){let n=t.viewContainerRef,r=n.createEmbeddedView(t.templateRef,t.context,{injector:t.injector});return r.rootNodes.forEach(i=>this.outletElement.appendChild(i)),r.detectChanges(),this.setDisposeFn(()=>{let i=n.indexOf(r);-1!==i&&n.remove(i)}),this._attachedPortal=t,r}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(t){return t.hostView.rootNodes[0]}}let NR=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e})();const Uv=Nv();class VR{constructor(t,n){this._viewportRuler=t,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=n}attach(){}enable(){if(this._canBeEnabled()){const t=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=t.style.left||"",this._previousHTMLStyles.top=t.style.top||"",t.style.left=Se(-this._previousScrollPosition.left),t.style.top=Se(-this._previousScrollPosition.top),t.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const t=this._document.documentElement,r=t.style,i=this._document.body.style,o=r.scrollBehavior||"",s=i.scrollBehavior||"";this._isEnabled=!1,r.left=this._previousHTMLStyles.left,r.top=this._previousHTMLStyles.top,t.classList.remove("cdk-global-scrollblock"),Uv&&(r.scrollBehavior=i.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),Uv&&(r.scrollBehavior=o,i.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const n=this._document.body,r=this._viewportRuler.getViewportSize();return n.scrollHeight>r.height||n.scrollWidth>r.width}}class BR{constructor(t,n,r,i){this._scrollDispatcher=t,this._ngZone=n,this._viewportRuler=r,this._config=i,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(t){this._overlayRef=t}enable(){if(this._scrollSubscription)return;const t=this._scrollDispatcher.scrolled(0).pipe(Du(n=>!n||!this._overlayRef.overlayElement.contains(n.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=t.subscribe(()=>{const n=this._viewportRuler.getViewportScrollPosition().top;Math.abs(n-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=t.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}class zv{enable(){}disable(){}attach(){}}function Fu(e,t){return t.some(n=>e.bottomn.bottom||e.rightn.right)}function Gv(e,t){return t.some(n=>e.topn.bottom||e.leftn.right)}class jR{constructor(t,n,r,i){this._scrollDispatcher=t,this._viewportRuler=n,this._ngZone=r,this._config=i,this._scrollSubscription=null}attach(t){this._overlayRef=t}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const n=this._overlayRef.overlayElement.getBoundingClientRect(),{width:r,height:i}=this._viewportRuler.getViewportSize();Fu(n,[{width:r,height:i,bottom:i,right:r,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let HR=(()=>{class e{constructor(n,r,i,o){this._scrollDispatcher=n,this._viewportRuler=r,this._ngZone=i,this.noop=()=>new zv,this.close=s=>new BR(this._scrollDispatcher,this._ngZone,this._viewportRuler,s),this.block=()=>new VR(this._viewportRuler,this._document),this.reposition=s=>new jR(this._scrollDispatcher,this._viewportRuler,this._ngZone,s),this._document=o}}return e.\u0275fac=function(n){return new(n||e)(D(Zs),D(Pu),D(oe),D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class Zv{constructor(t){if(this.scrollStrategy=new zv,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,t){const n=Object.keys(t);for(const r of n)void 0!==t[r]&&(this[r]=t[r])}}}class $R{constructor(t,n){this.connectionPair=t,this.scrollableViewProperties=n}}let Wv=(()=>{class e{constructor(n){this._attachedOverlays=[],this._document=n}ngOnDestroy(){this.detach()}add(n){this.remove(n),this._attachedOverlays.push(n)}remove(n){const r=this._attachedOverlays.indexOf(n);r>-1&&this._attachedOverlays.splice(r,1),0===this._attachedOverlays.length&&this.detach()}}return e.\u0275fac=function(n){return new(n||e)(D(ge))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),UR=(()=>{class e extends Wv{constructor(n,r){super(n),this._ngZone=r,this._keydownListener=i=>{const o=this._attachedOverlays;for(let s=o.length-1;s>-1;s--)if(o[s]._keydownEvents.observers.length>0){const a=o[s]._keydownEvents;this._ngZone?this._ngZone.run(()=>a.next(i)):a.next(i);break}}}add(n){super.add(n),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}}return e.\u0275fac=function(n){return new(n||e)(D(ge),D(oe,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),zR=(()=>{class e extends Wv{constructor(n,r,i){super(n),this._platform=r,this._ngZone=i,this._cursorStyleIsSet=!1,this._pointerDownListener=o=>{this._pointerDownEventTarget=Fv(o)},this._clickListener=o=>{const s=Fv(o),a="click"===o.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:s;this._pointerDownEventTarget=null;const l=this._attachedOverlays.slice();for(let c=l.length-1;c>-1;c--){const u=l[c];if(u._outsidePointerEvents.observers.length<1||!u.hasAttached())continue;if(u.overlayElement.contains(s)||u.overlayElement.contains(a))break;const d=u._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>d.next(o)):d.next(o)}}}add(n){if(super.add(n),!this._isAttached){const r=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(r)):this._addEventListeners(r),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=r.style.cursor,r.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const n=this._document.body;n.removeEventListener("pointerdown",this._pointerDownListener,!0),n.removeEventListener("click",this._clickListener,!0),n.removeEventListener("auxclick",this._clickListener,!0),n.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(n.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(n){n.addEventListener("pointerdown",this._pointerDownListener,!0),n.addEventListener("click",this._clickListener,!0),n.addEventListener("auxclick",this._clickListener,!0),n.addEventListener("contextmenu",this._clickListener,!0)}}return e.\u0275fac=function(n){return new(n||e)(D(ge),D(Ar),D(oe,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),qv=(()=>{class e{constructor(n,r){this._platform=r,this._document=n}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const n="cdk-overlay-container";if(this._platform.isBrowser||Lv()){const i=this._document.querySelectorAll(`.${n}[platform="server"], .${n}[platform="test"]`);for(let o=0;othis._backdropClick.next(d),this._backdropTransitionendHandler=d=>{this._disposeBackdrop(d.target)},this._keydownEvents=new Re,this._outsidePointerEvents=new Re,i.scrollStrategy&&(this._scrollStrategy=i.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=i.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(t){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const n=this._portalOutlet.attach(t);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(function xR(e){return e<=0?()=>fa:Ue((t,n)=>{let r=0;t.subscribe(Ne(n,i=>{++r<=e&&(n.next(i),e<=r&&n.complete())}))})}(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof n?.onDestroy&&n.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),n}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const t=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),t}dispose(){const t=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._previousHostParent=this._pane=this._host=null,t&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(t){t!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=t,this.hasAttached()&&(t.attach(this),this.updatePosition()))}updateSize(t){this._config={...this._config,...t},this._updateElementSize()}setDirection(t){this._config={...this._config,direction:t},this._updateElementDirection()}addPanelClass(t){this._pane&&this._toggleClasses(this._pane,t,!0)}removePanelClass(t){this._pane&&this._toggleClasses(this._pane,t,!1)}getDirection(){const t=this._config.direction;return t?"string"==typeof t?t:t.value:"ltr"}updateScrollStrategy(t){t!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=t,this.hasAttached()&&(t.attach(this),t.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const t=this._pane.style;t.width=Se(this._config.width),t.height=Se(this._config.height),t.minWidth=Se(this._config.minWidth),t.minHeight=Se(this._config.minHeight),t.maxWidth=Se(this._config.maxWidth),t.maxHeight=Se(this._config.maxHeight)}_togglePointerEvents(t){this._pane.style.pointerEvents=t?"":"none"}_attachBackdrop(){const t="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(t)})}):this._backdropElement.classList.add(t)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const t=this._backdropElement;if(t){if(this._animationsDisabled)return void this._disposeBackdrop(t);t.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{t.addEventListener("transitionend",this._backdropTransitionendHandler)}),t.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(t)},500))}}_toggleClasses(t,n,r){const i=Mv(n||[]).filter(o=>!!o);i.length&&(r?t.classList.add(...i):t.classList.remove(...i))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{const t=this._ngZone.onStable.pipe(zs(pa(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),t.unsubscribe())})})}_disposeScrollStrategy(){const t=this._scrollStrategy;t&&(t.disable(),t.detach&&t.detach())}_disposeBackdrop(t){t&&(t.removeEventListener("click",this._backdropClickHandler),t.removeEventListener("transitionend",this._backdropTransitionendHandler),t.remove(),this._backdropElement===t&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const Yv="cdk-overlay-connected-position-bounding-box",ZR=/([A-Za-z%]+)$/;class WR{get positions(){return this._preferredPositions}constructor(t,n,r,i,o){this._viewportRuler=n,this._document=r,this._platform=i,this._overlayContainer=o,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new Re,this._resizeSubscription=Ie.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(t)}attach(t){this._validatePositions(),t.hostElement.classList.add(Yv),this._overlayRef=t,this._boundingBox=t.hostElement,this._pane=t.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const t=this._originRect,n=this._overlayRect,r=this._viewportRect,i=this._containerRect,o=[];let s;for(let a of this._preferredPositions){let l=this._getOriginPoint(t,i,a),c=this._getOverlayPoint(l,n,a),u=this._getOverlayFit(c,n,r,a);if(u.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(a,l);this._canFitWithFlexibleDimensions(u,c,r)?o.push({position:a,origin:l,overlayRect:n,boundingBoxRect:this._calculateBoundingBoxRect(l,a)}):(!s||s.overlayFit.visibleAreal&&(l=u,a=c)}return this._isPushed=!1,void this._applyPosition(a.position,a.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(s.position,s.originPoint);this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Nn(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(Yv),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const t=this._lastPosition;if(t){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const n=this._getOriginPoint(this._originRect,this._containerRect,t);this._applyPosition(t,n)}else this.apply()}withScrollableContainers(t){return this._scrollables=t,this}withPositions(t){return this._preferredPositions=t,-1===t.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(t){return this._viewportMargin=t,this}withFlexibleDimensions(t=!0){return this._hasFlexibleDimensions=t,this}withGrowAfterOpen(t=!0){return this._growAfterOpen=t,this}withPush(t=!0){return this._canPush=t,this}withLockedPosition(t=!0){return this._positionLocked=t,this}setOrigin(t){return this._origin=t,this}withDefaultOffsetX(t){return this._offsetX=t,this}withDefaultOffsetY(t){return this._offsetY=t,this}withTransformOriginOn(t){return this._transformOriginSelector=t,this}_getOriginPoint(t,n,r){let i,o;if("center"==r.originX)i=t.left+t.width/2;else{const s=this._isRtl()?t.right:t.left,a=this._isRtl()?t.left:t.right;i="start"==r.originX?s:a}return n.left<0&&(i-=n.left),o="center"==r.originY?t.top+t.height/2:"top"==r.originY?t.top:t.bottom,n.top<0&&(o-=n.top),{x:i,y:o}}_getOverlayPoint(t,n,r){let i,o;return i="center"==r.overlayX?-n.width/2:"start"===r.overlayX?this._isRtl()?-n.width:0:this._isRtl()?0:-n.width,o="center"==r.overlayY?-n.height/2:"top"==r.overlayY?0:-n.height,{x:t.x+i,y:t.y+o}}_getOverlayFit(t,n,r,i){const o=Kv(n);let{x:s,y:a}=t,l=this._getOffset(i,"x"),c=this._getOffset(i,"y");l&&(s+=l),c&&(a+=c);let f=0-a,h=a+o.height-r.height,p=this._subtractOverflows(o.width,0-s,s+o.width-r.width),g=this._subtractOverflows(o.height,f,h),y=p*g;return{visibleArea:y,isCompletelyWithinViewport:o.width*o.height===y,fitsInViewportVertically:g===o.height,fitsInViewportHorizontally:p==o.width}}_canFitWithFlexibleDimensions(t,n,r){if(this._hasFlexibleDimensions){const i=r.bottom-n.y,o=r.right-n.x,s=Xv(this._overlayRef.getConfig().minHeight),a=Xv(this._overlayRef.getConfig().minWidth);return(t.fitsInViewportVertically||null!=s&&s<=i)&&(t.fitsInViewportHorizontally||null!=a&&a<=o)}return!1}_pushOverlayOnScreen(t,n,r){if(this._previousPushAmount&&this._positionLocked)return{x:t.x+this._previousPushAmount.x,y:t.y+this._previousPushAmount.y};const i=Kv(n),o=this._viewportRect,s=Math.max(t.x+i.width-o.width,0),a=Math.max(t.y+i.height-o.height,0),l=Math.max(o.top-r.top-t.y,0),c=Math.max(o.left-r.left-t.x,0);let u=0,d=0;return u=i.width<=o.width?c||-s:t.xp&&!this._isInitialRender&&!this._growAfterOpen&&(s=t.y-p/2)}if("end"===n.overlayX&&!i||"start"===n.overlayX&&i)f=r.width-t.x+this._viewportMargin,u=t.x-this._viewportMargin;else if("start"===n.overlayX&&!i||"end"===n.overlayX&&i)d=t.x,u=r.right-t.x;else{const h=Math.min(r.right-t.x+r.left,t.x),p=this._lastBoundingBoxSize.width;u=2*h,d=t.x-h,u>p&&!this._isInitialRender&&!this._growAfterOpen&&(d=t.x-p/2)}return{top:s,left:d,bottom:a,right:f,width:u,height:o}}_setBoundingBoxStyles(t,n){const r=this._calculateBoundingBoxRect(t,n);!this._isInitialRender&&!this._growAfterOpen&&(r.height=Math.min(r.height,this._lastBoundingBoxSize.height),r.width=Math.min(r.width,this._lastBoundingBoxSize.width));const i={};if(this._hasExactPosition())i.top=i.left="0",i.bottom=i.right=i.maxHeight=i.maxWidth="",i.width=i.height="100%";else{const o=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;i.height=Se(r.height),i.top=Se(r.top),i.bottom=Se(r.bottom),i.width=Se(r.width),i.left=Se(r.left),i.right=Se(r.right),i.alignItems="center"===n.overlayX?"center":"end"===n.overlayX?"flex-end":"flex-start",i.justifyContent="center"===n.overlayY?"center":"bottom"===n.overlayY?"flex-end":"flex-start",o&&(i.maxHeight=Se(o)),s&&(i.maxWidth=Se(s))}this._lastBoundingBoxSize=r,Nn(this._boundingBox.style,i)}_resetBoundingBoxStyles(){Nn(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Nn(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(t,n){const r={},i=this._hasExactPosition(),o=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(i){const u=this._viewportRuler.getViewportScrollPosition();Nn(r,this._getExactOverlayY(n,t,u)),Nn(r,this._getExactOverlayX(n,t,u))}else r.position="static";let a="",l=this._getOffset(n,"x"),c=this._getOffset(n,"y");l&&(a+=`translateX(${l}px) `),c&&(a+=`translateY(${c}px)`),r.transform=a.trim(),s.maxHeight&&(i?r.maxHeight=Se(s.maxHeight):o&&(r.maxHeight="")),s.maxWidth&&(i?r.maxWidth=Se(s.maxWidth):o&&(r.maxWidth="")),Nn(this._pane.style,r)}_getExactOverlayY(t,n,r){let i={top:"",bottom:""},o=this._getOverlayPoint(n,this._overlayRect,t);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,r)),"bottom"===t.overlayY?i.bottom=this._document.documentElement.clientHeight-(o.y+this._overlayRect.height)+"px":i.top=Se(o.y),i}_getExactOverlayX(t,n,r){let s,i={left:"",right:""},o=this._getOverlayPoint(n,this._overlayRect,t);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,r)),s=this._isRtl()?"end"===t.overlayX?"left":"right":"end"===t.overlayX?"right":"left","right"===s?i.right=this._document.documentElement.clientWidth-(o.x+this._overlayRect.width)+"px":i.left=Se(o.x),i}_getScrollVisibility(){const t=this._getOriginRect(),n=this._pane.getBoundingClientRect(),r=this._scrollables.map(i=>i.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:Gv(t,r),isOriginOutsideView:Fu(t,r),isOverlayClipped:Gv(n,r),isOverlayOutsideView:Fu(n,r)}}_subtractOverflows(t,...n){return n.reduce((r,i)=>r-Math.max(i,0),t)}_getNarrowedViewportRect(){const t=this._document.documentElement.clientWidth,n=this._document.documentElement.clientHeight,r=this._viewportRuler.getViewportScrollPosition();return{top:r.top+this._viewportMargin,left:r.left+this._viewportMargin,right:r.left+t-this._viewportMargin,bottom:r.top+n-this._viewportMargin,width:t-2*this._viewportMargin,height:n-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(t,n){return"x"===n?null==t.offsetX?this._offsetX:t.offsetX:null==t.offsetY?this._offsetY:t.offsetY}_validatePositions(){}_addPanelClasses(t){this._pane&&Mv(t).forEach(n=>{""!==n&&-1===this._appliedPanelClasses.indexOf(n)&&(this._appliedPanelClasses.push(n),this._pane.classList.add(n))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(t=>{this._pane.classList.remove(t)}),this._appliedPanelClasses=[])}_getOriginRect(){const t=this._origin;if(t instanceof We)return t.nativeElement.getBoundingClientRect();if(t instanceof Element)return t.getBoundingClientRect();const n=t.width||0,r=t.height||0;return{top:t.y,bottom:t.y+r,left:t.x,right:t.x+n,height:r,width:n}}}function Nn(e,t){for(let n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function Xv(e){if("number"!=typeof e&&null!=e){const[t,n]=e.split(ZR);return n&&"px"!==n?null:parseFloat(t)}return e||null}function Kv(e){return{top:Math.floor(e.top),right:Math.floor(e.right),bottom:Math.floor(e.bottom),left:Math.floor(e.left),width:Math.floor(e.width),height:Math.floor(e.height)}}const Qv="cdk-global-overlay-wrapper";class qR{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(t){const n=t.getConfig();this._overlayRef=t,this._width&&!n.width&&t.updateSize({width:this._width}),this._height&&!n.height&&t.updateSize({height:this._height}),t.hostElement.classList.add(Qv),this._isDisposed=!1}top(t=""){return this._bottomOffset="",this._topOffset=t,this._alignItems="flex-start",this}left(t=""){return this._xOffset=t,this._xPosition="left",this}bottom(t=""){return this._topOffset="",this._bottomOffset=t,this._alignItems="flex-end",this}right(t=""){return this._xOffset=t,this._xPosition="right",this}start(t=""){return this._xOffset=t,this._xPosition="start",this}end(t=""){return this._xOffset=t,this._xPosition="end",this}width(t=""){return this._overlayRef?this._overlayRef.updateSize({width:t}):this._width=t,this}height(t=""){return this._overlayRef?this._overlayRef.updateSize({height:t}):this._height=t,this}centerHorizontally(t=""){return this.left(t),this._xPosition="center",this}centerVertically(t=""){return this.top(t),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const t=this._overlayRef.overlayElement.style,n=this._overlayRef.hostElement.style,r=this._overlayRef.getConfig(),{width:i,height:o,maxWidth:s,maxHeight:a}=r,l=!("100%"!==i&&"100vw"!==i||s&&"100%"!==s&&"100vw"!==s),c=!("100%"!==o&&"100vh"!==o||a&&"100%"!==a&&"100vh"!==a),u=this._xPosition,d=this._xOffset,f="rtl"===this._overlayRef.getConfig().direction;let h="",p="",g="";l?g="flex-start":"center"===u?(g="center",f?p=d:h=d):f?"left"===u||"end"===u?(g="flex-end",h=d):("right"===u||"start"===u)&&(g="flex-start",p=d):"left"===u||"start"===u?(g="flex-start",h=d):("right"===u||"end"===u)&&(g="flex-end",p=d),t.position=this._cssPosition,t.marginLeft=l?"0":h,t.marginTop=c?"0":this._topOffset,t.marginBottom=this._bottomOffset,t.marginRight=l?"0":p,n.justifyContent=g,n.alignItems=c?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const t=this._overlayRef.overlayElement.style,n=this._overlayRef.hostElement,r=n.style;n.classList.remove(Qv),r.justifyContent=r.alignItems=t.marginTop=t.marginBottom=t.marginLeft=t.marginRight=t.position="",this._overlayRef=null,this._isDisposed=!0}}let YR=(()=>{class e{constructor(n,r,i,o){this._viewportRuler=n,this._document=r,this._platform=i,this._overlayContainer=o}global(){return new qR}flexibleConnectedTo(n){return new WR(n,this._viewportRuler,this._document,this._platform,this._overlayContainer)}}return e.\u0275fac=function(n){return new(n||e)(D(Pu),D(ge),D(Ar),D(qv))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})(),XR=0,Lu=(()=>{class e{constructor(n,r,i,o,s,a,l,c,u,d,f,h){this.scrollStrategies=n,this._overlayContainer=r,this._componentFactoryResolver=i,this._positionBuilder=o,this._keyboardDispatcher=s,this._injector=a,this._ngZone=l,this._document=c,this._directionality=u,this._location=d,this._outsideClickDispatcher=f,this._animationsModuleType=h}create(n){const r=this._createHostElement(),i=this._createPaneElement(r),o=this._createPortalOutlet(i),s=new Zv(n);return s.direction=s.direction||this._directionality.value,new GR(o,r,i,s,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType)}position(){return this._positionBuilder}_createPaneElement(n){const r=this._document.createElement("div");return r.id="cdk-overlay-"+XR++,r.classList.add("cdk-overlay-pane"),n.appendChild(r),r}_createHostElement(){const n=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(n),n}_createPortalOutlet(n){return this._appRef||(this._appRef=this._injector.get(bi)),new PR(n,this._componentFactoryResolver,this._appRef,this._injector,this._document)}}return e.\u0275fac=function(n){return new(n||e)(D(HR),D(qv),D(an),D(YR),D(UR),D(bt),D(oe),D(ge),D(Vi),D(Cy),D(zR),D(q0,8))},e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const KR=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],Jv=new A("cdk-connected-overlay-scroll-strategy");let QR=(()=>{class e{constructor(n){this.elementRef=n}}return e.\u0275fac=function(n){return new(n||e)(E(We))},e.\u0275dir=ke({type:e,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0}),e})(),JR=(()=>{class e{get offsetX(){return this._offsetX}set offsetX(n){this._offsetX=n,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(n){this._offsetY=n,this._position&&this._updatePositionStrategy(this._position)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(n){this._hasBackdrop=xr(n)}get lockPosition(){return this._lockPosition}set lockPosition(n){this._lockPosition=xr(n)}get flexibleDimensions(){return this._flexibleDimensions}set flexibleDimensions(n){this._flexibleDimensions=xr(n)}get growAfterOpen(){return this._growAfterOpen}set growAfterOpen(n){this._growAfterOpen=xr(n)}get push(){return this._push}set push(n){this._push=xr(n)}constructor(n,r,i,o,s){this._overlay=n,this._dir=s,this._hasBackdrop=!1,this._lockPosition=!1,this._growAfterOpen=!1,this._flexibleDimensions=!1,this._push=!1,this._backdropSubscription=Ie.EMPTY,this._attachSubscription=Ie.EMPTY,this._detachSubscription=Ie.EMPTY,this._positionSubscription=Ie.EMPTY,this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.backdropClick=new ue,this.positionChange=new ue,this.attach=new ue,this.detach=new ue,this.overlayKeydown=new ue,this.overlayOutsideClick=new ue,this._templatePortal=new $v(r,i),this._scrollStrategyFactory=o,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(n){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),n.origin&&this.open&&this._position.apply()),n.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=KR);const n=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=n.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=n.detachments().subscribe(()=>this.detach.emit()),n.keydownEvents().subscribe(r=>{this.overlayKeydown.next(r),27===r.keyCode&&!this.disableClose&&!function LR(e,...t){return t.length?t.some(n=>e[n]):e.altKey||e.shiftKey||e.ctrlKey||e.metaKey}(r)&&(r.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(r=>{this.overlayOutsideClick.next(r)})}_buildConfig(){const n=this._position=this.positionStrategy||this._createPositionStrategy(),r=new Zv({direction:this._dir,positionStrategy:n,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop});return(this.width||0===this.width)&&(r.width=this.width),(this.height||0===this.height)&&(r.height=this.height),(this.minWidth||0===this.minWidth)&&(r.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(r.minHeight=this.minHeight),this.backdropClass&&(r.backdropClass=this.backdropClass),this.panelClass&&(r.panelClass=this.panelClass),r}_updatePositionStrategy(n){const r=this.positions.map(i=>({originX:i.originX,originY:i.originY,overlayX:i.overlayX,overlayY:i.overlayY,offsetX:i.offsetX||this.offsetX,offsetY:i.offsetY||this.offsetY,panelClass:i.panelClass||void 0}));return n.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(r).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const n=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(n),n}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof QR?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(n=>{this.backdropClick.emit(n)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(function AR(e,t=!1){return Ue((n,r)=>{let i=0;n.subscribe(Ne(r,o=>{const s=e(o,i++);(s||t)&&r.next(o),!s&&r.complete()}))})}(()=>this.positionChange.observers.length>0)).subscribe(n=>{this.positionChange.emit(n),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}}return e.\u0275fac=function(n){return new(n||e)(E(Lu),E(Bt),E(yt),E(Jv),E(Vi,8))},e.\u0275dir=ke({type:e,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:["cdkConnectedOverlayOrigin","origin"],positions:["cdkConnectedOverlayPositions","positions"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:["cdkConnectedOverlayOpen","open"],disableClose:["cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop"],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition"],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions"],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen"],push:["cdkConnectedOverlayPush","push"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[Gt]}),e})();const tk={provide:Jv,deps:[Lu],useFactory:function ek(e){return()=>e.scrollStrategies.reposition()}};let nk=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({providers:[Lu,tk],imports:[Ou,NR,Hv,Hv]}),e})(),rk=(()=>{var e;class t{constructor(){this.text=""}}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275cmp=Un({type:e,selectors:[["hra-ui-tooltip"]],inputs:{text:"text"},standalone:!0,features:[ls],decls:2,vars:1,consts:[[1,"tooltip"]],template:function(r,i){1&r&&(Mn(0,"div",0),function lg(e,t=""){const n=_(),r=Y(),i=e+le,o=r.firstCreatePass?dr(r,i,1,t,null):r.data[i],s=n[i]=function cl(e,t){return e.createText(t)}(n[Z],t);Ao(r,n,s,o),Ot(o,!1)}(1),Tn()),2&r&&(li(1),ac(i.text))},dependencies:[lu],styles:["[_nghost-%COMP%] .tooltip[_ngcontent-%COMP%]{display:flex;flex-direction:column;background:white;box-shadow:1px .125rem 1rem .125rem #00000029;border-radius:.5rem;padding:1rem}"],changeDetection:0}),t})();var Vu=function e(){},e_=function(){function e(t){this._ranScripts={},this._renderer=t.createRenderer(null,null)}return e.prototype.insertEl=function(t,n,r,i,o){if(i&&!o){var s=t._prevSVG&&t._prevSVG.parentNode;s&&this._renderer.removeChild(s,t._prevSVG),n.innerHTML=""}o?this._renderer.insertBefore(n,r,n.firstChild):this._renderer.appendChild(n,r),"svg"===r.nodeName&&(t._prevSVG=r)},e.prototype.evalScripts=function(t,n,r){for(var i=t.querySelectorAll("script"),o=[],s=0;s0&&("always"===r||"once"===r&&!this._ranScripts[n])){for(s=0;s{var s;null===(s=r.subscribe)||void 0===s||s.call(r);let a=!0;i.subscribe(Ne(o,l=>{var c;null===(c=r.next)||void 0===c||c.call(r,l),o.next(l)},()=>{var l;a=!1,null===(l=r.complete)||void 0===l||l.call(r),o.complete()},l=>{var c;a=!1,null===(c=r.error)||void 0===c||c.call(r,l),o.error(l)},()=>{var l,c;a&&(null===(l=r.unsubscribe)||void 0===l||l.call(r)),null===(c=r.finalize)||void 0===c||c.call(r)}))}):ca}function r_(e){return Ue((t,n)=>{let o,r=null,i=!1;r=t.subscribe(Ne(n,void 0,void 0,s=>{o=Ke(e(s,r_(e)(t))),r?(r.unsubscribe(),r=null,o.subscribe(n)):i=!0})),i&&(r.unsubscribe(),r=null,o.subscribe(n))})}var i_=function(){function e(t,n,r,i,o,s){this._appBase=t,this._location=n,this._config=r,this._http=r&&!r.bypassHttpClientInterceptorChain?i:new ki(o),this._renderer=s.createRenderer(null,null),this.setBaseUrl(),e._cache||(e._cache=new Map),e._inProgressReqs||(e._inProgressReqs=new Map)}return e.prototype.getSVG=function(t,n,r){var i=this;void 0===r&&(r=!0);var o=(n?this.getAbsoluteUrl(t):t).replace(/#.+$/,"");if(r&&e._cache.has(o))return _u(this._cloneSVG(e._cache.get(o)));if(e._inProgressReqs.has(o))return e._inProgressReqs.get(o);var s=this._http.get(o,{responseType:"text"}).pipe(n_(function(){e._inProgressReqs.delete(o)}),r_(function(a){return e._inProgressReqs.delete(o),function ik(e,t){const n=X(e)?e:()=>e,r=i=>i.error(n());return new fe(t?i=>t.schedule(r,0,i):r)}(a.message)}),Id(),Me(function(a){var l=i._svgElementFromString(a);return e._cache.set(o,l),i._cloneSVG(l)}));return e._inProgressReqs.set(o,s),s},e.prototype.setBaseUrl=function(){this._config?this._baseUrl=this._config.baseUrl:null!==this._appBase?this._baseUrl=this._appBase:null!==this._location&&(this._baseUrl=this._location.getBaseHrefFromDOM())},e.prototype.getAbsoluteUrl=function(t){this._baseUrl&&!/^https?:\/\//i.test(t)&&0===(t=this._baseUrl+t).indexOf("//")&&(t=t.substring(1));var n=this._renderer.createElement("BASE");return n.href=t,n.href},e.prototype._svgElementFromString=function(t){var n=this._renderer.createElement("DIV");n.innerHTML=t;var r=n.querySelector("svg");if(!r)throw new Error("No SVG found in loaded contents");return r},e.prototype._cloneSVG=function(t){return t.cloneNode(!0)},e.\u0275prov=P({token:e,factory:e.\u0275fac=function(n){return new(n||e)(D(wy,8),D(Zc,8),D(Vu,8),D(ki),D(Fs),D(Lo))},providedIn:"root"}),e}();function o_(e,t){for(var n=0;n-1}(n.inlineSVG)){var i=n.inlineSVG.split("#")[1];r=function ak(e,t,n){var r=t.querySelector('[id="'.concat(n,'"]'));if(!r)throw new Error('Symbol "'.concat(n,'" not found'));var i=e.createElement("svg","svg");e.appendChild(i,r);var o=e.createElement("use","svg");return e.setAttribute(o,"href","#".concat(n),"xlink"),e.appendChild(i,o),i}(n._renderer,r,i)}n._processSvg(r)},function(r){n._fail(r)}))}},e.prototype._processSvg=function(t){if(t){if(this.removeSVGAttributes&&Ts(this.platformId)&&o_(t,this.removeSVGAttributes),this.setSVGAttributes&&function lk(e,t){for(var n in t)e.setAttribute(n,t[n])}(t,this.setSVGAttributes),this.onSVGLoaded&&(t=this.onSVGLoaded(t,this._el.nativeElement)),this._insertEl(t),Ts(this.platformId)&&this._inlineSVGService.evalScripts(t,this.inlineSVG,this.evalScripts),this.forceEvalStyles){var n=t.querySelectorAll("style");Array.from(n).forEach(function(r){return r.textContent+=""})}this.onSVGInserted.emit(t)}},e.prototype._insertEl=function(t){if(this.injectComponent){if(!this._svgComp){var n=this._resolver.resolveComponentFactory(t_);this._svgComp=this._viewContainerRef.createComponent(n)}this._svgComp.instance.context=this,this._svgComp.instance.replaceContents=this.replaceContents,this._svgComp.instance.prepend=this.prepend,this._svgComp.instance.content=t,this._renderer.appendChild(this._el.nativeElement,this._svgComp.injector.get(t_)._el.nativeElement)}else this._inlineSVGService.insertEl(this,this._el.nativeElement,t,this.replaceContents,this.prepend)},e.prototype._fail=function(t){if(this.onSVGFailed.emit(t),this.fallbackImgUrl){var n=this._renderer.createElement("IMG");this._renderer.setAttribute(n,"src",this.fallbackImgUrl),this._insertEl(n)}else this.fallbackSVG&&this.fallbackSVG!==this.inlineSVG&&(this.inlineSVG=this.fallbackSVG,this._insertSVG())},e.prototype._isValidPlatform=function(){return xs(this.platformId)||Ts(this.platformId)},e.prototype._isSSRDisabled=function(){return xs(this.platformId)&&this._config&&this._config.clientOnly},e.\u0275fac=function(n){return new(n||e)(E(We),E(yt),E(an),E(i_),E(Vo),E(e_),E(Vu,8),E(Ei))},e.\u0275dir=ke({type:e,selectors:[["","inlineSVG",""]],inputs:{inlineSVG:"inlineSVG",resolveSVGUrl:"resolveSVGUrl",replaceContents:"replaceContents",prepend:"prepend",injectComponent:"injectComponent",cacheSVG:"cacheSVG",setSVGAttributes:"setSVGAttributes",removeSVGAttributes:"removeSVGAttributes",forceEvalStyles:"forceEvalStyles",evalScripts:"evalScripts",fallbackImgUrl:"fallbackImgUrl",fallbackSVG:"fallbackSVG",onSVGLoaded:"onSVGLoaded"},outputs:{onSVGInserted:"onSVGInserted",onSVGFailed:"onSVGFailed"},features:[gc([i_]),Gt]}),e}(),uk=function(){function e(){}return e.forRoot=function(t){return{ngModule:e,providers:[{provide:Vu,useValue:t}]}},e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({}),e}();class dk extends Re{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){const{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}}function s_(e,t,n){return n?s_(e,t).pipe(Tv(n)):new fe(r=>{const i=(...s)=>r.next(1===s.length?s[0]:s),o=e(i);return X(t)?()=>t(i,o):void 0})}function hk(e,t){if(1&e){const n=function kp(){return _()}();Mn(0,"div",2),es("onSVGInserted",function(i){return function Jd(e){return j.lFrame.contextLView=e,e[me]}(n),function ef(e){return j.lFrame.contextLView=null,e}(wr().setSvgElement(i))}),vc(1,"async"),Tn()}if(2&e){const n=wr();ns("hover-active",_c(1,4,n.nodeHoverData$)),ln("inlineSVG",n.url)("evalScripts",n.NEVER_EVAL_SCRIPTS)}}function pk(e,t){if(1&e&&Ko(0,"hra-ui-tooltip",4),2&e){const n=wr().ngIf;ln("text",wr().formatNodeName(n.node))}}function gk(e,t){if(1&e&&(Qo(0),Xo(1,pk,1,1,"ng-template",3),Jo()),2&e){const n=t.ngIf,r=wr();li(1),ln("cdkConnectedOverlayOrigin",n.origin)("cdkConnectedOverlayPositions",r.TOOLTIP_POSITIONS)("cdkConnectedOverlayViewportMargin",16)("cdkConnectedOverlayOpen",!0)}}const yk=[{originX:"center",originY:"center",overlayX:"start",overlayY:"center",offsetX:8},{originX:"center",originY:"center",overlayX:"end",overlayY:"center",offsetX:-8},{originX:"center",originY:"center",overlayX:"center",overlayY:"top",offsetY:8},{originX:"center",originY:"center",overlayX:"center",overlayY:"bottom",offsetY:-8}];let a_=(()=>{var e;class t{constructor(){this.mapping=[],this.nodeHover=new ue,this.nodeClick=new ue,this.NEVER_EVAL_SCRIPTS="never",this.TOOLTIP_POSITIONS=yk,this.nodeHoverData$=new dk(void 0),this.nodeHoverDelayedData$=this.nodeHoverData$.pipe(function fk(e){return Ue((t,n)=>{let r=!1,i=null,o=null;const s=()=>{if(o?.unsubscribe(),o=null,r){r=!1;const a=i;i=null,n.next(a)}};t.subscribe(Ne(n,a=>{o?.unsubscribe(),r=!0,i=a,o=Ne(n,s,qi),Ke(e(a)).subscribe(o)},()=>{s(),n.complete()},void 0,()=>{i=o=null}))})}(r=>kv(r?200:0))),this.renderer=Fe(Vo),this.destroy$=new Re,this.highlightedElements=[]}ngOnChanges(r){"highlightId"in r&&(this.resetHighlight(),this.setHighlight())}setHighlight(){const{mapping:r,highlightId:i,crosswalkEl:o}=this,s=r.find(({ontologyId:u})=>u===i);if(!s||!o)return;let a=this.encodeId(s.id);const l=o.querySelector(`#${a}`);if(!l)return;"g"!==l.nodeName&&(a=l.parentElement?.id??"");const c=o.querySelectorAll(`#${a} :is(path, polygon, polyline)`);this.highlightedElements=Array.from(c),c.forEach(u=>u.classList.add("click-active"))}resetHighlight(){for(const r of this.highlightedElements)r.classList.remove("click-active");this.highlightedElements=[]}ngOnDestroy(){this.clear()}setSvgElement(r){this.clear(),this.crosswalkEl=r.querySelector('[id^="Crosswalk"]')??void 0,this.crosswalkEl&&(this.renderer.appendChild(r,this.crosswalkEl),this.attachCrosswalkHover(this.crosswalkEl))}formatNodeName(r){return r.replace(/_/g," ")}attachCrosswalkHover(r){this.attachEvent(r,"mouseover").subscribe(i=>this.onCrosswalkHover(i)),this.attachEvent(r,"mouseout").subscribe(()=>this.onCrosswalkHover(void 0)),this.attachEvent(r,"click").subscribe(i=>this.nodeClick.emit(this.getNode(i)))}onCrosswalkHover(r){if(r){const i=this.getNode(r);i&&(this.nodeHoverData$.next({node:i.label,origin:{x:r.clientX,y:r.clientY}}),this.nodeHover.emit(i))}else this.nodeHoverData$.next(void 0),this.nodeHover.emit()}clear(){this.destroy$.next(),this.destroy$.complete(),this.destroy$=new Re}getNode(r){const a=[r.target.id,r.target.parentElement?.id??"",r.target.parentElement?.parentElement?.id??""];for(const l of a){const c=this.decodeId(l),u=this.mapping.find(d=>d.id?.toLowerCase()===c.toLowerCase());if(u)return u}}decodeId(r){return r.replace(/_x([\da-f]+)_/gi,(o,s)=>String.fromCharCode(Number.parseInt(s,16)))}encodeId(r){return r.replace(/[^a-z0-9-]/gi,o=>`_x${o.charCodeAt(0).toString(16).toUpperCase()}_`)}attachEvent(r,i){const{renderer:o,destroy$:s}=this;return s_(c=>o.listen(r,i,c),(c,u)=>u()).pipe(zs(s))}}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275cmp=Un({type:e,selectors:[["hra-interactive-svg"]],inputs:{url:"url",mapping:"mapping",highlightId:"highlightId"},outputs:{nodeHover:"nodeHover",nodeClick:"nodeClick"},standalone:!0,features:[Gt,ls],decls:3,vars:4,consts:[["class","svg",3,"hover-active","inlineSVG","evalScripts","onSVGInserted",4,"ngIf"],[4,"ngIf"],[1,"svg",3,"inlineSVG","evalScripts","onSVGInserted"],["cdkConnectedOverlay","","cdkConnectedOverlayPanelClass","hra-interactive-svg-tooltip-panel",3,"cdkConnectedOverlayOrigin","cdkConnectedOverlayPositions","cdkConnectedOverlayViewportMargin","cdkConnectedOverlayOpen"],[3,"text"]],template:function(r,i){1&r&&(Xo(0,hk,2,6,"div",0),Xo(1,gk,2,4,"ng-container",1),vc(2,"async")),2&r&&(ln("ngIf",i.url),li(1),ln("ngIf",_c(2,2,i.nodeHoverDelayedData$)))},dependencies:[lu,Ly,jy,uk,ck,nk,JR,rk],styles:[".svg{max-height:calc(100vh - 14rem);overflow-y:auto}svg{max-height:calc(100vh - 10rem);width:100%}[id^=Crosswalk] :is(path,polygon,polyline){fill:transparent;stroke:transparent}.hover-active [id^=Crosswalk] g:hover>:is(path,polygon,polyline),.hover-active [id^=Crosswalk] g>g:hover>:is(path,polygon,polyline),[id^=Crosswalk] .click-active{fill:red;mix-blend-mode:saturation}::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-track{background:#f8f9fa;border:.063rem solid #d3d3d3}::-webkit-scrollbar-thumb{background:#a0abb4;border-radius:.5rem}\n"],encapsulation:3,changeDetection:0}),t})(),l_=(()=>{var e;class t{}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac}),t})(),vk=(()=>{var e;class t extends l_{sendMessage(r){const i=document.createElement("a");document.body.appendChild(i),i.target="_blank",i.href=`mailto:${r.email}?subject=${r.subject}&body=${r.message}`,i.click(),i.remove()}}return(e=t).\u0275fac=function(){let n;return function(i){return(n||(n=Za(e)))(i||e)}}(),e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),t})();function c_(e,t,n,r,i,o,s){try{var a=e[o](s),l=a.value}catch(c){return void n(c)}a.done?t(l):Promise.resolve(l).then(r,i)}function hn(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(l){c_(o,r,i,s,a,"next",l)}function a(l){c_(o,r,i,s,a,"throw",l)}s(void 0)})}}var K,e;(e=K||(K={})).assertEqual=i=>i,e.assertIs=function t(i){},e.assertNever=function n(i){throw new Error},e.arrayToEnum=i=>{const o={};for(const s of i)o[s]=s;return o},e.getValidEnumValues=i=>{const o=e.objectKeys(i).filter(a=>"number"!=typeof i[i[a]]),s={};for(const a of o)s[a]=i[a];return e.objectValues(s)},e.objectValues=i=>e.objectKeys(i).map(function(o){return i[o]}),e.objectKeys="function"==typeof Object.keys?i=>Object.keys(i):i=>{const o=[];for(const s in i)Object.prototype.hasOwnProperty.call(i,s)&&o.push(s);return o},e.find=(i,o)=>{for(const s of i)if(o(s))return s},e.isInteger="function"==typeof Number.isInteger?i=>Number.isInteger(i):i=>"number"==typeof i&&isFinite(i)&&Math.floor(i)===i,e.joinValues=function r(i,o=" | "){return i.map(s=>"string"==typeof s?`'${s}'`:s).join(o)},e.jsonStringifyReplacer=(i,o)=>"bigint"==typeof o?o.toString():o;var Ws=(()=>(function(e){e.mergeShapes=(t,n)=>({...t,...n})}(Ws||(Ws={})),Ws))();const b=K.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),pn=e=>{switch(typeof e){case"undefined":return b.undefined;case"string":return b.string;case"number":return isNaN(e)?b.nan:b.number;case"boolean":return b.boolean;case"function":return b.function;case"bigint":return b.bigint;case"symbol":return b.symbol;case"object":return Array.isArray(e)?b.array:null===e?b.null:e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch?b.promise:typeof Map<"u"&&e instanceof Map?b.map:typeof Set<"u"&&e instanceof Set?b.set:typeof Date<"u"&&e instanceof Date?b.date:b.object;default:return b.unknown}},w=K.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);let tn=(()=>{class e extends Error{constructor(n){super(),this.issues=[],this.addIssue=i=>{this.issues=[...this.issues,i]},this.addIssues=(i=[])=>{this.issues=[...this.issues,...i]};const r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=n}get errors(){return this.issues}format(n){const r=n||function(s){return s.message},i={_errors:[]},o=s=>{for(const a of s.issues)if("invalid_union"===a.code)a.unionErrors.map(o);else if("invalid_return_type"===a.code)o(a.returnTypeError);else if("invalid_arguments"===a.code)o(a.argumentsError);else if(0===a.path.length)i._errors.push(r(a));else{let l=i,c=0;for(;cr.message)){const r={},i=[];for(const o of this.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(n(o))):i.push(n(o));return{formErrors:i,fieldErrors:r}}get formErrors(){return this.flatten()}}return e.create=t=>new e(t),e})();const Bi=(e,t)=>{let n;switch(e.code){case w.invalid_type:n=e.received===b.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case w.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,K.jsonStringifyReplacer)}`;break;case w.unrecognized_keys:n=`Unrecognized key(s) in object: ${K.joinValues(e.keys,", ")}`;break;case w.invalid_union:n="Invalid input";break;case w.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${K.joinValues(e.options)}`;break;case w.invalid_enum_value:n=`Invalid enum value. Expected ${K.joinValues(e.options)}, received '${e.received}'`;break;case w.invalid_arguments:n="Invalid function arguments";break;case w.invalid_return_type:n="Invalid function return type";break;case w.invalid_date:n="Invalid date";break;case w.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:K.assertNever(e.validation):n="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case w.too_small:n="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"date"===e.type?`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:"Invalid input";break;case w.too_big:n="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:"Invalid input";break;case w.custom:n="Invalid input";break;case w.invalid_intersection_types:n="Intersection results could not be merged";break;case w.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case w.not_finite:n="Number must be finite";break;default:n=t.defaultError,K.assertNever(e)}return{message:n}};let u_=Bi;function qs(){return u_}const Ys=e=>{const{data:t,path:n,errorMaps:r,issueData:i}=e,o=[...n,...i.path||[]],s={...i,path:o};let a="";const l=r.filter(c=>!!c).slice().reverse();for(const c of l)a=c(s,{data:t,defaultError:a}).message;return{...i,path:o,message:i.message||a}};function M(e,t){const n=Ys({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,qs(),Bi].filter(r=>!!r)});e.common.issues.push(n)}class $e{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const i of n){if("aborted"===i.status)return $;"dirty"===i.status&&t.dirty(),r.push(i.value)}return{status:t.value,value:r}}static mergeObjectAsync(t,n){return hn(function*(){const r=[];for(const i of n)r.push({key:yield i.key,value:yield i.value});return $e.mergeObjectSync(t,r)})()}static mergeObjectSync(t,n){const r={};for(const i of n){const{key:o,value:s}=i;if("aborted"===o.status||"aborted"===s.status)return $;"dirty"===o.status&&t.dirty(),"dirty"===s.status&&t.dirty(),(typeof s.value<"u"||i.alwaysSet)&&(r[o.value]=s.value)}return{status:t.value,value:r}}}const $=Object.freeze({status:"aborted"}),d_=e=>({status:"dirty",value:e}),Xe=e=>({status:"valid",value:e}),Bu=e=>"aborted"===e.status,ju=e=>"dirty"===e.status,Xs=e=>"valid"===e.status,Ks=e=>typeof Promise<"u"&&e instanceof Promise;var x=(()=>(function(e){e.errToObj=t=>"string"==typeof t?{message:t}:t||{},e.toString=t=>"string"==typeof t?t:t?.message}(x||(x={})),x))();class jt{constructor(t,n,r,i){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=i}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const f_=(e,t)=>{if(Xs(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new tn(e.common.issues);return this._error=n,this._error}}};function G(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:i}:{errorMap:(s,a)=>"invalid_type"!==s.code?{message:a.defaultError}:typeof a.data>"u"?{message:r??a.defaultError}:{message:n??a.defaultError},description:i}}class W{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return pn(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:pn(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new $e,ctx:{common:t.parent.common,data:t.data,parsedType:pn(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(Ks(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){var r;const i={common:{issues:[],async:null!==(r=n?.async)&&void 0!==r&&r,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:pn(t)},o=this._parseSync({data:t,path:i.path,parent:i});return f_(i,o)}parseAsync(t,n){var r=this;return hn(function*(){const i=yield r.safeParseAsync(t,n);if(i.success)return i.data;throw i.error})()}safeParseAsync(t,n){var r=this;return hn(function*(){const i={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:r._def.errorMap,parent:null,data:t,parsedType:pn(t)},o=r._parse({data:t,path:i.path,parent:i}),s=yield Ks(o)?o:Promise.resolve(o);return f_(i,s)})()}refine(t,n){const r=i=>"string"==typeof n||typeof n>"u"?{message:n}:"function"==typeof n?n(i):n;return this._refinement((i,o)=>{const s=t(i),a=()=>o.addIssue({code:w.custom,...r(i)});return typeof Promise<"u"&&s instanceof Promise?s.then(l=>!!l||(a(),!1)):!!s||(a(),!1)})}refinement(t,n){return this._refinement((r,i)=>!!t(r)||(i.addIssue("function"==typeof n?n(r,i):n),!1))}_refinement(t){return new Ln({schema:this,typeName:F.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Vn.create(this,this._def)}nullable(){return Ui.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Hi.create(this,this._def)}promise(){return ra.create(this,this._def)}or(t){return Wu.create([this,t],this._def)}and(t){return Yu.create(this,t,this._def)}transform(t){return new Ln({...G(this._def),schema:this,typeName:F.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n="function"==typeof t?t:()=>t;return new Ju({...G(this._def),innerType:this,defaultValue:n,typeName:F.ZodDefault})}brand(){return new D_({typeName:F.ZodBranded,type:this,...G(this._def)})}catch(t){const n="function"==typeof t?t:()=>t;return new v_({...G(this._def),innerType:this,catchValue:n,typeName:F.ZodCatch})}describe(t){return new(0,this.constructor)({...this._def,description:t})}pipe(t){return zi.create(this,t)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const Ck=/^c[^\s-]{8,}$/i,Ek=/^[a-z][a-z0-9]*$/,bk=/[0-9A-HJKMNP-TV-Z]{26}/,Sk=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,Ik=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/,Mk=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,Tk=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,xk=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,Ak=e=>e.precision?e.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}Z$`):0===e.precision?e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function Rk(e,t){return!(("v4"!==t&&t||!Tk.test(e))&&("v6"!==t&&t||!xk.test(e)))}let Qs=(()=>{class e extends W{constructor(){super(...arguments),this._regex=(n,r,i)=>this.refinement(o=>n.test(o),{validation:r,code:w.invalid_string,...x.errToObj(i)}),this.nonempty=n=>this.min(1,x.errToObj(n)),this.trim=()=>new e({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new e({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new e({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(n){if(this._def.coerce&&(n.data=String(n.data)),this._getType(n)!==b.string){const s=this._getOrReturnCtx(n);return M(s,{code:w.invalid_type,expected:b.string,received:s.parsedType}),$}const i=new $e;let o;for(const s of this._def.checks)if("min"===s.kind)n.data.lengths.value&&(o=this._getOrReturnCtx(n,o),M(o,{code:w.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),i.dirty());else if("length"===s.kind){const a=n.data.length>s.value,l=n.data.length"u"?null:n?.precision,offset:null!==(r=n?.offset)&&void 0!==r&&r,...x.errToObj(n?.message)})}regex(n,r){return this._addCheck({kind:"regex",regex:n,...x.errToObj(r)})}includes(n,r){return this._addCheck({kind:"includes",value:n,position:r?.position,...x.errToObj(r?.message)})}startsWith(n,r){return this._addCheck({kind:"startsWith",value:n,...x.errToObj(r)})}endsWith(n,r){return this._addCheck({kind:"endsWith",value:n,...x.errToObj(r)})}min(n,r){return this._addCheck({kind:"min",value:n,...x.errToObj(r)})}max(n,r){return this._addCheck({kind:"max",value:n,...x.errToObj(r)})}length(n,r){return this._addCheck({kind:"length",value:n,...x.errToObj(r)})}get isDatetime(){return!!this._def.checks.find(n=>"datetime"===n.kind)}get isEmail(){return!!this._def.checks.find(n=>"email"===n.kind)}get isURL(){return!!this._def.checks.find(n=>"url"===n.kind)}get isEmoji(){return!!this._def.checks.find(n=>"emoji"===n.kind)}get isUUID(){return!!this._def.checks.find(n=>"uuid"===n.kind)}get isCUID(){return!!this._def.checks.find(n=>"cuid"===n.kind)}get isCUID2(){return!!this._def.checks.find(n=>"cuid2"===n.kind)}get isULID(){return!!this._def.checks.find(n=>"ulid"===n.kind)}get isIP(){return!!this._def.checks.find(n=>"ip"===n.kind)}get minLength(){let n=null;for(const r of this._def.checks)"min"===r.kind&&(null===n||r.value>n)&&(n=r.value);return n}get maxLength(){let n=null;for(const r of this._def.checks)"max"===r.kind&&(null===n||r.value{var n;return new e({checks:[],typeName:F.ZodString,coerce:null!==(n=t?.coerce)&&void 0!==n&&n,...G(t)})},e})();function kk(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,i=n>r?n:r;return parseInt(e.toFixed(i).replace(".",""))%parseInt(t.toFixed(i).replace(".",""))/Math.pow(10,i)}let Hu=(()=>{class e extends W{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(n){if(this._def.coerce&&(n.data=Number(n.data)),this._getType(n)!==b.number){const s=this._getOrReturnCtx(n);return M(s,{code:w.invalid_type,expected:b.number,received:s.parsedType}),$}let i;const o=new $e;for(const s of this._def.checks)"int"===s.kind?K.isInteger(n.data)||(i=this._getOrReturnCtx(n,i),M(i,{code:w.invalid_type,expected:"integer",received:"float",message:s.message}),o.dirty()):"min"===s.kind?(s.inclusive?n.datas.value:n.data>=s.value)&&(i=this._getOrReturnCtx(n,i),M(i,{code:w.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),o.dirty()):"multipleOf"===s.kind?0!==kk(n.data,s.value)&&(i=this._getOrReturnCtx(n,i),M(i,{code:w.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):"finite"===s.kind?Number.isFinite(n.data)||(i=this._getOrReturnCtx(n,i),M(i,{code:w.not_finite,message:s.message}),o.dirty()):K.assertNever(s);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,x.toString(r))}gt(n,r){return this.setLimit("min",n,!1,x.toString(r))}lte(n,r){return this.setLimit("max",n,!0,x.toString(r))}lt(n,r){return this.setLimit("max",n,!1,x.toString(r))}setLimit(n,r,i,o){return new e({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:i,message:x.toString(o)}]})}_addCheck(n){return new e({...this._def,checks:[...this._def.checks,n]})}int(n){return this._addCheck({kind:"int",message:x.toString(n)})}positive(n){return this._addCheck({kind:"min",value:0,inclusive:!1,message:x.toString(n)})}negative(n){return this._addCheck({kind:"max",value:0,inclusive:!1,message:x.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:0,inclusive:!0,message:x.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:0,inclusive:!0,message:x.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:x.toString(r)})}finite(n){return this._addCheck({kind:"finite",message:x.toString(n)})}safe(n){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:x.toString(n)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:x.toString(n)})}get minValue(){let n=null;for(const r of this._def.checks)"min"===r.kind&&(null===n||r.value>n)&&(n=r.value);return n}get maxValue(){let n=null;for(const r of this._def.checks)"max"===r.kind&&(null===n||r.value"int"===n.kind||"multipleOf"===n.kind&&K.isInteger(n.value))}get isFinite(){let n=null,r=null;for(const i of this._def.checks){if("finite"===i.kind||"int"===i.kind||"multipleOf"===i.kind)return!0;"min"===i.kind?(null===r||i.value>r)&&(r=i.value):"max"===i.kind&&(null===n||i.valuenew e({checks:[],typeName:F.ZodNumber,coerce:t?.coerce||!1,...G(t)}),e})(),$u=(()=>{class e extends W{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(n){if(this._def.coerce&&(n.data=BigInt(n.data)),this._getType(n)!==b.bigint){const s=this._getOrReturnCtx(n);return M(s,{code:w.invalid_type,expected:b.bigint,received:s.parsedType}),$}let i;const o=new $e;for(const s of this._def.checks)"min"===s.kind?(s.inclusive?n.datas.value:n.data>=s.value)&&(i=this._getOrReturnCtx(n,i),M(i,{code:w.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),o.dirty()):"multipleOf"===s.kind?n.data%s.value!==BigInt(0)&&(i=this._getOrReturnCtx(n,i),M(i,{code:w.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):K.assertNever(s);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,x.toString(r))}gt(n,r){return this.setLimit("min",n,!1,x.toString(r))}lte(n,r){return this.setLimit("max",n,!0,x.toString(r))}lt(n,r){return this.setLimit("max",n,!1,x.toString(r))}setLimit(n,r,i,o){return new e({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:i,message:x.toString(o)}]})}_addCheck(n){return new e({...this._def,checks:[...this._def.checks,n]})}positive(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:x.toString(n)})}negative(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:x.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:x.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:x.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:x.toString(r)})}get minValue(){let n=null;for(const r of this._def.checks)"min"===r.kind&&(null===n||r.value>n)&&(n=r.value);return n}get maxValue(){let n=null;for(const r of this._def.checks)"max"===r.kind&&(null===n||r.value{var n;return new e({checks:[],typeName:F.ZodBigInt,coerce:null!==(n=t?.coerce)&&void 0!==n&&n,...G(t)})},e})(),Uu=(()=>{class e extends W{_parse(n){if(this._def.coerce&&(n.data=Boolean(n.data)),this._getType(n)!==b.boolean){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.boolean,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodBoolean,coerce:t?.coerce||!1,...G(t)}),e})(),zu=(()=>{class e extends W{_parse(n){if(this._def.coerce&&(n.data=new Date(n.data)),this._getType(n)!==b.date){const s=this._getOrReturnCtx(n);return M(s,{code:w.invalid_type,expected:b.date,received:s.parsedType}),$}if(isNaN(n.data.getTime()))return M(this._getOrReturnCtx(n),{code:w.invalid_date}),$;const i=new $e;let o;for(const s of this._def.checks)"min"===s.kind?n.data.getTime()s.value&&(o=this._getOrReturnCtx(n,o),M(o,{code:w.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),i.dirty()):K.assertNever(s);return{status:i.value,value:new Date(n.data.getTime())}}_addCheck(n){return new e({...this._def,checks:[...this._def.checks,n]})}min(n,r){return this._addCheck({kind:"min",value:n.getTime(),message:x.toString(r)})}max(n,r){return this._addCheck({kind:"max",value:n.getTime(),message:x.toString(r)})}get minDate(){let n=null;for(const r of this._def.checks)"min"===r.kind&&(null===n||r.value>n)&&(n=r.value);return null!=n?new Date(n):null}get maxDate(){let n=null;for(const r of this._def.checks)"max"===r.kind&&(null===n||r.valuenew e({checks:[],coerce:t?.coerce||!1,typeName:F.ZodDate,...G(t)}),e})(),h_=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.symbol){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.symbol,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodSymbol,...G(t)}),e})(),Gu=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.undefined){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.undefined,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodUndefined,...G(t)}),e})(),Zu=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.null){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.null,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodNull,...G(t)}),e})(),Js=(()=>{class e extends W{constructor(){super(...arguments),this._any=!0}_parse(n){return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodAny,...G(t)}),e})(),ji=(()=>{class e extends W{constructor(){super(...arguments),this._unknown=!0}_parse(n){return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodUnknown,...G(t)}),e})(),Fn=(()=>{class e extends W{_parse(n){const r=this._getOrReturnCtx(n);return M(r,{code:w.invalid_type,expected:b.never,received:r.parsedType}),$}}return e.create=t=>new e({typeName:F.ZodNever,...G(t)}),e})(),p_=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.undefined){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.void,received:i.parsedType}),$}return Xe(n.data)}}return e.create=t=>new e({typeName:F.ZodVoid,...G(t)}),e})(),Hi=(()=>{class e extends W{_parse(n){const{ctx:r,status:i}=this._processInputParams(n),o=this._def;if(r.parsedType!==b.array)return M(r,{code:w.invalid_type,expected:b.array,received:r.parsedType}),$;if(null!==o.exactLength){const a=r.data.length>o.exactLength.value,l=r.data.lengtho.maxLength.value&&(M(r,{code:w.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),i.dirty()),r.common.async)return Promise.all([...r.data].map((a,l)=>o.type._parseAsync(new jt(r,a,r.path,l)))).then(a=>$e.mergeArray(i,a));const s=[...r.data].map((a,l)=>o.type._parseSync(new jt(r,a,r.path,l)));return $e.mergeArray(i,s)}get element(){return this._def.type}min(n,r){return new e({...this._def,minLength:{value:n,message:x.toString(r)}})}max(n,r){return new e({...this._def,maxLength:{value:n,message:x.toString(r)}})}length(n,r){return new e({...this._def,exactLength:{value:n,message:x.toString(r)}})}nonempty(n){return this.min(1,n)}}return e.create=(t,n)=>new e({type:t,minLength:null,maxLength:null,exactLength:null,typeName:F.ZodArray,...G(n)}),e})();function kr(e){if(e instanceof Or){const t={};for(const n in e.shape)t[n]=Vn.create(kr(e.shape[n]));return new Or({...e._def,shape:()=>t})}return e instanceof Hi?new Hi({...e._def,type:kr(e.element)}):e instanceof Vn?Vn.create(kr(e.unwrap())):e instanceof Ui?Ui.create(kr(e.unwrap())):e instanceof Pr?Pr.create(e.items.map(t=>kr(t))):e}let Or=(()=>{class e extends W{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;const n=this._def.shape(),r=K.objectKeys(n);return this._cached={shape:n,keys:r}}_parse(n){if(this._getType(n)!==b.object){const u=this._getOrReturnCtx(n);return M(u,{code:w.invalid_type,expected:b.object,received:u.parsedType}),$}const{status:i,ctx:o}=this._processInputParams(n),{shape:s,keys:a}=this._getCached(),l=[];if(!(this._def.catchall instanceof Fn&&"strip"===this._def.unknownKeys))for(const u in o.data)a.includes(u)||l.push(u);const c=[];for(const u of a)c.push({key:{status:"valid",value:u},value:s[u]._parse(new jt(o,o.data[u],o.path,u)),alwaysSet:u in o.data});if(this._def.catchall instanceof Fn){const u=this._def.unknownKeys;if("passthrough"===u)for(const d of l)c.push({key:{status:"valid",value:d},value:{status:"valid",value:o.data[d]}});else if("strict"===u)l.length>0&&(M(o,{code:w.unrecognized_keys,keys:l}),i.dirty());else if("strip"!==u)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const u=this._def.catchall;for(const d of l)c.push({key:{status:"valid",value:d},value:u._parse(new jt(o,o.data[d],o.path,d)),alwaysSet:d in o.data})}return o.common.async?Promise.resolve().then(hn(function*(){const u=[];for(const d of c){const f=yield d.key;u.push({key:f,value:yield d.value,alwaysSet:d.alwaysSet})}return u})).then(u=>$e.mergeObjectSync(i,u)):$e.mergeObjectSync(i,c)}get shape(){return this._def.shape()}strict(n){return new e({...this._def,unknownKeys:"strict",...void 0!==n?{errorMap:(r,i)=>{var o,s,a,l;const c=null!==(a=null===(s=(o=this._def).errorMap)||void 0===s?void 0:s.call(o,r,i).message)&&void 0!==a?a:i.defaultError;return"unrecognized_keys"===r.code?{message:null!==(l=x.errToObj(n).message)&&void 0!==l?l:c}:{message:c}}}:{}})}strip(){return new e({...this._def,unknownKeys:"strip"})}passthrough(){return new e({...this._def,unknownKeys:"passthrough"})}extend(n){return new e({...this._def,shape:()=>({...this._def.shape(),...n})})}merge(n){return new e({unknownKeys:n._def.unknownKeys,catchall:n._def.catchall,shape:()=>({...this._def.shape(),...n._def.shape()}),typeName:F.ZodObject})}setKey(n,r){return this.augment({[n]:r})}catchall(n){return new e({...this._def,catchall:n})}pick(n){const r={};return K.objectKeys(n).forEach(i=>{n[i]&&this.shape[i]&&(r[i]=this.shape[i])}),new e({...this._def,shape:()=>r})}omit(n){const r={};return K.objectKeys(this.shape).forEach(i=>{n[i]||(r[i]=this.shape[i])}),new e({...this._def,shape:()=>r})}deepPartial(){return kr(this)}partial(n){const r={};return K.objectKeys(this.shape).forEach(i=>{const o=this.shape[i];r[i]=n&&!n[i]?o:o.optional()}),new e({...this._def,shape:()=>r})}required(n){const r={};return K.objectKeys(this.shape).forEach(i=>{if(n&&!n[i])r[i]=this.shape[i];else{let s=this.shape[i];for(;s instanceof Vn;)s=s._def.innerType;r[i]=s}}),new e({...this._def,shape:()=>r})}keyof(){return y_(K.objectKeys(this.shape))}}return e.create=(t,n)=>new e({shape:()=>t,unknownKeys:"strip",catchall:Fn.create(),typeName:F.ZodObject,...G(n)}),e.strictCreate=(t,n)=>new e({shape:()=>t,unknownKeys:"strict",catchall:Fn.create(),typeName:F.ZodObject,...G(n)}),e.lazycreate=(t,n)=>new e({shape:t,unknownKeys:"strip",catchall:Fn.create(),typeName:F.ZodObject,...G(n)}),e})(),Wu=(()=>{class e extends W{_parse(n){const{ctx:r}=this._processInputParams(n),i=this._def.options;if(r.common.async)return Promise.all(i.map(function(){var s=hn(function*(a){const l={...r,common:{...r.common,issues:[]},parent:null};return{result:yield a._parseAsync({data:r.data,path:r.path,parent:l}),ctx:l}});return function(a){return s.apply(this,arguments)}}())).then(function o(s){for(const l of s)if("valid"===l.result.status)return l.result;for(const l of s)if("dirty"===l.result.status)return r.common.issues.push(...l.ctx.common.issues),l.result;const a=s.map(l=>new tn(l.ctx.common.issues));return M(r,{code:w.invalid_union,unionErrors:a}),$});{let s;const a=[];for(const c of i){const u={...r,common:{...r.common,issues:[]},parent:null},d=c._parseSync({data:r.data,path:r.path,parent:u});if("valid"===d.status)return d;"dirty"===d.status&&!s&&(s={result:d,ctx:u}),u.common.issues.length&&a.push(u.common.issues)}if(s)return r.common.issues.push(...s.ctx.common.issues),s.result;const l=a.map(c=>new tn(c));return M(r,{code:w.invalid_union,unionErrors:l}),$}}get options(){return this._def.options}}return e.create=(t,n)=>new e({options:t,typeName:F.ZodUnion,...G(n)}),e})();const ea=e=>e instanceof Xu?ea(e.schema):e instanceof Ln?ea(e.innerType()):e instanceof Ku?[e.value]:e instanceof na?e.options:e instanceof Qu?Object.keys(e.enum):e instanceof Ju?ea(e._def.innerType):e instanceof Gu?[void 0]:e instanceof Zu?[null]:null;class ta extends W{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==b.object)return M(n,{code:w.invalid_type,expected:b.object,received:n.parsedType}),$;const r=this.discriminator,o=this.optionsMap.get(n.data[r]);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(M(n,{code:w.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),$)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){const i=new Map;for(const o of n){const s=ea(o.shape[t]);if(!s)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const a of s){if(i.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);i.set(a,o)}}return new ta({typeName:F.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...G(r)})}}function qu(e,t){const n=pn(e),r=pn(t);if(e===t)return{valid:!0,data:e};if(n===b.object&&r===b.object){const i=K.objectKeys(t),o=K.objectKeys(e).filter(a=>-1!==i.indexOf(a)),s={...e,...t};for(const a of o){const l=qu(e[a],t[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}if(n===b.array&&r===b.array){if(e.length!==t.length)return{valid:!1};const i=[];for(let o=0;o{class e extends W{_parse(n){const{status:r,ctx:i}=this._processInputParams(n),o=(s,a)=>{if(Bu(s)||Bu(a))return $;const l=qu(s.value,a.value);return l.valid?((ju(s)||ju(a))&&r.dirty(),{status:r.value,value:l.data}):(M(i,{code:w.invalid_intersection_types}),$)};return i.common.async?Promise.all([this._def.left._parseAsync({data:i.data,path:i.path,parent:i}),this._def.right._parseAsync({data:i.data,path:i.path,parent:i})]).then(([s,a])=>o(s,a)):o(this._def.left._parseSync({data:i.data,path:i.path,parent:i}),this._def.right._parseSync({data:i.data,path:i.path,parent:i}))}}return e.create=(t,n,r)=>new e({left:t,right:n,typeName:F.ZodIntersection,...G(r)}),e})(),Pr=(()=>{class e extends W{_parse(n){const{status:r,ctx:i}=this._processInputParams(n);if(i.parsedType!==b.array)return M(i,{code:w.invalid_type,expected:b.array,received:i.parsedType}),$;if(i.data.lengththis._def.items.length&&(M(i,{code:w.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());const s=[...i.data].map((a,l)=>{const c=this._def.items[l]||this._def.rest;return c?c._parse(new jt(i,a,i.path,l)):null}).filter(a=>!!a);return i.common.async?Promise.all(s).then(a=>$e.mergeArray(r,a)):$e.mergeArray(r,s)}get items(){return this._def.items}rest(n){return new e({...this._def,rest:n})}}return e.create=(t,n)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new e({items:t,typeName:F.ZodTuple,rest:null,...G(n)})},e})();class $i extends W{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==b.object)return M(r,{code:w.invalid_type,expected:b.object,received:r.parsedType}),$;const i=[],o=this._def.keyType,s=this._def.valueType;for(const a in r.data)i.push({key:o._parse(new jt(r,a,r.path,a)),value:s._parse(new jt(r,r.data[a],r.path,a))});return r.common.async?$e.mergeObjectAsync(n,i):$e.mergeObjectSync(n,i)}get element(){return this._def.valueType}static create(t,n,r){return new $i(n instanceof W?{keyType:t,valueType:n,typeName:F.ZodRecord,...G(r)}:{keyType:Qs.create(),valueType:t,typeName:F.ZodRecord,...G(n)})}}let g_=(()=>{class e extends W{_parse(n){const{status:r,ctx:i}=this._processInputParams(n);if(i.parsedType!==b.map)return M(i,{code:w.invalid_type,expected:b.map,received:i.parsedType}),$;const o=this._def.keyType,s=this._def.valueType,a=[...i.data.entries()].map(([l,c],u)=>({key:o._parse(new jt(i,l,i.path,[u,"key"])),value:s._parse(new jt(i,c,i.path,[u,"value"]))}));if(i.common.async){const l=new Map;return Promise.resolve().then(hn(function*(){for(const c of a){const u=yield c.key,d=yield c.value;if("aborted"===u.status||"aborted"===d.status)return $;("dirty"===u.status||"dirty"===d.status)&&r.dirty(),l.set(u.value,d.value)}return{status:r.value,value:l}}))}{const l=new Map;for(const c of a){const u=c.key,d=c.value;if("aborted"===u.status||"aborted"===d.status)return $;("dirty"===u.status||"dirty"===d.status)&&r.dirty(),l.set(u.value,d.value)}return{status:r.value,value:l}}}}return e.create=(t,n,r)=>new e({valueType:n,keyType:t,typeName:F.ZodMap,...G(r)}),e})(),m_=(()=>{class e extends W{_parse(n){const{status:r,ctx:i}=this._processInputParams(n);if(i.parsedType!==b.set)return M(i,{code:w.invalid_type,expected:b.set,received:i.parsedType}),$;const o=this._def;null!==o.minSize&&i.data.sizeo.maxSize.value&&(M(i,{code:w.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty());const s=this._def.valueType;function a(c){const u=new Set;for(const d of c){if("aborted"===d.status)return $;"dirty"===d.status&&r.dirty(),u.add(d.value)}return{status:r.value,value:u}}const l=[...i.data.values()].map((c,u)=>s._parse(new jt(i,c,i.path,u)));return i.common.async?Promise.all(l).then(c=>a(c)):a(l)}min(n,r){return new e({...this._def,minSize:{value:n,message:x.toString(r)}})}max(n,r){return new e({...this._def,maxSize:{value:n,message:x.toString(r)}})}size(n,r){return this.min(n,r).max(n,r)}nonempty(n){return this.min(1,n)}}return e.create=(t,n)=>new e({valueType:t,minSize:null,maxSize:null,typeName:F.ZodSet,...G(n)}),e})();class Nr extends W{constructor(){super(...arguments),this.validate=this.implement}_parse(t){var n=this;const{ctx:r}=this._processInputParams(t);if(r.parsedType!==b.function)return M(r,{code:w.invalid_type,expected:b.function,received:r.parsedType}),$;function i(l,c){return Ys({data:l,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,qs(),Bi].filter(u=>!!u),issueData:{code:w.invalid_arguments,argumentsError:c}})}function o(l,c){return Ys({data:l,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,qs(),Bi].filter(u=>!!u),issueData:{code:w.invalid_return_type,returnTypeError:c}})}const s={errorMap:r.common.contextualErrorMap},a=r.data;return Xe(this._def.returns instanceof ra?hn(function*(...l){const c=new tn([]),u=yield n._def.args.parseAsync(l,s).catch(h=>{throw c.addIssue(i(l,h)),c}),d=yield a(...u);return yield n._def.returns._def.type.parseAsync(d,s).catch(h=>{throw c.addIssue(o(d,h)),c})}):(...l)=>{const c=this._def.args.safeParse(l,s);if(!c.success)throw new tn([i(l,c.error)]);const u=a(...c.data),d=this._def.returns.safeParse(u,s);if(!d.success)throw new tn([o(u,d.error)]);return d.data})}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new Nr({...this._def,args:Pr.create(t).rest(ji.create())})}returns(t){return new Nr({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new Nr({args:t||Pr.create([]).rest(ji.create()),returns:n||ji.create(),typeName:F.ZodFunction,...G(r)})}}let Xu=(()=>{class e extends W{get schema(){return this._def.getter()}_parse(n){const{ctx:r}=this._processInputParams(n);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}}return e.create=(t,n)=>new e({getter:t,typeName:F.ZodLazy,...G(n)}),e})(),Ku=(()=>{class e extends W{_parse(n){if(n.data!==this._def.value){const r=this._getOrReturnCtx(n);return M(r,{received:r.data,code:w.invalid_literal,expected:this._def.value}),$}return{status:"valid",value:n.data}}get value(){return this._def.value}}return e.create=(t,n)=>new e({value:t,typeName:F.ZodLiteral,...G(n)}),e})();function y_(e,t){return new na({values:e,typeName:F.ZodEnum,...G(t)})}let na=(()=>{class e extends W{_parse(n){if("string"!=typeof n.data){const r=this._getOrReturnCtx(n);return M(r,{expected:K.joinValues(this._def.values),received:r.parsedType,code:w.invalid_type}),$}if(-1===this._def.values.indexOf(n.data)){const r=this._getOrReturnCtx(n);return M(r,{received:r.data,code:w.invalid_enum_value,options:this._def.values}),$}return Xe(n.data)}get options(){return this._def.values}get enum(){const n={};for(const r of this._def.values)n[r]=r;return n}get Values(){const n={};for(const r of this._def.values)n[r]=r;return n}get Enum(){const n={};for(const r of this._def.values)n[r]=r;return n}extract(n){return e.create(n)}exclude(n){return e.create(this.options.filter(r=>!n.includes(r)))}}return e.create=y_,e})(),Qu=(()=>{class e extends W{_parse(n){const r=K.getValidEnumValues(this._def.values),i=this._getOrReturnCtx(n);if(i.parsedType!==b.string&&i.parsedType!==b.number){const o=K.objectValues(r);return M(i,{expected:K.joinValues(o),received:i.parsedType,code:w.invalid_type}),$}if(-1===r.indexOf(n.data)){const o=K.objectValues(r);return M(i,{received:i.data,code:w.invalid_enum_value,options:o}),$}return Xe(n.data)}get enum(){return this._def.values}}return e.create=(t,n)=>new e({values:t,typeName:F.ZodNativeEnum,...G(n)}),e})(),ra=(()=>{class e extends W{unwrap(){return this._def.type}_parse(n){const{ctx:r}=this._processInputParams(n);if(r.parsedType!==b.promise&&!1===r.common.async)return M(r,{code:w.invalid_type,expected:b.promise,received:r.parsedType}),$;const i=r.parsedType===b.promise?r.data:Promise.resolve(r.data);return Xe(i.then(o=>this._def.type.parseAsync(o,{path:r.path,errorMap:r.common.contextualErrorMap})))}}return e.create=(t,n)=>new e({type:t,typeName:F.ZodPromise,...G(n)}),e})(),Ln=(()=>{class e extends W{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===F.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(n){const{status:r,ctx:i}=this._processInputParams(n),o=this._def.effect||null;if("preprocess"===o.type){const a=o.transform(i.data);return i.common.async?Promise.resolve(a).then(l=>this._def.schema._parseAsync({data:l,path:i.path,parent:i})):this._def.schema._parseSync({data:a,path:i.path,parent:i})}const s={addIssue:a=>{M(i,a),a.fatal?r.abort():r.dirty()},get path(){return i.path}};if(s.addIssue=s.addIssue.bind(s),"refinement"===o.type){const a=l=>{const c=o.refinement(l,s);if(i.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return l};if(!1===i.common.async){const l=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});return"aborted"===l.status?$:("dirty"===l.status&&r.dirty(),a(l.value),{status:r.value,value:l.value})}return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(l=>"aborted"===l.status?$:("dirty"===l.status&&r.dirty(),a(l.value).then(()=>({status:r.value,value:l.value}))))}if("transform"===o.type){if(!1===i.common.async){const a=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});if(!Xs(a))return a;const l=o.transform(a.value,s);if(l instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:l}}return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(a=>Xs(a)?Promise.resolve(o.transform(a.value,s)).then(l=>({status:r.value,value:l})):a)}K.assertNever(o)}}return e.create=(t,n,r)=>new e({schema:t,typeName:F.ZodEffects,effect:n,...G(r)}),e.createWithPreprocess=(t,n,r)=>new e({schema:n,effect:{type:"preprocess",transform:t},typeName:F.ZodEffects,...G(r)}),e})(),Vn=(()=>{class e extends W{_parse(n){return this._getType(n)===b.undefined?Xe(void 0):this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}return e.create=(t,n)=>new e({innerType:t,typeName:F.ZodOptional,...G(n)}),e})(),Ui=(()=>{class e extends W{_parse(n){return this._getType(n)===b.null?Xe(null):this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}return e.create=(t,n)=>new e({innerType:t,typeName:F.ZodNullable,...G(n)}),e})(),Ju=(()=>{class e extends W{_parse(n){const{ctx:r}=this._processInputParams(n);let i=r.data;return r.parsedType===b.undefined&&(i=this._def.defaultValue()),this._def.innerType._parse({data:i,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}return e.create=(t,n)=>new e({innerType:t,typeName:F.ZodDefault,defaultValue:"function"==typeof n.default?n.default:()=>n.default,...G(n)}),e})(),v_=(()=>{class e extends W{_parse(n){const{ctx:r}=this._processInputParams(n),i={...r,common:{...r.common,issues:[]}},o=this._def.innerType._parse({data:i.data,path:i.path,parent:{...i}});return Ks(o)?o.then(s=>({status:"valid",value:"valid"===s.status?s.value:this._def.catchValue({get error(){return new tn(i.common.issues)},input:i.data})})):{status:"valid",value:"valid"===o.status?o.value:this._def.catchValue({get error(){return new tn(i.common.issues)},input:i.data})}}removeCatch(){return this._def.innerType}}return e.create=(t,n)=>new e({innerType:t,typeName:F.ZodCatch,catchValue:"function"==typeof n.catch?n.catch:()=>n.catch,...G(n)}),e})(),__=(()=>{class e extends W{_parse(n){if(this._getType(n)!==b.nan){const i=this._getOrReturnCtx(n);return M(i,{code:w.invalid_type,expected:b.nan,received:i.parsedType}),$}return{status:"valid",value:n.data}}}return e.create=t=>new e({typeName:F.ZodNaN,...G(t)}),e})();const Ok=Symbol("zod_brand");class D_ extends W{_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.type._parse({data:n.data,path:n.path,parent:n})}unwrap(){return this._def.type}}class zi extends W{_parse(t){var n=this;const{status:r,ctx:i}=this._processInputParams(t);if(i.common.async)return function(){var s=hn(function*(){const a=yield n._def.in._parseAsync({data:i.data,path:i.path,parent:i});return"aborted"===a.status?$:"dirty"===a.status?(r.dirty(),d_(a.value)):n._def.out._parseAsync({data:a.value,path:i.path,parent:i})});return function(){return s.apply(this,arguments)}}()();{const o=this._def.in._parseSync({data:i.data,path:i.path,parent:i});return"aborted"===o.status?$:"dirty"===o.status?(r.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:i.path,parent:i})}}static create(t,n){return new zi({in:t,out:n,typeName:F.ZodPipeline})}}const w_=(e,t={},n)=>e?Js.create().superRefine((r,i)=>{var o,s;if(!e(r)){const a="function"==typeof t?t(r):"string"==typeof t?{message:t}:t,l=null===(s=null!==(o=a.fatal)&&void 0!==o?o:n)||void 0===s||s;i.addIssue({code:"custom",..."string"==typeof a?{message:a}:a,fatal:l})}}):Js.create(),Pk={object:Or.lazycreate};var F=(()=>(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline"}(F||(F={})),F))();const C_=Qs.create,E_=Hu.create,b_=Uu.create,S_=Ln.create;var L=Object.freeze({__proto__:null,defaultErrorMap:Bi,setErrorMap:function Dk(e){u_=e},getErrorMap:qs,makeIssue:Ys,EMPTY_PATH:[],addIssueToContext:M,ParseStatus:$e,INVALID:$,DIRTY:d_,OK:Xe,isAborted:Bu,isDirty:ju,isValid:Xs,isAsync:Ks,get util(){return K},get objectUtil(){return Ws},ZodParsedType:b,getParsedType:pn,ZodType:W,ZodString:Qs,ZodNumber:Hu,ZodBigInt:$u,ZodBoolean:Uu,ZodDate:zu,ZodSymbol:h_,ZodUndefined:Gu,ZodNull:Zu,ZodAny:Js,ZodUnknown:ji,ZodNever:Fn,ZodVoid:p_,ZodArray:Hi,ZodObject:Or,ZodUnion:Wu,ZodDiscriminatedUnion:ta,ZodIntersection:Yu,ZodTuple:Pr,ZodRecord:$i,ZodMap:g_,ZodSet:m_,ZodFunction:Nr,ZodLazy:Xu,ZodLiteral:Ku,ZodEnum:na,ZodNativeEnum:Qu,ZodPromise:ra,ZodEffects:Ln,ZodTransformer:Ln,ZodOptional:Vn,ZodNullable:Ui,ZodDefault:Ju,ZodCatch:v_,ZodNaN:__,BRAND:Ok,ZodBranded:D_,ZodPipeline:zi,custom:w_,Schema:W,ZodSchema:W,late:Pk,get ZodFirstPartyTypeKind(){return F},coerce:{string:e=>Qs.create({...e,coerce:!0}),number:e=>Hu.create({...e,coerce:!0}),boolean:e=>Uu.create({...e,coerce:!0}),bigint:e=>$u.create({...e,coerce:!0}),date:e=>zu.create({...e,coerce:!0})},any:Js.create,array:Hi.create,bigint:$u.create,boolean:b_,date:zu.create,discriminatedUnion:ta.create,effect:S_,enum:na.create,function:Nr.create,instanceof:(e,t={message:`Input not instance of ${e.name}`})=>w_(n=>n instanceof e,t),intersection:Yu.create,lazy:Xu.create,literal:Ku.create,map:g_.create,nan:__.create,nativeEnum:Qu.create,never:Fn.create,null:Zu.create,nullable:Ui.create,number:E_,object:Or.create,oboolean:()=>b_().optional(),onumber:()=>E_().optional(),optional:Vn.create,ostring:()=>C_().optional(),pipeline:zi.create,preprocess:Ln.createWithPreprocess,promise:ra.create,record:$i.create,set:m_.create,strictObject:Or.strictCreate,string:C_,symbol:h_.create,transformer:S_,tuple:Pr.create,undefined:Gu.create,union:Wu.create,unknown:ji.create,void:p_.create,NEVER:$,ZodIssueCode:w,quotelessJson:e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError:tn}),Gi=(()=>(function(e){e.Internal="internal",e.External="external"}(Gi||(Gi={})),Gi))();const fO=L.object({type:L.literal(Gi.External),url:L.string(),rel:L.string().default("noopener"),target:L.string()}).partial({rel:!0,target:!0}),hO=L.object({type:L.literal(Gi.Internal),commands:L.any().array(),extras:L.object({queryParams:L.record(L.any()).nullable(),fragment:L.string(),queryParamsHandling:L.enum(["merge","preserve",""]).nullable(),preserveFragment:L.boolean(),onSameUrlNavigation:L.literal("reload"),skipLocationChange:L.boolean(),replaceUrl:L.boolean()}).partial()}).partial({extras:!0}),pO=L.record(L.string().transform(e=>`LinkId:'${e}'`).brand("LinkId"),L.discriminatedUnion("type",[fO,hO]));function I_(e){return pO.keySchema.parse(e)}I_("@@__EMPTY__");const gO=Fr(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}),M_=L.string().url().brand("URL"),Bn=M_.brand("IRI");let T_=(()=>{var e;class t{}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275prov=P({token:e,factory:e.\u0275fac}),t})();const x_=new A("Endpoints"),yO=new A("Mapping of file formats",{providedIn:"root",factory:()=>({"image/svg+xml":"svg","image/png":"png","application/pdf":"ai"})}),A_=L.object({"@id":Bn}),ed=L.object({"@graph":A_.extend({"@id":Bn,label:L.string(),organ_id:L.string(),organ_label:L.string(),representation_of:L.string(),illustration_files:L.object({file:M_,file_format:L.string()}).array(),mapping:L.object({svg_id:L.string(),label:L.string(),representation_of:L.string()}).array()}).array()}),vO=L.object({"@graph":A_.extend({"@id":Bn,data_sources:L.object({label:L.string(),description:L.string(),link:L.string()}).array()}).array()}),_O=L.object({cell_source:Bn}),DO=L.object({"@graph":_O.extend({cell_source:Bn,biomarker_type:L.string(),summary:L.object({cell_id:Bn,cell_label:L.string(),gene_id:Bn,gene_label:L.string(),mean_expression:L.number(),count:L.number(),percentage:L.number(),dataset_count:L.number().optional()}).array()}).array()}),wO=I_("FTU"),td="https://purl.humanatlas.io/2d-ftu/";function R_(e){return e.slice(0,1).toUpperCase()+e.slice(1)}let CO=(()=>{var e;class t extends T_{constructor(){super(...arguments),this.http=Fe(ki),this.endpoints=Fe(x_),this.fileFormatMapping=Fe(yO),this.cache=new Map}getTissueLibrary(){return this.fetchData(void 0,this.endpoints.illustrations,ed).pipe(Me(r=>this.constructTissueLibrary(r["@graph"])))}getIllustrationUrl(r){return this.getDataFileReferences(r).pipe(Me(i=>this.findIllustrationUrl(i)))}getIllustrationMapping(r){return this.fetchData(r,this.endpoints.illustrations,ed).pipe(Me(i=>this.findGraphItem(i,r).mapping),Me(i=>i?this.toIllustrationMapping(i):[]))}getCellSummaries(r){return this.fetchData(r,this.endpoints.summaries,DO).pipe(Me(i=>this.findCellSummaries(i,r)),Me(i=>i?this.constructCellSummaries(i):[]))}getDataFileReferences(r){return this.fetchData(r,this.endpoints.illustrations,ed).pipe(Me(i=>this.findGraphItem(i,r).illustration_files),Me(i=>i?this.toDataFileReferences(i):[]))}getSourceReferences(r){return this.fetchData(r,this.endpoints.datasets,vO).pipe(Me(i=>this.findGraphItem(i,r).data_sources),Me(i=>i?this.toSourceReferences(i):[]))}fetchData(r,i,o){const{http:s,cachedIri:a,cache:l}=this;if(void 0!==r&&r!==a&&(this.cachedIri=r,this.cache=new Map),!l.has(i)){const u=s.get(i,{params:{id:r??""},responseType:"json"}).pipe(Me(d=>o.parse(d)));l.set(i,function mO(e,t){const n="object"==typeof t;return new Promise((r,i)=>{const o=new Hn({next:s=>{r(s),o.unsubscribe()},error:i,complete:()=>{n?r(t.defaultValue):i(new gO)}});e.subscribe(o)})}(u))}return Qi(l.get(i))}findGraphItem(r,i){const o=r["@graph"].find(({"@id":s})=>s===i);return void 0===o?(console.error(`Iri not found in data: ${i}`),{}):o}findCellSummaries(r,i){const o=r["@graph"].filter(({cell_source:s})=>s===i);return void 0===o||0==o.length?(console.error(`Cell Summary not found in data: ${i}`),[]):o}findIllustrationUrl(r){const{fileFormatMapping:i}=this,o=i["image/svg+xml"],s=r.find(({format:a})=>a===o);return void 0===s?(console.error("Illustration url not found"),""):s.url}toIllustrationMapping(r){const o=[];for(const{label:s,svg_id:a,representation_of:l}of r)o.push({label:s,id:a,ontologyId:l.slice("http://purl.obolibrary.org/obo/".length)});return o}toDataFileReferences(r){const{fileFormatMapping:i}=this,o=[];for(const{file:s,file_format:a}of r)a in i&&o.push({format:i[a],url:s});return o}toSourceReferences(r){const i=[];for(const{label:o,link:s,description:a}of r)i.push({label:o,link:s,title:a});return i}constructCellSummaries(r){const i=[],s=new Set(r.map(a=>a.biomarker_type.toLowerCase()));return r.forEach(a=>{const l=a.summary.map(d=>({id:d.cell_id,label:d.cell_label})),c=a.summary.map(d=>({id:d.gene_id,label:d.gene_label})),u=a.summary.map(d=>({cell:d.cell_id,biomarker:d.gene_id,count:d.count,percentage:d.percentage,meanExpression:d.mean_expression,dataset_count:d.dataset_count}));i.push({label:`${R_(a.biomarker_type)} Biomarkers`,cells:l,biomarkers:c,summaries:u})}),["gene","protein","lipid"].forEach(a=>{s.has(a)||i.push({label:`${R_(a)} Biomarkers`,cells:[],biomarkers:[],summaries:[]})}),i}constructTissueLibrary(r){const i={};for(const{"@id":o,label:s,organ_id:a,organ_label:l}of r){const c=td+a;i[c]??={id:c,label:l,parent:td,children:[]},i[o]={id:o,label:s.toLowerCase(),parent:c,children:[],link:wO},i[c]?.children.push(o)}return{root:td,nodes:i}}}return(e=t).\u0275fac=function(){let n;return function(i){return(n||(n=Za(e)))(i||e)}}(),e.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"}),t})(),EO=(()=>{var e;class t{}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({providers:[{provide:l_,useExisting:vk},{provide:T_,useExisting:CO},{provide:x_,useValue:{illustrations:"assets/TEMP/2d-ftu-illustrations.jsonld",summaries:"assets/TEMP/ftu-cell-summaries.jsonld",datasets:"assets/TEMP/ftu-datasets.jsonld"}}]}),t})(),bO=(()=>{var e;class t{constructor(){this.http=Fe(ki),this.lookupSrc="",this.illustrationSrc="",this.highlightId="",this.nodeHovered=new ue,this.nodeClicked=new ue,this.url="",this.mapping=[],this.cdr=Fe(gs)}ngOnChanges(){"string"==typeof this.lookupSrc?this.getData(this.illustrationSrc,this.lookupSrc).subscribe():this.setUrlAndMapping(this.lookupSrc,this.illustrationSrc)}getData(r,i){return this.http.get(i,{responseType:"json"}).pipe(n_(o=>{this.setUrlAndMapping(o,r)}))}setUrlAndMapping(r,i){if("string"==typeof i){const o=r["@graph"].find(s=>s["@id"]===this.illustrationSrc);this.setUrlandMappingValues(o)}else this.setUrlandMappingValues(i)}setUrlandMappingValues(r){if(r){const i=r.illustration_files.find(o=>"image/svg+xml"===o.file_format);i&&(this.url=i.file,this.mapping=this.cellEntryToNodeEntry(r.mapping),this.cdr.markForCheck())}}cellEntryToNodeEntry(r){return r.map(i=>({label:i.label,id:i.svg_id,ontologyId:i.representation_of.split("/").slice(-1)[0]}))}}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275cmp=Un({type:e,selectors:[["hra-root-wc"]],inputs:{lookupSrc:"lookupSrc",illustrationSrc:"illustrationSrc",highlightId:"highlightId"},outputs:{nodeHovered:"nodeHovered",nodeClicked:"nodeClicked"},features:[Gt],decls:1,vars:3,consts:[[3,"url","mapping","highlightId","nodeHover","nodeClick"]],template:function(r,i){1&r&&(Mn(0,"hra-interactive-svg",0),es("nodeHover",function(s){return i.nodeHovered.emit(s)})("nodeClick",function(s){return i.nodeClicked.emit(s)}),Tn()),2&r&&ln("url",i.url)("mapping",i.mapping)("highlightId",i.highlightId)},dependencies:[a_],styles:["hra-interactive-svg[_ngcontent-%COMP%]{display:flex;height:100%;width:100%} .svg, svg{display:flex;width:100%;height:100%}"],changeDetection:0}),t})(),SO=(()=>{var e;class t{constructor(){this.injector=Fe(bt)}ngDoBootstrap(){const r=function HA(e,t){const n=function PA(e,t){return t.get(an).resolveComponentFactory(e).inputs}(e,t.injector),r=t.strategyFactory||new VA(e,t.injector),i=function OA(e){const t={};return e.forEach(({propName:n,templateName:r})=>{t[function TA(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}(r)]=n}),t}(n);class o extends jA{get ngElementStrategy(){if(!this._ngElementStrategy){const a=this._ngElementStrategy=r.create(this.injector||t.injector);n.forEach(({propName:l})=>{if(!this.hasOwnProperty(l))return;const c=this[l];delete this[l],a.setInputValue(l,c)})}return this._ngElementStrategy}constructor(a){super(),this.injector=a}attributeChangedCallback(a,l,c,u){this.ngElementStrategy.setInputValue(i[a],c)}connectedCallback(){let a=!1;this.ngElementStrategy.events&&(this.subscribeToEvents(),a=!0),this.ngElementStrategy.connect(this),a||this.subscribeToEvents()}disconnectedCallback(){this._ngElementStrategy&&this._ngElementStrategy.disconnect(),this.ngElementEventsSubscription&&(this.ngElementEventsSubscription.unsubscribe(),this.ngElementEventsSubscription=null)}subscribeToEvents(){this.ngElementEventsSubscription=this.ngElementStrategy.events.subscribe(a=>{const l=new CustomEvent(a.name,{detail:a.value});this.dispatchEvent(l)})}}return o.observedAttributes=Object.keys(i),n.forEach(({propName:s})=>{Object.defineProperty(o.prototype,s,{get(){return this.ngElementStrategy.getInputValue(s)},set(a){this.ngElementStrategy.setInputValue(s,a)},configurable:!0,enumerable:!0})}),o}(bO,{injector:this.injector});customElements.define("hra-illustration-wc",r)}}return(e=t).\u0275fac=function(r){return new(r||e)},e.\u0275mod=ot({type:e}),e.\u0275inj=Qe({imports:[qx,a_,SA,EO]}),t})();Wx().bootstrapModule(SO).catch(e=>console.error(e))}},X=>{X(X.s=654)}]); \ No newline at end of file diff --git a/compodoc/components-atoms/components/EmptyBiomarkerComponent.html b/compodoc/components-atoms/components/EmptyBiomarkerComponent.html index 0e5105a6b..3d002c965 100644 --- a/compodoc/components-atoms/components/EmptyBiomarkerComponent.html +++ b/compodoc/components-atoms/components/EmptyBiomarkerComponent.html @@ -343,7 +343,7 @@

    Outputs

    font-weight: 700; color: #fff; width: 100%; - max-width: 17.25rem; + max-width: 20rem; height: 3rem; } } diff --git a/compodoc/components-atoms/components/LabelBoxComponent.html b/compodoc/components-atoms/components/LabelBoxComponent.html index 31149971f..13aef47fd 100644 --- a/compodoc/components-atoms/components/LabelBoxComponent.html +++ b/compodoc/components-atoms/components/LabelBoxComponent.html @@ -172,6 +172,7 @@

    Metadata

    align-items: center; padding: 0.75rem 2rem; background: #f8f9fa; + font-family: 'Inter'; .filler { flex-grow: 1; diff --git a/compodoc/components-atoms/documentation.json b/compodoc/components-atoms/documentation.json index ef697e8cc..ae4353f3a 100644 --- a/compodoc/components-atoms/documentation.json +++ b/compodoc/components-atoms/documentation.json @@ -250,7 +250,7 @@ "assetsDirs": [], "styleUrlsData": [ { - "data": "@use 'variables' as vars;\n\n:host {\n display: block;\n padding: 2.625rem 2rem 2.625rem 2rem;\n\n .message {\n color: #243142;\n }\n\n .collaborate-button {\n margin-top: 2rem;\n font-weight: 700;\n color: #fff;\n width: 100%;\n max-width: 17.25rem;\n height: 3rem;\n }\n}\n", + "data": "@use 'variables' as vars;\n\n:host {\n display: block;\n padding: 2.625rem 2rem 2.625rem 2rem;\n\n .message {\n color: #243142;\n }\n\n .collaborate-button {\n margin-top: 2rem;\n font-weight: 700;\n color: #fff;\n width: 100%;\n max-width: 20rem;\n height: 3rem;\n }\n}\n", "styleUrl": "./empty-biomarker.component.scss" } ], @@ -357,7 +357,7 @@ "assetsDirs": [], "styleUrlsData": [ { - "data": ":host {\n display: flex;\n align-items: center;\n padding: 0.75rem 2rem;\n background: #f8f9fa;\n\n .filler {\n flex-grow: 1;\n }\n}\n", + "data": ":host {\n display: flex;\n align-items: center;\n padding: 0.75rem 2rem;\n background: #f8f9fa;\n font-family: 'Inter';\n\n .filler {\n flex-grow: 1;\n }\n}\n", "styleUrl": "./label-box.component.scss" } ], diff --git a/compodoc/components-atoms/js/search/search_index.js b/compodoc/components-atoms/js/search/search_index.js index b78d54dc4..faa6320f0 100644 --- a/compodoc/components-atoms/js/search/search_index.js +++ b/compodoc/components-atoms/js/search/search_index.js @@ -1,4 +1,4 @@ var COMPODOC_SEARCH_INDEX = { - "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/components/EmailInputComponent.html",[0,0.132,1,0.541]],["body/components/EmailInputComponent.html",[0,0.212,1,0.738,2,0.597,3,0.288,4,0.288,5,0.433,6,0.433,7,0.433,8,0.433,9,0.288,10,3.804,11,3.804,12,1.271,13,0.288,14,1.286,15,0.968,16,2.472,17,2.472,18,0.433,19,0.44,20,0.44,21,0.759,22,0.605,23,0.44,24,2.35,25,0.44,26,1.938,27,0.288,28,0.791,29,2.12,30,2.619,31,2.152,32,0.791,33,2.831,34,1.796,35,2.996,36,1.924,37,1.155,38,1.62,39,1.938,40,0.544,41,0.068,42,0.544,43,0.959,44,1.073,45,1.62,46,2.318,47,2.472,48,2.472,49,1.606,50,1.271,51,1.325,52,1.934,53,1.587,54,2.152,55,1.938,56,1.924,57,1.587,58,1.587,59,1.924,60,1.587,61,2.472,62,1.62,63,1.938,64,1.924,65,1.62,66,1.587,67,1.938,68,1.938,69,0.704,70,0.44,71,0.226,72,0.288,73,1.325,74,0.226,75,1.587,76,1.04,77,1.587,78,1.04,79,1.587,80,1.04,81,1.04,82,1.04,83,1.04,84,1.04,85,0.288,86,0.288,87,0.288,88,0.288,89,0.288,90,0.731,91,1.04,92,1.04,93,1.04,94,1.04,95,1.04,96,1.271,97,1.62,98,2.472,99,2.472,100,2.472,101,2.472,102,0.965,103,0.433,104,0.433,105,0.731,106,0.868,107,0.617,108,0.731,109,0.868,110,1.271,111,1.04,112,1.04,113,1.04,114,1.04,115,1.04,116,1.04,117,0.617,118,1.04,119,0.288,120,0.66,121,0.66,122,0.433,123,0.896,124,0.433,125,0.66,126,0.66,127,0.357,128,0.433,129,0.433,130,0.288,131,0.357,132,0.66,133,0.357,134,0.357,135,0.433,136,0.357,137,0.357,138,0.433,139,0.288,140,0.357,141,0.357,142,0.433,143,0.433,144,0.433,145,0.433,146,0.033,147,0.033]],["title/components/EmptyBiomarkerComponent.html",[0,0.132,127,0.541]],["body/components/EmptyBiomarkerComponent.html",[0,0.232,1,0.41,2,0.488,3,0.331,4,0.331,5,0.497,6,0.497,7,0.497,8,0.497,9,0.331,13,0.331,14,0.497,15,0.912,18,0.497,19,0.488,20,0.488,21,0.785,22,0.632,23,0.488,25,0.488,27,0.331,29,0.997,32,0.877,34,1.469,37,1.042,40,0.717,41,0.068,42,0.604,43,0.877,44,0.877,49,1.744,51,1.469,52,0.997,69,0.639,70,0.488,71,0.259,72,0.331,73,1.469,74,0.259,85,0.331,86,0.331,87,0.331,88,0.331,89,0.331,102,0.732,103,0.497,104,0.497,105,0.839,106,1.469,107,1.043,108,0.839,117,1.043,119,0.331,120,0.732,121,0.732,122,0.497,123,0.96,124,0.497,125,0.732,126,0.732,127,0.791,128,1.251,129,0.497,130,0.331,131,0.41,132,0.732,133,0.41,134,0.41,135,0.497,136,0.41,137,0.41,138,0.497,139,0.331,140,0.41,141,0.41,142,0.497,143,0.497,144,0.497,145,0.497,146,0.037,147,0.037,148,3.591,149,3.591,150,1.86,151,2.741,152,2.741,153,2.741,154,1.76,155,3.829,156,2.741,157,2.741,158,4.006,159,3.255,160,2.741,161,3.829,162,3.141,163,3.255,164,1.86,165,2.741,166,1.86,167,3.255,168,1.86,169,2.816,170,2.149,171,2.741,172,2.741,173,2.741,174,1.86,175,2.741,176,1.86,177,1.86,178,1.86,179,1.86,180,1.194,181,2.741,182,2.09,183,1.86,184,1.86,185,1.459,186,1.459,187,1.86,188,1.86,189,1.86,190,1.86,191,1.86,192,1.86,193,1.194,194,1.86]],["title/components/GradientLegendComponent.html",[0,0.132,130,0.437]],["body/components/GradientLegendComponent.html",[0,0.181,1,0.439,2,0.513,3,0.355,4,0.355,5,0.533,6,0.533,7,0.533,8,0.533,9,0.355,13,0.355,14,0.533,15,0.635,18,0.533,19,0.513,20,0.513,21,0.798,22,0.626,23,0.513,25,0.513,27,0.355,32,0.923,37,0.923,40,0.439,41,0.068,42,0.746,43,0.638,44,0.638,69,0.513,70,0.513,71,0.278,72,0.355,74,0.278,85,0.355,86,0.355,87,0.355,88,0.513,89,0.355,90,0.899,102,0.771,103,0.533,104,0.771,105,0.899,107,0.759,108,0.899,117,1.413,119,0.73,120,0.771,121,0.771,122,0.533,123,0.992,124,0.533,125,0.771,126,0.771,127,0.439,128,0.533,129,0.533,130,0.661,131,1.075,132,0.771,133,0.439,134,0.439,135,0.533,136,0.439,137,0.439,138,0.533,139,0.355,140,0.439,141,0.439,142,0.533,143,0.533,144,0.533,145,0.533,146,0.039,147,0.039,193,1.28,195,2.657,196,2.657,197,1.068,198,1.545,199,1.815,200,1.545,201,2.884,202,2.657,203,2.175,204,1.564,205,2.657,206,2.911,207,2.261,208,2.261,209,1.994,210,1.994,211,2.261,212,2.261,213,2.657,214,2.261,215,3.088,216,1.994,217,1.097,218,1.564,219,1.564,220,2.911,221,1.564,222,1.068,223,2.261,224,1.564,225,1.564,226,1.564,227,1.564,228,2.884,229,2.884,230,1.994,231,1.545,232,1.28,233,1.28,234,1.28]],["title/interfaces/GradientPoint.html",[203,1.579,217,0.936]],["body/interfaces/GradientPoint.html",[0,0.183,3,0.454,4,0.454,9,0.454,13,0.454,15,0.754,19,0.454,20,0.454,21,0.454,22,0.356,23,0.454,25,0.454,27,0.454,28,1.096,40,0.754,41,0.068,42,0.91,69,0.609,70,0.609,71,0.356,72,0.454,74,0.356,85,0.454,86,0.454,87,0.454,88,0.609,89,0.454,90,1.15,117,1.753,119,0.609,130,0.454,131,1.077,146,0.046,147,0.046,195,1.999,196,1.999,197,1.366,198,1.366,199,1.366,200,1.366,202,1.999,203,2.481,205,3.03,206,3.379,207,1.999,208,1.999,211,1.999,212,1.999,213,2.684,214,1.999,215,3.379,217,1.471,218,2.684,219,2.684,220,3.66,221,2.684,222,2.071,223,2.684,224,1.999,225,1.999,226,1.999,227,1.999,235,1.637]],["title/components/LabelBoxComponent.html",[0,0.132,133,0.541]],["body/components/LabelBoxComponent.html",[0,0.227,1,0.537,2,0.591,3,0.434,4,0.434,5,0.651,6,0.651,7,0.651,8,0.651,9,0.434,13,0.434,14,0.651,18,0.651,19,0.591,20,0.591,21,0.846,22,0.652,23,0.591,25,0.591,41,0.066,69,0.591,70,0.591,71,0.34,72,0.434,74,0.34,85,0.434,86,0.434,87,0.434,88,0.434,89,0.434,102,0.887,103,0.651,104,0.651,109,1.306,119,0.434,120,0.887,121,0.887,122,0.651,123,1.084,124,0.651,125,0.887,126,0.887,127,0.537,128,0.651,129,0.651,130,0.434,131,0.537,132,0.887,133,0.893,134,1.048,135,0.651,136,0.537,137,0.537,138,0.651,139,0.434,140,0.537,141,0.537,142,0.651,143,0.651,144,0.651,145,0.651,146,0.045,147,0.045,180,1.565,182,1.565,231,1.779,232,1.565,233,1.565,234,1.565,236,2.437,237,2.437,238,2.437,239,2.811,240,3.32,241,3.32,242,3.32,243,3.32,244,4.055,245,3.32,246,3.776,247,3.32,248,1.911,249,1.911,250,1.911,251,2.437,252,2.437]],["title/components/RequiredInputComponent.html",[0,0.132,136,0.541]],["body/components/RequiredInputComponent.html",[0,0.221,1,0.339,2,0.423,3,0.274,4,0.274,5,0.412,6,0.412,7,0.412,8,0.412,9,0.274,12,1.209,13,0.274,14,0.412,15,0.998,18,0.412,19,0.423,20,0.423,21,0.749,22,0.597,23,0.423,24,2.278,25,0.423,26,1.865,27,0.274,28,0.761,29,2.083,30,2.701,31,2.394,32,0.761,34,1.275,36,1.865,37,1.13,40,0.524,41,0.068,42,0.524,43,0.93,44,1.285,46,2.645,49,1.557,50,1.209,51,1.275,52,1.557,53,2.097,54,0.99,56,1.865,57,1.527,58,1.527,59,1.865,60,1.527,64,1.865,66,1.527,69,0.692,70,0.423,71,0.215,72,0.274,73,1.75,74,0.215,75,1.527,76,0.99,77,1.527,78,0.99,79,1.527,80,0.99,81,0.99,82,0.99,83,0.99,84,0.99,85,0.274,86,0.274,87,0.274,88,0.274,89,0.274,90,0.695,91,0.99,92,0.99,93,0.99,94,0.99,95,0.99,102,1.211,103,0.412,104,0.776,105,0.695,106,1.999,107,0.587,108,0.695,111,0.99,112,0.99,113,0.99,114,0.99,115,2.394,116,0.99,117,0.587,118,0.99,119,0.274,120,0.636,121,0.636,122,0.412,123,0.873,124,0.412,125,0.636,126,0.636,127,0.339,128,0.412,129,0.412,130,0.274,131,0.339,132,0.636,133,0.339,134,0.926,135,0.412,136,0.719,137,0.339,138,0.412,139,0.274,140,0.339,141,0.339,142,0.412,143,0.412,144,0.412,145,0.412,146,0.032,147,0.032,169,1.865,170,1.865,253,2.925,254,3.729,255,2.379,256,3.266,257,3.729,258,3.266,259,3.266,260,1.541,261,2.379,262,2.379,263,2.379,264,2.379,265,2.379,266,2.379,267,1.541,268,1.541,269,2.379,270,1.541,271,2.379,272,2.379,273,1.541]],["title/components/RequiredTextboxComponent.html",[0,0.132,137,0.541]],["body/components/RequiredTextboxComponent.html",[0,0.221,1,0.344,2,0.427,3,0.278,4,0.278,5,0.417,6,0.417,7,0.417,8,0.417,9,0.278,13,0.278,14,0.417,15,0.86,18,0.417,19,0.427,20,0.427,21,0.751,22,0.599,23,0.427,25,0.427,27,0.278,28,0.769,29,2.092,30,2.588,31,2.111,32,0.769,33,2.783,34,1.762,36,1.88,37,1.2,39,1.884,40,0.645,41,0.068,42,0.645,43,1.052,44,1.136,46,2.655,49,1.569,51,1.287,52,1.902,53,1.542,54,2.111,55,1.884,56,1.88,57,1.542,58,1.542,59,1.88,60,1.542,63,1.884,64,1.88,66,1.542,67,1.884,68,1.884,69,0.695,70,0.427,71,0.218,72,0.278,73,1.287,74,0.218,75,1.542,76,1.002,77,1.542,78,1.002,79,1.542,80,1.002,81,1.002,82,1.002,83,1.002,84,1.002,85,0.278,86,0.278,87,0.278,88,0.278,89,0.278,90,0.704,91,1.002,92,1.002,93,1.002,94,1.002,95,1.002,96,1.224,102,1.193,103,0.417,104,0.417,105,0.704,107,0.594,108,0.704,109,0.837,110,1.224,111,1.002,112,1.002,113,1.002,114,1.002,115,1.002,116,1.002,117,0.594,118,1.002,119,0.278,120,0.642,121,0.642,122,0.417,123,0.878,124,0.417,125,0.642,126,0.642,127,0.344,128,0.782,129,0.417,130,0.278,131,0.344,132,0.642,133,0.344,134,0.93,135,0.417,136,0.344,137,0.724,138,0.417,139,0.278,140,0.344,141,0.344,142,0.417,143,0.417,144,0.417,145,0.417,146,0.032,147,0.032,162,3.462,239,1.542,253,3.062,274,3.905,275,1.561,276,3.288,277,2.402,278,2.402,279,2.402,280,2.928,281,2.402,282,2.928,283,1.561,284,1.561,285,3.288,286,1.561,287,1.561,288,1.561,289,1.561,290,1.561]],["title/interfaces/SizeLegend.html",[217,0.936,291,1.579]],["body/interfaces/SizeLegend.html",[0,0.215,3,0.49,4,0.49,9,0.49,13,0.49,15,0.973,19,0.49,20,0.49,21,0.49,22,0.384,23,0.49,25,0.49,27,0.49,28,1.153,40,0.793,41,0.067,42,0.884,69,0.641,70,0.641,71,0.384,72,0.49,74,0.384,85,0.49,86,0.49,87,0.49,88,0.641,89,0.49,119,0.641,134,1.043,139,0.49,140,0.938,146,0.048,147,0.048,154,2.312,197,1.475,198,1.475,199,1.475,200,1.475,217,1.047,222,2.151,235,1.767,291,2.577,292,2.158,293,2.158,294,2.824,295,2.824,296,3.042,297,3.147,298,2.824,299,3.147,300,2.824,301,2.158,302,2.158,303,2.158]],["title/components/SizeLegendComponent.html",[0,0.132,139,0.437]],["body/components/SizeLegendComponent.html",[0,0.213,1,0.45,2,0.522,3,0.363,4,0.363,5,0.546,6,0.546,7,0.546,8,0.546,9,0.363,13,0.363,14,0.546,15,0.875,18,0.546,19,0.522,20,0.522,21,0.802,22,0.629,23,0.522,25,0.522,27,0.363,32,0.939,37,0.653,40,0.45,41,0.068,42,0.45,43,0.653,44,0.653,69,0.522,70,0.522,71,0.285,72,0.363,74,0.285,85,0.363,86,0.363,87,0.363,88,0.522,89,0.363,102,0.784,103,0.546,104,0.784,107,0.777,119,0.707,120,0.784,121,0.784,122,0.546,123,1.106,124,0.546,125,0.784,126,0.784,127,0.45,128,0.546,129,0.546,130,0.363,131,0.45,132,0.784,133,0.45,134,0.939,135,0.546,136,0.45,137,0.45,138,0.546,139,0.668,140,1.016,141,0.45,142,0.546,143,0.546,144,0.546,145,0.546,146,0.039,147,0.039,154,1.311,182,1.311,185,1.601,186,1.601,193,1.883,197,1.094,198,1.572,199,1.84,200,1.572,204,1.601,217,0.777,222,1.094,231,2.13,232,1.311,233,1.311,234,1.311,248,1.601,249,1.601,250,1.601,291,2.204,292,2.3,293,2.3,294,1.601,295,1.601,296,2.657,297,2.692,298,1.601,299,2.943,300,1.601,301,2.3,302,2.3,303,2.692,304,2.933,305,2.3,306,2.042,307,2.3,308,2.042,309,2.042,310,2.042,311,2.3,312,2.3,313,2.042,314,1.601,315,2.042,316,2.042]],["title/components/TooltipComponent.html",[0,0.132,141,0.541]],["body/components/TooltipComponent.html",[0,0.199,1,0.522,2,0.58,3,0.422,4,0.422,5,0.633,6,0.633,7,0.633,8,0.633,9,0.422,13,0.422,14,0.633,15,0.717,18,0.633,19,0.58,20,0.58,21,0.828,22,0.649,23,0.58,25,0.58,27,0.422,32,1.042,37,0.758,40,0.522,41,0.067,42,0.522,43,0.758,44,0.758,69,0.58,70,0.58,71,0.331,72,0.422,74,0.331,85,0.422,86,0.422,87,0.422,88,0.422,89,0.422,102,0.87,103,0.633,104,0.994,106,2.383,109,1.27,119,0.422,120,0.87,121,0.87,122,0.633,123,1.071,124,0.633,125,0.87,126,0.87,127,0.522,128,0.633,129,0.633,130,0.422,131,0.522,132,0.87,133,0.522,134,0.522,135,0.633,136,0.522,137,0.522,138,0.633,139,0.422,140,0.522,141,0.883,142,0.994,143,1.071,144,0.633,145,0.633,146,0.044,147,0.044,180,1.521,231,1.745,239,1.521,296,1.521,305,1.858,307,1.858,311,1.858,312,1.858,314,2.554,317,2.369,318,3.257,319,3.257,320,3.721,321,3.257,322,2.369,323,2.369,324,2.369,325,2.369,326,3.257,327,2.369,328,3.257,329,2.369]],["title/dependencies.html",[330,1.616,331,2.316]],["body/dependencies.html",[22,0.518,41,0.066,71,0.518,74,0.518,146,0.058,147,0.058,331,3.398,332,3.711,333,3.711,334,3.711,335,4.334,336,3.711]],["title/index.html",[27,0.367,337,2.061,338,2.061]],["body/index.html",[2,0.771,41,0.058,146,0.058,147,0.058,339,4.334,340,3.711,341,3.711,342,4.334,343,3.711,344,4.334,345,4.334,346,3.711,347,3.711,348,3.711]],["title/modules.html",[349,2.619]],["body/modules.html",[41,0.06,146,0.06,147,0.06,349,3.064]],["title/overview.html",[350,2.619]],["body/overview.html",[2,0.686,41,0.059,146,0.059,147,0.059,235,2.474,350,3.021,351,3.853,352,3.853]],["title/properties.html",[28,0.945,330,1.616]],["body/properties.html",[28,1.237,41,0.063,146,0.06,147,0.06,353,3.866,354,3.866]]],"invertedIndex":[["",{"_index":41,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{},"index.html":{},"modules.html":{},"overview.html":{},"properties.html":{}}}],["0",{"_index":328,"title":{},"body":{"components/TooltipComponent.html":{}}}],["0.0",{"_index":228,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["0.0.1",{"_index":354,"title":{},"body":{"properties.html":{}}}],["0.125rem",{"_index":314,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["0.16",{"_index":329,"title":{},"body":{"components/TooltipComponent.html":{}}}],["0.5rem",{"_index":311,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["0.75rem",{"_index":251,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["1",{"_index":234,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["1.0",{"_index":229,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["1.5rem",{"_index":230,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["100",{"_index":108,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["15.1.0",{"_index":335,"title":{},"body":{"dependencies.html":{}}}],["17.25rem",{"_index":192,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["1px",{"_index":325,"title":{},"body":{"components/TooltipComponent.html":{}}}],["1rem",{"_index":326,"title":{},"body":{"components/TooltipComponent.html":{}}}],["2",{"_index":352,"title":{},"body":{"overview.html":{}}}],["2.3.0",{"_index":333,"title":{},"body":{"dependencies.html":{}}}],["2.625rem",{"_index":181,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["243142",{"_index":183,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["2rem",{"_index":182,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["3rem",{"_index":194,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["50",{"_index":313,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["700",{"_index":189,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["75838f",{"_index":316,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["8",{"_index":351,"title":{},"body":{"overview.html":{}}}],["accessors",{"_index":201,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["accross",{"_index":241,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["actual_component",{"_index":145,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["add",{"_index":279,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["added",{"_index":245,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["address",{"_index":101,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["align",{"_index":248,"title":{},"body":{"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["along",{"_index":206,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["angular/common",{"_index":71,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{}}}],["angular/core",{"_index":74,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{}}}],["angular/forms",{"_index":76,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["angular/material/button",{"_index":174,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["angular/material/form",{"_index":78,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["angular/material/input",{"_index":80,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["atoms",{"_index":339,"title":{},"body":{"index.html":{}}}],["background",{"_index":109,"title":{},"body":{"components/EmailInputComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/TooltipComponent.html":{}}}],["bar",{"_index":215,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["before",{"_index":264,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["biomaker",{"_index":151,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker",{"_index":158,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker'},{'name",{"_index":129,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["biomarker.component.html",{"_index":160,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.scss",{"_index":159,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.ts",{"_index":150,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.ts:23",{"_index":164,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.ts:28",{"_index":166,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.ts:33",{"_index":168,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker/empty",{"_index":149,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarkers",{"_index":198,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["block",{"_index":105,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["blur",{"_index":58,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["border",{"_index":312,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["box",{"_index":239,"title":{},"body":{"components/LabelBoxComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/TooltipComponent.html":{}}}],["box'},{'name",{"_index":135,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["box.component.html",{"_index":247,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["box.component.scss",{"_index":246,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["box.component.ts",{"_index":238,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["box/label",{"_index":237,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["button",{"_index":155,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["buttonon",{"_index":165,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["cell",{"_index":152,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["center",{"_index":250,"title":{},"body":{"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["changedetection",{"_index":19,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["changedetectionstrategy",{"_index":72,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["changedetectionstrategy.onpush",{"_index":20,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["changes",{"_index":53,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["check",{"_index":258,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["circle",{"_index":299,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["cirlce",{"_index":300,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["class",{"_index":89,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["click",{"_index":172,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["collaborate",{"_index":184,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["collaborateclick",{"_index":163,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["collaboratetext",{"_index":161,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["color",{"_index":117,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["colors",{"_index":205,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["column",{"_index":307,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["commonmodule",{"_index":70,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["component",{"_index":0,"title":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["component_template",{"_index":124,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["components",{"_index":2,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"index.html":{},"overview.html":{}}}],["computes",{"_index":211,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["connect",{"_index":263,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["connects",{"_index":39,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["const",{"_index":90,"title":{},"body":{"components/EmailInputComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["constructor",{"_index":36,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["contact",{"_index":16,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["content",{"_index":243,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["control",{"_index":30,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["control.valid",{"_index":95,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["control.valuechanges",{"_index":91,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["creates",{"_index":261,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["css",{"_index":212,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["data",{"_index":154,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["dc231e",{"_index":118,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["deep",{"_index":112,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["default",{"_index":43,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["defined",{"_index":37,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["defining",{"_index":294,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["dependencies",{"_index":331,"title":{"dependencies.html":{}},"body":{"dependencies.html":{}}}],["description",{"_index":13,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["destroy",{"_index":31,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["destroyed",{"_index":68,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["direction",{"_index":305,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["directive",{"_index":122,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["directives",{"_index":144,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["disappeared",{"_index":47,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["display",{"_index":104,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["displayed",{"_index":297,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["displays",{"_index":277,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["dom",{"_index":7,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["element",{"_index":121,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["email",{"_index":14,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["emailchange",{"_index":35,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["emailinputcomponent",{"_index":1,"title":{"components/EmailInputComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["emits",{"_index":51,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["emitter",{"_index":170,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{}}}],["emitting",{"_index":67,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["emmiter",{"_index":265,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["empty",{"_index":128,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["emptybiomarkercomponent",{"_index":127,"title":{"components/EmptyBiomarkerComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["end",{"_index":244,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["enter",{"_index":99,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["event",{"_index":169,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{}}}],["eventemitter",{"_index":49,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["execute",{"_index":348,"title":{},"body":{"index.html":{}}}],["export",{"_index":88,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["f8f9fa",{"_index":252,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["fff",{"_index":190,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["ffffff",{"_index":110,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["field",{"_index":46,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["file",{"_index":9,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["filler",{"_index":232,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["flex",{"_index":231,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["font",{"_index":187,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["form",{"_index":115,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["formcontrol",{"_index":56,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["function",{"_index":214,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["gap",{"_index":308,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["generated",{"_index":341,"title":{},"body":{"index.html":{}}}],["getgradientcss",{"_index":209,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["getting",{"_index":337,"title":{"index.html":{}},"body":{}}],["gradient",{"_index":131,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["gradient(90deg",{"_index":227,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["gradientcss",{"_index":202,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["gradientlegendcomponent",{"_index":130,"title":{"components/GradientLegendComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["gradientpoint",{"_index":203,"title":{"interfaces/GradientPoint.html":{}},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["grow",{"_index":233,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["height",{"_index":193,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/SizeLegendComponent.html":{}}}],["host",{"_index":103,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["hra",{"_index":22,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{}}}],["html",{"_index":120,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["illustrations",{"_index":319,"title":{},"body":{"components/TooltipComponent.html":{}}}],["import",{"_index":69,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["imports",{"_index":87,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["index",{"_index":27,"title":{"index.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["info",{"_index":3,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["inform",{"_index":153,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["injectdestroy",{"_index":64,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["input",{"_index":15,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["input'},{'name",{"_index":126,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["input.component.html",{"_index":26,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{}}}],["input.component.scss",{"_index":24,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{}}}],["input.component.ts",{"_index":12,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{}}}],["input.component.ts:22",{"_index":45,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input.component.ts:25",{"_index":50,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{}}}],["input.component.ts:28",{"_index":65,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input.component.ts:30",{"_index":267,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["input.component.ts:31",{"_index":62,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input.component.ts:34",{"_index":38,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input.component.ts:35",{"_index":270,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["input.component.ts:40",{"_index":268,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["input.component.ts:43",{"_index":260,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["input/email",{"_index":11,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input/required",{"_index":254,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["inputchange",{"_index":259,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["inputs",{"_index":32,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["instance",{"_index":262,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["interface",{"_index":217,"title":{"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{}},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["interfaces",{"_index":235,"title":{},"body":{"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"overview.html":{}}}],["invalid",{"_index":55,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["item",{"_index":309,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["items",{"_index":249,"title":{},"body":{"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["label",{"_index":134,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["labelboxcomponent",{"_index":133,"title":{"components/LabelBoxComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["legend",{"_index":119,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["legend'},{'name",{"_index":132,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["legend.component.html",{"_index":200,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["legend.component.scss",{"_index":199,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["legend.component.ts",{"_index":197,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["legend.component.ts:23",{"_index":204,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/SizeLegendComponent.html":{}}}],["legend.component.ts:26",{"_index":210,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["legend/gradient",{"_index":196,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["legend/size",{"_index":293,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["library",{"_index":340,"title":{},"body":{"index.html":{}}}],["lifetime",{"_index":271,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["line",{"_index":310,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["linear",{"_index":213,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["map",{"_index":82,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["map((value",{"_index":94,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["margin",{"_index":185,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/SizeLegendComponent.html":{}}}],["markdown",{"_index":167,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["markdownmodule",{"_index":175,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["marker",{"_index":116,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["mat",{"_index":113,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["matbuttonmodule",{"_index":173,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["matching",{"_index":147,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{},"index.html":{},"modules.html":{},"overview.html":{},"properties.html":{}}}],["matformfieldmodule",{"_index":77,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["matinputmodule",{"_index":79,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["max",{"_index":191,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["mdc",{"_index":114,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["message",{"_index":162,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["messagechange",{"_index":282,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["metadata",{"_index":18,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["modal",{"_index":17,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["modules",{"_index":349,"title":{"modules.html":{}},"body":{"modules.html":{}}}],["name",{"_index":125,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["navigate",{"_index":156,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["new",{"_index":52,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["ng",{"_index":111,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["ngx",{"_index":176,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["number",{"_index":222,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["nx",{"_index":342,"title":{},"body":{"index.html":{}}}],["observable",{"_index":66,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["observables",{"_index":272,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["output",{"_index":73,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["outputs",{"_index":34,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["overview",{"_index":350,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["package",{"_index":330,"title":{"dependencies.html":{},"properties.html":{}},"body":{}}],["padding",{"_index":180,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/LabelBoxComponent.html":{},"components/TooltipComponent.html":{}}}],["page",{"_index":242,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["peer",{"_index":334,"title":{},"body":{"dependencies.html":{}}}],["percentage",{"_index":220,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["percentages",{"_index":218,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["percentage}%`).join",{"_index":225,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["pipe",{"_index":92,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["placeholder",{"_index":33,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["please",{"_index":98,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["point",{"_index":221,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["points",{"_index":208,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["properties",{"_index":28,"title":{"properties.html":{}},"body":{"components/EmailInputComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"properties.html":{}}}],["radius",{"_index":296,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["reactiveformsmodule",{"_index":75,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["readonly",{"_index":29,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["required",{"_index":102,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["requiredinputcomponent",{"_index":136,"title":{"components/RequiredInputComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["requiredtextboxcomponent",{"_index":137,"title":{"components/RequiredTextboxComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["results",{"_index":146,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{},"index.html":{},"modules.html":{},"overview.html":{},"properties.html":{}}}],["return",{"_index":226,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["returns",{"_index":216,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["reusable",{"_index":255,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["reuse",{"_index":240,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["rgba(0",{"_index":327,"title":{},"body":{"components/TooltipComponent.html":{}}}],["row",{"_index":306,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["run",{"_index":346,"title":{},"body":{"index.html":{}}}],["running",{"_index":343,"title":{},"body":{"index.html":{}}}],["rxjs",{"_index":84,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["selector",{"_index":21,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["set",{"_index":269,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["shadow",{"_index":324,"title":{},"body":{"components/TooltipComponent.html":{}}}],["size",{"_index":140,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["sizelegend",{"_index":291,"title":{"interfaces/SizeLegend.html":{}},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["sizelegendcomponent",{"_index":139,"title":{"components/SizeLegendComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["sizes",{"_index":303,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["solid",{"_index":315,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["source",{"_index":4,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["specific",{"_index":219,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["src/lib/email",{"_index":10,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["src/lib/empty",{"_index":148,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["src/lib/gradient",{"_index":195,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["src/lib/label",{"_index":236,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["src/lib/required",{"_index":253,"title":{},"body":{"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["src/lib/size",{"_index":292,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["src/lib/tooltip/tooltip.component.ts",{"_index":317,"title":{},"body":{"components/TooltipComponent.html":{}}}],["src/lib/tooltip/tooltip.component.ts:19",{"_index":322,"title":{},"body":{"components/TooltipComponent.html":{}}}],["standalone",{"_index":85,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["started",{"_index":338,"title":{"index.html":{}},"body":{}}],["stop",{"_index":207,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["stops",{"_index":223,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["string",{"_index":42,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["styles",{"_index":6,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["styleurls",{"_index":23,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["subscribe((value",{"_index":96,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["subscribe(inputchange",{"_index":273,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["table",{"_index":301,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["takeuntil",{"_index":83,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["takeuntil(destroy",{"_index":93,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["taking",{"_index":302,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["team",{"_index":157,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["template",{"_index":5,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["templateurl",{"_index":25,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["test",{"_index":347,"title":{},"body":{"index.html":{}}}],["tests",{"_index":345,"title":{},"body":{"index.html":{}}}],["text",{"_index":106,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/TooltipComponent.html":{}}}],["text.label",{"_index":304,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["textarea",{"_index":285,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox",{"_index":276,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox'},{'name",{"_index":138,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["textbox.component.html",{"_index":281,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.scss",{"_index":280,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts",{"_index":275,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:22",{"_index":286,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:25",{"_index":284,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:28",{"_index":287,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:31",{"_index":289,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:34",{"_index":288,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:37",{"_index":283,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox/required",{"_index":274,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["this.emailchange.emit(value",{"_index":97,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["this.gradient.map",{"_index":224,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["this.messagechange.emit(value",{"_index":290,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["tooltip",{"_index":143,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["tooltip.component.html",{"_index":321,"title":{},"body":{"components/TooltipComponent.html":{}}}],["tooltip.component.scss",{"_index":320,"title":{},"body":{"components/TooltipComponent.html":{}}}],["tooltipcomponent",{"_index":141,"title":{"components/TooltipComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["tooltips",{"_index":318,"title":{},"body":{"components/TooltipComponent.html":{}}}],["top",{"_index":186,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/SizeLegendComponent.html":{}}}],["tree",{"_index":8,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["triggered",{"_index":266,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["true",{"_index":86,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["tslib",{"_index":332,"title":{},"body":{"dependencies.html":{}}}],["type",{"_index":40,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["typed",{"_index":48,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["types",{"_index":295,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["ui",{"_index":142,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["ui/cdk/injectors",{"_index":81,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["ui/theming",{"_index":336,"title":{},"body":{"dependencies.html":{}}}],["undefined",{"_index":54,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["under",{"_index":298,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["unit",{"_index":344,"title":{},"body":{"index.html":{}}}],["updateon",{"_index":57,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["use",{"_index":177,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["used",{"_index":256,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["user",{"_index":171,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["users",{"_index":278,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["valid",{"_index":100,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["validate",{"_index":63,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["validation",{"_index":257,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["validators",{"_index":59,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["validators.email",{"_index":61,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["validators.required",{"_index":60,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["value",{"_index":44,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["var",{"_index":123,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["variables",{"_index":178,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["vars",{"_index":179,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["version",{"_index":353,"title":{},"body":{"properties.html":{}}}],["weight",{"_index":188,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["white",{"_index":323,"title":{},"body":{"components/TooltipComponent.html":{}}}],["width",{"_index":107,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{}}}]],"pipeline":["stemmer"]}, - "store": {"components/EmailInputComponent.html":{"url":"components/EmailInputComponent.html","title":"component - EmailInputComponent","body":"\n \n\n\n\n\n\n Components\n \n EmailInputComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/email-input/email-input.component.ts\n\n\n\n \n Description\n \n \n Email input components for contact modal.\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-email-input\n \n\n \n styleUrls\n ./email-input.component.scss\n \n\n\n\n \n templateUrl\n ./email-input.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Readonly\n control\n \n \n Readonly\n destroy$\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n placeholder\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n emailChange\n \n \n \n \n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:34\n \n \n\n \n \n Connects the input control to component outputs\n\n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n placeholder\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:22\n \n \n \n \n A placeholder for the email input field. This will be disappeared when the email is typed.\n\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n emailChange\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:25\n \n \n \n \n Emits the new email when the input changes or undefined if the email is invalid\n\n \n \n \n \n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Readonly\n control\n \n \n \n \n \n \n Default value : new FormControl('', {\n updateOn: 'blur',\n validators: [Validators.required, Validators.email],\n })\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:31\n \n \n\n \n \n A control to validate the email.\n\n \n \n\n \n \n \n \n \n \n \n \n Readonly\n destroy$\n \n \n \n \n \n \n Default value : injectDestroy$()\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:28\n \n \n\n \n \n Observable emitting when the component is destroyed\n\n \n \n\n \n \n\n\n\n\n\n \n import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { injectDestroy$ } from '@hra-ui/cdk/injectors';\nimport { map, takeUntil } from 'rxjs';\n\n/**\n * Email input components for contact modal.\n */\n@Component({\n selector: 'hra-email-input',\n standalone: true,\n imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule],\n templateUrl: './email-input.component.html',\n styleUrls: ['./email-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailInputComponent {\n /** A placeholder for the email input field. This will be disappeared when the email is typed. */\n @Input() placeholder = '';\n\n /** Emits the new email when the input changes or undefined if the email is invalid */\n @Output() readonly emailChange = new EventEmitter();\n\n /** Observable emitting when the component is destroyed */\n readonly destroy$ = injectDestroy$();\n\n /** A control to validate the email. */\n readonly control = new FormControl('', {\n updateOn: 'blur',\n validators: [Validators.required, Validators.email],\n });\n\n /** Connects the input control to component outputs */\n constructor() {\n const { control, destroy$ } = this;\n control.valueChanges\n .pipe(\n takeUntil(destroy$),\n map((value) => (control.valid ? value : undefined))\n )\n .subscribe((value) => this.emailChange.emit(value as string | undefined));\n }\n}\n\n \n\n \n \n Email \n \n\n \n Please enter a valid email address\n \n Email is required! \n\n\n \n\n \n \n ./email-input.component.scss\n \n :host {\n display: block;\n\n .email-text-field {\n width: 100%;\n background: #ffffff;\n }\n\n ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' Email Please enter a valid email address Email is required! '\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'EmailInputComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/EmptyBiomarkerComponent.html":{"url":"components/EmptyBiomarkerComponent.html","title":"component - EmptyBiomarkerComponent","body":"\n \n\n\n\n\n\n Components\n \n EmptyBiomarkerComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/empty-biomarker/empty-biomarker.component.ts\n\n\n\n \n Description\n \n \n Component for any empty biomaker cell\n to inform about the empty data and has\n button to navigate to HRA Team.\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-empty-biomarker\n \n\n \n styleUrls\n ./empty-biomarker.component.scss\n \n\n\n\n \n templateUrl\n ./empty-biomarker.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n collaborateText\n \n \n message\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n collaborateClick\n \n \n \n \n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n collaborateText\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/empty-biomarker/empty-biomarker.component.ts:23\n \n \n \n \n Input buttonon text of empty biomarker component.\n\n \n \n \n \n \n \n \n \n \n message\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/empty-biomarker/empty-biomarker.component.ts:28\n \n \n \n \n Input message markdown of empty biomarker component.\n\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n collaborateClick\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/lib/empty-biomarker/empty-biomarker.component.ts:33\n \n \n \n \n An event emitter that emits the user button click event\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MarkdownModule } from 'ngx-markdown';\n\n/**\n * Component for any empty biomaker cell\n * to inform about the empty data and has\n * button to navigate to HRA Team.\n */\n@Component({\n selector: 'hra-empty-biomarker',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MarkdownModule],\n templateUrl: './empty-biomarker.component.html',\n styleUrls: ['./empty-biomarker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyBiomarkerComponent {\n /**\n * Input buttonon text of empty biomarker component.\n */\n @Input() collaborateText = '';\n\n /**\n * Input message markdown of empty biomarker component.\n */\n @Input() message = '';\n\n /**\n * An event emitter that emits the user button click event\n */\n @Output() readonly collaborateClick = new EventEmitter();\n}\n\n \n\n \n \n\n {{ collaborateText }}\n\n\n \n\n \n \n ./empty-biomarker.component.scss\n \n @use 'variables' as vars;\n\n:host {\n display: block;\n padding: 2.625rem 2rem 2.625rem 2rem;\n\n .message {\n color: #243142;\n }\n\n .collaborate-button {\n margin-top: 2rem;\n font-weight: 700;\n color: #fff;\n width: 100%;\n max-width: 17.25rem;\n height: 3rem;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ collaborateText }}'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'EmptyBiomarkerComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/GradientLegendComponent.html":{"url":"components/GradientLegendComponent.html","title":"component - GradientLegendComponent","body":"\n \n\n\n\n\n\n Components\n \n GradientLegendComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/gradient-legend/gradient-legend.component.ts\n\n\n\n \n Description\n \n \n Gradient legend for biomarkers\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-gradient-legend\n \n\n \n styleUrls\n ./gradient-legend.component.scss\n \n\n\n\n \n templateUrl\n ./gradient-legend.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n gradient\n \n \n \n \n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n gradientCss\n \n \n \n \n \n \n\n\n\n \n Inputs\n \n \n \n \n \n gradient\n \n \n \n \n Type : GradientPoint[]\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/lib/gradient-legend/gradient-legend.component.ts:23\n \n \n \n \n Gradient colors along with their stop points\n\n \n \n \n \n\n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n gradientCss\n \n \n\n \n \n getgradientCss()\n \n \n \n \n Defined in src/lib/gradient-legend/gradient-legend.component.ts:26\n \n \n \n \n Computes the css linear-gradient function for the gradient bar\n\n\n \n Returns : string\n\n \n \n \n\n \n \n\n\n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** An interface of gradient colors along with their percentages for the gradient bar. */\nexport interface GradientPoint {\n /** Gradient color at a specific percentage */\n color: string;\n /** Percentage point along the gradient bar */\n percentage: number;\n}\n\n/** Gradient legend for biomarkers */\n@Component({\n selector: 'hra-gradient-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './gradient-legend.component.html',\n styleUrls: ['./gradient-legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GradientLegendComponent {\n /** Gradient colors along with their stop points */\n @Input() gradient: GradientPoint[] = [];\n\n /** Computes the css linear-gradient function for the gradient bar */\n get gradientCss(): string {\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(',');\n return `linear-gradient(90deg, ${stops})`;\n }\n}\n\n \n\n \n \n\n 0.0\n \n 1.0\n\n\n \n\n \n \n ./gradient-legend.component.scss\n \n :host {\n display: block;\n\n .gradient-bar {\n height: 1.5rem;\n width: 100%;\n }\n\n .legend {\n display: flex;\n\n .filler {\n flex-grow: 1;\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' 0.0 1.0'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'GradientLegendComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/GradientPoint.html":{"url":"interfaces/GradientPoint.html","title":"interface - GradientPoint","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n GradientPoint\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/lib/gradient-legend/gradient-legend.component.ts\n \n\n\n \n Description\n \n \n An interface of gradient colors along with their percentages for the gradient bar.\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n color\n \n \n \n \n percentage\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n color\n \n \n \n \n \n \n \n \n color: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Gradient color at a specific percentage\n\n \n \n \n \n \n \n \n \n \n percentage\n \n \n \n \n \n \n \n \n percentage: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n Percentage point along the gradient bar\n\n \n \n \n \n \n \n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** An interface of gradient colors along with their percentages for the gradient bar. */\nexport interface GradientPoint {\n /** Gradient color at a specific percentage */\n color: string;\n /** Percentage point along the gradient bar */\n percentage: number;\n}\n\n/** Gradient legend for biomarkers */\n@Component({\n selector: 'hra-gradient-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './gradient-legend.component.html',\n styleUrls: ['./gradient-legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GradientLegendComponent {\n /** Gradient colors along with their stop points */\n @Input() gradient: GradientPoint[] = [];\n\n /** Computes the css linear-gradient function for the gradient bar */\n get gradientCss(): string {\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(',');\n return `linear-gradient(90deg, ${stops})`;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/LabelBoxComponent.html":{"url":"components/LabelBoxComponent.html","title":"component - LabelBoxComponent","body":"\n \n\n\n\n\n\n Components\n \n LabelBoxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/label-box/label-box.component.ts\n\n\n\n \n Description\n \n \n Label box component for reuse accross the page. The content with \"end\" selector will be added to the end of the label box\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-label-box\n \n\n \n styleUrls\n ./label-box.component.scss\n \n\n\n\n \n templateUrl\n ./label-box.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** Label box component for reuse accross the page. The content with \"end\" selector will be added to the end of the label box */\n@Component({\n selector: 'hra-label-box',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './label-box.component.html',\n styleUrls: ['./label-box.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LabelBoxComponent {}\n\n \n\n \n \n\n\n\n\n\n \n\n \n \n ./label-box.component.scss\n \n :host {\n display: flex;\n align-items: center;\n padding: 0.75rem 2rem;\n background: #f8f9fa;\n\n .filler {\n flex-grow: 1;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'LabelBoxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/RequiredInputComponent.html":{"url":"components/RequiredInputComponent.html","title":"component - RequiredInputComponent","body":"\n \n\n\n\n\n\n Components\n \n RequiredInputComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/required-input/required-input.component.ts\n\n\n\n \n Description\n \n \n A reusable text field component that can be used to input text.\nThis input field component also had required validation check.\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-required-input\n \n\n \n styleUrls\n ./required-input.component.scss\n \n\n\n\n \n templateUrl\n ./required-input.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Readonly\n control\n \n \n Readonly\n destroy$\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n label\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n inputChange\n \n \n \n \n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:43\n \n \n\n \n \n Creates an instance of required input component\nand it connect the form control value changes to check for validation\nbefore output emmiter is triggered\n\n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n label\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:25\n \n \n \n \n The label to display for the text field.\n\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n inputChange\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:30\n \n \n \n \n An event emitter that emits the input value when it changes.\n\n \n \n \n \n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Readonly\n control\n \n \n \n \n \n \n Default value : new FormControl('', {\n updateOn: 'blur',\n validators: Validators.required,\n })\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:40\n \n \n\n \n \n Form control for input to set some input validation.\n\n \n \n\n \n \n \n \n \n \n \n \n Readonly\n destroy$\n \n \n \n \n \n \n Default value : injectDestroy$()\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:35\n \n \n\n \n \n Destroy observable used to control the lifetime of other observables.\n\n \n \n\n \n \n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { injectDestroy$ } from '@hra-ui/cdk/injectors';\nimport { map, takeUntil } from 'rxjs';\n\n/**\n * A reusable text field component that can be used to input text.\n * This input field component also had required validation check.\n */\n@Component({\n selector: 'hra-required-input',\n standalone: true,\n imports: [CommonModule, MatFormFieldModule, MatInputModule, ReactiveFormsModule],\n templateUrl: './required-input.component.html',\n styleUrls: ['./required-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RequiredInputComponent {\n /**\n * The label to display for the text field.\n */\n @Input() label = '';\n\n /**\n * An event emitter that emits the input value when it changes.\n */\n @Output() readonly inputChange = new EventEmitter();\n\n /**\n * Destroy observable used to control the lifetime of other observables.\n */\n readonly destroy$ = injectDestroy$();\n\n /**\n * Form control for input to set some input validation.\n */\n readonly control = new FormControl('', {\n updateOn: 'blur',\n validators: Validators.required,\n });\n\n /**\n * Creates an instance of required input component\n * and it connect the form control value changes to check for validation\n * before output emmiter is triggered\n */\n constructor() {\n const { control, destroy$, inputChange } = this;\n control.valueChanges\n .pipe(\n takeUntil(destroy$),\n map((value) => (control.valid ? (value as string) : undefined))\n )\n .subscribe(inputChange);\n }\n}\n\n \n\n \n \n {{ label }} \n \n {{ label }} is required!\n\n\n \n\n \n \n ./required-input.component.scss\n \n :host {\n display: block;\n\n .form-field {\n width: 100%;\n }\n\n ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ label }} {{ label }} is required!'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'RequiredInputComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/RequiredTextboxComponent.html":{"url":"components/RequiredTextboxComponent.html","title":"component - RequiredTextboxComponent","body":"\n \n\n\n\n\n\n Components\n \n RequiredTextboxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/required-textbox/required-textbox.component.ts\n\n\n\n \n Description\n \n \n The required textbox component displays a message box for users to add a message\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-required-textbox\n \n\n \n styleUrls\n ./required-textbox.component.scss\n \n\n\n\n \n templateUrl\n ./required-textbox.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Readonly\n control\n \n \n Readonly\n destroy$\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n label\n \n \n placeholder\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n messageChange\n \n \n \n \n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:37\n \n \n\n \n \n Connects the input control to component outputs\n\n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n label\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:25\n \n \n \n \n A label for the textarea field\n\n \n \n \n \n \n \n \n \n \n placeholder\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:22\n \n \n \n \n A placeholder for the message textarea field\n\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n messageChange\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:28\n \n \n \n \n Emits the new message when the input changes or undefined if the message is invalid\n\n \n \n \n \n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Readonly\n control\n \n \n \n \n \n \n Default value : new FormControl('', {\n updateOn: 'blur',\n validators: [Validators.required],\n })\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:34\n \n \n\n \n \n A control to validate if the message field is empty\n\n \n \n\n \n \n \n \n \n \n \n \n Readonly\n destroy$\n \n \n \n \n \n \n Default value : injectDestroy$()\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:31\n \n \n\n \n \n Observable emitting when the component is destroyed\n\n \n \n\n \n \n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { injectDestroy$ } from '@hra-ui/cdk/injectors';\nimport { FormControl, Validators, ReactiveFormsModule } from '@angular/forms';\nimport { map, takeUntil } from 'rxjs';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n/**\n * The required textbox component displays a message box for users to add a message\n */\n@Component({\n selector: 'hra-required-textbox',\n standalone: true,\n imports: [CommonModule, MatInputModule, MatFormFieldModule, ReactiveFormsModule],\n templateUrl: './required-textbox.component.html',\n styleUrls: ['./required-textbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RequiredTextboxComponent {\n /** A placeholder for the message textarea field */\n @Input() placeholder = '';\n\n /** A label for the textarea field */\n @Input() label = '';\n\n /** Emits the new message when the input changes or undefined if the message is invalid */\n @Output() readonly messageChange = new EventEmitter();\n\n /** Observable emitting when the component is destroyed */\n readonly destroy$ = injectDestroy$();\n\n /** A control to validate if the message field is empty */\n readonly control = new FormControl('', {\n updateOn: 'blur',\n validators: [Validators.required],\n });\n\n /** Connects the input control to component outputs */\n constructor() {\n const { control, destroy$ } = this;\n control.valueChanges\n .pipe(\n takeUntil(destroy$),\n map((value) => (control.valid ? value : undefined))\n )\n .subscribe((value) => this.messageChange.emit(value as string | undefined));\n }\n}\n\n \n\n \n \n {{ label }} \n \n {{ label }} is required! \n\n\n \n\n \n \n ./required-textbox.component.scss\n \n :host {\n display: block;\n\n .message-field {\n width: 100%;\n background: #ffffff;\n }\n\n ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ label }} {{ label }} is required! '\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'RequiredTextboxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/SizeLegend.html":{"url":"interfaces/SizeLegend.html","title":"interface - SizeLegend","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n SizeLegend\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/lib/size-legend/size-legend.component.ts\n \n\n\n \n Description\n \n \n Defining the input data types for the radius and label to be displayed.\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n label\n \n \n \n \n radius\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n label\n \n \n \n \n \n \n \n \n label: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Label under circle\n\n \n \n \n \n \n \n \n \n \n radius\n \n \n \n \n \n \n \n \n radius: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n Radius for cirlce\n\n \n \n \n \n \n \n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** Defining the input data types for the radius and label to be displayed. */\nexport interface SizeLegend {\n /** Label under circle */\n label: string;\n /** Radius for cirlce */\n radius: number;\n}\n\n/** Size legend component for the biomarkers table. */\n@Component({\n selector: 'hra-size-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './size-legend.component.html',\n styleUrls: ['./size-legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SizeLegendComponent {\n /** Taking input for the radius of the circle and the label to be displayed. */\n @Input() sizes: SizeLegend[] = [];\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/SizeLegendComponent.html":{"url":"components/SizeLegendComponent.html","title":"component - SizeLegendComponent","body":"\n \n\n\n\n\n\n Components\n \n SizeLegendComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/size-legend/size-legend.component.ts\n\n\n\n \n Description\n \n \n Size legend component for the biomarkers table.\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-size-legend\n \n\n \n styleUrls\n ./size-legend.component.scss\n \n\n\n\n \n templateUrl\n ./size-legend.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n sizes\n \n \n \n \n\n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n sizes\n \n \n \n \n Type : SizeLegend[]\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/lib/size-legend/size-legend.component.ts:23\n \n \n \n \n Taking input for the radius of the circle and the label to be displayed.\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** Defining the input data types for the radius and label to be displayed. */\nexport interface SizeLegend {\n /** Label under circle */\n label: string;\n /** Radius for cirlce */\n radius: number;\n}\n\n/** Size legend component for the biomarkers table. */\n@Component({\n selector: 'hra-size-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './size-legend.component.html',\n styleUrls: ['./size-legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SizeLegendComponent {\n /** Taking input for the radius of the circle and the label to be displayed. */\n @Input() sizes: SizeLegend[] = [];\n}\n\n \n\n \n \n \n \n \n {{ text.label }}\n\n\n \n\n \n \n ./size-legend.component.scss\n \n :host {\n display: flex;\n flex-direction: row;\n column-gap: 2rem;\n\n .item {\n display: flex;\n flex-direction: column;\n align-items: center;\n line-height: 0.5rem;\n\n .circle {\n height: var(--size);\n width: var(--size);\n border-radius: 50%;\n border: 0.125rem solid #75838f;\n }\n\n .label {\n margin-top: 0.5rem;\n }\n\n .filler {\n flex-grow: 1;\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ text.label }}'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'SizeLegendComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TooltipComponent.html":{"url":"components/TooltipComponent.html","title":"component - TooltipComponent","body":"\n \n\n\n\n\n\n Components\n \n TooltipComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/tooltip/tooltip.component.ts\n\n\n\n \n Description\n \n \n Tooltips for illustrations\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-ui-tooltip\n \n\n \n styleUrls\n ./tooltip.component.scss\n \n\n\n\n \n templateUrl\n ./tooltip.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n text\n \n \n \n \n\n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n text\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/tooltip/tooltip.component.ts:19\n \n \n \n \n Text to display\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Tooltips for illustrations\n */\n@Component({\n selector: 'hra-ui-tooltip',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent {\n /**\n * Text to display\n */\n @Input() text = '';\n}\n\n \n\n \n {{ text }}\n\n \n\n \n \n ./tooltip.component.scss\n \n :host {\n .tooltip {\n display: flex;\n flex-direction: column;\n background: white;\n box-shadow: 1px 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\n border-radius: 0.5rem;\n padding: 1rem;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = '{{ text }}'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TooltipComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n tslib : ^2.3.0\n \n\n\n \n \n Peer dependencies\n \n \n \n @angular/common : ^15.1.0\n \n @angular/core : ^15.1.0\n \n @hra-ui/theming : *\n \n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"getting-started - index","body":"\n \n\ncomponents-atoms\nThis library was generated with Nx.\nRunning unit tests\nRun nx test components-atoms to execute the unit tests.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n Modules\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n Overview\n\n \n\n \n \n \n \n \n 8 Components\n \n \n \n \n \n \n \n 2 Interfaces\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"properties.html":{"url":"properties.html","title":"package-properties - properties","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Properties\n \n \n \n Version : 0.0.1\n \n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}} + "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/components/EmailInputComponent.html",[0,0.132,1,0.541]],["body/components/EmailInputComponent.html",[0,0.212,1,0.739,2,0.597,3,0.289,4,0.289,5,0.433,6,0.433,7,0.433,8,0.433,9,0.289,10,3.805,11,3.805,12,1.272,13,0.289,14,1.286,15,0.968,16,2.473,17,2.473,18,0.433,19,0.44,20,0.44,21,0.759,22,0.605,23,0.44,24,2.351,25,0.44,26,1.939,27,0.289,28,0.792,29,2.121,30,2.619,31,2.153,32,0.792,33,2.831,34,1.797,35,2.998,36,1.925,37,1.156,38,1.621,39,1.939,40,0.545,41,0.068,42,0.545,43,0.96,44,1.073,45,1.621,46,2.318,47,2.473,48,2.473,49,1.606,50,1.272,51,1.325,52,1.935,53,1.588,54,2.153,55,1.939,56,1.925,57,1.588,58,1.588,59,1.925,60,1.588,61,2.473,62,1.621,63,1.939,64,1.925,65,1.621,66,1.588,67,1.939,68,1.939,69,0.704,70,0.44,71,0.226,72,0.289,73,1.325,74,0.226,75,1.588,76,1.041,77,1.588,78,1.041,79,1.588,80,1.041,81,1.041,82,1.041,83,1.041,84,1.041,85,0.289,86,0.289,87,0.289,88,0.289,89,0.289,90,0.731,91,1.041,92,1.041,93,1.041,94,1.041,95,1.041,96,1.272,97,1.621,98,2.473,99,2.473,100,2.473,101,2.473,102,0.965,103,0.433,104,0.433,105,0.731,106,0.869,107,0.617,108,0.731,109,0.869,110,1.272,111,1.041,112,1.041,113,1.041,114,1.041,115,1.041,116,1.041,117,0.617,118,1.041,119,0.289,120,0.661,121,0.661,122,0.433,123,0.896,124,0.433,125,0.661,126,0.661,127,0.357,128,0.433,129,0.433,130,0.289,131,0.357,132,0.661,133,0.357,134,0.357,135,0.433,136,0.357,137,0.357,138,0.433,139,0.289,140,0.357,141,0.357,142,0.433,143,0.433,144,0.433,145,0.433,146,0.033,147,0.033]],["title/components/EmptyBiomarkerComponent.html",[0,0.132,127,0.541]],["body/components/EmptyBiomarkerComponent.html",[0,0.232,1,0.41,2,0.488,3,0.331,4,0.331,5,0.497,6,0.497,7,0.497,8,0.497,9,0.331,13,0.331,14,0.497,15,0.912,18,0.497,19,0.488,20,0.488,21,0.785,22,0.632,23,0.488,25,0.488,27,0.331,29,0.997,32,0.878,34,1.469,37,1.042,40,0.717,41,0.068,42,0.604,43,0.878,44,0.878,49,1.745,51,1.469,52,0.997,69,0.639,70,0.488,71,0.26,72,0.331,73,1.469,74,0.26,85,0.331,86,0.331,87,0.331,88,0.331,89,0.331,102,0.733,103,0.497,104,0.497,105,0.839,106,1.469,107,1.043,108,0.839,117,1.043,119,0.331,120,0.733,121,0.733,122,0.497,123,0.96,124,0.497,125,0.733,126,0.733,127,0.791,128,1.251,129,0.497,130,0.331,131,0.41,132,0.733,133,0.41,134,0.41,135,0.497,136,0.41,137,0.41,138,0.497,139,0.331,140,0.41,141,0.41,142,0.497,143,0.497,144,0.497,145,0.497,146,0.037,147,0.037,148,3.592,149,3.592,150,1.861,151,2.742,152,2.742,153,2.742,154,1.761,155,3.83,156,2.742,157,2.742,158,4.007,159,3.256,160,2.742,161,3.83,162,3.142,163,3.256,164,1.861,165,2.742,166,1.861,167,3.256,168,1.861,169,2.817,170,2.15,171,2.742,172,2.742,173,2.742,174,1.861,175,2.742,176,1.861,177,1.861,178,1.861,179,1.861,180,1.195,181,2.742,182,2.09,183,1.861,184,1.861,185,1.459,186,1.459,187,1.459,188,1.861,189,1.861,190,1.861,191,1.861,192,1.861,193,1.195,194,1.861]],["title/components/GradientLegendComponent.html",[0,0.132,130,0.437]],["body/components/GradientLegendComponent.html",[0,0.181,1,0.439,2,0.513,3,0.355,4,0.355,5,0.533,6,0.533,7,0.533,8,0.533,9,0.355,13,0.355,14,0.533,15,0.635,18,0.533,19,0.513,20,0.513,21,0.798,22,0.626,23,0.513,25,0.513,27,0.355,32,0.923,37,0.923,40,0.439,41,0.068,42,0.746,43,0.639,44,0.639,69,0.513,70,0.513,71,0.278,72,0.355,74,0.278,85,0.355,86,0.355,87,0.355,88,0.513,89,0.355,90,0.9,102,0.771,103,0.533,104,0.771,105,0.9,107,0.759,108,0.9,117,1.413,119,0.731,120,0.771,121,0.771,122,0.533,123,0.992,124,0.533,125,0.771,126,0.771,127,0.439,128,0.533,129,0.533,130,0.661,131,1.075,132,0.771,133,0.439,134,0.439,135,0.533,136,0.439,137,0.439,138,0.533,139,0.355,140,0.439,141,0.439,142,0.533,143,0.533,144,0.533,145,0.533,146,0.039,147,0.039,193,1.281,195,2.657,196,2.657,197,1.069,198,1.546,199,1.816,200,1.546,201,2.885,202,2.657,203,2.176,204,1.564,205,2.657,206,2.912,207,2.262,208,2.262,209,1.995,210,1.995,211,2.262,212,2.262,213,2.657,214,2.262,215,3.089,216,1.995,217,1.098,218,1.564,219,1.564,220,2.912,221,1.564,222,1.069,223,2.262,224,1.564,225,1.564,226,1.564,227,1.564,228,2.885,229,2.885,230,1.995,231,1.546,232,1.281,233,1.281,234,1.281]],["title/interfaces/GradientPoint.html",[203,1.579,217,0.936]],["body/interfaces/GradientPoint.html",[0,0.183,3,0.454,4,0.454,9,0.454,13,0.454,15,0.754,19,0.454,20,0.454,21,0.454,22,0.356,23,0.454,25,0.454,27,0.454,28,1.096,40,0.754,41,0.068,42,0.91,69,0.609,70,0.609,71,0.356,72,0.454,74,0.356,85,0.454,86,0.454,87,0.454,88,0.609,89,0.454,90,1.15,117,1.753,119,0.609,130,0.454,131,1.077,146,0.046,147,0.046,195,2,196,2,197,1.367,198,1.367,199,1.367,200,1.367,202,2,203,2.482,205,3.031,206,3.379,207,2,208,2,211,2,212,2,213,2.685,214,2,215,3.379,217,1.471,218,2.685,219,2.685,220,3.66,221,2.685,222,2.071,223,2.685,224,2,225,2,226,2,227,2,235,1.637]],["title/components/LabelBoxComponent.html",[0,0.132,133,0.541]],["body/components/LabelBoxComponent.html",[0,0.227,1,0.533,2,0.588,3,0.431,4,0.431,5,0.647,6,0.647,7,0.647,8,0.647,9,0.431,13,0.431,14,0.647,18,0.647,19,0.588,20,0.588,21,0.846,22,0.652,23,0.588,25,0.588,41,0.066,69,0.588,70,0.588,71,0.338,72,0.431,74,0.338,85,0.431,86,0.431,87,0.431,88,0.431,89,0.431,102,0.883,103,0.647,104,0.647,109,1.298,119,0.431,120,0.883,121,0.883,122,0.647,123,1.081,124,0.647,125,0.883,126,0.883,127,0.533,128,0.647,129,0.647,130,0.431,131,0.533,132,0.883,133,0.891,134,1.047,135,0.647,136,0.533,137,0.533,138,0.647,139,0.431,140,0.533,141,0.533,142,0.647,143,0.647,144,0.647,145,0.647,146,0.044,147,0.044,180,1.555,182,1.555,187,1.899,231,1.772,232,1.555,233,1.555,234,1.555,236,2.422,237,2.422,238,2.422,239,2.806,240,3.306,241,3.306,242,3.306,243,3.306,244,4.045,245,3.306,246,3.764,247,3.306,248,1.899,249,1.899,250,1.899,251,2.422,252,2.422,253,2.422,254,2.422]],["title/components/RequiredInputComponent.html",[0,0.132,136,0.541]],["body/components/RequiredInputComponent.html",[0,0.221,1,0.34,2,0.424,3,0.274,4,0.274,5,0.412,6,0.412,7,0.412,8,0.412,9,0.274,12,1.21,13,0.274,14,0.412,15,0.999,18,0.412,19,0.424,20,0.424,21,0.749,22,0.597,23,0.424,24,2.279,25,0.424,26,1.866,27,0.274,28,0.762,29,2.083,30,2.702,31,2.395,32,0.762,34,1.275,36,1.866,37,1.13,40,0.524,41,0.068,42,0.524,43,0.93,44,1.285,46,2.645,49,1.557,50,1.21,51,1.275,52,1.557,53,2.098,54,0.99,56,1.866,57,1.528,58,1.528,59,1.866,60,1.528,64,1.866,66,1.528,69,0.692,70,0.424,71,0.215,72,0.274,73,1.751,74,0.215,75,1.528,76,0.99,77,1.528,78,0.99,79,1.528,80,0.99,81,0.99,82,0.99,83,0.99,84,0.99,85,0.274,86,0.274,87,0.274,88,0.274,89,0.274,90,0.696,91,0.99,92,0.99,93,0.99,94,0.99,95,0.99,102,1.212,103,0.412,104,0.777,105,0.696,106,1.999,107,0.587,108,0.696,111,0.99,112,0.99,113,0.99,114,0.99,115,2.395,116,0.99,117,0.587,118,0.99,119,0.274,120,0.636,121,0.636,122,0.412,123,0.873,124,0.412,125,0.636,126,0.636,127,0.34,128,0.412,129,0.412,130,0.274,131,0.34,132,0.636,133,0.34,134,0.927,135,0.412,136,0.719,137,0.34,138,0.412,139,0.274,140,0.34,141,0.34,142,0.412,143,0.412,144,0.412,145,0.412,146,0.032,147,0.032,169,1.866,170,1.866,255,2.925,256,3.73,257,2.38,258,3.267,259,3.73,260,3.267,261,3.267,262,1.542,263,2.38,264,2.38,265,2.38,266,2.38,267,2.38,268,2.38,269,1.542,270,1.542,271,2.38,272,1.542,273,2.38,274,2.38,275,1.542]],["title/components/RequiredTextboxComponent.html",[0,0.132,137,0.541]],["body/components/RequiredTextboxComponent.html",[0,0.221,1,0.344,2,0.428,3,0.278,4,0.278,5,0.417,6,0.417,7,0.417,8,0.417,9,0.278,13,0.278,14,0.417,15,0.86,18,0.417,19,0.428,20,0.428,21,0.751,22,0.599,23,0.428,25,0.428,27,0.278,28,0.769,29,2.093,30,2.588,31,2.112,32,0.769,33,2.784,34,1.762,36,1.881,37,1.2,39,1.885,40,0.645,41,0.068,42,0.645,43,1.053,44,1.136,46,2.655,49,1.57,51,1.288,52,1.903,53,1.543,54,2.112,55,1.885,56,1.881,57,1.543,58,1.543,59,1.881,60,1.543,63,1.885,64,1.881,66,1.543,67,1.885,68,1.885,69,0.695,70,0.428,71,0.218,72,0.278,73,1.288,74,0.218,75,1.543,76,1.003,77,1.543,78,1.003,79,1.543,80,1.003,81,1.003,82,1.003,83,1.003,84,1.003,85,0.278,86,0.278,87,0.278,88,0.278,89,0.278,90,0.705,91,1.003,92,1.003,93,1.003,94,1.003,95,1.003,96,1.225,102,1.193,103,0.417,104,0.417,105,0.705,107,0.594,108,0.705,109,0.837,110,1.225,111,1.003,112,1.003,113,1.003,114,1.003,115,1.003,116,1.003,117,0.594,118,1.003,119,0.278,120,0.642,121,0.642,122,0.417,123,0.879,124,0.417,125,0.642,126,0.642,127,0.344,128,0.783,129,0.417,130,0.278,131,0.344,132,0.642,133,0.344,134,0.93,135,0.417,136,0.344,137,0.724,138,0.417,139,0.278,140,0.344,141,0.344,142,0.417,143,0.417,144,0.417,145,0.417,146,0.032,147,0.032,162,3.462,239,1.543,255,3.063,276,3.906,277,1.562,278,3.289,279,2.403,280,2.403,281,2.403,282,2.929,283,2.403,284,2.929,285,1.562,286,1.562,287,3.289,288,1.562,289,1.562,290,1.562,291,1.562,292,1.562]],["title/interfaces/SizeLegend.html",[217,0.936,293,1.579]],["body/interfaces/SizeLegend.html",[0,0.215,3,0.49,4,0.49,9,0.49,13,0.49,15,0.973,19,0.49,20,0.49,21,0.49,22,0.384,23,0.49,25,0.49,27,0.49,28,1.153,40,0.793,41,0.067,42,0.884,69,0.641,70,0.641,71,0.384,72,0.49,74,0.384,85,0.49,86,0.49,87,0.49,88,0.641,89,0.49,119,0.641,134,1.043,139,0.49,140,0.938,146,0.048,147,0.048,154,2.312,197,1.475,198,1.475,199,1.475,200,1.475,217,1.048,222,2.151,235,1.767,293,2.577,294,2.159,295,2.159,296,2.824,297,2.824,298,3.042,299,3.148,300,2.824,301,3.148,302,2.824,303,2.159,304,2.159,305,2.159]],["title/components/SizeLegendComponent.html",[0,0.132,139,0.437]],["body/components/SizeLegendComponent.html",[0,0.213,1,0.45,2,0.522,3,0.363,4,0.363,5,0.546,6,0.546,7,0.546,8,0.546,9,0.363,13,0.363,14,0.546,15,0.876,18,0.546,19,0.522,20,0.522,21,0.802,22,0.629,23,0.522,25,0.522,27,0.363,32,0.939,37,0.654,40,0.45,41,0.068,42,0.45,43,0.654,44,0.654,69,0.522,70,0.522,71,0.285,72,0.363,74,0.285,85,0.363,86,0.363,87,0.363,88,0.522,89,0.363,102,0.784,103,0.546,104,0.784,107,0.777,119,0.707,120,0.784,121,0.784,122,0.546,123,1.106,124,0.546,125,0.784,126,0.784,127,0.45,128,0.546,129,0.546,130,0.363,131,0.45,132,0.784,133,0.45,134,0.939,135,0.546,136,0.45,137,0.45,138,0.546,139,0.668,140,1.016,141,0.45,142,0.546,143,0.546,144,0.546,145,0.546,146,0.039,147,0.039,154,1.311,182,1.311,185,1.602,186,1.602,193,1.884,197,1.095,198,1.572,199,1.84,200,1.572,204,1.602,217,0.777,222,1.095,231,2.13,232,1.311,233,1.311,234,1.311,248,1.602,249,1.602,250,1.602,293,2.205,294,2.301,295,2.301,296,1.602,297,1.602,298,2.657,299,2.693,300,1.602,301,2.944,302,1.602,303,2.301,304,2.301,305,2.693,306,2.934,307,2.301,308,2.043,309,2.301,310,2.043,311,2.043,312,2.043,313,2.301,314,2.301,315,2.043,316,1.602,317,2.043,318,2.043]],["title/components/TooltipComponent.html",[0,0.132,141,0.541]],["body/components/TooltipComponent.html",[0,0.199,1,0.522,2,0.58,3,0.422,4,0.422,5,0.633,6,0.633,7,0.633,8,0.633,9,0.422,13,0.422,14,0.633,15,0.717,18,0.633,19,0.58,20,0.58,21,0.828,22,0.649,23,0.58,25,0.58,27,0.422,32,1.043,37,0.759,40,0.522,41,0.067,42,0.522,43,0.759,44,0.759,69,0.58,70,0.58,71,0.331,72,0.422,74,0.331,85,0.422,86,0.422,87,0.422,88,0.422,89,0.422,102,0.87,103,0.633,104,0.995,106,2.383,109,1.27,119,0.422,120,0.87,121,0.87,122,0.633,123,1.071,124,0.633,125,0.87,126,0.87,127,0.522,128,0.633,129,0.633,130,0.422,131,0.522,132,0.87,133,0.522,134,0.522,135,0.633,136,0.522,137,0.522,138,0.633,139,0.422,140,0.522,141,0.883,142,0.995,143,1.071,144,0.633,145,0.633,146,0.044,147,0.044,180,1.522,231,1.746,239,1.522,298,1.522,307,1.859,309,1.859,313,1.859,314,1.859,316,2.555,319,2.37,320,3.258,321,3.258,322,3.722,323,3.258,324,2.37,325,2.37,326,2.37,327,2.37,328,3.258,329,2.37,330,3.258,331,2.37]],["title/dependencies.html",[332,1.616,333,2.316]],["body/dependencies.html",[22,0.518,41,0.066,71,0.518,74,0.518,146,0.058,147,0.058,333,3.398,334,3.711,335,3.711,336,3.711,337,4.334,338,3.711]],["title/index.html",[27,0.367,339,2.061,340,2.061]],["body/index.html",[2,0.771,41,0.058,146,0.058,147,0.058,341,4.334,342,3.711,343,3.711,344,4.334,345,3.711,346,4.334,347,4.334,348,3.711,349,3.711,350,3.711]],["title/modules.html",[351,2.619]],["body/modules.html",[41,0.06,146,0.06,147,0.06,351,3.064]],["title/overview.html",[352,2.619]],["body/overview.html",[2,0.686,41,0.059,146,0.059,147,0.059,235,2.474,352,3.021,353,3.853,354,3.853]],["title/properties.html",[28,0.945,332,1.616]],["body/properties.html",[28,1.238,41,0.063,146,0.06,147,0.06,355,3.866,356,3.866]]],"invertedIndex":[["",{"_index":41,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{},"index.html":{},"modules.html":{},"overview.html":{},"properties.html":{}}}],["0",{"_index":330,"title":{},"body":{"components/TooltipComponent.html":{}}}],["0.0",{"_index":228,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["0.0.1",{"_index":356,"title":{},"body":{"properties.html":{}}}],["0.125rem",{"_index":316,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["0.16",{"_index":331,"title":{},"body":{"components/TooltipComponent.html":{}}}],["0.5rem",{"_index":313,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["0.75rem",{"_index":251,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["1",{"_index":234,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["1.0",{"_index":229,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["1.5rem",{"_index":230,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["100",{"_index":108,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["15.1.0",{"_index":337,"title":{},"body":{"dependencies.html":{}}}],["1px",{"_index":327,"title":{},"body":{"components/TooltipComponent.html":{}}}],["1rem",{"_index":328,"title":{},"body":{"components/TooltipComponent.html":{}}}],["2",{"_index":354,"title":{},"body":{"overview.html":{}}}],["2.3.0",{"_index":335,"title":{},"body":{"dependencies.html":{}}}],["2.625rem",{"_index":181,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["20rem",{"_index":192,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["243142",{"_index":183,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["2rem",{"_index":182,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["3rem",{"_index":194,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["50",{"_index":315,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["700",{"_index":189,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["75838f",{"_index":318,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["8",{"_index":353,"title":{},"body":{"overview.html":{}}}],["accessors",{"_index":201,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["accross",{"_index":241,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["actual_component",{"_index":145,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["add",{"_index":281,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["added",{"_index":245,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["address",{"_index":101,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["align",{"_index":248,"title":{},"body":{"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["along",{"_index":206,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["angular/common",{"_index":71,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{}}}],["angular/core",{"_index":74,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{}}}],["angular/forms",{"_index":76,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["angular/material/button",{"_index":174,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["angular/material/form",{"_index":78,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["angular/material/input",{"_index":80,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["atoms",{"_index":341,"title":{},"body":{"index.html":{}}}],["background",{"_index":109,"title":{},"body":{"components/EmailInputComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/TooltipComponent.html":{}}}],["bar",{"_index":215,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["before",{"_index":266,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["biomaker",{"_index":151,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker",{"_index":158,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker'},{'name",{"_index":129,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["biomarker.component.html",{"_index":160,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.scss",{"_index":159,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.ts",{"_index":150,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.ts:23",{"_index":164,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.ts:28",{"_index":166,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker.component.ts:33",{"_index":168,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarker/empty",{"_index":149,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["biomarkers",{"_index":198,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["block",{"_index":105,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["blur",{"_index":58,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["border",{"_index":314,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["box",{"_index":239,"title":{},"body":{"components/LabelBoxComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/TooltipComponent.html":{}}}],["box'},{'name",{"_index":135,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["box.component.html",{"_index":247,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["box.component.scss",{"_index":246,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["box.component.ts",{"_index":238,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["box/label",{"_index":237,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["button",{"_index":155,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["buttonon",{"_index":165,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["cell",{"_index":152,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["center",{"_index":250,"title":{},"body":{"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["changedetection",{"_index":19,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["changedetectionstrategy",{"_index":72,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["changedetectionstrategy.onpush",{"_index":20,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["changes",{"_index":53,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["check",{"_index":260,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["circle",{"_index":301,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["cirlce",{"_index":302,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["class",{"_index":89,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["click",{"_index":172,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["collaborate",{"_index":184,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["collaborateclick",{"_index":163,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["collaboratetext",{"_index":161,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["color",{"_index":117,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["colors",{"_index":205,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["column",{"_index":309,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["commonmodule",{"_index":70,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["component",{"_index":0,"title":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["component_template",{"_index":124,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["components",{"_index":2,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"index.html":{},"overview.html":{}}}],["computes",{"_index":211,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["connect",{"_index":265,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["connects",{"_index":39,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["const",{"_index":90,"title":{},"body":{"components/EmailInputComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["constructor",{"_index":36,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["contact",{"_index":16,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["content",{"_index":243,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["control",{"_index":30,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["control.valid",{"_index":95,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["control.valuechanges",{"_index":91,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["creates",{"_index":263,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["css",{"_index":212,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["data",{"_index":154,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["dc231e",{"_index":118,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["deep",{"_index":112,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["default",{"_index":43,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["defined",{"_index":37,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["defining",{"_index":296,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["dependencies",{"_index":333,"title":{"dependencies.html":{}},"body":{"dependencies.html":{}}}],["description",{"_index":13,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["destroy",{"_index":31,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["destroyed",{"_index":68,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["direction",{"_index":307,"title":{},"body":{"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["directive",{"_index":122,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["directives",{"_index":144,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["disappeared",{"_index":47,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["display",{"_index":104,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["displayed",{"_index":299,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["displays",{"_index":279,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["dom",{"_index":7,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["element",{"_index":121,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["email",{"_index":14,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["emailchange",{"_index":35,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["emailinputcomponent",{"_index":1,"title":{"components/EmailInputComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["emits",{"_index":51,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["emitter",{"_index":170,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{}}}],["emitting",{"_index":67,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["emmiter",{"_index":267,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["empty",{"_index":128,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["emptybiomarkercomponent",{"_index":127,"title":{"components/EmptyBiomarkerComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["end",{"_index":244,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["enter",{"_index":99,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["event",{"_index":169,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{}}}],["eventemitter",{"_index":49,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["execute",{"_index":350,"title":{},"body":{"index.html":{}}}],["export",{"_index":88,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["f8f9fa",{"_index":252,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["family",{"_index":253,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["fff",{"_index":190,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["ffffff",{"_index":110,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["field",{"_index":46,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["file",{"_index":9,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["filler",{"_index":232,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["flex",{"_index":231,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["font",{"_index":187,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/LabelBoxComponent.html":{}}}],["form",{"_index":115,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["formcontrol",{"_index":56,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["function",{"_index":214,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["gap",{"_index":310,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["generated",{"_index":343,"title":{},"body":{"index.html":{}}}],["getgradientcss",{"_index":209,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["getting",{"_index":339,"title":{"index.html":{}},"body":{}}],["gradient",{"_index":131,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["gradient(90deg",{"_index":227,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["gradientcss",{"_index":202,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["gradientlegendcomponent",{"_index":130,"title":{"components/GradientLegendComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["gradientpoint",{"_index":203,"title":{"interfaces/GradientPoint.html":{}},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["grow",{"_index":233,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["height",{"_index":193,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/SizeLegendComponent.html":{}}}],["host",{"_index":103,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["hra",{"_index":22,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{}}}],["html",{"_index":120,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["illustrations",{"_index":321,"title":{},"body":{"components/TooltipComponent.html":{}}}],["import",{"_index":69,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["imports",{"_index":87,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["index",{"_index":27,"title":{"index.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["info",{"_index":3,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["inform",{"_index":153,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["injectdestroy",{"_index":64,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["input",{"_index":15,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["input'},{'name",{"_index":126,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["input.component.html",{"_index":26,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{}}}],["input.component.scss",{"_index":24,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{}}}],["input.component.ts",{"_index":12,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{}}}],["input.component.ts:22",{"_index":45,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input.component.ts:25",{"_index":50,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{}}}],["input.component.ts:28",{"_index":65,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input.component.ts:30",{"_index":269,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["input.component.ts:31",{"_index":62,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input.component.ts:34",{"_index":38,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input.component.ts:35",{"_index":272,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["input.component.ts:40",{"_index":270,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["input.component.ts:43",{"_index":262,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["input/email",{"_index":11,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["input/required",{"_index":256,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["inputchange",{"_index":261,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["inputs",{"_index":32,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["instance",{"_index":264,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["inter",{"_index":254,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["interface",{"_index":217,"title":{"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{}},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["interfaces",{"_index":235,"title":{},"body":{"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"overview.html":{}}}],["invalid",{"_index":55,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["item",{"_index":311,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["items",{"_index":249,"title":{},"body":{"components/LabelBoxComponent.html":{},"components/SizeLegendComponent.html":{}}}],["label",{"_index":134,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["labelboxcomponent",{"_index":133,"title":{"components/LabelBoxComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["legend",{"_index":119,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["legend'},{'name",{"_index":132,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["legend.component.html",{"_index":200,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["legend.component.scss",{"_index":199,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["legend.component.ts",{"_index":197,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["legend.component.ts:23",{"_index":204,"title":{},"body":{"components/GradientLegendComponent.html":{},"components/SizeLegendComponent.html":{}}}],["legend.component.ts:26",{"_index":210,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["legend/gradient",{"_index":196,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["legend/size",{"_index":295,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["library",{"_index":342,"title":{},"body":{"index.html":{}}}],["lifetime",{"_index":273,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["line",{"_index":312,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["linear",{"_index":213,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["map",{"_index":82,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["map((value",{"_index":94,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["margin",{"_index":185,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/SizeLegendComponent.html":{}}}],["markdown",{"_index":167,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["markdownmodule",{"_index":175,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["marker",{"_index":116,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["mat",{"_index":113,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["matbuttonmodule",{"_index":173,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["matching",{"_index":147,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{},"index.html":{},"modules.html":{},"overview.html":{},"properties.html":{}}}],["matformfieldmodule",{"_index":77,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["matinputmodule",{"_index":79,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["max",{"_index":191,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["mdc",{"_index":114,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["message",{"_index":162,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["messagechange",{"_index":284,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["metadata",{"_index":18,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["modal",{"_index":17,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["modules",{"_index":351,"title":{"modules.html":{}},"body":{"modules.html":{}}}],["name",{"_index":125,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["navigate",{"_index":156,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["new",{"_index":52,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["ng",{"_index":111,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["ngx",{"_index":176,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["number",{"_index":222,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["nx",{"_index":344,"title":{},"body":{"index.html":{}}}],["observable",{"_index":66,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["observables",{"_index":274,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["output",{"_index":73,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["outputs",{"_index":34,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["overview",{"_index":352,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["package",{"_index":332,"title":{"dependencies.html":{},"properties.html":{}},"body":{}}],["padding",{"_index":180,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/LabelBoxComponent.html":{},"components/TooltipComponent.html":{}}}],["page",{"_index":242,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["peer",{"_index":336,"title":{},"body":{"dependencies.html":{}}}],["percentage",{"_index":220,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["percentages",{"_index":218,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["percentage}%`).join",{"_index":225,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["pipe",{"_index":92,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["placeholder",{"_index":33,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["please",{"_index":98,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["point",{"_index":221,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["points",{"_index":208,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["properties",{"_index":28,"title":{"properties.html":{}},"body":{"components/EmailInputComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"properties.html":{}}}],["radius",{"_index":298,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["reactiveformsmodule",{"_index":75,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["readonly",{"_index":29,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["required",{"_index":102,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["requiredinputcomponent",{"_index":136,"title":{"components/RequiredInputComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["requiredtextboxcomponent",{"_index":137,"title":{"components/RequiredTextboxComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["results",{"_index":146,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{},"dependencies.html":{},"index.html":{},"modules.html":{},"overview.html":{},"properties.html":{}}}],["return",{"_index":226,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["returns",{"_index":216,"title":{},"body":{"components/GradientLegendComponent.html":{}}}],["reusable",{"_index":257,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["reuse",{"_index":240,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["rgba(0",{"_index":329,"title":{},"body":{"components/TooltipComponent.html":{}}}],["row",{"_index":308,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["run",{"_index":348,"title":{},"body":{"index.html":{}}}],["running",{"_index":345,"title":{},"body":{"index.html":{}}}],["rxjs",{"_index":84,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["selector",{"_index":21,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["set",{"_index":271,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["shadow",{"_index":326,"title":{},"body":{"components/TooltipComponent.html":{}}}],["size",{"_index":140,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["sizelegend",{"_index":293,"title":{"interfaces/SizeLegend.html":{}},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["sizelegendcomponent",{"_index":139,"title":{"components/SizeLegendComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["sizes",{"_index":305,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["solid",{"_index":317,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["source",{"_index":4,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["specific",{"_index":219,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["src/lib/email",{"_index":10,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["src/lib/empty",{"_index":148,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["src/lib/gradient",{"_index":195,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["src/lib/label",{"_index":236,"title":{},"body":{"components/LabelBoxComponent.html":{}}}],["src/lib/required",{"_index":255,"title":{},"body":{"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["src/lib/size",{"_index":294,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["src/lib/tooltip/tooltip.component.ts",{"_index":319,"title":{},"body":{"components/TooltipComponent.html":{}}}],["src/lib/tooltip/tooltip.component.ts:19",{"_index":324,"title":{},"body":{"components/TooltipComponent.html":{}}}],["standalone",{"_index":85,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["started",{"_index":340,"title":{"index.html":{}},"body":{}}],["stop",{"_index":207,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["stops",{"_index":223,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["string",{"_index":42,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["styles",{"_index":6,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["styleurls",{"_index":23,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["subscribe((value",{"_index":96,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["subscribe(inputchange",{"_index":275,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["table",{"_index":303,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["takeuntil",{"_index":83,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["takeuntil(destroy",{"_index":93,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["taking",{"_index":304,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["team",{"_index":157,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["template",{"_index":5,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["templateurl",{"_index":25,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["test",{"_index":349,"title":{},"body":{"index.html":{}}}],["tests",{"_index":347,"title":{},"body":{"index.html":{}}}],["text",{"_index":106,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/RequiredInputComponent.html":{},"components/TooltipComponent.html":{}}}],["text.label",{"_index":306,"title":{},"body":{"components/SizeLegendComponent.html":{}}}],["textarea",{"_index":287,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox",{"_index":278,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox'},{'name",{"_index":138,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["textbox.component.html",{"_index":283,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.scss",{"_index":282,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts",{"_index":277,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:22",{"_index":288,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:25",{"_index":286,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:28",{"_index":289,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:31",{"_index":291,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:34",{"_index":290,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox.component.ts:37",{"_index":285,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["textbox/required",{"_index":276,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["this.emailchange.emit(value",{"_index":97,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["this.gradient.map",{"_index":224,"title":{},"body":{"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{}}}],["this.messagechange.emit(value",{"_index":292,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["tooltip",{"_index":143,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["tooltip.component.html",{"_index":323,"title":{},"body":{"components/TooltipComponent.html":{}}}],["tooltip.component.scss",{"_index":322,"title":{},"body":{"components/TooltipComponent.html":{}}}],["tooltipcomponent",{"_index":141,"title":{"components/TooltipComponent.html":{}},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["tooltips",{"_index":320,"title":{},"body":{"components/TooltipComponent.html":{}}}],["top",{"_index":186,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{},"components/SizeLegendComponent.html":{}}}],["tree",{"_index":8,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["triggered",{"_index":268,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["true",{"_index":86,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["tslib",{"_index":334,"title":{},"body":{"dependencies.html":{}}}],["type",{"_index":40,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"interfaces/GradientPoint.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["typed",{"_index":48,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["types",{"_index":297,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["ui",{"_index":142,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["ui/cdk/injectors",{"_index":81,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["ui/theming",{"_index":338,"title":{},"body":{"dependencies.html":{}}}],["undefined",{"_index":54,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["under",{"_index":300,"title":{},"body":{"interfaces/SizeLegend.html":{},"components/SizeLegendComponent.html":{}}}],["unit",{"_index":346,"title":{},"body":{"index.html":{}}}],["updateon",{"_index":57,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["use",{"_index":177,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["used",{"_index":258,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["user",{"_index":171,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["users",{"_index":280,"title":{},"body":{"components/RequiredTextboxComponent.html":{}}}],["valid",{"_index":100,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["validate",{"_index":63,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["validation",{"_index":259,"title":{},"body":{"components/RequiredInputComponent.html":{}}}],["validators",{"_index":59,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["validators.email",{"_index":61,"title":{},"body":{"components/EmailInputComponent.html":{}}}],["validators.required",{"_index":60,"title":{},"body":{"components/EmailInputComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{}}}],["value",{"_index":44,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["var",{"_index":123,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/LabelBoxComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{},"components/TooltipComponent.html":{}}}],["variables",{"_index":178,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["vars",{"_index":179,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["version",{"_index":355,"title":{},"body":{"properties.html":{}}}],["weight",{"_index":188,"title":{},"body":{"components/EmptyBiomarkerComponent.html":{}}}],["white",{"_index":325,"title":{},"body":{"components/TooltipComponent.html":{}}}],["width",{"_index":107,"title":{},"body":{"components/EmailInputComponent.html":{},"components/EmptyBiomarkerComponent.html":{},"components/GradientLegendComponent.html":{},"components/RequiredInputComponent.html":{},"components/RequiredTextboxComponent.html":{},"components/SizeLegendComponent.html":{}}}]],"pipeline":["stemmer"]}, + "store": {"components/EmailInputComponent.html":{"url":"components/EmailInputComponent.html","title":"component - EmailInputComponent","body":"\n \n\n\n\n\n\n Components\n \n EmailInputComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/email-input/email-input.component.ts\n\n\n\n \n Description\n \n \n Email input components for contact modal.\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-email-input\n \n\n \n styleUrls\n ./email-input.component.scss\n \n\n\n\n \n templateUrl\n ./email-input.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Readonly\n control\n \n \n Readonly\n destroy$\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n placeholder\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n emailChange\n \n \n \n \n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:34\n \n \n\n \n \n Connects the input control to component outputs\n\n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n placeholder\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:22\n \n \n \n \n A placeholder for the email input field. This will be disappeared when the email is typed.\n\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n emailChange\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:25\n \n \n \n \n Emits the new email when the input changes or undefined if the email is invalid\n\n \n \n \n \n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Readonly\n control\n \n \n \n \n \n \n Default value : new FormControl('', {\n updateOn: 'blur',\n validators: [Validators.required, Validators.email],\n })\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:31\n \n \n\n \n \n A control to validate the email.\n\n \n \n\n \n \n \n \n \n \n \n \n Readonly\n destroy$\n \n \n \n \n \n \n Default value : injectDestroy$()\n \n \n \n \n Defined in src/lib/email-input/email-input.component.ts:28\n \n \n\n \n \n Observable emitting when the component is destroyed\n\n \n \n\n \n \n\n\n\n\n\n \n import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { injectDestroy$ } from '@hra-ui/cdk/injectors';\nimport { map, takeUntil } from 'rxjs';\n\n/**\n * Email input components for contact modal.\n */\n@Component({\n selector: 'hra-email-input',\n standalone: true,\n imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule],\n templateUrl: './email-input.component.html',\n styleUrls: ['./email-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailInputComponent {\n /** A placeholder for the email input field. This will be disappeared when the email is typed. */\n @Input() placeholder = '';\n\n /** Emits the new email when the input changes or undefined if the email is invalid */\n @Output() readonly emailChange = new EventEmitter();\n\n /** Observable emitting when the component is destroyed */\n readonly destroy$ = injectDestroy$();\n\n /** A control to validate the email. */\n readonly control = new FormControl('', {\n updateOn: 'blur',\n validators: [Validators.required, Validators.email],\n });\n\n /** Connects the input control to component outputs */\n constructor() {\n const { control, destroy$ } = this;\n control.valueChanges\n .pipe(\n takeUntil(destroy$),\n map((value) => (control.valid ? value : undefined))\n )\n .subscribe((value) => this.emailChange.emit(value as string | undefined));\n }\n}\n\n \n\n \n \n Email \n \n\n \n Please enter a valid email address\n \n Email is required! \n\n\n \n\n \n \n ./email-input.component.scss\n \n :host {\n display: block;\n\n .email-text-field {\n width: 100%;\n background: #ffffff;\n }\n\n ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' Email Please enter a valid email address Email is required! '\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'EmailInputComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/EmptyBiomarkerComponent.html":{"url":"components/EmptyBiomarkerComponent.html","title":"component - EmptyBiomarkerComponent","body":"\n \n\n\n\n\n\n Components\n \n EmptyBiomarkerComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/empty-biomarker/empty-biomarker.component.ts\n\n\n\n \n Description\n \n \n Component for any empty biomaker cell\n to inform about the empty data and has\n button to navigate to HRA Team.\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-empty-biomarker\n \n\n \n styleUrls\n ./empty-biomarker.component.scss\n \n\n\n\n \n templateUrl\n ./empty-biomarker.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n collaborateText\n \n \n message\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n collaborateClick\n \n \n \n \n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n collaborateText\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/empty-biomarker/empty-biomarker.component.ts:23\n \n \n \n \n Input buttonon text of empty biomarker component.\n\n \n \n \n \n \n \n \n \n \n message\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/empty-biomarker/empty-biomarker.component.ts:28\n \n \n \n \n Input message markdown of empty biomarker component.\n\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n collaborateClick\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/lib/empty-biomarker/empty-biomarker.component.ts:33\n \n \n \n \n An event emitter that emits the user button click event\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MarkdownModule } from 'ngx-markdown';\n\n/**\n * Component for any empty biomaker cell\n * to inform about the empty data and has\n * button to navigate to HRA Team.\n */\n@Component({\n selector: 'hra-empty-biomarker',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MarkdownModule],\n templateUrl: './empty-biomarker.component.html',\n styleUrls: ['./empty-biomarker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyBiomarkerComponent {\n /**\n * Input buttonon text of empty biomarker component.\n */\n @Input() collaborateText = '';\n\n /**\n * Input message markdown of empty biomarker component.\n */\n @Input() message = '';\n\n /**\n * An event emitter that emits the user button click event\n */\n @Output() readonly collaborateClick = new EventEmitter();\n}\n\n \n\n \n \n\n {{ collaborateText }}\n\n\n \n\n \n \n ./empty-biomarker.component.scss\n \n @use 'variables' as vars;\n\n:host {\n display: block;\n padding: 2.625rem 2rem 2.625rem 2rem;\n\n .message {\n color: #243142;\n }\n\n .collaborate-button {\n margin-top: 2rem;\n font-weight: 700;\n color: #fff;\n width: 100%;\n max-width: 20rem;\n height: 3rem;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ collaborateText }}'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'EmptyBiomarkerComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/GradientLegendComponent.html":{"url":"components/GradientLegendComponent.html","title":"component - GradientLegendComponent","body":"\n \n\n\n\n\n\n Components\n \n GradientLegendComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/gradient-legend/gradient-legend.component.ts\n\n\n\n \n Description\n \n \n Gradient legend for biomarkers\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-gradient-legend\n \n\n \n styleUrls\n ./gradient-legend.component.scss\n \n\n\n\n \n templateUrl\n ./gradient-legend.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n gradient\n \n \n \n \n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n gradientCss\n \n \n \n \n \n \n\n\n\n \n Inputs\n \n \n \n \n \n gradient\n \n \n \n \n Type : GradientPoint[]\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/lib/gradient-legend/gradient-legend.component.ts:23\n \n \n \n \n Gradient colors along with their stop points\n\n \n \n \n \n\n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n gradientCss\n \n \n\n \n \n getgradientCss()\n \n \n \n \n Defined in src/lib/gradient-legend/gradient-legend.component.ts:26\n \n \n \n \n Computes the css linear-gradient function for the gradient bar\n\n\n \n Returns : string\n\n \n \n \n\n \n \n\n\n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** An interface of gradient colors along with their percentages for the gradient bar. */\nexport interface GradientPoint {\n /** Gradient color at a specific percentage */\n color: string;\n /** Percentage point along the gradient bar */\n percentage: number;\n}\n\n/** Gradient legend for biomarkers */\n@Component({\n selector: 'hra-gradient-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './gradient-legend.component.html',\n styleUrls: ['./gradient-legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GradientLegendComponent {\n /** Gradient colors along with their stop points */\n @Input() gradient: GradientPoint[] = [];\n\n /** Computes the css linear-gradient function for the gradient bar */\n get gradientCss(): string {\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(',');\n return `linear-gradient(90deg, ${stops})`;\n }\n}\n\n \n\n \n \n\n 0.0\n \n 1.0\n\n\n \n\n \n \n ./gradient-legend.component.scss\n \n :host {\n display: block;\n\n .gradient-bar {\n height: 1.5rem;\n width: 100%;\n }\n\n .legend {\n display: flex;\n\n .filler {\n flex-grow: 1;\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' 0.0 1.0'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'GradientLegendComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/GradientPoint.html":{"url":"interfaces/GradientPoint.html","title":"interface - GradientPoint","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n GradientPoint\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/lib/gradient-legend/gradient-legend.component.ts\n \n\n\n \n Description\n \n \n An interface of gradient colors along with their percentages for the gradient bar.\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n color\n \n \n \n \n percentage\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n color\n \n \n \n \n \n \n \n \n color: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Gradient color at a specific percentage\n\n \n \n \n \n \n \n \n \n \n percentage\n \n \n \n \n \n \n \n \n percentage: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n Percentage point along the gradient bar\n\n \n \n \n \n \n \n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** An interface of gradient colors along with their percentages for the gradient bar. */\nexport interface GradientPoint {\n /** Gradient color at a specific percentage */\n color: string;\n /** Percentage point along the gradient bar */\n percentage: number;\n}\n\n/** Gradient legend for biomarkers */\n@Component({\n selector: 'hra-gradient-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './gradient-legend.component.html',\n styleUrls: ['./gradient-legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GradientLegendComponent {\n /** Gradient colors along with their stop points */\n @Input() gradient: GradientPoint[] = [];\n\n /** Computes the css linear-gradient function for the gradient bar */\n get gradientCss(): string {\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(',');\n return `linear-gradient(90deg, ${stops})`;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/LabelBoxComponent.html":{"url":"components/LabelBoxComponent.html","title":"component - LabelBoxComponent","body":"\n \n\n\n\n\n\n Components\n \n LabelBoxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/label-box/label-box.component.ts\n\n\n\n \n Description\n \n \n Label box component for reuse accross the page. The content with \"end\" selector will be added to the end of the label box\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-label-box\n \n\n \n styleUrls\n ./label-box.component.scss\n \n\n\n\n \n templateUrl\n ./label-box.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** Label box component for reuse accross the page. The content with \"end\" selector will be added to the end of the label box */\n@Component({\n selector: 'hra-label-box',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './label-box.component.html',\n styleUrls: ['./label-box.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LabelBoxComponent {}\n\n \n\n \n \n\n\n\n\n\n \n\n \n \n ./label-box.component.scss\n \n :host {\n display: flex;\n align-items: center;\n padding: 0.75rem 2rem;\n background: #f8f9fa;\n font-family: 'Inter';\n\n .filler {\n flex-grow: 1;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'LabelBoxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/RequiredInputComponent.html":{"url":"components/RequiredInputComponent.html","title":"component - RequiredInputComponent","body":"\n \n\n\n\n\n\n Components\n \n RequiredInputComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/required-input/required-input.component.ts\n\n\n\n \n Description\n \n \n A reusable text field component that can be used to input text.\nThis input field component also had required validation check.\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-required-input\n \n\n \n styleUrls\n ./required-input.component.scss\n \n\n\n\n \n templateUrl\n ./required-input.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Readonly\n control\n \n \n Readonly\n destroy$\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n label\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n inputChange\n \n \n \n \n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:43\n \n \n\n \n \n Creates an instance of required input component\nand it connect the form control value changes to check for validation\nbefore output emmiter is triggered\n\n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n label\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:25\n \n \n \n \n The label to display for the text field.\n\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n inputChange\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:30\n \n \n \n \n An event emitter that emits the input value when it changes.\n\n \n \n \n \n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Readonly\n control\n \n \n \n \n \n \n Default value : new FormControl('', {\n updateOn: 'blur',\n validators: Validators.required,\n })\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:40\n \n \n\n \n \n Form control for input to set some input validation.\n\n \n \n\n \n \n \n \n \n \n \n \n Readonly\n destroy$\n \n \n \n \n \n \n Default value : injectDestroy$()\n \n \n \n \n Defined in src/lib/required-input/required-input.component.ts:35\n \n \n\n \n \n Destroy observable used to control the lifetime of other observables.\n\n \n \n\n \n \n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { injectDestroy$ } from '@hra-ui/cdk/injectors';\nimport { map, takeUntil } from 'rxjs';\n\n/**\n * A reusable text field component that can be used to input text.\n * This input field component also had required validation check.\n */\n@Component({\n selector: 'hra-required-input',\n standalone: true,\n imports: [CommonModule, MatFormFieldModule, MatInputModule, ReactiveFormsModule],\n templateUrl: './required-input.component.html',\n styleUrls: ['./required-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RequiredInputComponent {\n /**\n * The label to display for the text field.\n */\n @Input() label = '';\n\n /**\n * An event emitter that emits the input value when it changes.\n */\n @Output() readonly inputChange = new EventEmitter();\n\n /**\n * Destroy observable used to control the lifetime of other observables.\n */\n readonly destroy$ = injectDestroy$();\n\n /**\n * Form control for input to set some input validation.\n */\n readonly control = new FormControl('', {\n updateOn: 'blur',\n validators: Validators.required,\n });\n\n /**\n * Creates an instance of required input component\n * and it connect the form control value changes to check for validation\n * before output emmiter is triggered\n */\n constructor() {\n const { control, destroy$, inputChange } = this;\n control.valueChanges\n .pipe(\n takeUntil(destroy$),\n map((value) => (control.valid ? (value as string) : undefined))\n )\n .subscribe(inputChange);\n }\n}\n\n \n\n \n \n {{ label }} \n \n {{ label }} is required!\n\n\n \n\n \n \n ./required-input.component.scss\n \n :host {\n display: block;\n\n .form-field {\n width: 100%;\n }\n\n ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ label }} {{ label }} is required!'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'RequiredInputComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/RequiredTextboxComponent.html":{"url":"components/RequiredTextboxComponent.html","title":"component - RequiredTextboxComponent","body":"\n \n\n\n\n\n\n Components\n \n RequiredTextboxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/required-textbox/required-textbox.component.ts\n\n\n\n \n Description\n \n \n The required textbox component displays a message box for users to add a message\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-required-textbox\n \n\n \n styleUrls\n ./required-textbox.component.scss\n \n\n\n\n \n templateUrl\n ./required-textbox.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Readonly\n control\n \n \n Readonly\n destroy$\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n label\n \n \n placeholder\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n messageChange\n \n \n \n \n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:37\n \n \n\n \n \n Connects the input control to component outputs\n\n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n label\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:25\n \n \n \n \n A label for the textarea field\n\n \n \n \n \n \n \n \n \n \n placeholder\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:22\n \n \n \n \n A placeholder for the message textarea field\n\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n messageChange\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:28\n \n \n \n \n Emits the new message when the input changes or undefined if the message is invalid\n\n \n \n \n \n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Readonly\n control\n \n \n \n \n \n \n Default value : new FormControl('', {\n updateOn: 'blur',\n validators: [Validators.required],\n })\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:34\n \n \n\n \n \n A control to validate if the message field is empty\n\n \n \n\n \n \n \n \n \n \n \n \n Readonly\n destroy$\n \n \n \n \n \n \n Default value : injectDestroy$()\n \n \n \n \n Defined in src/lib/required-textbox/required-textbox.component.ts:31\n \n \n\n \n \n Observable emitting when the component is destroyed\n\n \n \n\n \n \n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { injectDestroy$ } from '@hra-ui/cdk/injectors';\nimport { FormControl, Validators, ReactiveFormsModule } from '@angular/forms';\nimport { map, takeUntil } from 'rxjs';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n/**\n * The required textbox component displays a message box for users to add a message\n */\n@Component({\n selector: 'hra-required-textbox',\n standalone: true,\n imports: [CommonModule, MatInputModule, MatFormFieldModule, ReactiveFormsModule],\n templateUrl: './required-textbox.component.html',\n styleUrls: ['./required-textbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RequiredTextboxComponent {\n /** A placeholder for the message textarea field */\n @Input() placeholder = '';\n\n /** A label for the textarea field */\n @Input() label = '';\n\n /** Emits the new message when the input changes or undefined if the message is invalid */\n @Output() readonly messageChange = new EventEmitter();\n\n /** Observable emitting when the component is destroyed */\n readonly destroy$ = injectDestroy$();\n\n /** A control to validate if the message field is empty */\n readonly control = new FormControl('', {\n updateOn: 'blur',\n validators: [Validators.required],\n });\n\n /** Connects the input control to component outputs */\n constructor() {\n const { control, destroy$ } = this;\n control.valueChanges\n .pipe(\n takeUntil(destroy$),\n map((value) => (control.valid ? value : undefined))\n )\n .subscribe((value) => this.messageChange.emit(value as string | undefined));\n }\n}\n\n \n\n \n \n {{ label }} \n \n {{ label }} is required! \n\n\n \n\n \n \n ./required-textbox.component.scss\n \n :host {\n display: block;\n\n .message-field {\n width: 100%;\n background: #ffffff;\n }\n\n ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ label }} {{ label }} is required! '\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'RequiredTextboxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/SizeLegend.html":{"url":"interfaces/SizeLegend.html","title":"interface - SizeLegend","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n SizeLegend\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/lib/size-legend/size-legend.component.ts\n \n\n\n \n Description\n \n \n Defining the input data types for the radius and label to be displayed.\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n label\n \n \n \n \n radius\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n label\n \n \n \n \n \n \n \n \n label: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Label under circle\n\n \n \n \n \n \n \n \n \n \n radius\n \n \n \n \n \n \n \n \n radius: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n Radius for cirlce\n\n \n \n \n \n \n \n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** Defining the input data types for the radius and label to be displayed. */\nexport interface SizeLegend {\n /** Label under circle */\n label: string;\n /** Radius for cirlce */\n radius: number;\n}\n\n/** Size legend component for the biomarkers table. */\n@Component({\n selector: 'hra-size-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './size-legend.component.html',\n styleUrls: ['./size-legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SizeLegendComponent {\n /** Taking input for the radius of the circle and the label to be displayed. */\n @Input() sizes: SizeLegend[] = [];\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/SizeLegendComponent.html":{"url":"components/SizeLegendComponent.html","title":"component - SizeLegendComponent","body":"\n \n\n\n\n\n\n Components\n \n SizeLegendComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/size-legend/size-legend.component.ts\n\n\n\n \n Description\n \n \n Size legend component for the biomarkers table.\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-size-legend\n \n\n \n styleUrls\n ./size-legend.component.scss\n \n\n\n\n \n templateUrl\n ./size-legend.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n sizes\n \n \n \n \n\n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n sizes\n \n \n \n \n Type : SizeLegend[]\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/lib/size-legend/size-legend.component.ts:23\n \n \n \n \n Taking input for the radius of the circle and the label to be displayed.\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/** Defining the input data types for the radius and label to be displayed. */\nexport interface SizeLegend {\n /** Label under circle */\n label: string;\n /** Radius for cirlce */\n radius: number;\n}\n\n/** Size legend component for the biomarkers table. */\n@Component({\n selector: 'hra-size-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './size-legend.component.html',\n styleUrls: ['./size-legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SizeLegendComponent {\n /** Taking input for the radius of the circle and the label to be displayed. */\n @Input() sizes: SizeLegend[] = [];\n}\n\n \n\n \n \n \n \n \n {{ text.label }}\n\n\n \n\n \n \n ./size-legend.component.scss\n \n :host {\n display: flex;\n flex-direction: row;\n column-gap: 2rem;\n\n .item {\n display: flex;\n flex-direction: column;\n align-items: center;\n line-height: 0.5rem;\n\n .circle {\n height: var(--size);\n width: var(--size);\n border-radius: 50%;\n border: 0.125rem solid #75838f;\n }\n\n .label {\n margin-top: 0.5rem;\n }\n\n .filler {\n flex-grow: 1;\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ text.label }}'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'SizeLegendComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TooltipComponent.html":{"url":"components/TooltipComponent.html","title":"component - TooltipComponent","body":"\n \n\n\n\n\n\n Components\n \n TooltipComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/lib/tooltip/tooltip.component.ts\n\n\n\n \n Description\n \n \n Tooltips for illustrations\n\n \n\n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n hra-ui-tooltip\n \n\n \n styleUrls\n ./tooltip.component.scss\n \n\n\n\n \n templateUrl\n ./tooltip.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n text\n \n \n \n \n\n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n text\n \n \n \n \n Type : string\n\n \n \n \n \n Default value : ''\n \n \n \n \n Defined in src/lib/tooltip/tooltip.component.ts:19\n \n \n \n \n Text to display\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n \n import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Tooltips for illustrations\n */\n@Component({\n selector: 'hra-ui-tooltip',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent {\n /**\n * Text to display\n */\n @Input() text = '';\n}\n\n \n\n \n {{ text }}\n\n \n\n \n \n ./tooltip.component.scss\n \n :host {\n .tooltip {\n display: flex;\n flex-direction: column;\n background: white;\n box-shadow: 1px 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\n border-radius: 0.5rem;\n padding: 1rem;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = '{{ text }}'\n var COMPONENTS = [{'name': 'EmailInputComponent', 'selector': 'hra-email-input'},{'name': 'EmptyBiomarkerComponent', 'selector': 'hra-empty-biomarker'},{'name': 'GradientLegendComponent', 'selector': 'hra-gradient-legend'},{'name': 'LabelBoxComponent', 'selector': 'hra-label-box'},{'name': 'RequiredInputComponent', 'selector': 'hra-required-input'},{'name': 'RequiredTextboxComponent', 'selector': 'hra-required-textbox'},{'name': 'SizeLegendComponent', 'selector': 'hra-size-legend'},{'name': 'TooltipComponent', 'selector': 'hra-ui-tooltip'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TooltipComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n tslib : ^2.3.0\n \n\n\n \n \n Peer dependencies\n \n \n \n @angular/common : ^15.1.0\n \n @angular/core : ^15.1.0\n \n @hra-ui/theming : *\n \n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"getting-started - index","body":"\n \n\ncomponents-atoms\nThis library was generated with Nx.\nRunning unit tests\nRun nx test components-atoms to execute the unit tests.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n Modules\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n Overview\n\n \n\n \n \n \n \n \n 8 Components\n \n \n \n \n \n \n \n 2 Interfaces\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"properties.html":{"url":"properties.html","title":"package-properties - properties","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Properties\n \n \n \n Version : 0.0.1\n \n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}} } diff --git a/compodoc/components-behavioral/components/BiomarkerDetailsComponent.html b/compodoc/components-behavioral/components/BiomarkerDetailsComponent.html index 488c13070..504ddf8e3 100644 --- a/compodoc/components-behavioral/components/BiomarkerDetailsComponent.html +++ b/compodoc/components-behavioral/components/BiomarkerDetailsComponent.html @@ -197,6 +197,9 @@
    Methods
      +
    • + collaborate +
    • toggleFullscreen
    • @@ -236,6 +239,45 @@
      Accessors

      Methods

      + + + + + + + + + + + + + + + + + + + +
      + + + collaborate + + +
      +collaborate() +
      + +
      +

      A function which opens the contact modal dialog box

      +
      + +
      + Returns : void + +
      +
      @@ -256,8 +298,8 @@

      @@ -307,7 +349,7 @@

      @@ -339,7 +381,7 @@

      @@ -373,7 +415,7 @@

      @@ -405,7 +447,7 @@

      @@ -436,7 +478,7 @@

      @@ -469,7 +511,7 @@

      @@ -501,7 +543,7 @@

      @@ -533,7 +575,7 @@

      @@ -565,7 +607,7 @@

      @@ -597,7 +639,7 @@

      @@ -629,7 +671,7 @@

      @@ -661,7 +703,7 @@

      @@ -696,7 +738,7 @@

      @@ -719,7 +761,7 @@

      import { CommonModule } from '@angular/common';
      -import { ChangeDetectionStrategy, Component } from '@angular/core';
      +import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
       import { MatIconModule } from '@angular/material/icon';
       import { MatTabsModule } from '@angular/material/tabs';
       import { HoverDirective } from '@hra-ui/cdk';
      @@ -737,6 +779,8 @@ 

      import { BiomarkerTableDataCardComponent, SourceListComponent } from '@hra-ui/components/molecules'; import { BiomarkerTableComponent, TissueInfo } from '@hra-ui/components/organisms'; import { CellSummarySelectors, ResourceIds as Ids, ResourceTypes as RTypes, SourceRefsSelectors } from '@hra-ui/state'; +import { MatDialog, MatDialogConfig, MatDialogModule } from '@angular/material/dialog'; +import { ContactBehaviorComponent } from '../contact-behavior/contact-behavior.component'; /** * PlaceHolder for Empty Tissue Info @@ -754,7 +798,7 @@

      CommonModule, MatIconModule, MatTabsModule, - + MatDialogModule, BiomarkerTableComponent, BiomarkerTableDataCardComponent, GradientLegendComponent, @@ -832,6 +876,9 @@

      /** A dispatcher function to set the screen mode */ private readonly setScreenMode = dispatch(ScreenModeAction.Set); + /** A dialog box which shows contact modal after clicking on contact */ + private readonly dialog = inject(MatDialog); + /** A function that toggles isTableFullScreen and * calls the setScreenMode function. */ @@ -839,6 +886,13 @@

      this.isTableFullScreen = !this.isTableFullScreen; this.setScreenMode(this.isTableFullScreen); } + + /** A function which opens the contact modal dialog box */ + collaborate(): void { + const dialogConfig = new MatDialogConfig(); + dialogConfig.disableClose = true; + this.dialog.open(ContactBehaviorComponent, dialogConfig); + } }

      @@ -846,9 +900,9 @@

      <hra-label-box class="table-header">
         Cell Types by Gene Biomarkers
      -  <mat-icon (click)="toggleFullscreen()" class="end">
      +  <span (click)="toggleFullscreen()" class="end material-symbols-outlined cursor">
           {{ isTableFullScreen ? 'close_fullscreen' : 'open_in_full' }}
      -  </mat-icon>
      +  </span>
       </hra-label-box>
       
       <mat-tab-group class="table" [class.table-fullscreen]="isTableFullScreen" mat-stretch-tabs="true" color="accent">
      @@ -866,6 +920,7 @@ 

      *ngIf="tab.rows.length === 0" [collaborateText]="collaborateText" [message]="message" + (collaborateClick)="collaborate()" ></hra-empty-biomarker> </mat-tab> </mat-tab-group> @@ -887,7 +942,13 @@

      </div> <div class="source-list"> - <hra-source-list [sources]="source()" class="content"></hra-source-list> + <hra-source-list + [collaborateText]="collaborateText" + [message]="message" + (collaborateClick)="collaborate()" + [sources]="source()" + class="content" + ></hra-source-list> </div> <ng-template #infoTooltip let-tooltip> @@ -926,12 +987,14 @@

      grid-area: table; max-width: 100%; overflow: auto; + border-bottom: 0.063rem solid #d3d3d3; ::ng-deep .table-tab-header { padding-left: 1rem; padding-right: 1rem; border-left: 0.063rem solid #d3d3d3; border-bottom: 0.063rem solid #d3d3d3; + background-color: white; &:last-child { border-right: 0.063rem solid #d3d3d3; @@ -940,6 +1003,10 @@

      &.mdc-tab-indicator--active { background-color: #f8f9fa; } + + &:hover { + background-color: #f8f9fa; + } } } @@ -959,6 +1026,7 @@

      .icon { margin-left: 0.6rem; + width: unset; } } @@ -982,6 +1050,10 @@

      .source-list { grid-area: source-list; } + + .cursor { + cursor: default; + } } ::ng-deep .biomarker-details.info-tooltip { @@ -993,6 +1065,7 @@

      background-color: vars.$primary-contrast-rgb; max-width: 21rem; font-size: small; + font-family: Inter; }

      @@ -1022,7 +1095,7 @@

      \ No newline at end of file + import './main.238e274e.iframe.bundle.js'; \ No newline at end of file diff --git a/storybook/cdk/main.238e274e.iframe.bundle.js b/storybook/cdk/main.238e274e.iframe.bundle.js new file mode 100644 index 000000000..623e456a5 --- /dev/null +++ b/storybook/cdk/main.238e274e.iframe.bundle.js @@ -0,0 +1 @@ +(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[179],{"./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$":(module,__unused_webpack_exports,__webpack_require__)=>{var map={"./cdk/documentation.json":"./dist/compodoc/cdk/documentation.json","./components-atoms/documentation.json":"./dist/compodoc/components-atoms/documentation.json","./components-behavioral/documentation.json":"./dist/compodoc/components-behavioral/documentation.json","./components-molecules/documentation.json":"./dist/compodoc/components-molecules/documentation.json","./components-organisms/documentation.json":"./dist/compodoc/components-organisms/documentation.json","./shared-theming/documentation.json":"./dist/compodoc/shared-theming/documentation.json"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$"},"./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$":(module,__unused_webpack_exports,__webpack_require__)=>{var map={"./src/lib/hover/hover.directive.stories":["./libs/cdk/src/lib/hover/hover.directive.stories.ts",8,424],"./src/lib/hover/hover.directive.stories.ts":["./libs/cdk/src/lib/hover/hover.directive.stories.ts",8,424],"./src/lib/link/link.directive.stories":["./libs/cdk/src/lib/link/link.directive.stories.ts",607,688],"./src/lib/link/link.directive.stories.ts":["./libs/cdk/src/lib/link/link.directive.stories.ts",607,688]};function webpackAsyncContext(req){if(!__webpack_require__.o(map,req))return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}));var ids=map[req],id=ids[0];return Promise.all(ids.slice(1).map(__webpack_require__.e)).then((()=>__webpack_require__(id)))}webpackAsyncContext.keys=()=>Object.keys(map),webpackAsyncContext.id="./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$",module.exports=webpackAsyncContext},"./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$":module=>{function webpackEmptyAsyncContext(req){return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}))}webpackEmptyAsyncContext.keys=()=>[],webpackEmptyAsyncContext.resolve=webpackEmptyAsyncContext,webpackEmptyAsyncContext.id="./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$",module.exports=webpackEmptyAsyncContext},"./.storybook/styles.scss?ngGlobalStyle":()=>{},"./libs/cdk/.storybook/preview.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{argTypesEnhancers:()=>argTypesEnhancers,decorators:()=>decorators,parameters:()=>parameters});var http=__webpack_require__("./node_modules/@angular/common/fesm2020/http.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),animations=__webpack_require__("./node_modules/@angular/platform-browser/fesm2020/animations.mjs"),ngxs_logger_plugin=__webpack_require__("./node_modules/@ngxs/logger-plugin/fesm2015/ngxs-logger-plugin.js"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),angular=__webpack_require__("./node_modules/@storybook/addon-docs/angular/index.js"),dist=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),ngx_markdown=__webpack_require__("./node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs"),tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),angular_material_css_vars=__webpack_require__("./node_modules/angular-material-css-vars/fesm2020/angular-material-css-vars.mjs"),js_yaml=__webpack_require__("./node_modules/js-yaml/dist/js-yaml.mjs"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js");class Load{constructor(url){this.url=url,this.type=Load.type}}Load.type="[Theming] Load Theming File";var lib=__webpack_require__("./node_modules/zod/lib/index.mjs");const THEMING_FILE_SCHEMA=lib.z.record(lib.z.nativeEnum(angular_material_css_vars.Rm),lib.z.string());let ThemingState=class ThemingState{constructor(){this.http=(0,core.inject)(http.eN),this.materialVars=(0,core.inject)(angular_material_css_vars.jO)}load(ctx,{url}){return this.http.get(url,{responseType:"text"}).pipe((0,map.U)((data=>(0,js_yaml.zD)(data,{filename:url}))),(0,map.U)((data=>THEMING_FILE_SCHEMA.parse(data))),(0,tap.b)((data=>ctx.setState(data))),(0,tap.b)((data=>this.setVariables(data))))}setVariables(data){for(const[key,value]of Object.entries(data))this.materialVars.setVariable(key,value)}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(Load),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,Load]),(0,tslib_es6.w6)("design:returntype",Observable.y)],ThemingState.prototype,"load",null),ThemingState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"theming",defaults:{}}),(0,core.Injectable)()],ThemingState);let ThemingModule=class ThemingModule{};function parseDefaultValue(type){const{defaultValue,type:typeDef}=type;if(void 0===defaultValue||"string"!=typeof defaultValue||"string"===typeDef?.name)return defaultValue;switch(typeDef?.name){case"array":case"boolean":case"number":case"object":try{return new Function("return "+defaultValue)()}catch(_error){return}case"enum":return typeDef.value.includes(defaultValue)?defaultValue:void 0;default:return}}ThemingModule=(0,tslib_es6.gn)([(0,core.NgModule)({imports:[angular_material_css_vars.Pe.forRoot({}),ngxs_store.$l.forFeature([ThemingState])]})],ThemingModule);const parameters={actions:{argTypesRegex:"^on[A-Z].*"},controls:{matchers:{color:/(background|color)$/i,date:/Date$/}},docs:{inlineStories:!0}},argTypesEnhancers=[function fixArgTypes(){return context=>{const argTypes={...context.argTypes},exclude=[...context.parameters.controls?.exclude??[]];for(const[key,type]of Object.entries(argTypes))switch(type.table.category){case"inputs":const defaultValue=parseDefaultValue(type);defaultValue!==type.defaultValue&&(argTypes[key]={...type,defaultValue});break;case"outputs":argTypes[key]={...type,defaultValue:void 0};break;default:exclude.push(key)}return context.parameters.controls={...context.parameters.controls,exclude},argTypes}}()],decorators=[(0,dist.applicationConfig)({providers:[(0,core.importProvidersFrom)(animations.BrowserAnimationsModule,http.JF,ngxs_store.$l.forRoot([],{developmentMode:!0}),ngxs_logger_plugin.xz.forRoot(),ngx_markdown.JP.forRoot({loader:http.eN}),ThemingModule)]}),(0,dist.componentWrapperDecorator)((story=>`\n
      ${story}
      \n
      \n `)),function addState(){return(fn,ctx)=>{const config=ctx.parameters.state;return config?(0,dist.applicationConfig)({providers:[(0,core.importProvidersFrom)(ngxs_store.$l.forFeature(config.states)),{provide:core.APP_INITIALIZER,multi:!0,useFactory:store=>()=>{const{actions}=config;return actions&&actions.length>0?store.dispatch(actions):void 0},deps:[ngxs_store.yh]}]})(fn,ctx):fn(ctx)}}()];!function setDocs(library){const docs=__webpack_require__("./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$")(`./${library}/documentation.json`);(0,angular.P)(docs)}("cdk")},"./storybook-config-entry.js":(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{"use strict";var dist=__webpack_require__("./node_modules/@storybook/global/dist/index.mjs"),external_STORYBOOK_MODULE_PREVIEW_API_=__webpack_require__("@storybook/preview-api");const external_STORYBOOK_MODULE_CHANNEL_POSTMESSAGE_namespaceObject=__STORYBOOK_MODULE_CHANNEL_POSTMESSAGE__,external_STORYBOOK_MODULE_CHANNEL_WEBSOCKET_namespaceObject=__STORYBOOK_MODULE_CHANNEL_WEBSOCKET__;var asyncToGenerator=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");const pipeline=x=>x(),importers=[function(){var _ref=(0,asyncToGenerator.Z)((function*(path){if(!/^\.[\\/](?:libs\/cdk(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.mdx)$/.exec(path))return;const pathRemainder=path.substring(11);return __webpack_require__("./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$")("./"+pathRemainder)}));return function(_x){return _ref.apply(this,arguments)}}(),function(){var _ref2=(0,asyncToGenerator.Z)((function*(path){if(!/^\.[\\/](?:libs\/cdk(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.(js|jsx|ts|tsx))$/.exec(path))return;const pathRemainder=path.substring(11);return __webpack_require__("./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$")("./"+pathRemainder)}));return function(_x2){return _ref2.apply(this,arguments)}}()];function _importFn(){return(_importFn=(0,asyncToGenerator.Z)((function*(path){for(let i=0;iimporters[i](path)));if(moduleExports)return moduleExports}}))).apply(this,arguments)}const{SERVER_CHANNEL_URL}=dist.global,channel=(0,external_STORYBOOK_MODULE_CHANNEL_POSTMESSAGE_namespaceObject.createChannel)({page:"preview"});if(external_STORYBOOK_MODULE_PREVIEW_API_.addons.setChannel(channel),SERVER_CHANNEL_URL){const serverChannel=(0,external_STORYBOOK_MODULE_CHANNEL_WEBSOCKET_namespaceObject.createChannel)({url:SERVER_CHANNEL_URL});external_STORYBOOK_MODULE_PREVIEW_API_.addons.setServerChannel(serverChannel),window.__STORYBOOK_SERVER_CHANNEL__=serverChannel}const preview=new external_STORYBOOK_MODULE_PREVIEW_API_.PreviewWeb;window.__STORYBOOK_PREVIEW__=preview,window.__STORYBOOK_STORY_STORE__=preview.storyStore,window.__STORYBOOK_ADDONS_CHANNEL__=channel,window.__STORYBOOK_CLIENT_API__=new external_STORYBOOK_MODULE_PREVIEW_API_.ClientApi({storyStore:preview.storyStore}),preview.initialize({importFn:function importFn(_x3){return _importFn.apply(this,arguments)},getProjectAnnotations:()=>(0,external_STORYBOOK_MODULE_PREVIEW_API_.composeConfigs)([__webpack_require__("./node_modules/@storybook/angular/dist/client/docs/config.js"),__webpack_require__("./node_modules/@storybook/angular/dist/client/config.js"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/docs/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/actions/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/backgrounds/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/measure/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/outline/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/highlight/preview.mjs"),__webpack_require__("./libs/cdk/.storybook/preview.ts")])})},"./node_modules/@storybook/addon-docs/dist sync recursive":module=>{function webpackEmptyContext(req){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id="./node_modules/@storybook/addon-docs/dist sync recursive",module.exports=webpackEmptyContext},"@storybook/channels":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CHANNELS__},"@storybook/client-logger":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CLIENT_LOGGER__},"@storybook/core-client":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CORE_CLIENT__},"@storybook/core-events":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CORE_EVENTS__},"@storybook/preview-api":module=>{"use strict";module.exports=__STORYBOOK_MODULE_PREVIEW_API__},"./dist/compodoc/cdk/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"ActionConstructor","id":"interface-ActionConstructor-79d65b59eb27f474fc1f2fbef720f134360ce0d1017b538dfe48bd3ca60c6a0472d1789cdc31f57a5190150ce49b1ca0d304e9e44f722b1c4c992c619605ba68","file":"state/src/actions/actions.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { registerActionType } from \'./action-type-registry\';\\n\\n/** Base action type */\\nexport interface Action {\\n /** Action type */\\n readonly type: string;\\n}\\n\\n/** Base action constructor */\\nexport interface ActionConstructor {\\n /** Action type */\\n readonly type: string;\\n\\n /** Create a new action */\\n new (): Action;\\n}\\n\\n/**\\n * Creates an action factory that adds a common group string to each action type\\n * @param group Common action type group\\n * @returns An action factory\\n */\\nexport function ActionGroup(group: string): (type: string) => ActionConstructor {\\n return (type) => Action(`[${group}] ${type}`);\\n}\\n\\n/**\\n * Creates a new base action with a specified type\\n * @param type Action type\\n * @returns A base action class\\n */\\nexport function Action(type: string): ActionConstructor {\\n registerActionType(type);\\n return class BaseAction {\\n static readonly type = type;\\n readonly type = type;\\n };\\n}\\n","properties":[{"name":"type","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Action type

      \\n","line":12,"rawdescription":"\\nAction type","modifierKind":[144]}],"indexSignatures":[],"kind":174,"description":"

      Base action constructor

      \\n","rawdescription":"\\nBase action constructor","methods":[]},{"name":"DestructorScope","id":"interface-DestructorScope-c4b53b823f2f6845a68f4b66881cc81070616d6b5124d0d203f80f1eeee060d84d1d05eab91b3a6e833ea4aef93cdf9d68ef0051d58b85ca5101c609dad76a05","file":"injectors/src/lib/on-destroy/destructor-subject.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ReplaySubject } from \'rxjs\';\\n\\n/** Object on which cleanup functions can be registered */\\nexport interface DestructorScope {\\n /**\\n * Register a cleanup function\\n * @param cb Cleanup callback function\\n */\\n onDestroy(cb: () => void): void;\\n}\\n\\n/**\\n * Determines whether an object is destructor scope like\\n * @param obj Value to test\\n * @returns true if the object seems to be a destructor scope, otherwise false\\n */\\nexport function isDestructorScopeLike(obj: unknown): obj is DestructorScope {\\n const isObject = typeof obj === \'object\' && obj !== null;\\n return isObject && \'onDestroy\' in obj && typeof obj.onDestroy === \'function\';\\n}\\n\\n/**\\n * A subject type that is associated with a destructor scope.\\n * When the cleanup function is run the subject emits a single\\n * undefined value and immediately completes\\n */\\nexport class ScopedDestructorSubject extends ReplaySubject {\\n /**\\n * Creates a new subject and attaches cleanup to the destructor scope\\n * @param scope Associated scope\\n */\\n constructor(scope: DestructorScope) {\\n super(1);\\n\\n scope.onDestroy(() => {\\n this.next();\\n this.complete();\\n });\\n }\\n}\\n","properties":[],"indexSignatures":[],"kind":167,"description":"

      Object on which cleanup functions can be registered

      \\n","rawdescription":"\\nObject on which cleanup functions can be registered","methods":[{"name":"onDestroy","args":[{"name":"cb","type":"function","deprecated":false,"deprecationMessage":"","function":[]}],"optional":false,"returnType":"void","typeParameters":[],"line":9,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nRegister a cleanup function\\n","description":"

      Register a cleanup function

      \\n","jsdoctags":[{"name":{"pos":184,"end":186,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"cb"},"type":"function","deprecated":false,"deprecationMessage":"","function":[],"tagName":{"pos":178,"end":183,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Cleanup callback function

      \\n"}]}]},{"name":"HoverContext","id":"interface-HoverContext-09dbb1791c1e8551d99aeb917f0d664e71738bebaebeed4601b7634f7980b675771162be311571667692c787d939ee9eeb40e57b4627c9cd75ebc926e849cc0d","file":"src/lib/hover/hover.directive.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectionPositionPair, Overlay } from \'@angular/cdk/overlay\';\\nimport { TemplatePortal } from \'@angular/cdk/portal\';\\nimport { Directive, ElementRef, HostListener, inject, Input, TemplateRef, ViewContainerRef } from \'@angular/core\';\\n\\n/** Context passed to hover content templates */\\nexport interface HoverContext {\\n /** Data provided by the user for use inside the content template */\\n $implicit: T;\\n}\\n\\n/** Hover overlay directive to be used across the application */\\n@Directive({\\n selector: \'[hraHover]\',\\n standalone: true,\\n})\\nexport class HoverDirective {\\n /** Setter for the content to be displayed in the overlay */\\n @Input(\'hraHover\')\\n set content(content: TemplateRef>) {\\n this.portal = new TemplatePortal(content, this.viewContainerRef, this._data);\\n this.updateContent();\\n }\\n\\n /** Setter for the context that is to be displayed in the portal attached to the overlay */\\n @Input(\'hraHoverData\')\\n set data(data: T) {\\n this._data = { $implicit: data };\\n if (this.portal) {\\n this.portal.context = this._data;\\n this.updateContent();\\n }\\n }\\n\\n /** Reference to the element that the directive is attached to */\\n private readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /** Reference to the overlay that is created when the userhovers over the element along with its position setting */\\n readonly overlayRef = inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n });\\n\\n /** Reference view container that the directive is attached to */\\n private readonly viewContainerRef = inject(ViewContainerRef);\\n\\n /** Store the data that is passed into the data input property */\\n private _data?: HoverContext;\\n\\n /** Portal that is created to display the overlay */\\n portal?: TemplatePortal>;\\n\\n /** Function to handle the mouse over event to attach the portal and display the hover content */\\n @HostListener(\'mouseover\')\\n startHover(): void {\\n const { overlayRef, portal } = this;\\n if (!overlayRef.hasAttached() && portal) {\\n overlayRef.attach(portal);\\n }\\n }\\n\\n /** Function to handle the mouse out event to detach the portal */\\n @HostListener(\'mouseout\')\\n endHover(): void {\\n const { overlayRef } = this;\\n if (overlayRef.hasAttached()) {\\n overlayRef.detach();\\n }\\n }\\n\\n /** Function to handle the updation of overlay with up to date content when the input changes */\\n private updateContent(): void {\\n const { overlayRef, portal } = this;\\n if (overlayRef.hasAttached() && portal) {\\n overlayRef.detach();\\n overlayRef.attach(portal);\\n }\\n }\\n}\\n","properties":[{"name":"$implicit","deprecated":false,"deprecationMessage":"","type":"T","optional":false,"description":"

      Data provided by the user for use inside the content template

      \\n","line":8,"rawdescription":"\\nData provided by the user for use inside the content template"}],"indexSignatures":[],"kind":165,"description":"

      Context passed to hover content templates

      \\n","rawdescription":"\\nContext passed to hover content templates","methods":[]},{"name":"SelectOptions","id":"interface-SelectOptions-2a1e9b4935fb82769eb1dadf40ec0992c0e3f24e9bc0b33376fb53e5f271e89e87100bf0c22b87ea85ce9dd36fbdd2e6fb22f6978dc61aff4d02559ba5c9c8f0","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectorRef, inject } from \'@angular/core\';\\nimport { Any } from \'@hra-ui/utils/types\';\\nimport { StateToken, Store } from \'@ngxs/store\';\\nimport { MonoTypeOperatorFunction, Observable, takeUntil, tap } from \'rxjs\';\\nimport { injectDestroy$ } from \'../on-destroy/on-destroy\';\\n\\n/** Selector type for select style functions */\\nexport type StateSelector = ((...args: Any[]) => T) | StateToken;\\n\\n/** `select$` configuration options */\\nexport interface SelectOptions {\\n /** Whether to mark the containing view for change detection on emits. Defaults to true. */\\n notifyOnChange?: boolean;\\n}\\n\\n/**\\n * Marks a view for change detection whenever a new value is emitted\\n * @param options Options to explicitly disable marking\\n * @returns A rxjs operator\\n */\\nfunction markForCheck(options?: SelectOptions): MonoTypeOperatorFunction {\\n const notifyOnChange = options?.notifyOnChange ?? true;\\n const cdr = inject(ChangeDetectorRef, { optional: true });\\n if (notifyOnChange && cdr) {\\n const markFn = () => cdr.markForCheck();\\n return tap({ next: markFn, error: markFn, complete: markFn });\\n }\\n\\n return (source) => source;\\n}\\n\\n/**\\n * Creates an observable emitting parts of the state. The observable\'s lifetime\\n * is automatically tied to the injection context where this is called.\\n * @param selector State selection function or token\\n * @param options Additional select options\\n * @returns An observable of the selected state\\n */\\nexport function select$(selector: StateSelector, options?: SelectOptions): Observable {\\n return inject(Store)\\n .select(selector as StateToken)\\n .pipe(takeUntil(injectDestroy$()), markForCheck(options));\\n}\\n","properties":[{"name":"notifyOnChange","deprecated":false,"deprecationMessage":"","type":"boolean","optional":true,"description":"

      Whether to mark the containing view for change detection on emits. Defaults to true.

      \\n","line":13,"rawdescription":"\\nWhether to mark the containing view for change detection on emits. Defaults to true."}],"indexSignatures":[],"kind":165,"description":"

      select$ configuration options

      \\n","rawdescription":"\\n`select$` configuration options","methods":[]}],"injectables":[{"name":"LinkRegistryState","id":"injectable-LinkRegistryState-b37e5428b2389fadb722624de33c6e4366fe24d94941b86e08c58ba2167a6e863002542c94b564c5ac03cba9122d8a463f2c34e1d925aed7babf8aa973f35fbb","file":"state/src/link-registry/link-registry.state.ts","properties":[],"methods":[{"name":"addMany","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddMany","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":57,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd multiple entries\\n","description":"

      Add multiple entries

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddMany"}],"jsdoctags":[{"name":{"pos":1614,"end":1617,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1608,"end":1613,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddMany","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addOne","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Add","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd a single entry\\n","description":"

      Add a single entry

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Add"}],"jsdoctags":[{"name":{"pos":1359,"end":1362,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1353,"end":1358,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Add","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addYaml","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":""},{"name":"filename","type":"string","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":[],"line":68,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nParse and add entries from yaml\\n","description":"

      Parse and add entries from yaml

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddFromYaml"}],"jsdoctags":[{"name":{"pos":1858,"end":1861,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1852,"end":1857,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":1933,"end":1941,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"filename"},"type":"string","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1927,"end":1932,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional url/filename from which the data was loaded (for improved error messages)

      \\n"}]},{"name":"loadYaml","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":81,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nLoad and add entries from an external yaml file\\n","description":"

      Load and add entries from an external yaml file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadFromYaml"}],"jsdoctags":[{"name":{"pos":2358,"end":2361,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2352,"end":2357,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2435,"end":2442,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entries has been added

      \\n"}]},{"name":"navigate","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Navigate","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Promise","typeParameters":[],"line":94,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nNavigate to Internal or External urls from id\\n","description":"

      Navigate to Internal or External urls from id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Navigate"}],"modifierKind":[131],"jsdoctags":[{"name":{"pos":2826,"end":2829,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2820,"end":2825,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Navigate","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2898,"end":2905,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A promise

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State for keeping track of links globally

      \\n","rawdescription":"\\nState for keeping track of links globally","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable, NgZone } from \'@angular/core\';\\nimport { Router, UrlCreationOptions } from \'@angular/router\';\\nimport { createExternalUrl } from \'@hra-ui/utils\';\\nimport { UnionMember } from \'@hra-ui/utils/types\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable } from \'rxjs\';\\nimport { Add, AddFromYaml, AddMany, LoadFromYaml, Navigate } from \'./link-registry.actions\';\\nimport {\\n ExternalLinkEntry,\\n InternalLinkEntry,\\n LinkEntry,\\n LinkId,\\n LinkRegistryContext,\\n LinkRegistryModel,\\n LinkType,\\n LINK_REGISTRY_SCHEMA,\\n} from \'./link-registry.model\';\\n\\n/** Query function for link entry optionally with type specified */\\nexport type LinkRegistryQuery = (\\n id: LinkId,\\n type?: T\\n) => UnionMember | undefined;\\n\\n/** State for keeping track of links globally */\\n@State({\\n name: \'linkRegistry\',\\n defaults: {},\\n})\\n@Injectable()\\nexport class LinkRegistryState {\\n /** Http service for link loading */\\n private readonly http = inject(HttpClient);\\n /** Injects angular router */\\n private readonly router = inject(Router, { optional: true });\\n /** Injects ngZone for routing */\\n private readonly zone = inject(NgZone);\\n\\n /**\\n * Add a single entry\\n * @param ctx State context\\n * @param action Action with id and entry to add\\n */\\n @Action(Add)\\n addOne(ctx: LinkRegistryContext, { id, entry }: Add): void {\\n this.addMany(ctx, new AddMany({ [id]: entry }));\\n }\\n\\n /**\\n * Add multiple entries\\n * @param ctx State context\\n * @param action Action with entries to add\\n */\\n @Action(AddMany)\\n addMany(ctx: LinkRegistryContext, { entries }: AddMany): void {\\n ctx.patchState(entries);\\n }\\n\\n /**\\n * Parse and add entries from yaml\\n * @param ctx State context\\n * @param action Action with raw yaml data\\n * @param filename Optional url/filename from which the data was loaded (for improved error messages)\\n */\\n @Action(AddFromYaml)\\n addYaml(ctx: LinkRegistryContext, { yaml }: AddFromYaml, filename?: string): void {\\n const data = load(yaml, { filename });\\n const entries = LINK_REGISTRY_SCHEMA.parse(data);\\n this.addMany(ctx, new AddMany(entries));\\n }\\n\\n /**\\n * Load and add entries from an external yaml file\\n * @param ctx State context\\n * @param action Action with the external file url\\n * @returns An observable that completes when the entries has been added\\n */\\n @Action(LoadFromYaml)\\n loadYaml(ctx: LinkRegistryContext, { url }: LoadFromYaml): Observable {\\n return this.http\\n .get(url, { responseType: \'text\' })\\n .pipe(map((data) => this.addYaml(ctx, new AddFromYaml(data), url)));\\n }\\n\\n /**\\n * Navigate to Internal or External urls from id\\n * @param ctx State context\\n * @param param1 Navigate action with link id\\n * @returns A promise\\n */\\n @Action(Navigate)\\n async navigate(ctx: LinkRegistryContext, { id, extras }: Navigate): Promise {\\n const entry = ctx.getState()[id];\\n switch (entry?.type) {\\n case LinkType.Internal:\\n await this.navigateToInternal(entry, extras);\\n break;\\n\\n case LinkType.External:\\n this.navigateToExternal(entry, extras);\\n break;\\n\\n default:\\n throw new Error(`Cannot navigate to non-existing link \'${id}\'`);\\n }\\n }\\n\\n /**\\n * Method to navigate to an internal link using Angular router\\n * @param entry Internal Link Entry with commands and extras\\n */\\n private async navigateToInternal(entry: InternalLinkEntry, extras: UrlCreationOptions): Promise {\\n await this.zone.run(() => this.router?.navigate(entry.commands, { ...entry.extras, ...extras }));\\n }\\n\\n /**\\n * Method to navigate to an external link using window\\n * @param entry External link entry with url, target, and rel\\n */\\n private navigateToExternal(entry: ExternalLinkEntry, extras: UrlCreationOptions): void {\\n const url = createExternalUrl(entry.url, extras);\\n window.open(url, entry.target, entry.rel);\\n }\\n}\\n","type":"injectable"},{"name":"ResourceRegistryState","id":"injectable-ResourceRegistryState-ee091eca7099a68b29fcf8b081af0f6e4eec5cfb7b538ee0423d54f17301e5430869290d05c8adab76fffaddd9c6c3cfff4569f15b2e831e632827f4347dee77","file":"state/src/resource-registry/resource-registry.state.ts","properties":[],"methods":[{"name":"addMany","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddMany","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":40,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd multiple entries\\n","description":"

      Add multiple entries

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddMany"}],"jsdoctags":[{"name":{"pos":1038,"end":1041,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1032,"end":1037,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddMany","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addOne","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Add","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":30,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd a single entry\\n","description":"

      Add a single entry

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Add"}],"jsdoctags":[{"name":{"pos":779,"end":782,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":773,"end":778,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Add","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addYaml","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":""},{"name":"filename","type":"string","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":[],"line":51,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nParse and add entries from yaml\\n","description":"

      Parse and add entries from yaml

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddFromYaml"}],"jsdoctags":[{"name":{"pos":1286,"end":1289,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1280,"end":1285,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":1361,"end":1369,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"filename"},"type":"string","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1355,"end":1360,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional url/filename from which the data was loaded (for improved error messages)

      \\n"}]},{"name":"loadMarkdown","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadMarkdown","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":77,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdds a markdown entry with content loaded from an external file\\n","description":"

      Adds a markdown entry with content loaded from an external file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadMarkdown"}],"jsdoctags":[{"name":{"pos":2284,"end":2287,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2278,"end":2283,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadMarkdown","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2375,"end":2382,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entry has been added

      \\n"}]},{"name":"loadYaml","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":64,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nLoad and add entries from an external yaml file\\n","description":"

      Load and add entries from an external yaml file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadFromYaml"}],"jsdoctags":[{"name":{"pos":1794,"end":1797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1788,"end":1793,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":1871,"end":1878,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entries has been added

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State keeping track of global resources

      \\n","rawdescription":"\\nState keeping track of global resources","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable } from \'rxjs\';\\nimport { Add, AddFromYaml, AddMany, LoadFromYaml, LoadMarkdown } from \'./resource-registry.actions\';\\nimport {\\n BuiltinResourceType,\\n ResourceRegistryContext,\\n ResourceRegistryModel,\\n RESOURCE_REGISTRY_SCHEMA,\\n} from \'./resource-registry.model\';\\n\\n/** State keeping track of global resources */\\n@State({\\n name: \'resourceRegistry\',\\n defaults: {},\\n})\\n@Injectable()\\nexport class ResourceRegistryState {\\n /** Http service for resource loading */\\n private readonly http = inject(HttpClient);\\n\\n /**\\n * Add a single entry\\n * @param ctx State context\\n * @param action Action with id and entry to add\\n */\\n @Action(Add)\\n addOne(ctx: ResourceRegistryContext, { id, entry }: Add): void {\\n this.addMany(ctx, new AddMany({ [id]: entry }));\\n }\\n\\n /**\\n * Add multiple entries\\n * @param ctx State context\\n * @param action Action with entries to add\\n */\\n @Action(AddMany)\\n addMany(ctx: ResourceRegistryContext, { entries }: AddMany): void {\\n ctx.patchState(entries);\\n }\\n\\n /**\\n * Parse and add entries from yaml\\n * @param ctx State context\\n * @param action Action with raw yaml data\\n * @param filename Optional url/filename from which the data was loaded (for improved error messages)\\n */\\n @Action(AddFromYaml)\\n addYaml(ctx: ResourceRegistryContext, { yaml }: AddFromYaml, filename?: string): void {\\n const data = load(yaml, { filename });\\n const entries = RESOURCE_REGISTRY_SCHEMA.parse(data);\\n this.addMany(ctx, new AddMany(entries));\\n }\\n\\n /**\\n * Load and add entries from an external yaml file\\n * @param ctx State context\\n * @param action Action with the external file url\\n * @returns An observable that completes when the entries has been added\\n */\\n @Action(LoadFromYaml)\\n loadYaml(ctx: ResourceRegistryContext, { url }: LoadFromYaml): Observable {\\n return this.http\\n .get(url, { responseType: \'text\' })\\n .pipe(map((data) => this.addYaml(ctx, new AddFromYaml(data), url)));\\n }\\n\\n /**\\n * Adds a markdown entry with content loaded from an external file\\n * @param ctx State context\\n * @param action Action with id and url to the external markdown\\n * @returns An observable that completes when the entry has been added\\n */\\n @Action(LoadMarkdown)\\n loadMarkdown(ctx: ResourceRegistryContext, { id, url }: LoadMarkdown): Observable {\\n return this.http.get(url, { responseType: \'text\' }).pipe(\\n map((markdown) => new Add(id, { type: BuiltinResourceType.Markdown, markdown })),\\n map((action) => this.addOne(ctx, action))\\n );\\n }\\n}\\n","type":"injectable"},{"name":"StorageState","id":"injectable-StorageState-72ac0507a219407170a641eb4ddefe5f02c0732d08adcd982880a7dd4d0f18ca6dcce1c0b1395a82191bcf464db28277c68d3df9b3f5ac52620adc50aabfd494","file":"state/src/storage/storage.state.ts","properties":[],"methods":[{"name":"clear","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Clear","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":65,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nclears the values of the specified storage id\\n","description":"

      clears the values of the specified storage id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Clear"}],"jsdoctags":[{"name":{"pos":1825,"end":1828,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1819,"end":1824,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Clear","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"delete","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Delete","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":55,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ndeletes the value pointed by key in the list of values stored in the specified storage id\\n","description":"

      deletes the value pointed by key in the list of values stored in the specified storage id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Delete"}],"jsdoctags":[{"name":{"pos":1441,"end":1444,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1435,"end":1440,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Delete","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"getStorage","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Storage","typeParameters":[],"line":27,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nStorageState class to manage storage objects\\n","description":"

      StorageState class to manage storage objects

      \\n","modifierKind":[124],"jsdoctags":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":627,"end":634,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"
        \\n
      • Storage objects - session and local
      • \\n
      \\n"}]},{"name":"set","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Set","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":45,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nsets the key,value pair in the given storageId\\n","description":"

      sets the key,value pair in the given storageId

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Set"}],"jsdoctags":[{"name":{"pos":1010,"end":1013,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1004,"end":1009,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Set","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","description":"

      State holding Storage types

      \\n","rawdescription":"\\n\\nState holding Storage types\\n","sourceCode":"import { produce } from \'immer\';\\nimport { StorageContext } from \'./storage.model\';\\nimport { Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { StorageId, StorageModel } from \'./storage.model\';\\nimport { Set, Delete, Clear } from \'./storage.actions\';\\n/**\\n * State holding Storage types\\n */\\n@State({\\n name: \'storage\',\\n defaults: {\\n [StorageId.Local]: 0,\\n [StorageId.Session]: 0,\\n },\\n})\\n@Injectable()\\n/**\\n * class for managing storage state\\n */\\nexport class StorageState {\\n /**\\n * StorageState class to manage storage objects\\n * @param id-Storage Identifier\\n * @returns - Storage objects - session and local\\n */\\n static getStorage(id: StorageId): Storage {\\n switch (id) {\\n case StorageId.Local:\\n return localStorage;\\n\\n case StorageId.Session:\\n return sessionStorage;\\n\\n default:\\n throw new Error(`No such storage \'${id}\'`);\\n }\\n }\\n /**\\n * sets the key,value pair in the given storageId\\n * @param ctx - StorageContext object\\n * @param param1- {id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Set)\\n set(ctx: StorageContext, { id, key, value }: Set): void {\\n StorageState.getStorage(id).setItem(key, value);\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * deletes the value pointed by key in the list of values stored in the specified storage id\\n * @param ctx - StorageContext object\\n * @param param1- id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Delete)\\n delete(ctx: StorageContext, { id, key }: Delete): void {\\n StorageState.getStorage(id).removeItem(key);\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * clears the values of the specified storage id\\n * @param ctx - StorageContext object\\n * @param param1 - id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Clear)\\n clear(ctx: StorageContext, { id }: Clear): void {\\n StorageState.getStorage(id).clear();\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * increases count after each operation is performed on the specified storage id\\n * @param ctx - StorageContext obje\\n * @param id - StorageId - Storage identifier for which the change count has to be updated\\n */\\n private increaseChangeCount(ctx: StorageContext, id: StorageId): void {\\n ctx.setState(\\n produce((draft) => {\\n draft[id] += 1;\\n })\\n );\\n }\\n}\\n","type":"injectable"}],"guards":[],"interceptors":[],"classes":[{"name":"Add","id":"class-Add-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite a single link

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"LinkId","deprecated":false,"deprecationMessage":""},{"name":"entry","type":"LinkEntry","deprecated":false,"deprecationMessage":""}],"line":9,"rawdescription":"\\n\\nAdd or overwrite a single link\\n","jsdoctags":[{"name":{"pos":356,"end":358,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"LinkId","deprecated":false,"deprecationMessage":"","tagName":{"pos":350,"end":355,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      link identifier

      \\n"},{"name":{"pos":387,"end":392,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entry"},"type":"LinkEntry","deprecated":false,"deprecationMessage":"","tagName":{"pos":381,"end":386,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      link entry

      \\n"}]},"properties":[],"description":"

      Add a single link

      \\n","rawdescription":"\\nAdd a single link","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Add","id":"class-Add-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite a single resource

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"entry","type":"ResourceEntry","deprecated":false,"deprecationMessage":""}],"line":8,"rawdescription":"\\n\\nAdd or overwrite a single resource\\n","jsdoctags":[{"name":{"pos":326,"end":328,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":320,"end":325,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource identifier

      \\n"},{"name":{"pos":361,"end":366,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entry"},"type":"ResourceEntry","deprecated":false,"deprecationMessage":"","tagName":{"pos":355,"end":360,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource entry

      \\n"}]},"properties":[],"description":"

      Add a single resource

      \\n","rawdescription":"\\nAdd a single resource","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"Add-1"},{"name":"AddFromYaml","id":"class-AddFromYaml-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add links from unparsed yaml

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"yaml","type":"string","deprecated":false,"deprecationMessage":""}],"line":32,"rawdescription":"\\n\\nAdd links from unparsed yaml\\n","jsdoctags":[{"name":{"pos":892,"end":896,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"yaml"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":886,"end":891,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Unparsed yaml data

      \\n"}]},"properties":[],"description":"

      Add entries from yaml file

      \\n","rawdescription":"\\nAdd entries from yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"AddFromYaml","id":"class-AddFromYaml-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add resources from unparsed yaml

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"yaml","type":"string","deprecated":false,"deprecationMessage":""}],"line":31,"rawdescription":"\\n\\nAdd resources from unparsed yaml\\n","jsdoctags":[{"name":{"pos":908,"end":912,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"yaml"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":902,"end":907,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Unparsed yaml data

      \\n"}]},"properties":[],"description":"

      Add resources from raw yaml data

      \\n","rawdescription":"\\nAdd resources from raw yaml data","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"AddFromYaml-1"},{"name":"AddMany","id":"class-AddMany-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite multiple links

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"entries","type":"Partial>","deprecated":false,"deprecationMessage":""}],"line":21,"rawdescription":"\\n\\nAdd or overwrite multiple links\\n","jsdoctags":[{"name":{"pos":633,"end":640,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entries"},"type":"Partial>","deprecated":false,"deprecationMessage":"","tagName":{"pos":627,"end":632,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      New links

      \\n"}]},"properties":[],"description":"

      Add multiple links at once

      \\n","rawdescription":"\\nAdd multiple links at once","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"AddMany","id":"class-AddMany-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite multiple resources

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"entries","type":"Partial>","deprecated":false,"deprecationMessage":""}],"line":20,"rawdescription":"\\n\\nAdd or overwrite multiple resources\\n","jsdoctags":[{"name":{"pos":627,"end":634,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entries"},"type":"Partial>","deprecated":false,"deprecationMessage":"","tagName":{"pos":621,"end":626,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      New resources

      \\n"}]},"properties":[],"description":"

      Add multiple resources at once

      \\n","rawdescription":"\\nAdd multiple resources at once","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"AddMany-1"},{"name":"Clear","id":"class-Clear-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for clear action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""}],"line":37,"rawdescription":"\\n\\nconstructor class for clear action object\\n","jsdoctags":[{"name":{"pos":1146,"end":1148,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1140,"end":1145,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"}]},"properties":[],"description":"

      Clear the values stored in the specified StorageId

      \\n","rawdescription":"\\n\\nClear the values stored in the specified StorageId\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Delete","id":"class-Delete-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for Delete action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""},{"name":"key","type":"string","deprecated":false,"deprecationMessage":""}],"line":24,"rawdescription":"\\n\\nconstructor class for Delete action object\\n","jsdoctags":[{"name":{"pos":769,"end":771,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":763,"end":768,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"},{"name":{"pos":823,"end":826,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"key"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":817,"end":822,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - Key to be stored in the storage identifier
      • \\n
      \\n"}]},"properties":[],"description":"

      Class Delete Action for delete method

      \\n","rawdescription":"\\n\\n Class Delete Action for delete method\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LinkRegistrySelectors","id":"class-LinkRegistrySelectors-06d9e020c846f4521dcfb2095cd0e77e9f6aa4c734e6cd2f8081eef02dec593dc6ad455cf1a4d65585ecec0f48fb03db1829258cbc3db21e3c7603e10eb90644","file":"state/src/link-registry/link-registry.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UnionMember } from \'@hra-ui/utils/types\';\\nimport { Selector } from \'@ngxs/store\';\\nimport { LinkEntry, LinkId, LinkRegistryModel, LinkType } from \'./link-registry.model\';\\nimport { LinkRegistryQuery, LinkRegistryState } from \'./link-registry.state\';\\n\\n/**\\n * Selectors for Link Registry\\n */\\nexport class LinkRegistrySelectors {\\n /**\\n * Queries for a link entry\\n * @param state Current state\\n * @returns link query function\\n */\\n @Selector([LinkRegistryState])\\n static query(state: LinkRegistryModel): LinkRegistryQuery {\\n return (id, type) => this.getEntry(state, id, type);\\n }\\n\\n /**\\n * Gets a link entry by id and optionally type\\n * @param state link registry state\\n * @param id Entry id\\n * @param type Optional entry type\\n * @returns The entry if found, undefined otherwise\\n */\\n private static getEntry(\\n state: LinkRegistryModel,\\n id: LinkId,\\n type?: T\\n ): UnionMember | undefined {\\n const entry = state[id] as UnionMember;\\n const typeMatches = type === undefined || entry?.type === type;\\n return typeMatches ? entry : undefined;\\n }\\n}\\n","properties":[],"description":"

      Selectors for Link Registry

      \\n","rawdescription":"\\n\\nSelectors for Link Registry\\n","methods":[{"name":"query","args":[{"name":"state","type":"LinkRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"LinkRegistryQuery","typeParameters":[],"line":16,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries for a link entry\\n","description":"

      Queries for a link entry

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'LinkRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":382,"end":387,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"LinkRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":376,"end":381,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":408,"end":415,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      link query function

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LoadFromYaml","id":"class-LoadFromYaml-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote yaml file and add links

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":43,"rawdescription":"\\n\\nLoads a remote yaml file and add links\\n","jsdoctags":[{"name":{"pos":1145,"end":1148,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1139,"end":1144,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote yaml file url

      \\n"}]},"properties":[],"description":"

      Add links from a remote yaml file

      \\n","rawdescription":"\\nAdd links from a remote yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LoadFromYaml","id":"class-LoadFromYaml-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote yaml file and add resources

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":42,"rawdescription":"\\n\\nLoads a remote yaml file and add resources\\n","jsdoctags":[{"name":{"pos":1169,"end":1172,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1163,"end":1168,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote yaml file url

      \\n"}]},"properties":[],"description":"

      Add resources from a remote yaml file

      \\n","rawdescription":"\\nAdd resources from a remote yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"LoadFromYaml-1"},{"name":"LoadMarkdown","id":"class-LoadMarkdown-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote markdown file and add a resource

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":53,"rawdescription":"\\n\\nLoads a remote markdown file and add a resource\\n","jsdoctags":[{"name":{"pos":1456,"end":1458,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1450,"end":1455,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":1483,"end":1486,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1477,"end":1482,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote markdown file url

      \\n"}]},"properties":[],"description":"

      Add a markdown resource with data loaded from a remote file

      \\n","rawdescription":"\\nAdd a markdown resource with data loaded from a remote file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Navigate","id":"class-Navigate-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      navigate to a link

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"LinkId","deprecated":false,"deprecationMessage":""},{"name":"extras","type":"UrlCreationOptions","deprecated":false,"deprecationMessage":"","defaultValue":"{}"}],"line":53,"rawdescription":"\\n\\nnavigate to a link\\n","jsdoctags":[{"name":{"pos":1386,"end":1388,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"LinkId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1380,"end":1385,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      unqiue identifier of link

      \\n"},{"name":{"pos":1427,"end":1433,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"extras"},"type":"UrlCreationOptions","deprecated":false,"deprecationMessage":"","defaultValue":"{}","tagName":{"pos":1421,"end":1426,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options when building the navigation url

      \\n"}]},"properties":[],"description":"

      Navigate to an Internal or external url from Link id

      \\n","rawdescription":"\\nNavigate to an Internal or external url from Link id","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"ResourceRegistrySelectors","id":"class-ResourceRegistrySelectors-30ee3cdaa36f8226c7eb574e0036e13521cbd6aeb6308e5ace88b8f7fd329f9bf1e99352d718ddf22dd6071fcd1548ba48117f604dc8951e00c89e925255254d","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { Selector } from \'@ngxs/store\';\\nimport {\\n BuiltinResourceType,\\n getEntry,\\n ResourceEntry,\\n ResourceId,\\n ResourceRegistryModel,\\n ResourceType,\\n} from \'./resource-registry.model\';\\nimport { ResourceRegistryState } from \'./resource-registry.state\';\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.entry} */\\nexport type EntryQuery = (id: ResourceId, type: ResourceType) => T | undefined;\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.anyEntry} */\\nexport type AnyEntryQuery = (id: ResourceId) => ResourceEntry | undefined;\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.field} */\\nexport type FieldQuery = (\\n id: ResourceId,\\n type: ResourceType,\\n field: K,\\n defaultValue?: T[K]\\n) => T[K];\\n\\n/** Query function for resource data */\\nexport type DataQuery = (id: ResourceId) => T;\\n\\n/** Selectors for ResourceRegistry */\\nexport class ResourceRegistrySelectors {\\n /**\\n * Queries an entry by id and type\\n * @param state Current state\\n * @returns Entry query function\\n */\\n @Selector([ResourceRegistryState])\\n static entry(state: ResourceRegistryModel): EntryQuery {\\n return (id, type) => getEntry(state, id, type);\\n }\\n\\n /**\\n * Queries an entry by id\\n * @param state Current state\\n * @returns Any entry query function\\n */\\n @Selector([ResourceRegistryState])\\n static anyEntry(state: ResourceRegistryModel): AnyEntryQuery {\\n return (id) => getEntry(state, id);\\n }\\n\\n /**\\n * Queries a field of an entry\\n * @param state Current state\\n * @returns A field query function\\n */\\n @Selector([ResourceRegistryState])\\n static field(state: ResourceRegistryModel): FieldQuery {\\n return (id, type, field, defaultValue?) => {\\n const entry = getEntry(state, id, type);\\n return entry?.[field] ?? (defaultValue as never);\\n };\\n }\\n\\n /**\\n * Query for any text data\\n * @param state Current state\\n * @returns Text data query function\\n */\\n @Selector([ResourceRegistryState])\\n static anyText(state: ResourceRegistryModel): DataQuery {\\n return (id) => {\\n const entry = getEntry(state, id);\\n switch (entry?.type) {\\n case BuiltinResourceType.Markdown:\\n return entry.markdown;\\n\\n case BuiltinResourceType.Text:\\n return entry.text;\\n\\n default:\\n return \'\';\\n }\\n };\\n }\\n\\n /**\\n * Query for markdown data\\n * @param state Current state\\n * @returns Markdown data query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static markdown(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Markdown, \'markdown\', \'\');\\n }\\n\\n /**\\n * Query for text data\\n * @param state Current state\\n * @returns Text data query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static text(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Text, \'text\', \'\');\\n }\\n\\n /**\\n * Query for an url\\n * @param state Current state\\n * @returns Url query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static url(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Url, \'url\', \'\');\\n }\\n}\\n","properties":[],"description":"

      Selectors for ResourceRegistry

      \\n","rawdescription":"\\nSelectors for ResourceRegistry","methods":[{"name":"anyEntry","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"AnyEntryQuery","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries an entry by id\\n","description":"

      Queries an entry by id

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1315,"end":1320,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1309,"end":1314,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1341,"end":1348,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Any entry query function

      \\n"}]},{"name":"anyText","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":70,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for any text data\\n","description":"

      Query for any text data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1948,"end":1953,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1942,"end":1947,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1974,"end":1981,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Text data query function

      \\n"}]},{"name":"entry","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"EntryQuery","typeParameters":[],"line":37,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries an entry by id and type\\n","description":"

      Queries an entry by id and type

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1055,"end":1060,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1049,"end":1054,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1081,"end":1088,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Entry query function

      \\n"}]},{"name":"field","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"FieldQuery","typeParameters":[],"line":57,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries a field of an entry\\n","description":"

      Queries a field of an entry

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1578,"end":1583,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1572,"end":1577,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1604,"end":1611,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A field query function

      \\n"}]},{"name":"markdown","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":92,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for markdown data\\n","description":"

      Query for markdown data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2486,"end":2493,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Markdown data query function

      \\n"}]},{"name":"text","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":102,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for text data\\n","description":"

      Query for text data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2790,"end":2797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Text data query function

      \\n"}]},{"name":"url","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":112,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for an url\\n","description":"

      Query for an url

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":3075,"end":3082,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Url query function

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"ScopedDestructorSubject","id":"class-ScopedDestructorSubject-c4b53b823f2f6845a68f4b66881cc81070616d6b5124d0d203f80f1eeee060d84d1d05eab91b3a6e833ea4aef93cdf9d68ef0051d58b85ca5101c609dad76a05","file":"injectors/src/lib/on-destroy/destructor-subject.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ReplaySubject } from \'rxjs\';\\n\\n/** Object on which cleanup functions can be registered */\\nexport interface DestructorScope {\\n /**\\n * Register a cleanup function\\n * @param cb Cleanup callback function\\n */\\n onDestroy(cb: () => void): void;\\n}\\n\\n/**\\n * Determines whether an object is destructor scope like\\n * @param obj Value to test\\n * @returns true if the object seems to be a destructor scope, otherwise false\\n */\\nexport function isDestructorScopeLike(obj: unknown): obj is DestructorScope {\\n const isObject = typeof obj === \'object\' && obj !== null;\\n return isObject && \'onDestroy\' in obj && typeof obj.onDestroy === \'function\';\\n}\\n\\n/**\\n * A subject type that is associated with a destructor scope.\\n * When the cleanup function is run the subject emits a single\\n * undefined value and immediately completes\\n */\\nexport class ScopedDestructorSubject extends ReplaySubject {\\n /**\\n * Creates a new subject and attaches cleanup to the destructor scope\\n * @param scope Associated scope\\n */\\n constructor(scope: DestructorScope) {\\n super(1);\\n\\n scope.onDestroy(() => {\\n this.next();\\n this.complete();\\n });\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Creates a new subject and attaches cleanup to the destructor scope

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"scope","type":"DestructorScope","deprecated":false,"deprecationMessage":""}],"line":27,"rawdescription":"\\n\\nCreates a new subject and attaches cleanup to the destructor scope\\n","jsdoctags":[{"name":{"pos":985,"end":990,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"scope"},"type":"DestructorScope","deprecated":false,"deprecationMessage":"","tagName":{"pos":979,"end":984,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Associated scope

      \\n"}]},"properties":[],"description":"

      A subject type that is associated with a destructor scope.\\nWhen the cleanup function is run the subject emits a single\\nundefined value and immediately completes

      \\n","rawdescription":"\\n\\nA subject type that is associated with a destructor scope.\\nWhen the cleanup function is run the subject emits a single\\nundefined value and immediately completes\\n","methods":[],"indexSignatures":[],"extends":"ReplaySubject","inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Set","id":"class-Set-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for Set action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""},{"name":"key","type":"string","deprecated":false,"deprecationMessage":""},{"name":"value","type":"string","deprecated":false,"deprecationMessage":""}],"line":10,"rawdescription":"\\n\\nconstructor class for Set action object\\n","jsdoctags":[{"name":{"pos":310,"end":312,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":304,"end":309,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"},{"name":{"pos":364,"end":367,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"key"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":358,"end":363,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - Key to be stored in the storage identifier
      • \\n
      \\n"},{"name":{"pos":440,"end":445,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":434,"end":439,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - value to be stored with the key
      • \\n
      \\n"}]},"properties":[],"description":"

      Class Set Action for set method

      \\n","rawdescription":"\\n\\nClass Set Action for set method\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"SnapshotObserver","id":"class-SnapshotObserver-e299315c33d01b7c5b9d7d2f8238209af3dd388427c9dfe124370b0bfb7c5852050237aaa3ca958ccb01cd0160e3e0a8d823189c91a4e0415996d17a10fef041","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ErrorObserver, NextObserver } from \'rxjs\';\\n\\n/** Object indicating that no error has been emitted */\\nconst NO_ERROR_SENTINEL_OBJ = {};\\n\\n/** Observer storing the latest value from a snapshot stream */\\nexport class SnapshotObserver implements NextObserver, ErrorObserver {\\n /** The latest value */\\n private value?: T = undefined;\\n /** An error value if not equal to `NO_ERROR_SENTINEL` */\\n private errorValue: unknown = NO_ERROR_SENTINEL_OBJ;\\n\\n /**\\n * Gets the latest value or throw on errors\\n * @returns The latest value\\n * @throws If an error has been emitted\\n */\\n get(): T {\\n if (this.errorValue !== NO_ERROR_SENTINEL_OBJ) {\\n throw this.errorValue;\\n }\\n\\n return this.value as T;\\n }\\n\\n /**\\n * Handles value emits\\n * @param value The new value\\n */\\n next(value: T): void {\\n this.value = value;\\n }\\n\\n /**\\n * Handles error emits\\n * @param err The error value\\n */\\n error(err: unknown): void {\\n this.value = undefined;\\n this.errorValue = err;\\n }\\n}\\n","properties":[],"description":"

      Observer storing the latest value from a snapshot stream

      \\n","rawdescription":"\\nObserver storing the latest value from a snapshot stream","methods":[{"name":"error","args":[{"name":"err","type":"","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":38,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nHandles error emits\\n","description":"

      Handles error emits

      \\n","jsdoctags":[{"name":{"pos":895,"end":898,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"err"},"type":"","deprecated":false,"deprecationMessage":"","tagName":{"pos":889,"end":894,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The error value

      \\n"}]},{"name":"get","args":[],"optional":false,"returnType":"T","typeParameters":[],"line":18,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets the latest value or throw on errors\\n","description":"

      Gets the latest value or throw on errors

      \\n","jsdoctags":[{"tagName":{"pos":521,"end":528,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The latest value

      \\n"}]},{"name":"next","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":30,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nHandles value emits\\n","description":"

      Handles value emits

      \\n","jsdoctags":[{"name":{"pos":772,"end":777,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":766,"end":771,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The new value

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"implements":["NextObserver","ErrorObserver"]},{"name":"StorageSelectors","id":"class-StorageSelectors-0d938da881e0833812d0d5fc912c373462855e27613ce56879abba3b34f8959431587c9ddcb129155b8908fe5dfe59498c3fcf8f154c461cf4461e749b880df5","file":"state/src/storage/storage.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { Selector } from \'@ngxs/store\';\\nimport { StorageId } from \'./storage.model\';\\nimport { StorageState } from \'./storage.state\';\\n/**\\n * Storage selectors - class for retrieving storage types\\n */\\nexport class StorageSelectors {\\n /**\\n * returns the value stored in the key,value pair in the storageId given\\n * @returns (id,key) of the given storage id else undefined\\n */\\n @Selector([StorageState])\\n static get(): (id: StorageId, key: string) => string | undefined {\\n return (id, key) => StorageState.getStorage(id).getItem(key) ?? undefined;\\n }\\n /**\\n * returns the number of items in the given storage id stored\\n * @returns length of the given StorageId supplied\\n */\\n @Selector([StorageState])\\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\\n // @ts-ignore Allow selector name\\n static length(): (id: StorageId) => number | undefined {\\n return (id) => StorageState.getStorage(id).length;\\n }\\n}\\n","properties":[],"description":"

      Storage selectors - class for retrieving storage types

      \\n","rawdescription":"\\n\\nStorage selectors - class for retrieving storage types\\n","methods":[{"name":"get","args":[],"optional":false,"returnType":"string | undefined","typeParameters":[],"line":13,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nreturns the value stored in the key,value pair in the storageId given\\n","description":"

      returns the value stored in the key,value pair in the storageId given

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'StorageState\']"}],"modifierKind":[124],"jsdoctags":[{"tagName":{"pos":318,"end":325,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      (id,key) of the given storage id else undefined

      \\n"}]},{"name":"length","args":[],"optional":false,"returnType":"number | undefined","typeParameters":[],"line":23,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nreturns the number of items in the given storage id stored\\n","description":"

      returns the number of items in the given storage id stored

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'StorageState\']"}],"modifierKind":[124],"jsdoctags":[{"tagName":{"pos":636,"end":643,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      length of the given StorageId supplied

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]}],"directives":[{"name":"HoverDirective","id":"directive-HoverDirective-09dbb1791c1e8551d99aeb917f0d664e71738bebaebeed4601b7634f7980b675771162be311571667692c787d939ee9eeb40e57b4627c9cd75ebc926e849cc0d","file":"src/lib/hover/hover.directive.ts","type":"directive","description":"

      Hover overlay directive to be used across the application

      \\n","rawdescription":"\\nHover overlay directive to be used across the application","sourceCode":"import { ConnectionPositionPair, Overlay } from \'@angular/cdk/overlay\';\\nimport { TemplatePortal } from \'@angular/cdk/portal\';\\nimport { Directive, ElementRef, HostListener, inject, Input, TemplateRef, ViewContainerRef } from \'@angular/core\';\\n\\n/** Context passed to hover content templates */\\nexport interface HoverContext {\\n /** Data provided by the user for use inside the content template */\\n $implicit: T;\\n}\\n\\n/** Hover overlay directive to be used across the application */\\n@Directive({\\n selector: \'[hraHover]\',\\n standalone: true,\\n})\\nexport class HoverDirective {\\n /** Setter for the content to be displayed in the overlay */\\n @Input(\'hraHover\')\\n set content(content: TemplateRef>) {\\n this.portal = new TemplatePortal(content, this.viewContainerRef, this._data);\\n this.updateContent();\\n }\\n\\n /** Setter for the context that is to be displayed in the portal attached to the overlay */\\n @Input(\'hraHoverData\')\\n set data(data: T) {\\n this._data = { $implicit: data };\\n if (this.portal) {\\n this.portal.context = this._data;\\n this.updateContent();\\n }\\n }\\n\\n /** Reference to the element that the directive is attached to */\\n private readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /** Reference to the overlay that is created when the userhovers over the element along with its position setting */\\n readonly overlayRef = inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n });\\n\\n /** Reference view container that the directive is attached to */\\n private readonly viewContainerRef = inject(ViewContainerRef);\\n\\n /** Store the data that is passed into the data input property */\\n private _data?: HoverContext;\\n\\n /** Portal that is created to display the overlay */\\n portal?: TemplatePortal>;\\n\\n /** Function to handle the mouse over event to attach the portal and display the hover content */\\n @HostListener(\'mouseover\')\\n startHover(): void {\\n const { overlayRef, portal } = this;\\n if (!overlayRef.hasAttached() && portal) {\\n overlayRef.attach(portal);\\n }\\n }\\n\\n /** Function to handle the mouse out event to detach the portal */\\n @HostListener(\'mouseout\')\\n endHover(): void {\\n const { overlayRef } = this;\\n if (overlayRef.hasAttached()) {\\n overlayRef.detach();\\n }\\n }\\n\\n /** Function to handle the updation of overlay with up to date content when the input changes */\\n private updateContent(): void {\\n const { overlayRef, portal } = this;\\n if (overlayRef.hasAttached() && portal) {\\n overlayRef.detach();\\n overlayRef.attach(portal);\\n }\\n }\\n}\\n","selector":"[hraHover]","providers":[],"inputsClass":[{"name":"hraHover","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSetter for the content to be displayed in the overlay","description":"

      Setter for the content to be displayed in the overlay

      \\n","line":19,"type":"TemplateRef>","decorators":[]},{"name":"hraHoverData","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSetter for the context that is to be displayed in the portal attached to the overlay","description":"

      Setter for the context that is to be displayed in the portal attached to the overlay

      \\n","line":26,"type":"T","decorators":[]}],"outputsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[{"name":"mouseout","args":[],"argsDecorator":[],"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse out event to detach the portal","description":"

      Function to handle the mouse out event to detach the portal

      \\n","line":71},{"name":"mouseover","args":[],"argsDecorator":[],"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse over event to attach the portal and display the hover content","description":"

      Function to handle the mouse over event to attach the portal and display the hover content

      \\n","line":62}],"propertiesClass":[{"name":"overlayRef","defaultValue":"inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Reference to the overlay that is created when the userhovers over the element along with its position setting

      \\n","line":38,"rawdescription":"\\nReference to the overlay that is created when the userhovers over the element along with its position setting","modifierKind":[144]},{"name":"portal","deprecated":false,"deprecationMessage":"","type":"TemplatePortal>","optional":true,"description":"

      Portal that is created to display the overlay

      \\n","line":58,"rawdescription":"\\nPortal that is created to display the overlay"}],"methodsClass":[{"name":"endHover","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":71,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse out event to detach the portal","description":"

      Function to handle the mouse out event to detach the portal

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'mouseout\'"}]},{"name":"startHover","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":62,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse over event to attach the portal and display the hover content","description":"

      Function to handle the mouse over event to attach the portal and display the hover content

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'mouseover\'"}]}],"accessors":{"content":{"name":"content","setSignature":{"name":"content","type":"void","deprecated":false,"deprecationMessage":"","args":[{"name":"content","type":"TemplateRef>","deprecated":false,"deprecationMessage":""}],"returnType":"void","line":19,"rawdescription":"\\nSetter for the content to be displayed in the overlay","description":"

      Setter for the content to be displayed in the overlay

      \\n","jsdoctags":[{"name":"content","type":"TemplateRef>","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}},"data":{"name":"data","setSignature":{"name":"data","type":"void","deprecated":false,"deprecationMessage":"","args":[{"name":"data","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"void","line":26,"rawdescription":"\\nSetter for the context that is to be displayed in the portal attached to the overlay","description":"

      Setter for the context that is to be displayed in the portal attached to the overlay

      \\n","jsdoctags":[{"name":"data","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}}}},{"name":"LinkDirective","id":"directive-LinkDirective-3a72ea9951359ac8c2820ab17b233c7a92ebad446e52761c9694b431a28bc3d08c8fd1d8405a44a840bcdc6b63328cdbda54820dabf5f26d797e1be7d5cd3a23","file":"src/lib/link/link.directive.ts","type":"directive","description":"

      Link Directive for routing

      \\n","rawdescription":"\\nLink Directive for routing","sourceCode":"import { Directive, ElementRef, HostBinding, HostListener, inject, Injector, Input, OnChanges } from \'@angular/core\';\\nimport { ActivatedRoute, Params, QueryParamsHandling, UrlCreationOptions } from \'@angular/router\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { EMPTY_LINK, LinkEntry, LinkRegistryActions, LinkRegistrySelectors, LinkType } from \'@hra-ui/cdk/state\';\\nimport { createExternalUrl, createInternalUrl } from \'@hra-ui/utils\';\\n\\n/** Link Directive for routing */\\n@Directive({\\n selector: \'[hraLink]\',\\n standalone: true,\\n})\\nexport class LinkDirective implements OnChanges {\\n /** linkId with empty string as default value */\\n @Input(\'hraLink\') linkId = EMPTY_LINK;\\n\\n /** Query string parameters */\\n @Input() queryParams?: Params;\\n\\n /** How to handle existing query params */\\n @Input() queryParamsHandling?: QueryParamsHandling;\\n\\n /** Url fragment */\\n @Input() fragment?: string;\\n\\n /** Whether to preserve the existing fragment */\\n @Input() preserveFragment?: boolean;\\n\\n /** Nagivate relative to a route. Only affects internal links. */\\n @Input() relativeTo?: ActivatedRoute;\\n\\n /** href of the element */\\n @HostBinding(\'attr.href\') href?: string;\\n /** rel attribute of the element */\\n @HostBinding(\'attr.rel\') rel?: string;\\n /** target attribute of the element */\\n @HostBinding(\'attr.target\') target?: string;\\n\\n /** Reference to this component\'s injector */\\n private readonly injector = inject(Injector);\\n /** Element tag on which this directive is mounted */\\n private readonly tagName = inject>(ElementRef).nativeElement.tagName.toLowerCase();\\n /** Selector for querying the link registry state */\\n private readonly queryLink = selectQuerySnapshot(LinkRegistrySelectors.query);\\n /** Dispatch action to navigate to a url */\\n private readonly navigate = dispatch(LinkRegistryActions.Navigate);\\n\\n /** Link Entry */\\n private link?: LinkEntry;\\n\\n /** Whether the host element is an anchor */\\n private get isAnchorElement(): boolean {\\n return [\'a\', \'area\'].includes(this.tagName);\\n }\\n\\n /** Whether the host element deals with resource urls */\\n private get isResourceUrl(): boolean {\\n return [\'base\', \'link\'].includes(this.tagName);\\n }\\n\\n /** Collects query params and fragment options into a single object */\\n private get extras(): UrlCreationOptions {\\n const { link } = this;\\n return this.mergeExtras(link?.type === LinkType.Internal ? link.extras : undefined, this);\\n }\\n\\n /** Updates the current link/url based on the inputs */\\n ngOnChanges(): void {\\n this.updateLink();\\n }\\n\\n /**\\n * Triggers when a click action is performed on the element\\n * @param event type of event\\n * @returns true/false based on entry and element\\n */\\n @HostListener(\'click\', [\'$event\'])\\n onClick(event: MouseEvent): boolean {\\n const { link, linkId, isAnchorElement } = this;\\n if (!link) {\\n return true;\\n }\\n\\n if (isAnchorElement) {\\n const { button, ctrlKey, shiftKey, altKey, metaKey } = event;\\n if (link.type === LinkType.External || button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {\\n return true;\\n }\\n }\\n\\n this.navigate(linkId, this.extras);\\n return !isAnchorElement;\\n }\\n\\n /** Updates the link entry and bound attributes */\\n private updateLink(): void {\\n const link = (this.link = this.queryLink(this.linkId));\\n ({ href: this.href, rel: this.rel, target: this.target } = this.getLinkAttributes(link));\\n }\\n\\n /**\\n * Gets the new values for different attributes bound to the host element\\n * @param link Current link entry\\n * @returns New attributes values to bind on the host element\\n */\\n private getLinkAttributes(link?: LinkEntry): { href?: string; rel?: string; target?: string } {\\n const { injector, extras, isResourceUrl } = this;\\n switch (link?.type) {\\n case LinkType.Internal:\\n return { href: createInternalUrl(injector, link.commands, extras, isResourceUrl) };\\n\\n case LinkType.External:\\n return { ...link, href: createExternalUrl(link.url, extras) };\\n\\n default:\\n return {};\\n }\\n }\\n\\n /**\\n * Merges two UrlCreationOptions.\\n * Undefined values in the second set does not override values from the first set.\\n * @param opt1 First set of options\\n * @param opt2 Second set of options\\n * @returns Merged options\\n */\\n private mergeExtras(opt1: UrlCreationOptions | undefined, opt2: UrlCreationOptions): UrlCreationOptions {\\n const result = { ...opt1 };\\n const mergeKey = (key: K) => {\\n if (opt2[key] !== undefined) {\\n result[key] = opt2[key];\\n }\\n };\\n\\n mergeKey(\'queryParams\');\\n mergeKey(\'queryParamsHandling\');\\n mergeKey(\'fragment\');\\n mergeKey(\'preserveFragment\');\\n mergeKey(\'relativeTo\');\\n return result;\\n }\\n}\\n","selector":"[hraLink]","providers":[],"inputsClass":[{"name":"fragment","deprecated":false,"deprecationMessage":"","rawdescription":"\\nUrl fragment","description":"

      Url fragment

      \\n","line":23,"type":"string","decorators":[]},{"name":"hraLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nlinkId with empty string as default value","description":"

      linkId with empty string as default value

      \\n","line":14,"type":"any","decorators":[]},{"name":"preserveFragment","deprecated":false,"deprecationMessage":"","rawdescription":"\\nWhether to preserve the existing fragment","description":"

      Whether to preserve the existing fragment

      \\n","line":26,"type":"boolean","decorators":[]},{"name":"queryParams","deprecated":false,"deprecationMessage":"","rawdescription":"\\nQuery string parameters","description":"

      Query string parameters

      \\n","line":17,"type":"Params","decorators":[]},{"name":"queryParamsHandling","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHow to handle existing query params","description":"

      How to handle existing query params

      \\n","line":20,"type":"QueryParamsHandling","decorators":[]},{"name":"relativeTo","deprecated":false,"deprecationMessage":"","rawdescription":"\\nNagivate relative to a route. Only affects internal links.","description":"

      Nagivate relative to a route. Only affects internal links.

      \\n","line":29,"type":"ActivatedRoute","decorators":[]}],"outputsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[{"name":"attr.href","deprecated":false,"deprecationMessage":"","rawdescription":"\\nhref of the element","description":"

      href of the element

      \\n","line":32,"type":"string","decorators":[]},{"name":"attr.rel","deprecated":false,"deprecationMessage":"","rawdescription":"\\nrel attribute of the element","description":"

      rel attribute of the element

      \\n","line":34,"type":"string","decorators":[]},{"name":"attr.target","deprecated":false,"deprecationMessage":"","rawdescription":"\\ntarget attribute of the element","description":"

      target attribute of the element

      \\n","line":36,"type":"string","decorators":[]}],"hostListeners":[{"name":"click","args":[{"name":"event","type":"MouseEvent","deprecated":false,"deprecationMessage":""}],"argsDecorator":["$event"],"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nTriggers when a click action is performed on the element\\n","description":"

      Triggers when a click action is performed on the element

      \\n","jsdoctags":[{"pos":2659,"end":2691,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":338,"tagName":{"pos":2660,"end":2665,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      type of event

      \\n","name":{"pos":2666,"end":2671,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"event"},"isNameFirst":true,"isBracketed":false},{"pos":2691,"end":2741,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":339,"tagName":{"pos":2692,"end":2699,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true/false based on entry and element

      \\n"}],"line":77}],"propertiesClass":[{"name":"href","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      href of the element

      \\n","line":32,"rawdescription":"\\nhref of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.href\'"}]},{"name":"rel","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      rel attribute of the element

      \\n","line":34,"rawdescription":"\\nrel attribute of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.rel\'"}]},{"name":"target","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      target attribute of the element

      \\n","line":36,"rawdescription":"\\ntarget attribute of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.target\'"}]}],"methodsClass":[{"name":"onClick","args":[{"name":"event","type":"MouseEvent","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"boolean","typeParameters":[],"line":77,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nTriggers when a click action is performed on the element\\n","description":"

      Triggers when a click action is performed on the element

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'click\', [\'$event\']"}],"jsdoctags":[{"name":{"pos":2666,"end":2671,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"event"},"type":"MouseEvent","deprecated":false,"deprecationMessage":"","tagName":{"pos":2660,"end":2665,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      type of event

      \\n"},{"tagName":{"pos":2692,"end":2699,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true/false based on entry and element

      \\n"}]}],"implements":["OnChanges"]}],"components":[{"name":"DestroyHostComponent","id":"component-DestroyHostComponent-673df9acfa9566a60f8f4a880379e6b99e54ae5d5ad511c7cd7a96cae5e2bdc436037556a9ad3ca44bdc0a5f74c3a300031212bae7e0df53e349d8e34d30dd92","file":"injectors/src/lib/on-destroy/destroy-host.component.ts","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-destroy-host","styleUrls":[],"styles":[":host { display: none }"],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"el","defaultValue":"inject(ElementRef).nativeElement","deprecated":false,"deprecationMessage":"","type":"Element","optional":false,"description":"

      Reference to own dom element

      \\n","line":14,"rawdescription":"\\nReference to own dom element","modifierKind":[144]}],"methodsClass":[{"name":"create","args":[{"name":"container","type":"ViewContainerRef","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"ComponentRef","typeParameters":[],"line":22,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nCreates a new DestroyHostComponent inside the provided container.\\nThe element is inserted as the first child (index \'0\') in the container.\\n","description":"

      Creates a new DestroyHostComponent inside the provided container.\\nThe element is inserted as the first child (index '0') in the container.

      \\n","modifierKind":[124],"jsdoctags":[{"name":{"pos":661,"end":670,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"container"},"type":"ViewContainerRef","deprecated":false,"deprecationMessage":"","tagName":{"pos":655,"end":660,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      View in which to create the element

      \\n"},{"tagName":{"pos":713,"end":720,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The ComponentRef of the newly inserted element

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component used when attaching destroy lifecycle observables to a component/directive/pipe

      \\n","rawdescription":"\\n\\nComponent used when attaching destroy lifecycle observables to a component/directive/pipe\\n","type":"component","sourceCode":"import { AfterViewInit, Component, ComponentRef, ElementRef, inject, ViewContainerRef } from \'@angular/core\';\\n\\n/**\\n * Component used when attaching destroy lifecycle observables to a component/directive/pipe\\n */\\n@Component({\\n selector: \'hra-destroy-host\',\\n standalone: true,\\n template: \'\',\\n styles: [\':host { display: none }\'],\\n})\\nexport class DestroyHostComponent implements AfterViewInit {\\n /** Reference to own dom element */\\n readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /**\\n * Creates a new DestroyHostComponent inside the provided container.\\n * The element is inserted as the first child (index \'0\') in the container.\\n * @param container View in which to create the element\\n * @returns The ComponentRef of the newly inserted element\\n */\\n static create(container: ViewContainerRef): ComponentRef {\\n return container.createComponent(DestroyHostComponent, { index: 0 });\\n }\\n\\n /** Disconnects the component from the dom tree */\\n ngAfterViewInit(): void {\\n this.el.remove();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":"","stylesData":":host { display: none }\\n","implements":["AfterViewInit"]}],"modules":[{"name":"CdkStateModule","id":"module-CdkStateModule-a93bb19297573c6c6708763b071fc9fb4b27e887170144694df55a5d5749e030c9dd51938c8c23a8844e3888ac2176fede6d8f95d54f41aead08116fa6c152d4","description":"","deprecationMessage":"","deprecated":false,"file":"state/src/state.module.ts","methods":[],"sourceCode":"import { NgModule } from \'@angular/core\';\\nimport { NgxsModule } from \'@ngxs/store\';\\nimport { LinkRegistryState } from \'./link-registry\';\\nimport { ResourceRegistryState } from \'./resource-registry\';\\nimport { StorageState } from \'./storage\';\\n\\n@NgModule({\\n imports: [NgxsModule.forFeature([LinkRegistryState, ResourceRegistryState, StorageState])],\\n})\\nexport class CdkStateModule {}\\n","children":[{"type":"providers","elements":[]},{"type":"declarations","elements":[]},{"type":"imports","elements":[]},{"type":"exports","elements":[]},{"type":"bootstrap","elements":[]},{"type":"classes","elements":[]}]}],"miscellaneous":{"variables":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'LinkRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'ResourceRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'Storage\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"actionTypeRegistry","ctype":"miscellaneous","subtype":"variable","file":"state/src/actions/action-type-registry.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new Set()","rawdescription":"Registry of action types","description":"

      Registry of action types

      \\n"},{"name":"BUILTIN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.discriminatedUnion(\'type\', [MARKDOWN_ENTRY, TEXT_ENTRY, URL_ENTRY])","rawdescription":"Union of all builtin entries","description":"

      Union of all builtin entries

      \\n"},{"name":"BUILTIN_TYPE_VALUES","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"Object.values(RawBuiltinResourceType)","rawdescription":"Builtin type strings as an array","description":"

      Builtin type strings as an array

      \\n"},{"name":"BuiltinResourceType","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"RawBuiltinResourceType as BuiltinTypes","rawdescription":"Builtin resource types","description":"

      Builtin resource types

      \\n"},{"name":"CUSTOM_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({ type: CUSTOM_ENTRY_TYPE }).passthrough()","rawdescription":"Custom entry","description":"

      Custom entry

      \\n"},{"name":"CUSTOM_ENTRY_TYPE","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .refine((val) => !isBuiltinType(val), \'Invalid builtin resource format\')\\n .transform>(createCustomType)","rawdescription":"Custom entry type validator with transformation","description":"

      Custom entry type validator with transformation

      \\n"},{"name":"CUSTOM_TYPE_PREFIX","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"string","defaultValue":"\'custom:\'","rawdescription":"Prefix of all custom types","description":"

      Prefix of all custom types

      \\n"},{"name":"DESTRUCTOR_CACHE","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/on-destroy/on-destroy.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new WeakMap>()","rawdescription":"Cached destructor observables","description":"

      Cached destructor observables

      \\n"},{"name":"EMPTY_LINK","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"createLinkId(\'@@__EMPTY__\')","rawdescription":"Empty link id","description":"

      Empty link id

      \\n"},{"name":"EXTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.External),\\n url: z.string(),\\n rel: z.string().default(\'noopener\'),\\n target: z.string(),\\n })\\n .partial({ rel: true, target: true })","rawdescription":"Type for external link entry","description":"

      Type for external link entry

      \\n"},{"name":"INTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.Internal),\\n commands: z.any().array(),\\n extras: z\\n .object({\\n queryParams: z.record(z.any()).nullable(),\\n fragment: z.string(),\\n queryParamsHandling: z.enum([\'merge\', \'preserve\', \'\']).nullable(),\\n preserveFragment: z.boolean(),\\n onSameUrlNavigation: z.literal(\'reload\'),\\n skipLocationChange: z.boolean(),\\n replaceUrl: z.boolean(),\\n })\\n .partial(),\\n })\\n .partial({ extras: true })","rawdescription":"Type for internal link entry","description":"

      Type for internal link entry

      \\n"},{"name":"LINK_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(\\n z\\n .string()\\n .transform((id) => `LinkId:\'${id}\'`)\\n .brand(\'LinkId\'),\\n z.discriminatedUnion(\'type\', [EXTERNAL_LINK_SCHEMA, INTERNAL_LINK_SCHEMA])\\n)","rawdescription":"Schema for link registry","description":"

      Schema for link registry

      \\n"},{"name":"MARKDOWN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Markdown),\\n markdown: z.string(),\\n})","rawdescription":"Markdown data","description":"

      Markdown data

      \\n"},{"name":"NO_ERROR_SENTINEL_OBJ","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"object","defaultValue":"{}","rawdescription":"Object indicating that no error has been emitted","description":"

      Object indicating that no error has been emitted

      \\n"},{"name":"RESOURCE_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.union([BUILTIN_ENTRY, CUSTOM_ENTRY])","rawdescription":"Builtin or custom entries","description":"

      Builtin or custom entries

      \\n"},{"name":"RESOURCE_ID","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .transform((id) => `ResourceId:\'${id}\'`)\\n .brand(\'ResourceId\')","rawdescription":"Resource identifier validator with transformation","description":"

      Resource identifier validator with transformation

      \\n"},{"name":"RESOURCE_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(RESOURCE_ID, RESOURCE_ENTRY)","rawdescription":"State schema","description":"

      State schema

      \\n"},{"name":"TEXT_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Text),\\n text: z.string(),\\n})","rawdescription":"Text data","description":"

      Text data

      \\n"},{"name":"URL_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Url),\\n url: z.string(),\\n})","rawdescription":"External url","description":"

      External url

      \\n"}],"functions":[{"name":"Action","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new base action with a specified type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":685,"end":689,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":679,"end":684,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type

      \\n"},{"tagName":{"pos":706,"end":713,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A base action class

      \\n"}]},{"name":"ActionGroup","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory that adds a common group string to each action type

      \\n","args":[{"name":"group","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":421,"end":426,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"group"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Common action type group

      \\n"},{"tagName":{"pos":456,"end":463,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An action factory

      \\n"}]},{"name":"assertUniqueActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Asserts that an action type is unique

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":141,"end":145,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":135,"end":140,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"createActionFactory","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory function

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":""}],"returnType":"A","jsdoctags":[{"name":{"pos":500,"end":504,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":494,"end":499,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor

      \\n"},{"name":{"pos":534,"end":543,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","tagName":{"pos":528,"end":533,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Initial bound arguments

      \\n"},{"tagName":{"pos":572,"end":579,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A factory function creating a new action on each call

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>>>","jsdoctags":[{"name":{"pos":4708,"end":4712,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":4702,"end":4707,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"tagName":{"pos":4735,"end":4742,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type with a payload. The payload should be\\nspecified using the {@link payload} function

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""},{"name":"payload","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":5138,"end":5142,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":5132,"end":5137,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"name":{"pos":5171,"end":5178,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"payload"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":5165,"end":5170,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Payload type

      \\n"},{"tagName":{"pos":5032,"end":5039,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"

      const MyResourceType = createCustomType('my-type', payload<{ value: number }>());

      \\n"},{"tagName":{"pos":5196,"end":5203,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Implementation of createCustomType overloads

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createLinkId","file":"state/src/link-registry/link-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      function to createa unique link ids

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"LinkId","jsdoctags":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createResourceId","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new resource identifier

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":4258,"end":4260,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4252,"end":4257,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw identifier

      \\n"},{"tagName":{"pos":4280,"end":4287,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A resource id

      \\n"}]},{"name":"dispatch","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"A","jsdoctags":[{"name":{"pos":1721,"end":1725,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1715,"end":1720,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":1779,"end":1788,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":1773,"end":1778,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":1835,"end":1842,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatch$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.\\nEach call to the wrapper returns an observable that emits the action instance once the\\ndispatch action has completed.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":2426,"end":2430,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":2420,"end":2425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":2484,"end":2493,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2478,"end":2483,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":2540,"end":2547,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatchAction","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns passed actions unchanged

      \\n","args":[],"returnType":"A","jsdoctags":[{"tagName":{"pos":3054,"end":3061,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchAction$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns an observable that emits the passed actions when the dispatch has finished

      \\n","args":[],"returnType":"Observable
      ","jsdoctags":[{"tagName":{"pos":3418,"end":3425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchImpl","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Common dispatch functionality used to implement all dispatch functions

      \\n","args":[{"name":"actionFactory","deprecated":false,"deprecationMessage":""},{"name":"resultHandler","deprecated":false,"deprecationMessage":""}],"returnType":"R","jsdoctags":[{"name":{"pos":976,"end":989,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"actionFactory"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":970,"end":975,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Creates an action or array of actions from the user provided arguments

      \\n"},{"name":{"pos":1071,"end":1084,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"resultHandler"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1065,"end":1070,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Selects the output value from the action and the dispatch observable

      \\n"},{"tagName":{"pos":1158,"end":1165,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new dispatch function taking user arguments, dispatches actions, and returns a value

      \\n"}]},{"name":"findDestructorScope","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds the nearest destructor scope object in the current injection context

      \\n","args":[],"returnType":"DestructorScope","jsdoctags":[{"tagName":{"pos":1267,"end":1274,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The scope on which cleanup can be attached

      \\n"}]},{"name":"findStableKeyObject","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds a stable object in the current injection context to be\\nused as a key in the destructor cache

      \\n","args":[],"returnType":"object","jsdoctags":[{"tagName":{"pos":912,"end":919,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An object

      \\n"}]},{"name":"firstDefinedValue","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Get the first defined value returned by a generator

      \\n","args":[{"name":"genFn","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":441,"end":446,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"genFn"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":435,"end":440,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Generator function taking no arguments

      \\n"},{"tagName":{"pos":490,"end":497,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The first non-null value

      \\n"}]},{"name":"getEntry","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Internal helper function for getting an entry from the state

      \\n","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""},{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"type","type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"T | undefined","jsdoctags":[{"name":{"pos":5670,"end":5675,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":5664,"end":5669,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state snapshot

      \\n"},{"name":{"pos":5709,"end":5711,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":5703,"end":5708,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":5734,"end":5738,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":5728,"end":5733,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional entry type

      \\n"},{"tagName":{"pos":5763,"end":5770,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The entry object it exists and has the correct type, otherwise undefined

      \\n"}]},{"name":"identity","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Identity function returning the first argument passed

      \\n","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"injectDestroy$","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Inject an observable that emits and completes at the same time as the component, directive, pipe, or service\\nit is injected into. It can be used to control the lifetime of other observables using\\nthe takeUntil pipe, and to build other complex injection functions.

      \\n

      Caveats:

      \\n
        \\n
      • There are NO guarantees about whether the returned observable will emit and complete\\nbefore or after the regular ngOnDestroy lifecycle hook
      • \\n
      • For root and module level services the observable may never complete unless\\nthe containing module is explicitly destroyed, so don't rely on it for important operations
      • \\n
      • Components, directives, pipe, and services that manipulate the ViewContainerRef MUST\\ntake care to maintain the view controlling the lifecycle of the observable. Failure\\nto do so may result in early emit and completion of the returned observable
      • \\n
      \\n

      Based on comment on https://github.com/angular/angular/issues/10185\\nMostly https://github.com/angular/angular/issues/10185#issuecomment-1165545544 and\\nhttps://github.com/angular/angular/issues/10185#issuecomment-1199063426

      \\n","args":[],"returnType":"Observable","jsdoctags":[{"tagName":{"pos":2694,"end":2701,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that emits and completes when the component/directive/etc. is destroyed

      \\n"}]},{"name":"isBuiltinType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type string has builtin support

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":3572,"end":3576,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3566,"end":3571,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3597,"end":3604,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is one of the builtin types, otherwise false

      \\n"}]},{"name":"isCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type is a custom resource type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":3881,"end":3885,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3875,"end":3880,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3906,"end":3913,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is a custom type, otherwise false

      \\n"}]},{"name":"isDestructorScopeLike","file":"injectors/src/lib/on-destroy/destructor-subject.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether an object is destructor scope like

      \\n","args":[{"name":"obj","deprecated":false,"deprecationMessage":""}],"returnType":"DestructorScope","jsdoctags":[{"name":{"pos":328,"end":331,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"obj"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":322,"end":327,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Value to test

      \\n"},{"tagName":{"pos":350,"end":357,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true if the object seems to be a destructor scope, otherwise false

      \\n"}]},{"name":"markForCheck","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Marks a view for change detection whenever a new value is emitted

      \\n","args":[{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"MonoTypeOperatorFunction","jsdoctags":[{"name":{"pos":689,"end":696,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":683,"end":688,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options to explicitly disable marking

      \\n"},{"tagName":{"pos":739,"end":746,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A rxjs operator

      \\n"}]},{"name":"payload","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Helper function used to specify the payload format when creating custom types

      \\n","args":[],"returnType":"ResourceEntryPayload","jsdoctags":[{"tagName":{"pos":4477,"end":4484,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A custom payload type

      \\n"}]},{"name":"pipeActionInstance","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Maps all emits to an action value

      \\n","args":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":""},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":""}],"returnType":"Observable","jsdoctags":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"registerActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Registers an action type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":421,"end":425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"select$","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an observable emitting parts of the state. The observable's lifetime\\nis automatically tied to the injection context where this is called.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":1313,"end":1321,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":1307,"end":1312,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State selection function or token

      \\n"},{"name":{"pos":1366,"end":1373,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1360,"end":1365,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Additional select options

      \\n"},{"tagName":{"pos":1404,"end":1411,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable of the selected state

      \\n"}]},{"name":"selectQuerySnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that can be called with the same arguments as the query selector\\nand returns the latest value each time. Automatically marks components, directives, or pipes\\nfor change detection whenever a new value is available. Note that since typescript has yet to\\nimplement support for higher order generics there is sometimes a need to specialize the\\nreturned query function with the correct arguments and return type. This can be done as shown\\nin the examples.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"SelectQuery","jsdoctags":[{"name":{"pos":2433,"end":2441,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":2427,"end":2432,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store query selector

      \\n"},{"name":{"pos":2473,"end":2482,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2467,"end":2472,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional bound query arguments

      \\n"},{"tagName":{"pos":1631,"end":1638,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"

      \\nclass Component {\\n...\\n// Return type: () => string\\nreadonly markdown = querySelectSnapshot(ResourceRegistrySelectors.markdown, id);\\n// Return type: (id: ResourceId) => string\\nreadonly markdownById = querySelectSnapshot(ResourceRegistrySelectors.markdown);\\n...\\n}"},{"tagName":{"pos":1975,"end":1982,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"\\nclass Component {\\n...\\n// Return type: () => number[]\\nreadonly points = querySelectSnapshot(ResourceRegistrySelectors.field, id, type, \'points\', []);\\n// Return type: (field: string, defaultValue: string) => string\\nreadonly getStringField = querySelectSnapshot(ResourceRegistrySelectors.field, id, type);\\n}"},{"tagName":{"pos":2518,"end":2525,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function taking the same arguments as the query selector (excluding bound arguments)

      \\n"}]},{"name":"selectSnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that returns the latest snapshot value each time it is called\\nAutomatically marks components, directives, or pipes for change detection whenever\\na new value is available

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":819,"end":827,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":813,"end":818,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store data selector

      \\n"},{"tagName":{"pos":852,"end":859,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function

      \\n"}]}],"typealiases":[{"name":"AnyEntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.anyEntry}

      \\n","kind":178},{"name":"BuiltinTypes","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Maps raw builtin type strings to ResourceType

      \\n","kind":194},{"name":"CustomResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Typed custom resource entry

      \\n","kind":187},{"name":"CustomResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":" `custom:${T}`","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Custom entry types

      \\n","kind":197},{"name":"DataQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for resource data

      \\n","kind":178},{"name":"EntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.entry}

      \\n","kind":178},{"name":"ExternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for external link entry

      \\n","kind":177},{"name":"ExtractBuiltinEntryType","ctype":"miscellaneous","subtype":"typealias","rawtype":"UnionMember | type | T>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Extracts the builtin entry with type T

      \\n","kind":177},{"name":"FieldQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.field}

      \\n","kind":178},{"name":"InternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for internal link entry

      \\n","kind":177},{"name":"LinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      entry for link registry

      \\n","kind":177},{"name":"LinkId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type for unique identifier for link

      \\n","kind":177},{"name":"LinkRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for State Context of LinkRegistry

      \\n","kind":177},{"name":"LinkRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for LinkRegistry State

      \\n","kind":177},{"name":"LinkRegistryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/link-registry/link-registry.state.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for link entry optionally with type specified

      \\n","kind":178},{"name":"ResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Any resource entry

      \\n","kind":177},{"name":"ResourceEntryPayload","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Payload type used when creating custom types

      \\n","kind":187},{"name":"ResourceId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource identifier

      \\n","kind":177},{"name":"ResourceRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Context type for action handlers

      \\n","kind":177},{"name":"ResourceRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State data model

      \\n","kind":177},{"name":"ResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource type string with entry typings

      \\n","kind":187},{"name":"RestArgs","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Get remaining arguments after applying bound arguments

      \\n","kind":188},{"name":"SelectQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Function type returned by {@link selectQuerySnapshot}

      \\n","kind":178},{"name":"StateSelector","ctype":"miscellaneous","subtype":"typealias","rawtype":" | StateToken","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","description":"

      Selector type for select style functions

      \\n","kind":186},{"name":"StorageContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Helper alias for action handler's ctx argument

      \\n","kind":177},{"name":"StorageModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"Record","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type alias for the array of Storage objects

      \\n","kind":177}],"enumerations":[{"name":"LinkType","childs":[{"name":"Internal","deprecated":false,"deprecationMessage":"","value":"internal"},{"name":"External","deprecated":false,"deprecationMessage":"","value":"external"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Types for Link

      \\n","file":"state/src/link-registry/link-registry.model.ts"},{"name":"RawBuiltinResourceType","childs":[{"name":"Markdown","deprecated":false,"deprecationMessage":"","value":"markdown"},{"name":"Text","deprecated":false,"deprecationMessage":"","value":"text"},{"name":"Url","deprecated":false,"deprecationMessage":"","value":"url"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Raw builtin type strings

      \\n","file":"state/src/resource-registry/resource-registry.model.ts"},{"name":"StorageId","childs":[{"name":"Local","deprecated":false,"deprecationMessage":"","value":"local"},{"name":"Session","deprecated":false,"deprecationMessage":"","value":"session"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      StorageId - enum with values as Local, Session - identifier for storage types

      \\n","file":"state/src/storage/storage.model.ts"}],"groupedVariables":{"state/src/link-registry/link-registry.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'LinkRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/resource-registry/resource-registry.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'ResourceRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/storage/storage.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'Storage\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/actions/action-type-registry.ts":[{"name":"actionTypeRegistry","ctype":"miscellaneous","subtype":"variable","file":"state/src/actions/action-type-registry.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new Set()","rawdescription":"Registry of action types","description":"

      Registry of action types

      \\n"}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"BUILTIN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.discriminatedUnion(\'type\', [MARKDOWN_ENTRY, TEXT_ENTRY, URL_ENTRY])","rawdescription":"Union of all builtin entries","description":"

      Union of all builtin entries

      \\n"},{"name":"BUILTIN_TYPE_VALUES","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"Object.values(RawBuiltinResourceType)","rawdescription":"Builtin type strings as an array","description":"

      Builtin type strings as an array

      \\n"},{"name":"BuiltinResourceType","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"RawBuiltinResourceType as BuiltinTypes","rawdescription":"Builtin resource types","description":"

      Builtin resource types

      \\n"},{"name":"CUSTOM_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({ type: CUSTOM_ENTRY_TYPE }).passthrough()","rawdescription":"Custom entry","description":"

      Custom entry

      \\n"},{"name":"CUSTOM_ENTRY_TYPE","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .refine((val) => !isBuiltinType(val), \'Invalid builtin resource format\')\\n .transform>(createCustomType)","rawdescription":"Custom entry type validator with transformation","description":"

      Custom entry type validator with transformation

      \\n"},{"name":"CUSTOM_TYPE_PREFIX","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"string","defaultValue":"\'custom:\'","rawdescription":"Prefix of all custom types","description":"

      Prefix of all custom types

      \\n"},{"name":"MARKDOWN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Markdown),\\n markdown: z.string(),\\n})","rawdescription":"Markdown data","description":"

      Markdown data

      \\n"},{"name":"RESOURCE_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.union([BUILTIN_ENTRY, CUSTOM_ENTRY])","rawdescription":"Builtin or custom entries","description":"

      Builtin or custom entries

      \\n"},{"name":"RESOURCE_ID","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .transform((id) => `ResourceId:\'${id}\'`)\\n .brand(\'ResourceId\')","rawdescription":"Resource identifier validator with transformation","description":"

      Resource identifier validator with transformation

      \\n"},{"name":"RESOURCE_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(RESOURCE_ID, RESOURCE_ENTRY)","rawdescription":"State schema","description":"

      State schema

      \\n"},{"name":"TEXT_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Text),\\n text: z.string(),\\n})","rawdescription":"Text data","description":"

      Text data

      \\n"},{"name":"URL_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Url),\\n url: z.string(),\\n})","rawdescription":"External url","description":"

      External url

      \\n"}],"injectors/src/lib/on-destroy/on-destroy.ts":[{"name":"DESTRUCTOR_CACHE","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/on-destroy/on-destroy.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new WeakMap>()","rawdescription":"Cached destructor observables","description":"

      Cached destructor observables

      \\n"}],"state/src/link-registry/link-registry.model.ts":[{"name":"EMPTY_LINK","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"createLinkId(\'@@__EMPTY__\')","rawdescription":"Empty link id","description":"

      Empty link id

      \\n"},{"name":"EXTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.External),\\n url: z.string(),\\n rel: z.string().default(\'noopener\'),\\n target: z.string(),\\n })\\n .partial({ rel: true, target: true })","rawdescription":"Type for external link entry","description":"

      Type for external link entry

      \\n"},{"name":"INTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.Internal),\\n commands: z.any().array(),\\n extras: z\\n .object({\\n queryParams: z.record(z.any()).nullable(),\\n fragment: z.string(),\\n queryParamsHandling: z.enum([\'merge\', \'preserve\', \'\']).nullable(),\\n preserveFragment: z.boolean(),\\n onSameUrlNavigation: z.literal(\'reload\'),\\n skipLocationChange: z.boolean(),\\n replaceUrl: z.boolean(),\\n })\\n .partial(),\\n })\\n .partial({ extras: true })","rawdescription":"Type for internal link entry","description":"

      Type for internal link entry

      \\n"},{"name":"LINK_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(\\n z\\n .string()\\n .transform((id) => `LinkId:\'${id}\'`)\\n .brand(\'LinkId\'),\\n z.discriminatedUnion(\'type\', [EXTERNAL_LINK_SCHEMA, INTERNAL_LINK_SCHEMA])\\n)","rawdescription":"Schema for link registry","description":"

      Schema for link registry

      \\n"}],"injectors/src/lib/select/snapshot-observer.ts":[{"name":"NO_ERROR_SENTINEL_OBJ","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"object","defaultValue":"{}","rawdescription":"Object indicating that no error has been emitted","description":"

      Object indicating that no error has been emitted

      \\n"}]},"groupedFunctions":{"state/src/actions/actions.ts":[{"name":"Action","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new base action with a specified type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":685,"end":689,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":679,"end":684,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type

      \\n"},{"tagName":{"pos":706,"end":713,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A base action class

      \\n"}]},{"name":"ActionGroup","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory that adds a common group string to each action type

      \\n","args":[{"name":"group","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":421,"end":426,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"group"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Common action type group

      \\n"},{"tagName":{"pos":456,"end":463,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An action factory

      \\n"}]}],"state/src/actions/action-type-registry.ts":[{"name":"assertUniqueActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Asserts that an action type is unique

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":141,"end":145,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":135,"end":140,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"registerActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Registers an action type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":421,"end":425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]}],"injectors/src/lib/dispatch/dispatch.ts":[{"name":"createActionFactory","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory function

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":""}],"returnType":"A","jsdoctags":[{"name":{"pos":500,"end":504,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":494,"end":499,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor

      \\n"},{"name":{"pos":534,"end":543,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","tagName":{"pos":528,"end":533,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Initial bound arguments

      \\n"},{"tagName":{"pos":572,"end":579,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A factory function creating a new action on each call

      \\n"}]},{"name":"dispatch","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"A","jsdoctags":[{"name":{"pos":1721,"end":1725,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1715,"end":1720,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":1779,"end":1788,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":1773,"end":1778,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":1835,"end":1842,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatch$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.\\nEach call to the wrapper returns an observable that emits the action instance once the\\ndispatch action has completed.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"Observable
      ","jsdoctags":[{"name":{"pos":2426,"end":2430,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":2420,"end":2425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":2484,"end":2493,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2478,"end":2483,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":2540,"end":2547,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatchAction","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns passed actions unchanged

      \\n","args":[],"returnType":"A","jsdoctags":[{"tagName":{"pos":3054,"end":3061,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchAction$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns an observable that emits the passed actions when the dispatch has finished

      \\n","args":[],"returnType":"Observable
      ","jsdoctags":[{"tagName":{"pos":3418,"end":3425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchImpl","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Common dispatch functionality used to implement all dispatch functions

      \\n","args":[{"name":"actionFactory","deprecated":false,"deprecationMessage":""},{"name":"resultHandler","deprecated":false,"deprecationMessage":""}],"returnType":"R","jsdoctags":[{"name":{"pos":976,"end":989,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"actionFactory"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":970,"end":975,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Creates an action or array of actions from the user provided arguments

      \\n"},{"name":{"pos":1071,"end":1084,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"resultHandler"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1065,"end":1070,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Selects the output value from the action and the dispatch observable

      \\n"},{"tagName":{"pos":1158,"end":1165,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new dispatch function taking user arguments, dispatches actions, and returns a value

      \\n"}]},{"name":"identity","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Identity function returning the first argument passed

      \\n","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"pipeActionInstance","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Maps all emits to an action value

      \\n","args":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":""},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":""}],"returnType":"Observable
      ","jsdoctags":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>>>","jsdoctags":[{"name":{"pos":4708,"end":4712,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":4702,"end":4707,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"tagName":{"pos":4735,"end":4742,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type with a payload. The payload should be\\nspecified using the {@link payload} function

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""},{"name":"payload","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":5138,"end":5142,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":5132,"end":5137,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"name":{"pos":5171,"end":5178,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"payload"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":5165,"end":5170,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Payload type

      \\n"},{"tagName":{"pos":5032,"end":5039,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"

      const MyResourceType = createCustomType('my-type', payload<{ value: number }>());

      \\n"},{"tagName":{"pos":5196,"end":5203,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Implementation of createCustomType overloads

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createResourceId","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new resource identifier

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":4258,"end":4260,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4252,"end":4257,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw identifier

      \\n"},{"tagName":{"pos":4280,"end":4287,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A resource id

      \\n"}]},{"name":"getEntry","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Internal helper function for getting an entry from the state

      \\n","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""},{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"type","type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"T | undefined","jsdoctags":[{"name":{"pos":5670,"end":5675,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":5664,"end":5669,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state snapshot

      \\n"},{"name":{"pos":5709,"end":5711,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":5703,"end":5708,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":5734,"end":5738,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":5728,"end":5733,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional entry type

      \\n"},{"tagName":{"pos":5763,"end":5770,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The entry object it exists and has the correct type, otherwise undefined

      \\n"}]},{"name":"isBuiltinType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type string has builtin support

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":3572,"end":3576,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3566,"end":3571,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3597,"end":3604,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is one of the builtin types, otherwise false

      \\n"}]},{"name":"isCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type is a custom resource type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":3881,"end":3885,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3875,"end":3880,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3906,"end":3913,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is a custom type, otherwise false

      \\n"}]},{"name":"payload","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Helper function used to specify the payload format when creating custom types

      \\n","args":[],"returnType":"ResourceEntryPayload","jsdoctags":[{"tagName":{"pos":4477,"end":4484,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A custom payload type

      \\n"}]}],"state/src/link-registry/link-registry.model.ts":[{"name":"createLinkId","file":"state/src/link-registry/link-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      function to createa unique link ids

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"LinkId","jsdoctags":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"injectors/src/lib/on-destroy/on-destroy.ts":[{"name":"findDestructorScope","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds the nearest destructor scope object in the current injection context

      \\n","args":[],"returnType":"DestructorScope","jsdoctags":[{"tagName":{"pos":1267,"end":1274,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The scope on which cleanup can be attached

      \\n"}]},{"name":"findStableKeyObject","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds a stable object in the current injection context to be\\nused as a key in the destructor cache

      \\n","args":[],"returnType":"object","jsdoctags":[{"tagName":{"pos":912,"end":919,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An object

      \\n"}]},{"name":"firstDefinedValue","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Get the first defined value returned by a generator

      \\n","args":[{"name":"genFn","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":441,"end":446,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"genFn"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":435,"end":440,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Generator function taking no arguments

      \\n"},{"tagName":{"pos":490,"end":497,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The first non-null value

      \\n"}]},{"name":"injectDestroy$","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Inject an observable that emits and completes at the same time as the component, directive, pipe, or service\\nit is injected into. It can be used to control the lifetime of other observables using\\nthe takeUntil pipe, and to build other complex injection functions.

      \\n

      Caveats:

      \\n
        \\n
      • There are NO guarantees about whether the returned observable will emit and complete\\nbefore or after the regular ngOnDestroy lifecycle hook
      • \\n
      • For root and module level services the observable may never complete unless\\nthe containing module is explicitly destroyed, so don't rely on it for important operations
      • \\n
      • Components, directives, pipe, and services that manipulate the ViewContainerRef MUST\\ntake care to maintain the view controlling the lifecycle of the observable. Failure\\nto do so may result in early emit and completion of the returned observable
      • \\n
      \\n

      Based on comment on https://github.com/angular/angular/issues/10185\\nMostly https://github.com/angular/angular/issues/10185#issuecomment-1165545544 and\\nhttps://github.com/angular/angular/issues/10185#issuecomment-1199063426

      \\n","args":[],"returnType":"Observable","jsdoctags":[{"tagName":{"pos":2694,"end":2701,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that emits and completes when the component/directive/etc. is destroyed

      \\n"}]}],"injectors/src/lib/on-destroy/destructor-subject.ts":[{"name":"isDestructorScopeLike","file":"injectors/src/lib/on-destroy/destructor-subject.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether an object is destructor scope like

      \\n","args":[{"name":"obj","deprecated":false,"deprecationMessage":""}],"returnType":"DestructorScope","jsdoctags":[{"name":{"pos":328,"end":331,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"obj"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":322,"end":327,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Value to test

      \\n"},{"tagName":{"pos":350,"end":357,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true if the object seems to be a destructor scope, otherwise false

      \\n"}]}],"injectors/src/lib/select/select.ts":[{"name":"markForCheck","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Marks a view for change detection whenever a new value is emitted

      \\n","args":[{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"MonoTypeOperatorFunction","jsdoctags":[{"name":{"pos":689,"end":696,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":683,"end":688,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options to explicitly disable marking

      \\n"},{"tagName":{"pos":739,"end":746,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A rxjs operator

      \\n"}]},{"name":"select$","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an observable emitting parts of the state. The observable's lifetime\\nis automatically tied to the injection context where this is called.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":1313,"end":1321,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":1307,"end":1312,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State selection function or token

      \\n"},{"name":{"pos":1366,"end":1373,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1360,"end":1365,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Additional select options

      \\n"},{"tagName":{"pos":1404,"end":1411,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable of the selected state

      \\n"}]}],"injectors/src/lib/select/select-snapshot.ts":[{"name":"selectQuerySnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that can be called with the same arguments as the query selector\\nand returns the latest value each time. Automatically marks components, directives, or pipes\\nfor change detection whenever a new value is available. Note that since typescript has yet to\\nimplement support for higher order generics there is sometimes a need to specialize the\\nreturned query function with the correct arguments and return type. This can be done as shown\\nin the examples.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"SelectQuery","jsdoctags":[{"name":{"pos":2433,"end":2441,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":2427,"end":2432,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store query selector

      \\n"},{"name":{"pos":2473,"end":2482,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2467,"end":2472,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional bound query arguments

      \\n"},{"tagName":{"pos":1631,"end":1638,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"
      \\nclass Component {\\n...\\n// Return type: () => string\\nreadonly markdown = querySelectSnapshot(ResourceRegistrySelectors.markdown, id);\\n// Return type: (id: ResourceId) => string\\nreadonly markdownById = querySelectSnapshot(ResourceRegistrySelectors.markdown);\\n...\\n}"},{"tagName":{"pos":1975,"end":1982,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"\\nclass Component {\\n...\\n// Return type: () => number[]\\nreadonly points = querySelectSnapshot(ResourceRegistrySelectors.field, id, type, \'points\', []);\\n// Return type: (field: string, defaultValue: string) => string\\nreadonly getStringField = querySelectSnapshot(ResourceRegistrySelectors.field, id, type);\\n}"},{"tagName":{"pos":2518,"end":2525,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function taking the same arguments as the query selector (excluding bound arguments)

      \\n"}]},{"name":"selectSnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that returns the latest snapshot value each time it is called\\nAutomatically marks components, directives, or pipes for change detection whenever\\na new value is available

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":819,"end":827,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":813,"end":818,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store data selector

      \\n"},{"tagName":{"pos":852,"end":859,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function

      \\n"}]}]},"groupedEnumerations":{"state/src/link-registry/link-registry.model.ts":[{"name":"LinkType","childs":[{"name":"Internal","deprecated":false,"deprecationMessage":"","value":"internal"},{"name":"External","deprecated":false,"deprecationMessage":"","value":"external"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Types for Link

      \\n","file":"state/src/link-registry/link-registry.model.ts"}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"RawBuiltinResourceType","childs":[{"name":"Markdown","deprecated":false,"deprecationMessage":"","value":"markdown"},{"name":"Text","deprecated":false,"deprecationMessage":"","value":"text"},{"name":"Url","deprecated":false,"deprecationMessage":"","value":"url"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Raw builtin type strings

      \\n","file":"state/src/resource-registry/resource-registry.model.ts"}],"state/src/storage/storage.model.ts":[{"name":"StorageId","childs":[{"name":"Local","deprecated":false,"deprecationMessage":"","value":"local"},{"name":"Session","deprecated":false,"deprecationMessage":"","value":"session"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      StorageId - enum with values as Local, Session - identifier for storage types

      \\n","file":"state/src/storage/storage.model.ts"}]},"groupedTypeAliases":{"state/src/resource-registry/resource-registry.selectors.ts":[{"name":"AnyEntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.anyEntry}

      \\n","kind":178},{"name":"DataQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for resource data

      \\n","kind":178},{"name":"EntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.entry}

      \\n","kind":178},{"name":"FieldQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.field}

      \\n","kind":178}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"BuiltinTypes","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Maps raw builtin type strings to ResourceType

      \\n","kind":194},{"name":"CustomResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Typed custom resource entry

      \\n","kind":187},{"name":"CustomResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":" `custom:${T}`","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Custom entry types

      \\n","kind":197},{"name":"ExtractBuiltinEntryType","ctype":"miscellaneous","subtype":"typealias","rawtype":"UnionMember | type | T>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Extracts the builtin entry with type T

      \\n","kind":177},{"name":"ResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Any resource entry

      \\n","kind":177},{"name":"ResourceEntryPayload","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Payload type used when creating custom types

      \\n","kind":187},{"name":"ResourceId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource identifier

      \\n","kind":177},{"name":"ResourceRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Context type for action handlers

      \\n","kind":177},{"name":"ResourceRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State data model

      \\n","kind":177},{"name":"ResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource type string with entry typings

      \\n","kind":187}],"state/src/link-registry/link-registry.model.ts":[{"name":"ExternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for external link entry

      \\n","kind":177},{"name":"InternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for internal link entry

      \\n","kind":177},{"name":"LinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      entry for link registry

      \\n","kind":177},{"name":"LinkId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type for unique identifier for link

      \\n","kind":177},{"name":"LinkRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for State Context of LinkRegistry

      \\n","kind":177},{"name":"LinkRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for LinkRegistry State

      \\n","kind":177}],"state/src/link-registry/link-registry.state.ts":[{"name":"LinkRegistryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/link-registry/link-registry.state.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for link entry optionally with type specified

      \\n","kind":178}],"injectors/src/lib/select/select-snapshot.ts":[{"name":"RestArgs","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Get remaining arguments after applying bound arguments

      \\n","kind":188},{"name":"SelectQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Function type returned by {@link selectQuerySnapshot}

      \\n","kind":178}],"injectors/src/lib/select/select.ts":[{"name":"StateSelector","ctype":"miscellaneous","subtype":"typealias","rawtype":" | StateToken","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","description":"

      Selector type for select style functions

      \\n","kind":186}],"state/src/storage/storage.model.ts":[{"name":"StorageContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Helper alias for action handler's ctx argument

      \\n","kind":177},{"name":"StorageModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"Record","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type alias for the array of Storage objects

      \\n","kind":177}]}}}')},"./dist/compodoc/components-atoms/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"GradientPoint","id":"interface-GradientPoint-deca5c57881562b1c16d34b446006d52194dfce42a4093fe366ac3fcbeaf7291e08172915aac95fc2938e856084da0fe61a29b9897eb6da4ca9edd58116c7198","file":"src/lib/gradient-legend/gradient-legend.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** An interface of gradient colors along with their percentages for the gradient bar. */\\nexport interface GradientPoint {\\n /** Gradient color at a specific percentage */\\n color: string;\\n /** Percentage point along the gradient bar */\\n percentage: number;\\n}\\n\\n/** Gradient legend for biomarkers */\\n@Component({\\n selector: \'hra-gradient-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./gradient-legend.component.html\',\\n styleUrls: [\'./gradient-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class GradientLegendComponent {\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Computes the css linear-gradient function for the gradient bar */\\n get gradientCss(): string {\\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(\',\');\\n return `linear-gradient(90deg, ${stops})`;\\n }\\n}\\n","properties":[{"name":"color","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Gradient color at a specific percentage

      \\n","line":7,"rawdescription":"\\nGradient color at a specific percentage"},{"name":"percentage","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Percentage point along the gradient bar

      \\n","line":9,"rawdescription":"\\nPercentage point along the gradient bar"}],"indexSignatures":[],"kind":165,"description":"

      An interface of gradient colors along with their percentages for the gradient bar.

      \\n","rawdescription":"\\nAn interface of gradient colors along with their percentages for the gradient bar.","methods":[]},{"name":"SizeLegend","id":"interface-SizeLegend-dae8784679328cc4f52418a0ae905fed758d8fca706c3b6238631087d98a163ec72f26f1b06661d00473eefd6eafd27ab263e34a661981ea71d5a1885746f8e9","file":"src/lib/size-legend/size-legend.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Defining the input data types for the radius and label to be displayed. */\\nexport interface SizeLegend {\\n /** Label under circle */\\n label: string;\\n /** Radius for cirlce */\\n radius: number;\\n}\\n\\n/** Size legend component for the biomarkers table. */\\n@Component({\\n selector: \'hra-size-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./size-legend.component.html\',\\n styleUrls: [\'./size-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SizeLegendComponent {\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Label under circle

      \\n","line":7,"rawdescription":"\\nLabel under circle"},{"name":"radius","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Radius for cirlce

      \\n","line":9,"rawdescription":"\\nRadius for cirlce"}],"indexSignatures":[],"kind":165,"description":"

      Defining the input data types for the radius and label to be displayed.

      \\n","rawdescription":"\\nDefining the input data types for the radius and label to be displayed.","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"EmailInputComponent","id":"component-EmailInputComponent-1f7d0d808093e56fed36089f88f516d958678e7e917eb4299c6deb26edf7810680d231b1d0c349c0b380f39d8927a3738e20cd80686dd35cc343ef10c58dc481","file":"src/lib/email-input/email-input.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-email-input","styleUrls":["./email-input.component.scss"],"styles":[],"templateUrl":["./email-input.component.html"],"viewProviders":[],"inputsClass":[{"name":"placeholder","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA placeholder for the email input field. This will be disappeared when the email is typed.","description":"

      A placeholder for the email input field. This will be disappeared when the email is typed.

      \\n","line":22,"type":"string","decorators":[]}],"outputsClass":[{"name":"emailChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the new email when the input changes or undefined if the email is invalid","description":"

      Emits the new email when the input changes or undefined if the email is invalid

      \\n","line":25,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required, Validators.email],\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A control to validate the email.

      \\n","line":31,"rawdescription":"\\nA control to validate the email.","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable emitting when the component is destroyed

      \\n","line":28,"rawdescription":"\\nObservable emitting when the component is destroyed","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Email input components for contact modal.

      \\n","rawdescription":"\\n\\nEmail input components for contact modal.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { FormControl, ReactiveFormsModule, Validators } from \'@angular/forms\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { map, takeUntil } from \'rxjs\';\\n\\n/**\\n * Email input components for contact modal.\\n */\\n@Component({\\n selector: \'hra-email-input\',\\n standalone: true,\\n imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule],\\n templateUrl: \'./email-input.component.html\',\\n styleUrls: [\'./email-input.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class EmailInputComponent {\\n /** A placeholder for the email input field. This will be disappeared when the email is typed. */\\n @Input() placeholder = \'\';\\n\\n /** Emits the new email when the input changes or undefined if the email is invalid */\\n @Output() readonly emailChange = new EventEmitter();\\n\\n /** Observable emitting when the component is destroyed */\\n readonly destroy$ = injectDestroy$();\\n\\n /** A control to validate the email. */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required, Validators.email],\\n });\\n\\n /** Connects the input control to component outputs */\\n constructor() {\\n const { control, destroy$ } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? value : undefined))\\n )\\n .subscribe((value) => this.emailChange.emit(value as string | undefined));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .email-text-field {\\n width: 100%;\\n background: #ffffff;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./email-input.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Connects the input control to component outputs

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":34,"rawdescription":"\\nConnects the input control to component outputs"},"templateData":"\\n Email \\n \\n\\n \\n Please enter a valid email address\\n \\n Email is required! \\n\\n"},{"name":"EmptyBiomarkerComponent","id":"component-EmptyBiomarkerComponent-37024d95c11a561444e101c6aa7bc4ff857513ca38fac3e421501e21ab27f43cf3f33da15755e5ac3a40b963a23bdf6efe3e86834cd7971258fea52168aa9ad5","file":"src/lib/empty-biomarker/empty-biomarker.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-empty-biomarker","styleUrls":["./empty-biomarker.component.scss"],"styles":[],"templateUrl":["./empty-biomarker.component.html"],"viewProviders":[],"inputsClass":[{"name":"collaborateText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput buttonon text of empty biomarker component.\\n","description":"

      Input buttonon text of empty biomarker component.

      \\n","line":23,"type":"string","decorators":[]},{"name":"message","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput message markdown of empty biomarker component.\\n","description":"

      Input message markdown of empty biomarker component.

      \\n","line":28,"type":"string","decorators":[]}],"outputsClass":[{"name":"collaborateClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAn event emitter that emits the user button click event\\n","description":"

      An event emitter that emits the user button click event

      \\n","line":33,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for any empty biomaker cell\\n to inform about the empty data and has\\n button to navigate to HRA Team.

      \\n","rawdescription":"\\n\\n Component for any empty biomaker cell\\n to inform about the empty data and has\\n button to navigate to HRA Team.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n * Component for any empty biomaker cell\\n * to inform about the empty data and has\\n * button to navigate to HRA Team.\\n */\\n@Component({\\n selector: \'hra-empty-biomarker\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MarkdownModule],\\n templateUrl: \'./empty-biomarker.component.html\',\\n styleUrls: [\'./empty-biomarker.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class EmptyBiomarkerComponent {\\n /**\\n * Input buttonon text of empty biomarker component.\\n */\\n @Input() collaborateText = \'\';\\n\\n /**\\n * Input message markdown of empty biomarker component.\\n */\\n @Input() message = \'\';\\n\\n /**\\n * An event emitter that emits the user button click event\\n */\\n @Output() readonly collaborateClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n padding: 2.625rem 2rem 2.625rem 2rem;\\n\\n .message {\\n color: #243142;\\n }\\n\\n .collaborate-button {\\n margin-top: 2rem;\\n font-weight: 700;\\n color: #fff;\\n width: 100%;\\n max-width: 20rem;\\n height: 3rem;\\n }\\n}\\n","styleUrl":"./empty-biomarker.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"GradientLegendComponent","id":"component-GradientLegendComponent-deca5c57881562b1c16d34b446006d52194dfce42a4093fe366ac3fcbeaf7291e08172915aac95fc2938e856084da0fe61a29b9897eb6da4ca9edd58116c7198","file":"src/lib/gradient-legend/gradient-legend.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-gradient-legend","styleUrls":["./gradient-legend.component.scss"],"styles":[],"templateUrl":["./gradient-legend.component.html"],"viewProviders":[],"inputsClass":[{"name":"gradient","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nGradient colors along with their stop points","description":"

      Gradient colors along with their stop points

      \\n","line":23,"type":"GradientPoint[]","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Gradient legend for biomarkers

      \\n","rawdescription":"\\nGradient legend for biomarkers","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** An interface of gradient colors along with their percentages for the gradient bar. */\\nexport interface GradientPoint {\\n /** Gradient color at a specific percentage */\\n color: string;\\n /** Percentage point along the gradient bar */\\n percentage: number;\\n}\\n\\n/** Gradient legend for biomarkers */\\n@Component({\\n selector: \'hra-gradient-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./gradient-legend.component.html\',\\n styleUrls: [\'./gradient-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class GradientLegendComponent {\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Computes the css linear-gradient function for the gradient bar */\\n get gradientCss(): string {\\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(\',\');\\n return `linear-gradient(90deg, ${stops})`;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .gradient-bar {\\n height: 1.5rem;\\n width: 100%;\\n }\\n\\n .legend {\\n display: flex;\\n\\n .filler {\\n flex-grow: 1;\\n }\\n }\\n}\\n","styleUrl":"./gradient-legend.component.scss"}],"stylesData":"","accessors":{"gradientCss":{"name":"gradientCss","getSignature":{"name":"gradientCss","type":"string","returnType":"string","line":26,"rawdescription":"\\nComputes the css linear-gradient function for the gradient bar","description":"

      Computes the css linear-gradient function for the gradient bar

      \\n"}}},"templateData":"
      \\n
      \\n
      0.0
      \\n
      \\n
      1.0
      \\n
      \\n"},{"name":"LabelBoxComponent","id":"component-LabelBoxComponent-ef78615c37f1899e7f105d2e14f13a219f8472171bf04099642de0ee701b87eafba4f218cf04d7ba1c2e552e28262d1b32ae397ca7eab7043ad462a5f76a960d","file":"src/lib/label-box/label-box.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-label-box","styleUrls":["./label-box.component.scss"],"styles":[],"templateUrl":["./label-box.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Label box component for reuse accross the page. The content with "end" selector will be added to the end of the label box

      \\n","rawdescription":"\\nLabel box component for reuse accross the page. The content with \\"end\\" selector will be added to the end of the label box","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Label box component for reuse accross the page. The content with \\"end\\" selector will be added to the end of the label box */\\n@Component({\\n selector: \'hra-label-box\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./label-box.component.html\',\\n styleUrls: [\'./label-box.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LabelBoxComponent {}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n align-items: center;\\n padding: 0.75rem 2rem;\\n background: #f8f9fa;\\n font-family: \'Inter\';\\n\\n .filler {\\n flex-grow: 1;\\n }\\n}\\n","styleUrl":"./label-box.component.scss"}],"stylesData":"","templateData":"\\n\\n
      \\n\\n\\n"},{"name":"RequiredInputComponent","id":"component-RequiredInputComponent-6a768e79d86219e624a199447195426647b4cde0beb840ecbc68113987b52c6d0be44d19e13b91a4c8d351b9ad503e8a328db1c7626d4ea76b7cc8338bef3247","file":"src/lib/required-input/required-input.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-required-input","styleUrls":["./required-input.component.scss"],"styles":[],"templateUrl":["./required-input.component.html"],"viewProviders":[],"inputsClass":[{"name":"label","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nThe label to display for the text field.\\n","description":"

      The label to display for the text field.

      \\n","line":25,"type":"string","decorators":[]}],"outputsClass":[{"name":"inputChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAn event emitter that emits the input value when it changes.\\n","description":"

      An event emitter that emits the input value when it changes.

      \\n","line":30,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: Validators.required,\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Form control for input to set some input validation.

      \\n","line":40,"rawdescription":"\\n\\nForm control for input to set some input validation.\\n","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Destroy observable used to control the lifetime of other observables.

      \\n","line":35,"rawdescription":"\\n\\nDestroy observable used to control the lifetime of other observables.\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A reusable text field component that can be used to input text.\\nThis input field component also had required validation check.

      \\n","rawdescription":"\\n\\nA reusable text field component that can be used to input text.\\nThis input field component also had required validation check.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\nimport { FormControl, ReactiveFormsModule, Validators } from \'@angular/forms\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { map, takeUntil } from \'rxjs\';\\n\\n/**\\n * A reusable text field component that can be used to input text.\\n * This input field component also had required validation check.\\n */\\n@Component({\\n selector: \'hra-required-input\',\\n standalone: true,\\n imports: [CommonModule, MatFormFieldModule, MatInputModule, ReactiveFormsModule],\\n templateUrl: \'./required-input.component.html\',\\n styleUrls: [\'./required-input.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class RequiredInputComponent {\\n /**\\n * The label to display for the text field.\\n */\\n @Input() label = \'\';\\n\\n /**\\n * An event emitter that emits the input value when it changes.\\n */\\n @Output() readonly inputChange = new EventEmitter();\\n\\n /**\\n * Destroy observable used to control the lifetime of other observables.\\n */\\n readonly destroy$ = injectDestroy$();\\n\\n /**\\n * Form control for input to set some input validation.\\n */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: Validators.required,\\n });\\n\\n /**\\n * Creates an instance of required input component\\n * and it connect the form control value changes to check for validation\\n * before output emmiter is triggered\\n */\\n constructor() {\\n const { control, destroy$, inputChange } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? (value as string) : undefined))\\n )\\n .subscribe(inputChange);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .form-field {\\n width: 100%;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./required-input.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Creates an instance of required input component\\nand it connect the form control value changes to check for validation\\nbefore output emmiter is triggered

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":43,"rawdescription":"\\n\\nCreates an instance of required input component\\nand it connect the form control value changes to check for validation\\nbefore output emmiter is triggered\\n"},"templateData":"\\n {{ label }} \\n \\n {{ label }} is required!\\n\\n"},{"name":"RequiredTextboxComponent","id":"component-RequiredTextboxComponent-ad002581cf0f7ae0707bd500566ee127dc19a3403138f98034117f59231d3c30eaf53896f1e1b5850df7a95498bb9dd632f29b200e38de676c48c0d61c350ad7","file":"src/lib/required-textbox/required-textbox.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-required-textbox","styleUrls":["./required-textbox.component.scss"],"styles":[],"templateUrl":["./required-textbox.component.html"],"viewProviders":[],"inputsClass":[{"name":"label","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA label for the textarea field","description":"

      A label for the textarea field

      \\n","line":25,"type":"string","decorators":[]},{"name":"placeholder","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA placeholder for the message textarea field","description":"

      A placeholder for the message textarea field

      \\n","line":22,"type":"string","decorators":[]}],"outputsClass":[{"name":"messageChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the new message when the input changes or undefined if the message is invalid","description":"

      Emits the new message when the input changes or undefined if the message is invalid

      \\n","line":28,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required],\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A control to validate if the message field is empty

      \\n","line":34,"rawdescription":"\\nA control to validate if the message field is empty","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable emitting when the component is destroyed

      \\n","line":31,"rawdescription":"\\nObservable emitting when the component is destroyed","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The required textbox component displays a message box for users to add a message

      \\n","rawdescription":"\\n\\nThe required textbox component displays a message box for users to add a message\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { FormControl, Validators, ReactiveFormsModule } from \'@angular/forms\';\\nimport { map, takeUntil } from \'rxjs\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\n\\n/**\\n * The required textbox component displays a message box for users to add a message\\n */\\n@Component({\\n selector: \'hra-required-textbox\',\\n standalone: true,\\n imports: [CommonModule, MatInputModule, MatFormFieldModule, ReactiveFormsModule],\\n templateUrl: \'./required-textbox.component.html\',\\n styleUrls: [\'./required-textbox.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class RequiredTextboxComponent {\\n /** A placeholder for the message textarea field */\\n @Input() placeholder = \'\';\\n\\n /** A label for the textarea field */\\n @Input() label = \'\';\\n\\n /** Emits the new message when the input changes or undefined if the message is invalid */\\n @Output() readonly messageChange = new EventEmitter();\\n\\n /** Observable emitting when the component is destroyed */\\n readonly destroy$ = injectDestroy$();\\n\\n /** A control to validate if the message field is empty */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required],\\n });\\n\\n /** Connects the input control to component outputs */\\n constructor() {\\n const { control, destroy$ } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? value : undefined))\\n )\\n .subscribe((value) => this.messageChange.emit(value as string | undefined));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .message-field {\\n width: 100%;\\n background: #ffffff;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./required-textbox.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Connects the input control to component outputs

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":37,"rawdescription":"\\nConnects the input control to component outputs"},"templateData":"\\n {{ label }} \\n \\n {{ label }} is required! \\n\\n"},{"name":"SizeLegendComponent","id":"component-SizeLegendComponent-dae8784679328cc4f52418a0ae905fed758d8fca706c3b6238631087d98a163ec72f26f1b06661d00473eefd6eafd27ab263e34a661981ea71d5a1885746f8e9","file":"src/lib/size-legend/size-legend.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-size-legend","styleUrls":["./size-legend.component.scss"],"styles":[],"templateUrl":["./size-legend.component.html"],"viewProviders":[],"inputsClass":[{"name":"sizes","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":23,"type":"SizeLegend[]","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Size legend component for the biomarkers table.

      \\n","rawdescription":"\\nSize legend component for the biomarkers table.","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Defining the input data types for the radius and label to be displayed. */\\nexport interface SizeLegend {\\n /** Label under circle */\\n label: string;\\n /** Radius for cirlce */\\n radius: number;\\n}\\n\\n/** Size legend component for the biomarkers table. */\\n@Component({\\n selector: \'hra-size-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./size-legend.component.html\',\\n styleUrls: [\'./size-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SizeLegendComponent {\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n flex-direction: row;\\n column-gap: 2rem;\\n\\n .item {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n line-height: 0.5rem;\\n\\n .circle {\\n height: var(--size);\\n width: var(--size);\\n border-radius: 50%;\\n border: 0.125rem solid #75838f;\\n }\\n\\n .label {\\n margin-top: 0.5rem;\\n }\\n\\n .filler {\\n flex-grow: 1;\\n }\\n }\\n}\\n","styleUrl":"./size-legend.component.scss"}],"stylesData":"","templateData":"
      \\n
      \\n
      \\n
      \\n
      {{ text.label }}
      \\n
      \\n"},{"name":"TooltipComponent","id":"component-TooltipComponent-35a19c31cdbb6f67cbbe51d580825640d777ebbf9ef5a43ffc434e7c6af568cda589a5102fcf51027aafecb8ac12123b9ce1a5d04d81c51fa5198963c1c082f1","file":"src/lib/tooltip/tooltip.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-ui-tooltip","styleUrls":["./tooltip.component.scss"],"styles":[],"templateUrl":["./tooltip.component.html"],"viewProviders":[],"inputsClass":[{"name":"text","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nText to display\\n","description":"

      Text to display

      \\n","line":19,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Tooltips for illustrations

      \\n","rawdescription":"\\n\\nTooltips for illustrations\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n * Tooltips for illustrations\\n */\\n@Component({\\n selector: \'hra-ui-tooltip\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./tooltip.component.html\',\\n styleUrls: [\'./tooltip.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TooltipComponent {\\n /**\\n * Text to display\\n */\\n @Input() text = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n .tooltip {\\n display: flex;\\n flex-direction: column;\\n background: white;\\n box-shadow: 1px 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n border-radius: 0.5rem;\\n padding: 1rem;\\n }\\n}\\n","styleUrl":"./tooltip.component.scss"}],"stylesData":"","templateData":"
      {{ text }}
      \\n"}],"modules":[],"miscellaneous":[]}')},"./dist/compodoc/components-behavioral/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerDetailsComponent","id":"component-BiomarkerDetailsComponent-77362795c55e59d8109b5a13e3d57e4774ce01b5484ac21237c42d2857f2de4ecd80ec15ae66e99983246bdc3de1df675717253be566d7ba0efe1495a48c9f3c","file":"src/lib/biomarker-details/biomarker-details.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-biomarker-details","styleUrls":["./biomarker-details.component.scss"],"styles":[],"templateUrl":["./biomarker-details.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"collaborateText","defaultValue":"\'Collaborate with the HRA Team\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      button text of empty biomarker component.

      \\n","line":106,"rawdescription":"\\n\\nbutton text of empty biomarker component.\\n","modifierKind":[144]},{"name":"gradientHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Gradient Legend

      \\n","line":58,"rawdescription":"\\nInfo to be shown on the tooltip for Gradient Legend","modifierKind":[144]},{"name":"gradients","defaultValue":"selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Gradient colors along with their stop points

      \\n","line":67,"rawdescription":"\\nGradient colors along with their stop points","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":80,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"isTableFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Indicates if the table is fully shown, defaults to false

      \\n","line":64,"rawdescription":"\\nIndicates if the table is fully shown, defaults to false"},{"name":"message","defaultValue":"`We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      message markdown of empty biomarker component.

      \\n","line":111,"rawdescription":"\\n\\nmessage markdown of empty biomarker component.\\n","modifierKind":[144]},{"name":"selectedOnHovered","defaultValue":"selectSnapshot(IllustratorSelectors.selectedOnHovered)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects the cells hovered currently to highlight in table

      \\n","line":88,"rawdescription":"\\nSelects the cells hovered currently to highlight in table","modifierKind":[144]},{"name":"sizeHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Size Legend

      \\n","line":61,"rawdescription":"\\nInfo to be shown on the tooltip for Size Legend","modifierKind":[144]},{"name":"sizes","defaultValue":"selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":72,"rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","modifierKind":[144]},{"name":"source","defaultValue":"selectSnapshot(SourceRefsSelectors.sourceReferences)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      List of sources with titles and links displayed to the user

      \\n","line":75,"rawdescription":"\\nList of sources with titles and links displayed to the user","modifierKind":[144]},{"name":"tabs","defaultValue":"selectSnapshot(CellSummarySelectors.aggregates)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Table tabs

      \\n","line":55,"rawdescription":"\\nTable tabs","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":85,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]}],"methodsClass":[{"name":"collaborate","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":129,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which opens the contact modal dialog box","description":"

      A function which opens the contact modal dialog box

      \\n"},{"name":"toggleFullscreen","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":123,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function that toggles isTableFullScreen and\\ncalls the setScreenMode function.\\n","description":"

      A function that toggles isTableFullScreen and\\ncalls the setScreenMode function.

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The component displays the biomarker details which includes the details, gradient legends, size legends and source lists

      \\n","rawdescription":"\\nThe component displays the biomarker details which includes the details, gradient legends, size legends and source lists","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTabsModule } from \'@angular/material/tabs\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { dispatch, selectQuerySnapshot, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { ActiveFtuSelectors, IllustratorSelectors, ScreenModeAction, TissueLibrarySelectors } from \'@hra-ui/state\';\\nimport {\\n EmptyBiomarkerComponent,\\n GradientLegendComponent,\\n GradientPoint,\\n LabelBoxComponent,\\n SizeLegend,\\n SizeLegendComponent,\\n} from \'@hra-ui/components/atoms\';\\nimport { BiomarkerTableDataCardComponent, SourceListComponent } from \'@hra-ui/components/molecules\';\\nimport { BiomarkerTableComponent, TissueInfo } from \'@hra-ui/components/organisms\';\\nimport { CellSummarySelectors, ResourceIds as Ids, ResourceTypes as RTypes, SourceRefsSelectors } from \'@hra-ui/state\';\\nimport { MatDialog, MatDialogConfig, MatDialogModule } from \'@angular/material/dialog\';\\nimport { ContactBehaviorComponent } from \'../contact-behavior/contact-behavior.component\';\\n\\n/**\\n * PlaceHolder for Empty Tissue Info\\n */\\nconst EMPTY_TISSUE_INFO: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n};\\n\\n/** The component displays the biomarker details which includes the details, gradient legends, size legends and source lists*/\\n@Component({\\n selector: \'ftu-biomarker-details\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatIconModule,\\n MatTabsModule,\\n MatDialogModule,\\n BiomarkerTableComponent,\\n BiomarkerTableDataCardComponent,\\n GradientLegendComponent,\\n HoverDirective,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n SourceListComponent,\\n EmptyBiomarkerComponent,\\n ],\\n templateUrl: \'./biomarker-details.component.html\',\\n styleUrls: [\'./biomarker-details.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerDetailsComponent {\\n /** Table tabs */\\n readonly tabs = selectSnapshot(CellSummarySelectors.aggregates);\\n\\n /** Info to be shown on the tooltip for Gradient Legend */\\n readonly gradientHoverInfo = selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo);\\n\\n /** Info to be shown on the tooltip for Size Legend */\\n readonly sizeHoverInfo = selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo);\\n\\n /** Indicates if the table is fully shown, defaults to false*/\\n isTableFullScreen = false;\\n\\n /** Gradient colors along with their stop points */\\n readonly gradients = selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >;\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n readonly sizes = selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, []);\\n\\n /** List of sources with titles and links displayed to the user */\\n readonly source = selectSnapshot(SourceRefsSelectors.sourceReferences);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /** Selects the cells hovered currently to highlight in table */\\n readonly selectedOnHovered = selectSnapshot(IllustratorSelectors.selectedOnHovered);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueInfo(): TissueInfo {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n if (iri === undefined) {\\n return EMPTY_TISSUE_INFO;\\n }\\n const { id, label } = tissues[iri];\\n return { id, label };\\n }\\n\\n /**\\n * button text of empty biomarker component.\\n */\\n readonly collaborateText = \'Collaborate with the HRA Team\';\\n\\n /**\\n * message markdown of empty biomarker component.\\n */\\n readonly message = `We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`;\\n\\n /** A dispatcher function to set the screen mode */\\n private readonly setScreenMode = dispatch(ScreenModeAction.Set);\\n\\n /** A dialog box which shows contact modal after clicking on contact */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A function that toggles isTableFullScreen and\\n * calls the setScreenMode function.\\n */\\n toggleFullscreen(): void {\\n this.isTableFullScreen = !this.isTableFullScreen;\\n this.setScreenMode(this.isTableFullScreen);\\n }\\n\\n /** A function which opens the contact modal dialog box */\\n collaborate(): void {\\n const dialogConfig = new MatDialogConfig();\\n dialogConfig.disableClose = true;\\n this.dialog.open(ContactBehaviorComponent, dialogConfig);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 1fr 1fr auto;\\n grid-template-rows: 3.5rem minmax(5rem, 2fr) 3rem 5rem minmax(5rem, 1fr);\\n grid-template-areas:\\n \'table-header table-header table-header\'\\n \'table table table\'\\n \'gradient-legend-header size-legend-header .\'\\n \'gradient-legend size-legend .\'\\n \'source-list source-list source-list\';\\n overflow-y: auto;\\n\\n .table-header {\\n grid-area: table-header;\\n border-bottom: 0.063rem solid #d3d3d3;\\n height: 3.5rem;\\n }\\n\\n .table {\\n grid-area: table;\\n max-width: 100%;\\n overflow: auto;\\n border-bottom: 0.063rem solid #d3d3d3;\\n\\n ::ng-deep .table-tab-header {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n border-left: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n background-color: white;\\n\\n &:last-child {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n &.mdc-tab-indicator--active {\\n background-color: #f8f9fa;\\n }\\n\\n &:hover {\\n background-color: #f8f9fa;\\n }\\n }\\n }\\n\\n .legend-header {\\n color: vars.$dark-primary-text;\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend-header;\\n }\\n\\n &.size {\\n grid-area: size-legend-header;\\n }\\n\\n .icon {\\n margin-left: 0.6rem;\\n width: unset;\\n }\\n }\\n\\n .legend {\\n padding: 1rem 2rem;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend;\\n\\n .content {\\n width: 10rem;\\n }\\n }\\n\\n &.size {\\n grid-area: size-legend;\\n }\\n }\\n\\n .source-list {\\n grid-area: source-list;\\n }\\n\\n .cursor {\\n cursor: default;\\n }\\n}\\n\\n::ng-deep .biomarker-details.info-tooltip {\\n display: flex;\\n padding: 1rem;\\n border: 1px solid #a8a3a3;\\n border-radius: 0.5rem;\\n box-shadow: 1px 2px 16px 2px #00000029;\\n background-color: vars.$primary-contrast-rgb;\\n max-width: 21rem;\\n font-size: small;\\n font-family: Inter;\\n}\\n","styleUrl":"./biomarker-details.component.scss"}],"stylesData":"","accessors":{"tissueInfo":{"name":"tissueInfo","getSignature":{"name":"tissueInfo","type":"","returnType":"TissueInfo","line":93,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"\\n Cell Types by Gene Biomarkers\\n \\n {{ isTableFullScreen ? \'close_fullscreen\' : \'open_in_full\' }}\\n \\n\\n\\n\\n \\n \\n \\n \\n\\n\\n\\n Biomarker Expression Mean in FTU\\n info_outlined\\n\\n
      \\n \\n
      \\n\\n\\n Percentage of Cells in FTU\\n info_outlined\\n\\n
      \\n \\n
      \\n\\n
      \\n \\n
      \\n\\n\\n
      \\n {{ tooltip }}\\n
      \\n
      \\n"},{"name":"BiomarkerDetailsWcComponent","id":"component-BiomarkerDetailsWcComponent-2a35b01614cd4a83a9546a33b9e03200b2f96e7d06e07e8803741ed0f77a8815075e35be5e35822c9fb46279ff45ee49dbbfc6fc96f328f11a42b7f9898a30ef","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-wc-biomarker-details","styleUrls":["./biomarker-details-wc.component.scss"],"styles":[],"templateUrl":["./biomarker-details-wc.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"collaborateText","defaultValue":"\'Collaborate with the HRA Team\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      button text of empty biomarker component.

      \\n","line":145,"rawdescription":"\\n\\nbutton text of empty biomarker component.\\n","modifierKind":[144]},{"name":"currentUrl","defaultValue":"selectSnapshot(IllustratorSelectors.url)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current illustration url

      \\n","line":71,"rawdescription":"\\n\\nCurrent illustration url\\n","modifierKind":[144]},{"name":"gradientHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Gradient Legend

      \\n","line":111,"rawdescription":"\\nInfo to be shown on the tooltip for Gradient Legend","modifierKind":[144]},{"name":"gradients","defaultValue":"selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Gradient colors along with their stop points

      \\n","line":120,"rawdescription":"\\nGradient colors along with their stop points","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":81,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"isTableFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Indicates if the table is fully shown, defaults to false

      \\n","line":117,"rawdescription":"\\nIndicates if the table is fully shown, defaults to false"},{"name":"mapping","defaultValue":"selectSnapshot(IllustratorSelectors.mapping)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current mapping file

      \\n","line":76,"rawdescription":"\\n\\nCurrent mapping file\\n","modifierKind":[144]},{"name":"message","defaultValue":"`We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      message markdown of empty biomarker component.

      \\n","line":150,"rawdescription":"\\n\\nmessage markdown of empty biomarker component.\\n","modifierKind":[144]},{"name":"sizeHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Size Legend

      \\n","line":114,"rawdescription":"\\nInfo to be shown on the tooltip for Size Legend","modifierKind":[144]},{"name":"sizes","defaultValue":"selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":125,"rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","modifierKind":[144]},{"name":"source","defaultValue":"selectSnapshot(SourceRefsSelectors.sourceReferences)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      List of sources with titles and links displayed to the user

      \\n","line":128,"rawdescription":"\\nList of sources with titles and links displayed to the user","modifierKind":[144]},{"name":"tabs","defaultValue":"selectSnapshot(CellSummarySelectors.aggregates)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Table tabs

      \\n","line":108,"rawdescription":"\\nTable tabs","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":86,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]},{"name":"updateNodeOnClicked","defaultValue":"dispatch(IllustratorActions.SetClicked)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node click

      \\n","line":105,"rawdescription":"\\n\\nUpdates the active node on node click\\n","modifierKind":[144]},{"name":"updateNodeOnHover","defaultValue":"dispatch(IllustratorActions.SetHover)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node hover

      \\n","line":100,"rawdescription":"\\n\\nUpdates the active node on node hover\\n","modifierKind":[144]}],"methodsClass":[{"name":"collaborate","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":167,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which opens the contact modal dialog box","description":"

      A function which opens the contact modal dialog box

      \\n"},{"name":"toggleFullscreen","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":162,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function that toggles isTableFullScreen and\\ncalls the setScreenMode function.\\n","description":"

      A function that toggles isTableFullScreen and\\ncalls the setScreenMode function.

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Biomarker Table Details Web component

      \\n","rawdescription":"\\nComponent for Biomarker Table Details Web component","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTabsModule } from \'@angular/material/tabs\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { selectSnapshot, selectQuerySnapshot, dispatch } from \'@hra-ui/cdk/injectors\';\\nimport {\\n GradientLegendComponent,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n EmptyBiomarkerComponent,\\n GradientPoint,\\n SizeLegend,\\n} from \'@hra-ui/components/atoms\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n InteractiveSvgComponent,\\n SourceListComponent,\\n} from \'@hra-ui/components/molecules\';\\nimport { TissueInfo, BiomarkerTableComponent } from \'@hra-ui/components/organisms\';\\nimport {\\n ActiveFtuSelectors,\\n TissueLibrarySelectors,\\n ScreenModeAction,\\n IllustratorActions,\\n IllustratorSelectors,\\n CellSummarySelectors,\\n ResourceIds as Ids,\\n ResourceTypes as RTypes,\\n SourceRefsSelectors,\\n} from \'@hra-ui/state\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { MatDialog, MatDialogConfig } from \'@angular/material/dialog\';\\nimport { ContactBehaviorComponent } from \'../contact-behavior/contact-behavior.component\';\\n\\n/**\\n * PlaceHolder for Empty Tissue Info\\n */\\nconst EMPTY_TISSUE_INFO: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n};\\n\\n/** Component for Biomarker Table Details Web component */\\n@Component({\\n selector: \'ftu-wc-biomarker-details\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatIconModule,\\n MatTabsModule,\\n\\n BiomarkerTableComponent,\\n BiomarkerTableDataCardComponent,\\n GradientLegendComponent,\\n HoverDirective,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n SourceListComponent,\\n EmptyBiomarkerComponent,\\n InteractiveSvgComponent,\\n ],\\n templateUrl: \'./biomarker-details-wc.component.html\',\\n styleUrls: [\'./biomarker-details-wc.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerDetailsWcComponent {\\n /**\\n * Current illustration url\\n */\\n readonly currentUrl = selectSnapshot(IllustratorSelectors.url);\\n\\n /**\\n * Current mapping file\\n */\\n readonly mapping = selectSnapshot(IllustratorSelectors.mapping);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueTitle(): string {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n return iri ? tissues[iri].label : \'\';\\n }\\n\\n /**\\n * Updates the active node on node hover\\n */\\n readonly updateNodeOnHover = dispatch(IllustratorActions.SetHover);\\n\\n /**\\n * Updates the active node on node click\\n */\\n readonly updateNodeOnClicked = dispatch(IllustratorActions.SetClicked);\\n\\n /** Table tabs */\\n readonly tabs = selectSnapshot(CellSummarySelectors.aggregates);\\n\\n /** Info to be shown on the tooltip for Gradient Legend */\\n readonly gradientHoverInfo = selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo);\\n\\n /** Info to be shown on the tooltip for Size Legend */\\n readonly sizeHoverInfo = selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo);\\n\\n /** Indicates if the table is fully shown, defaults to false*/\\n isTableFullScreen = false;\\n\\n /** Gradient colors along with their stop points */\\n readonly gradients = selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >;\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n readonly sizes = selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, []);\\n\\n /** List of sources with titles and links displayed to the user */\\n readonly source = selectSnapshot(SourceRefsSelectors.sourceReferences);\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueInfo(): TissueInfo {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n if (iri === undefined) {\\n return EMPTY_TISSUE_INFO;\\n }\\n const { id, label } = tissues[iri];\\n return { id, label };\\n }\\n\\n /**\\n * button text of empty biomarker component.\\n */\\n readonly collaborateText = \'Collaborate with the HRA Team\';\\n\\n /**\\n * message markdown of empty biomarker component.\\n */\\n readonly message = `We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`;\\n\\n /** A dispatcher function to set the screen mode */\\n private readonly setScreenMode = dispatch(ScreenModeAction.Set);\\n\\n /** A dialog box which shows contact modal after clicking on contact */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A function that toggles isTableFullScreen and\\n * calls the setScreenMode function.\\n */\\n toggleFullscreen(): void {\\n this.isTableFullScreen = !this.isTableFullScreen;\\n this.setScreenMode(this.isTableFullScreen);\\n }\\n /** A function which opens the contact modal dialog box */\\n collaborate(): void {\\n const dialogConfig = new MatDialogConfig();\\n dialogConfig.disableClose = true;\\n this.dialog.open(ContactBehaviorComponent, dialogConfig);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n ::ng-deep .extraTab {\\n border: 0.063rem solid #d3d3d3;\\n border-top: 0;\\n }\\n\\n .table-header {\\n grid-area: table-header;\\n border: 0.063rem solid #d3d3d3;\\n width: 43rem;\\n height: 3.5rem;\\n }\\n\\n .table {\\n grid-area: table;\\n max-width: 100%;\\n overflow: auto;\\n border: 0.063rem solid #d3d3d3;\\n\\n ::ng-deep .table-tab-header {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n border-left: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n\\n &:last-child {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n &.mdc-tab-indicator--active {\\n background-color: #f8f9fa;\\n }\\n }\\n }\\n\\n hra-biomarker-table {\\n overflow-y: auto;\\n overflow-x: auto;\\n }\\n\\n .legends {\\n display: inline-flex;\\n width: 100%;\\n .legends-right {\\n width: 50%;\\n }\\n .legends-left {\\n width: 50%;\\n }\\n }\\n\\n .legend-header {\\n color: vars.$dark-primary-text;\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend-header;\\n }\\n\\n &.size {\\n grid-area: size-legend-header;\\n }\\n\\n .icon {\\n margin-left: 0.6rem;\\n }\\n }\\n\\n .legend {\\n padding: 1rem 2rem;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend;\\n\\n .content {\\n width: 10rem;\\n }\\n }\\n\\n &.size {\\n grid-area: size-legend;\\n }\\n }\\n\\n .source-list {\\n grid-area: source-list;\\n\\n .content {\\n width: min-content;\\n }\\n }\\n}\\n\\n::ng-deep .biomarker-details.info-tooltip {\\n display: flex;\\n padding: 1rem;\\n border: 1px solid #a8a3a3;\\n border-radius: 0.5rem;\\n box-shadow: 1px 2px 16px 2px #00000029;\\n background-color: vars.$primary-contrast-rgb;\\n max-width: 21rem;\\n font-size: small;\\n}\\n","styleUrl":"./biomarker-details-wc.component.scss"}],"stylesData":"","accessors":{"tissueTitle":{"name":"tissueTitle","getSignature":{"name":"tissueTitle","type":"string","returnType":"string","line":91,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}},"tissueInfo":{"name":"tissueInfo","getSignature":{"name":"tissueInfo","type":"","returnType":"TissueInfo","line":132,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"\\n {{ tissueTitle }}: FTU Illustration\\n \\n {{ isTableFullScreen ? \'close_fullscreen\' : \'open_in_full\' }}\\n \\n\\n\\n\\n \\n \\n \\n \\n \\n \\n\\n
      \\n
      \\n \\n Biomarker Expression Mean in FTU\\n info_outlined\\n \\n
      \\n \\n
      \\n
      \\n\\n
      \\n \\n Percentage of Cells in FTU\\n info_outlined\\n \\n
      \\n \\n
      \\n
      \\n
      \\n \\n
      \\n \\n
      \\n \\n
      \\n\\n \\n
      \\n {{ tooltip }}\\n
      \\n
      \\n
      \\n
      \\n"},{"name":"ContactBehaviorComponent","id":"component-ContactBehaviorComponent-b9d5e223798d92be933b5dbadc75b1d6c247f7b00beb75f933bb07b0a4949d22458ee53931ca654d0b255f40508dbf23ef4e516e2f80368415a86fdfe44d60b6","file":"src/lib/contact-behavior/contact-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-contact-behavior","styleUrls":["./contact-behavior.component.scss"],"styles":[],"templateUrl":["./contact-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"description","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ContactAcknowledgement)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Information modal message to the user

      \\n","line":29,"rawdescription":"\\nInformation modal message to the user","modifierKind":[144]},{"name":"postMessageTemplate","deprecated":false,"deprecationMessage":"","type":"TemplateRef","optional":false,"description":"

      A template to post a message

      \\n","line":20,"rawdescription":"\\nA template to post a message","decorators":[{"name":"ViewChild","stringifiedArguments":"\'postMessage\'"}],"modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":23,"rawdescription":"\\nInput for product logo URL to displayed on the left side.","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":26,"rawdescription":"\\nInput for product title to displayed on the left side.","modifierKind":[144]},{"name":"sendMessage","defaultValue":"dispatch(ContactActions.SendMessage)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A dispatcher function to send message entered by user

      \\n","line":32,"rawdescription":"\\nA dispatcher function to send message entered by user","modifierKind":[144]}],"methodsClass":[{"name":"close","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":51,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which closes the \'Contact us\' dialog and the acknowledgement dialog.","description":"

      A function which closes the 'Contact us' dialog and the acknowledgement dialog.

      \\n"},{"name":"submit","args":[{"name":"message","type":"ContactData","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":44,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box.","description":"

      A function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box.

      \\n","jsdoctags":[{"name":"message","type":"ContactData","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A Component for contact behavior which sends the message entered by the user and shows an acknowledgement

      \\n","rawdescription":"\\nA Component for contact behavior which sends the message entered by the user and shows an acknowledgement","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ViewChild } from \'@angular/core\';\\nimport { MatDialog, MatDialogModule, MatDialogRef } from \'@angular/material/dialog\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { ContactData, ContactModalComponent, InfoModalComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceIds as Ids, ContactActions } from \'@hra-ui/state\';\\n\\n/** A Component for contact behavior which sends the message entered by the user and shows an acknowledgement */\\n@Component({\\n selector: \'ftu-contact-behavior\',\\n standalone: true,\\n imports: [CommonModule, MatDialogModule, ContactModalComponent, InfoModalComponent],\\n templateUrl: \'./contact-behavior.component.html\',\\n styleUrls: [\'./contact-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactBehaviorComponent {\\n /** A template to post a message */\\n @ViewChild(\'postMessage\') readonly postMessageTemplate!: TemplateRef;\\n\\n /** Input for product logo URL to displayed on the left side. */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /** Input for product title to displayed on the left side. */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /** Information modal message to the user */\\n readonly description = selectQuerySnapshot(RR.anyText, Ids.ContactAcknowledgement);\\n\\n /** A dispatcher function to send message entered by user */\\n readonly sendMessage = dispatch(ContactActions.SendMessage);\\n\\n /** A dialog box which shows user an acknowledgement after clicking on submit */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A mat form field dialog which accepts the email, subject, and message of user and validates it */\\n private readonly selfRef = inject(MatDialogRef, { optional: true });\\n\\n /** Dialog box which references the acknowledgement dialog box */\\n private postRef?: MatDialogRef;\\n\\n /** A function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box. */\\n submit(message: ContactData): void {\\n this.sendMessage(message);\\n this.selfRef?.close();\\n this.postRef = this.dialog.open(this.postMessageTemplate);\\n }\\n\\n /** A function which closes the \'Contact us\' dialog and the acknowledgement dialog. */\\n close(): void {\\n this.postRef?.close();\\n this.selfRef?.close();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .contact-modal {\\n width: 41rem;\\n height: 40rem;\\n }\\n\\n .info-modal {\\n width: 35rem;\\n height: 11.8rem;\\n }\\n\\n @media screen and (max-height: 328px) {\\n .contact-modal {\\n height: calc(100vh - 2rem);\\n }\\n }\\n}\\n","styleUrl":"./contact-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n\\n\\n \\n \\n\\n"},{"name":"FooterBehaviorComponent","id":"component-FooterBehaviorComponent-d9ecf51e28e6cdbe2f77b2f819a2e3df3acd0382e946f213975e78af53f6c11b1a7a013fefb862cfa9449b9973d2ea3497fa9687d6c04eb492751c2a83c17410","file":"src/lib/footer-behavior/footer-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-footer-behavior","styleUrls":["./footer-behavior.component.scss"],"styles":[],"templateUrl":["./footer-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"download","defaultValue":"dispatch(DownloadActions.Download)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A dispatcher function to download file in specified format

      \\n","line":39,"rawdescription":"\\nA dispatcher function to download file in specified format","modifierKind":[144]},{"name":"downloadFormats","defaultValue":"selectSnapshot(DownloadSelectors.formats)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects a snapshot of the current value of the available download formats

      \\n","line":27,"rawdescription":"\\nSelects a snapshot of the current value of the available download formats","modifierKind":[144]},{"name":"embed","defaultValue":"LinkIds.Embed","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Embed link routing after clicking on Embed

      \\n","line":36,"rawdescription":"\\nEmbed link routing after clicking on Embed","modifierKind":[144]},{"name":"hraPortal","defaultValue":"LinkIds.Portal","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Hra portal link routing after clicking on HRA Portal

      \\n","line":30,"rawdescription":"\\nHra portal link routing after clicking on HRA Portal","modifierKind":[144]},{"name":"illustrationMetadata","defaultValue":"LinkIds.Illustration","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Metadata page link routing after clicking on Illustration

      \\n","line":33,"rawdescription":"\\nMetadata page link routing after clicking on Illustration","modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":21,"rawdescription":"\\nInput for product logo URL to displayed on the left side.","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":24,"rawdescription":"\\nInput for product title to displayed on the left side.","modifierKind":[144]},{"name":"size","defaultValue":"selectSnapshot(ScreenModeSelectors.size)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects the current value of the available ScreenMode Size

      \\n","line":41,"rawdescription":"\\nSelects the current value of the available ScreenMode Size","modifierKind":[144]}],"methodsClass":[{"name":"contact","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which opens the contact modal dialog box","description":"

      A function which opens the contact modal dialog box

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component for footer behavior which provides functionality for various buttons in footer

      \\n","rawdescription":"\\nA component for footer behavior which provides functionality for various buttons in footer","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { MatDialog, MatDialogConfig, MatDialogModule } from \'@angular/material/dialog\';\\nimport { dispatch, selectQuerySnapshot, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { FooterComponent } from \'@hra-ui/components/molecules\';\\nimport { DownloadActions, DownloadSelectors, ResourceIds as Ids, LinkIds, ScreenModeSelectors } from \'@hra-ui/state\';\\nimport { ContactBehaviorComponent } from \'../contact-behavior/contact-behavior.component\';\\n\\n/** A component for footer behavior which provides functionality for various buttons in footer */\\n@Component({\\n selector: \'ftu-footer-behavior\',\\n standalone: true,\\n imports: [CommonModule, MatDialogModule, FooterComponent, ContactBehaviorComponent],\\n templateUrl: \'./footer-behavior.component.html\',\\n styleUrls: [\'./footer-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterBehaviorComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /** Input for product title to displayed on the left side. */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /** Selects a snapshot of the current value of the available download formats */\\n readonly downloadFormats = selectSnapshot(DownloadSelectors.formats);\\n\\n /** Hra portal link routing after clicking on HRA Portal */\\n readonly hraPortal = LinkIds.Portal;\\n\\n /** Metadata page link routing after clicking on Illustration */\\n readonly illustrationMetadata = LinkIds.Illustration;\\n\\n /** Embed link routing after clicking on Embed */\\n readonly embed = LinkIds.Embed;\\n\\n /** A dispatcher function to download file in specified format */\\n readonly download = dispatch(DownloadActions.Download);\\n /** Selects the current value of the available ScreenMode Size */\\n readonly size = selectSnapshot(ScreenModeSelectors.size);\\n\\n /** A dialog box which shows contact modal after clicking on contact */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A function which opens the contact modal dialog box */\\n contact(): void {\\n const dialogConfig = new MatDialogConfig();\\n dialogConfig.disableClose = true;\\n this.dialog.open(ContactBehaviorComponent, dialogConfig);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./footer-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"HeaderBehaviorComponent","id":"component-HeaderBehaviorComponent-a76f74e70c7aacab4debd2492e1302dc534513cd4598dce499fc0d4f09bf0a16fc333bcb4bb100ffc9dbcb5427533473060400e0ae5eb7051dac7768474ae300","file":"src/lib/header-behavior/header-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-header-behavior","styleUrls":["./header-behavior.component.scss"],"styles":[],"templateUrl":["./header-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"aboutLink","defaultValue":"LinkIds.About","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for about link for user click action.

      \\n","line":41,"rawdescription":"\\n\\nInput for about link for user click action.\\n","modifierKind":[144]},{"name":"appTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.AppTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for app title to show on the left side.

      \\n","line":31,"rawdescription":"\\n\\nInput for app title to show on the left side.\\n","modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":21,"rawdescription":"\\n\\nInput for product logo URL to displayed on the left side.\\n","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":26,"rawdescription":"\\n\\nInput for product title to displayed on the left side.\\n","modifierKind":[144]},{"name":"productTitleLink","defaultValue":"LinkIds.ProductTitle","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title link for user click action

      \\n","line":36,"rawdescription":"\\n\\nInput for product title link for user click action\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Header Behavior

      \\n","rawdescription":"\\nComponent for Header Behavior","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { HeaderComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceIds as Ids, LinkIds } from \'@hra-ui/state\';\\n\\n/** Component for Header Behavior */\\n@Component({\\n selector: \'ftu-header-behavior\',\\n standalone: true,\\n imports: [CommonModule, HeaderComponent],\\n templateUrl: \'./header-behavior.component.html\',\\n styleUrls: [\'./header-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HeaderBehaviorComponent {\\n /**\\n * Input for product logo URL to displayed on the left side.\\n */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /**\\n * Input for product title to displayed on the left side.\\n */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /**\\n * Input for app title to show on the left side.\\n */\\n readonly appTitle = selectQuerySnapshot(RR.anyText, Ids.AppTitle);\\n\\n /**\\n * Input for product title link for user click action\\n */\\n readonly productTitleLink = LinkIds.ProductTitle;\\n\\n /**\\n * Input for about link for user click action.\\n */\\n readonly aboutLink = LinkIds.About;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./header-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"HraLandingPageIntroWcBehaviourComponent","id":"component-HraLandingPageIntroWcBehaviourComponent-b8c2509d12b92bff8ab139855b712563f2a92e8aa91e8ecc05714063b91b1765ade0e9c6e691367a2eaa4724d94d6dfe4ade28c89da03cfcf6eae21630452b23","file":"src/lib/hra-landing-page-intro-wc-behaviour/hra-landing-page-intro-wc-behaviour.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-wc-intro","styleUrls":["./hra-landing-page-intro-wc-behaviour.component.scss"],"styles":[],"templateUrl":["./hra-landing-page-intro-wc-behaviour.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"landingPageIntroDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro description

      \\n","line":21,"rawdescription":"\\nselect snapshot for landing page intro description","modifierKind":[144]},{"name":"landingPageIntroPartners","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":25,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroReadMore","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageIntroReadMore)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":23,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for Landing Page title

      \\n","line":19,"rawdescription":"\\nselect snapshot for Landing Page title","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro Behaviour: Web component

      \\n","rawdescription":"\\nComponent for LandingPage Intro Behaviour: Web component","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { HraLandingPageIntroWcComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceRegistrySelectors as RRS } from \'@hra-ui/cdk/state\';\\nimport { selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceIds as RIds } from \'@hra-ui/state\';\\n\\n/** Component for LandingPage Intro Behaviour: Web component */\\n@Component({\\n selector: \'ftu-wc-intro\',\\n standalone: true,\\n imports: [CommonModule, HraLandingPageIntroWcComponent],\\n templateUrl: \'./hra-landing-page-intro-wc-behaviour.component.html\',\\n styleUrls: [\'./hra-landing-page-intro-wc-behaviour.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HraLandingPageIntroWcBehaviourComponent {\\n /** select snapshot for Landing Page title */\\n readonly landingPageIntroTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle);\\n /** select snapshot for landing page intro description */\\n readonly landingPageIntroDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroReadMore = selectQuerySnapshot(RRS.markdown, RIds.LandingPageIntroReadMore);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroPartners = selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners);\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .intro {\\n display: inline-grid;\\n border: 1px solid #e2e7e9;\\n padding: 24px 32px 24px 32px;\\n width: 71rem;\\n }\\n}\\n","styleUrl":"./hra-landing-page-intro-wc-behaviour.component.scss"}],"stylesData":"","templateData":"\\n"},{"name":"LandingPageContentComponent","id":"component-LandingPageContentComponent-d72615e2863b7f2f08c767452a75c71c9e079687610cd3e50b54f72f11546184f7ad55c5304741d79adb9bb9ea161cdac4253ae6fb1cbbf15040f2814110616a","file":"src/lib/landing-page-content/landing-page-content.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-landing-page-content","styleUrls":["./landing-page-content.component.scss"],"styles":[],"templateUrl":["./landing-page-content.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"intersectableEls","deprecated":false,"deprecationMessage":"","type":"QueryList","optional":false,"description":"

      array of element refs for intersectables

      \\n","line":34,"rawdescription":"\\narray of element refs for intersectables","decorators":[{"name":"ViewChildren","stringifiedArguments":"\'intersectable\', {read: ElementRef}"}],"modifierKind":[144]},{"name":"landingPageDepthDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDepthDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth description

      \\n","line":57,"rawdescription":"\\nselect snapshot for landing page depth description","modifierKind":[144]},{"name":"landingPageDepthImg","defaultValue":"selectQuerySnapshot(RRS.url, RIds.LandingPageDepthImg)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth img

      \\n","line":61,"rawdescription":"\\nselect snapshot for landing page depth img","modifierKind":[144]},{"name":"landingPageDepthMoreText","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthMoreText)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot forlanding page depth more text

      \\n","line":59,"rawdescription":"\\nselect snapshot forlanding page depth more text","modifierKind":[144]},{"name":"landingPageDepthTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth title

      \\n","line":55,"rawdescription":"\\nselect snapshot for landing page depth title","modifierKind":[144]},{"name":"landingPageIntroDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro description

      \\n","line":40,"rawdescription":"\\nselect snapshot for landing page intro description","modifierKind":[144]},{"name":"landingPageIntroImg","defaultValue":"selectQuerySnapshot(RRS.url, RIds.LandingPageIntroImg)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro img

      \\n","line":47,"rawdescription":"\\nselect snapshot for landing page intro img","modifierKind":[144]},{"name":"landingPageIntroMoreText","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageIntroMoreText)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro more text

      \\n","line":45,"rawdescription":"\\nselect snapshot for landing page intro more text","modifierKind":[144]},{"name":"landingPageIntroPartners","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":42,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for Landing Page title

      \\n","line":37,"rawdescription":"\\nselect snapshot for Landing Page title","modifierKind":[144]},{"name":"LinkIds","defaultValue":"LinkIds","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Expose links for use it template

      \\n","line":64,"rawdescription":"\\nExpose links for use it template","modifierKind":[144]},{"name":"metrics","defaultValue":"selectQuerySnapshot(RRS.field, RIds.Metrics, RTypes.Metrics, \'metrics\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics

      \\n","line":49,"rawdescription":"\\nselect snapshot for metrics","modifierKind":[144]},{"name":"metricsLogo","defaultValue":"selectQuerySnapshot(RRS.url, RIds.MetricsLogo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics logo

      \\n","line":53,"rawdescription":"\\nselect snapshot for metrics logo","modifierKind":[144]},{"name":"metricsTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.MetricsTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics title

      \\n","line":51,"rawdescription":"\\nselect snapshot for metrics title","modifierKind":[144]}],"methodsClass":[{"name":"handleIntersection","args":[{"name":"entries","type":"IntersectionObserverEntry[]","deprecated":false,"deprecationMessage":""},{"name":"observer","type":"IntersectionObserver","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":82,"deprecated":false,"deprecationMessage":"","rawdescription":"\\ncallback function for intersection observer","description":"

      callback function for intersection observer

      \\n","jsdoctags":[{"name":"entries","type":"IntersectionObserverEntry[]","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"observer","type":"IntersectionObserver","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPageContent Behavior

      \\n","rawdescription":"\\nComponent for LandingPageContent Behavior","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport {\\n AfterViewInit,\\n ChangeDetectionStrategy,\\n Component,\\n ElementRef,\\n inject,\\n QueryList,\\n Renderer2,\\n ViewChildren,\\n} from \'@angular/core\';\\nimport { injectDestroy$, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RRS } from \'@hra-ui/cdk/state\';\\nimport {\\n LandingPageInDepthComponent,\\n LandingPageIntroComponent,\\n MetricItem,\\n MetricsComponent,\\n} from \'@hra-ui/components/molecules\';\\nimport { LinkIds, ResourceIds as RIds, ResourceTypes as RTypes } from \'@hra-ui/state\';\\n\\n/** Component for LandingPageContent Behavior */\\n@Component({\\n selector: \'ftu-landing-page-content\',\\n standalone: true,\\n imports: [CommonModule, LandingPageIntroComponent, MetricsComponent, LandingPageInDepthComponent],\\n templateUrl: \'./landing-page-content.component.html\',\\n styleUrls: [\'./landing-page-content.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageContentComponent implements AfterViewInit {\\n /** array of element refs for intersectables */\\n @ViewChildren(\'intersectable\', { read: ElementRef })\\n readonly intersectableEls!: QueryList;\\n\\n /** select snapshot for Landing Page title */\\n readonly landingPageIntroTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle);\\n\\n /** select snapshot for landing page intro description */\\n readonly landingPageIntroDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroPartners = selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners);\\n\\n /** select snapshot for landing page intro more text */\\n readonly landingPageIntroMoreText = selectQuerySnapshot(RRS.anyText, RIds.LandingPageIntroMoreText);\\n /** select snapshot for landing page intro img */\\n readonly landingPageIntroImg = selectQuerySnapshot(RRS.url, RIds.LandingPageIntroImg);\\n /** select snapshot for metrics */\\n readonly metrics = selectQuerySnapshot(RRS.field, RIds.Metrics, RTypes.Metrics, \'metrics\' as const, []);\\n /** select snapshot for metrics title */\\n readonly metricsTitle = selectQuerySnapshot(RRS.anyText, RIds.MetricsTitle);\\n /** select snapshot for metrics logo */\\n readonly metricsLogo = selectQuerySnapshot(RRS.url, RIds.MetricsLogo);\\n /** select snapshot for landing page depth title */\\n readonly landingPageDepthTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthTitle);\\n /** select snapshot for landing page depth description */\\n readonly landingPageDepthDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDepthDescription);\\n /** select snapshot forlanding page depth more text */\\n readonly landingPageDepthMoreText = selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthMoreText);\\n /** select snapshot for landing page depth img */\\n readonly landingPageDepthImg = selectQuerySnapshot(RRS.url, RIds.LandingPageDepthImg);\\n\\n /** Expose links for use it template */\\n readonly LinkIds = LinkIds;\\n\\n /** Renderer to add class for animation */\\n private readonly renderer = inject(Renderer2);\\n /** destroys observer */\\n private readonly destroy$ = injectDestroy$();\\n\\n /** creates an observer after view init */\\n ngAfterViewInit(): void {\\n const observer = new IntersectionObserver(this.handleIntersection.bind(this), {\\n threshold: 0.18,\\n });\\n\\n this.intersectableEls.forEach((el) => observer.observe(el.nativeElement));\\n this.destroy$.subscribe(() => observer.disconnect());\\n }\\n\\n /** callback function for intersection observer */\\n handleIntersection(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void {\\n for (const { isIntersecting, target } of entries) {\\n if (isIntersecting) {\\n this.renderer.addClass(target, \'visible\');\\n observer.unobserve(target);\\n }\\n }\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n overflow-x: hidden;\\n\\n .intro {\\n margin: 3.5rem 2rem;\\n }\\n\\n .metrics {\\n opacity: 0;\\n\\n &.visible {\\n animation: fadeIn 2s ease-in forwards;\\n }\\n }\\n\\n .in-depth {\\n opacity: 0;\\n\\n &.visible {\\n overflow: hidden;\\n animation: slideIn 2s ease-in-out forwards;\\n }\\n }\\n}\\n\\n@keyframes fadeIn {\\n 0% {\\n opacity: 0;\\n }\\n\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n@keyframes slideIn {\\n 0% {\\n transform: translateX(200%);\\n opacity: 1;\\n }\\n\\n 100% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n}\\n","styleUrl":"./landing-page-content.component.scss"}],"stylesData":"","implements":["AfterViewInit"],"templateData":"\\n\\n\\n\\n\\n\\n"},{"name":"MedicalIllustrationBehaviorComponent","id":"component-MedicalIllustrationBehaviorComponent-6fea78f0a6011315eef3ff0e9cf3f451130b68d93388f1b8ff7f362f6c7f2ec8bbad2f6518d0329f94a749b1e02a1018129acf2b8340f015397957c3e0fd985d","file":"src/lib/medical-illustration-behavior/medical-illustration-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-medical-illustration-behavior","styleUrls":["./medical-illustration-behavior.component.scss"],"styles":[],"templateUrl":["./medical-illustration-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"currentUrl","defaultValue":"selectSnapshot(IllustratorSelectors.url)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current illustration url

      \\n","line":23,"rawdescription":"\\n\\nCurrent illustration url\\n","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":33,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"mapping","defaultValue":"selectSnapshot(IllustratorSelectors.mapping)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current mapping file

      \\n","line":28,"rawdescription":"\\n\\nCurrent mapping file\\n","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":38,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]},{"name":"updateNodeOnClicked","defaultValue":"dispatch(IllustratorActions.SetClicked)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node click

      \\n","line":57,"rawdescription":"\\n\\nUpdates the active node on node click\\n","modifierKind":[144]},{"name":"updateNodeOnHover","defaultValue":"dispatch(IllustratorActions.SetHover)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node hover

      \\n","line":52,"rawdescription":"\\n\\nUpdates the active node on node hover\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Behavior component for medical illustration component

      \\n","rawdescription":"\\n\\nBehavior component for medical illustration component\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { dispatch, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\nimport { InteractiveSvgComponent } from \'@hra-ui/components/molecules\';\\nimport { ActiveFtuSelectors, IllustratorActions, IllustratorSelectors, TissueLibrarySelectors } from \'@hra-ui/state\';\\n\\n/**\\n * Behavior component for medical illustration component\\n */\\n@Component({\\n selector: \'ftu-medical-illustration-behavior\',\\n standalone: true,\\n imports: [CommonModule, InteractiveSvgComponent, LabelBoxComponent],\\n templateUrl: \'./medical-illustration-behavior.component.html\',\\n styleUrls: [\'./medical-illustration-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MedicalIllustrationBehaviorComponent {\\n /**\\n * Current illustration url\\n */\\n readonly currentUrl = selectSnapshot(IllustratorSelectors.url);\\n\\n /**\\n * Current mapping file\\n */\\n readonly mapping = selectSnapshot(IllustratorSelectors.mapping);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueTitle(): string {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n return iri ? tissues[iri].label : \'\';\\n }\\n\\n /**\\n * Updates the active node on node hover\\n */\\n readonly updateNodeOnHover = dispatch(IllustratorActions.SetHover);\\n\\n /**\\n * Updates the active node on node click\\n */\\n readonly updateNodeOnClicked = dispatch(IllustratorActions.SetClicked);\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n hra-label-box {\\n border-bottom: 0.063rem solid #d3d3d3;\\n width: 100%;\\n height: 3.5rem;\\n }\\n}\\n","styleUrl":"./medical-illustration-behavior.component.scss"}],"stylesData":"","accessors":{"tissueTitle":{"name":"tissueTitle","getSignature":{"name":"tissueTitle","type":"string","returnType":"string","line":43,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"{{ tissueTitle }}\\n\\n\\n"},{"name":"ScreenNoticeBehaviorComponent","id":"component-ScreenNoticeBehaviorComponent-de4fc156bf7f658d9ca0a8d114626d829387a03f3b206cb5439f1ad22b9e157cbc51e850b06eb8f0b9dd48a75acb723b42c7fd79d0c50694757e9d23cac9f416","file":"src/lib/screen-notice-behavior/screen-notice-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-ui-screen-notice-behavior","styleUrls":["./screen-notice-behavior.component.scss"],"styles":[],"templateUrl":["./screen-notice-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"content","defaultValue":"selectQuerySnapshot(RR.anyText, ResourceIds.ScreenSizeNoticeContent)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Content of screen notice behavior component

      \\n","line":21,"rawdescription":"\\nContent of screen notice behavior component","modifierKind":[144]},{"name":"portal","defaultValue":"LinkIds.Portal","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Hra portal link routing after clicking on HRA Portal

      \\n","line":24,"rawdescription":"\\nHra portal link routing after clicking on HRA Portal","modifierKind":[144]}],"methodsClass":[{"name":"close","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":33,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which closes the screen size notice dialog box","description":"

      A function which closes the screen size notice dialog box

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component for screen size notice behavior which provides the content to be displayed and provides functionality\\nfor the buttons on the notice modal

      \\n","rawdescription":"\\nA component for screen size notice behavior which provides the content to be displayed and provides functionality\\nfor the buttons on the notice modal","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR, StorageActions, StorageId } from \'@hra-ui/cdk/state\';\\nimport { ResourceIds, LinkIds } from \'@hra-ui/state\';\\nimport { ScreenSizeNoticeComponent } from \'@hra-ui/components/molecules\';\\nimport { MatDialogRef } from \'@angular/material/dialog\';\\n\\n/** A component for screen size notice behavior which provides the content to be displayed and provides functionality\\n * for the buttons on the notice modal */\\n@Component({\\n selector: \'ftu-ui-screen-notice-behavior\',\\n standalone: true,\\n imports: [CommonModule, ScreenSizeNoticeComponent],\\n templateUrl: \'./screen-notice-behavior.component.html\',\\n styleUrls: [\'./screen-notice-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ScreenNoticeBehaviorComponent {\\n /** Content of screen notice behavior component*/\\n readonly content = selectQuerySnapshot(RR.anyText, ResourceIds.ScreenSizeNoticeContent);\\n\\n /** Hra portal link routing after clicking on HRA Portal*/\\n readonly portal = LinkIds.Portal;\\n\\n /** Reference for the screen size notice dialog box*/\\n private readonly ref = inject(MatDialogRef, { optional: true });\\n\\n /** A dispatcher function that sets the Local Storage as \'shown\'*/\\n private readonly setScreenNoticeShown = dispatch(StorageActions.Set, StorageId.Local, \'screen-size-notice\', \'shown\');\\n\\n /** A function which closes the screen size notice dialog box*/\\n close(): void {\\n this.setScreenNoticeShown();\\n this.ref?.close();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./screen-notice-behavior.component.scss"}],"stylesData":"","templateData":" \\n"},{"name":"TissueLibraryBehaviorComponent","id":"component-TissueLibraryBehaviorComponent-1565978e9f70870b546b49f929236ee86c2eb9cc241e10b805863df59e4d66dca72495ffa8c27a7f282e396acc84f78b6724255570a4eab733a3af995543b47a","file":"src/lib/tissue-library-behavior/tissue-library-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-tissue-library-behavior","styleUrls":["./tissue-library-behavior.component.scss"],"styles":[],"templateUrl":["./tissue-library-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"list","deprecated":false,"deprecationMessage":"","type":"TissueTreeListComponent","optional":true,"description":"

      Reference to the TissueTreeListComponent.

      \\n","line":25,"rawdescription":"\\n\\nReference to the TissueTreeListComponent.\\n","decorators":[{"name":"ViewChild","stringifiedArguments":"\'list\', {static: true}"}],"modifierKind":[144]},{"name":"selected","deprecated":false,"deprecationMessage":"","type":"Tissue","optional":true,"description":"

      Selected of tissue library behavior component

      \\n","line":34,"rawdescription":"\\n\\nSelected of tissue library behavior component\\n"},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for tissues data

      \\n","line":30,"rawdescription":"\\n\\nInput for tissues data\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Tissue Library Behavior

      \\n","rawdescription":"\\n\\nComponent for Tissue Library Behavior\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, ViewChild } from \'@angular/core\';\\nimport { select$, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { TissueTreeListComponent } from \'@hra-ui/components/molecules\';\\nimport { Tissue } from \'@hra-ui/services\';\\nimport { ActiveFtuSelectors, TissueLibrarySelectors } from \'@hra-ui/state\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * Component for Tissue Library Behavior\\n */\\n@Component({\\n selector: \'ftu-tissue-library-behavior\',\\n standalone: true,\\n imports: [CommonModule, LabelBoxComponent, TissueTreeListComponent],\\n templateUrl: \'./tissue-library-behavior.component.html\',\\n styleUrls: [\'./tissue-library-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueLibraryBehaviorComponent {\\n /**\\n * Reference to the TissueTreeListComponent.\\n */\\n @ViewChild(\'list\', { static: true })\\n readonly list?: TissueTreeListComponent;\\n\\n /**\\n * Input for tissues data\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n /**\\n * Selected of tissue library behavior component\\n */\\n selected?: Tissue;\\n\\n /**\\n * Sets the TissueItem instance as undefined if\\n * the url is undefined\\n */\\n constructor() {\\n /** Get iris from the observable else reset selection if\\n * iri is undefined\\n */\\n select$(ActiveFtuSelectors.iri).subscribe((iri) => {\\n this.selected = iri && this.tissues()[iri];\\n if (iri === undefined) {\\n this.list?.resetSelection();\\n }\\n });\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n .label {\\n border-bottom: 1px solid #e2e7e9;\\n width: 100%;\\n height: 3.5rem;\\n }\\n}\\n","styleUrl":"./tissue-library-behavior.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Sets the TissueItem instance as undefined if\\nthe url is undefined

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":34,"rawdescription":"\\n\\nSets the TissueItem instance as undefined if\\nthe url is undefined\\n"},"templateData":"FTU Library\\n \\n"}],"modules":[],"miscellaneous":{"variables":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details/biomarker-details.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"},{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}],"functions":[],"typealiases":[],"enumerations":[],"groupedVariables":{"src/lib/biomarker-details/biomarker-details.component.ts":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details/biomarker-details.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}],"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{}}}')},"./dist/compodoc/components-molecules/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"ContactData","id":"interface-ContactData-309310b2740da63be5ea5aaa894ef73ced8bed2a86b50643af4dd031551d6cdb7b26ece6b3328d0e31c21e46f940bd8b901f5665c241ca2a4cb38f39631bd8a3","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmailInputComponent, RequiredInputComponent, RequiredTextboxComponent } from \'@hra-ui/components/atoms\';\\nimport { produce } from \'immer\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n An interface representing contact data information which will be emitted if all the fields are in correct format.\\n */\\nexport interface ContactData {\\n /** The email address of the person submitting the form. */\\n email: string;\\n /** The subject line of the message being sent. */\\n subject: string;\\n /** The body of the message being sent. */\\n message: string;\\n}\\n\\n/** Initial empty contact data */\\nconst EMPTY_CONTACT_DATA: Partial = {\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n};\\n\\n/**\\n * Contact modal component.\\n */\\n@Component({\\n selector: \'hra-contact-modal\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatIconModule,\\n EmailInputComponent,\\n MarkdownModule,\\n RequiredTextboxComponent,\\n RequiredInputComponent,\\n ],\\n templateUrl: \'./contact-modal.component.html\',\\n styleUrls: [\'./contact-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactModalComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Emits when the submit button is clicked and all the values are appropriate. */\\n @Output() readonly submitClick = new EventEmitter();\\n\\n /** Emits when the cancel button or close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n\\n /** A function to disable the submit button. If all the values are in approproiate format, then it will be enabled. */\\n get disableSubmit(): boolean {\\n return Object.values(this.contactData).some((value) => value === undefined);\\n }\\n\\n /** Asigns the undefined initially to all the input fields. */\\n contactData = EMPTY_CONTACT_DATA;\\n\\n /** Updates the contact data object with a new value for a given key. */\\n updateData(key: K, value?: ContactData[K]): void {\\n this.contactData = produce(this.contactData, (draft) => {\\n draft[key] = value;\\n });\\n }\\n\\n /** It emits the updated value of contact data */\\n submit(): void {\\n this.submitClick.emit(this.contactData as ContactData);\\n }\\n}\\n","properties":[{"name":"email","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The email address of the person submitting the form.

      \\n","line":14,"rawdescription":"\\nThe email address of the person submitting the form."},{"name":"message","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The body of the message being sent.

      \\n","line":18,"rawdescription":"\\nThe body of the message being sent."},{"name":"subject","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The subject line of the message being sent.

      \\n","line":16,"rawdescription":"\\nThe subject line of the message being sent."}],"indexSignatures":[],"kind":165,"description":"

      An interface representing contact data information which will be emitted if all the fields are in correct format.

      \\n","rawdescription":"\\n\\nAn interface representing contact data information which will be emitted if all the fields are in correct format.\\n","methods":[]},{"name":"DataItem","id":"interface-DataItem-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      A string property that represents the label

      \\n","line":8,"rawdescription":"\\nA string property that represents the label"},{"name":"value","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      A string property that represents the value

      \\n","line":10,"rawdescription":"\\nA string property that represents the value"}],"indexSignatures":[],"kind":165,"description":"

      An item which defines a string label and a string value

      \\n","rawdescription":"\\nAn item which defines a string label and a string value","methods":[]},{"name":"DataNode","id":"interface-DataNode-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","properties":[{"name":"children","deprecated":false,"deprecationMessage":"","type":"K[]","optional":true,"description":"

      Nested nodes

      \\n","line":29,"rawdescription":"\\nNested nodes"},{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      Id to pass as a query parameter on navigation

      \\n","line":25,"rawdescription":"\\nId to pass as a query parameter on navigation"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      User readable label

      \\n","line":23,"rawdescription":"\\nUser readable label"},{"name":"link","deprecated":false,"deprecationMessage":"","type":"LinkId","optional":true,"description":"

      Link to navigate to on node click

      \\n","line":27,"rawdescription":"\\nLink to navigate to on node click"}],"indexSignatures":[],"kind":165,"description":"

      Base node type

      \\n","rawdescription":"\\nBase node type","methods":[]},{"name":"DownloadFormat","id":"interface-DownloadFormat-45c5a61fc5d68c201808fb76ff867f9a7cf8e42e6ef95ae08b440dbd37ce63eb4c77c3da0597ef90973854d65522a3ba496eeb5eccbe75750c1fd2f5abf52e6b","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { MatListModule } from \'@angular/material/list\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * Base type for different download format options.\\n */\\nexport interface DownloadFormat {\\n /**\\n * User readable format label\\n */\\n label: string;\\n}\\n\\n/**\\n * Positioning value for the download list popup\\n */\\nconst DOWNLOADS_LIST_POSITION: ConnectedPosition[] = [\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n];\\n\\n/**\\n * Component for footer that displays its content at the bottom of the page with different action buttons.\\n */\\n@Component({\\n selector: \'hra-footer\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, OverlayModule, MatListModule, LinkDirective],\\n templateUrl: \'./footer.component.html\',\\n styleUrls: [\'./footer.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterComponent {\\n /** Host binding of footer component */\\n @HostBinding(\'class\')\\n @Input()\\n size: \'small\' | \'large\' = \'large\';\\n\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Input for HRA Portal link */\\n @Input() hraPortal = EMPTY_LINK;\\n\\n /** Input for Illustration metadata page link in HRA Portal */\\n @Input() illustrationMetadata = EMPTY_LINK;\\n\\n /** Input for embed link in HRA Portal */\\n @Input() embed = EMPTY_LINK;\\n\\n /** Different download formats options displayed to the user */\\n @Input() downloadFormats: T[] = [];\\n\\n /** Emits the selected download format */\\n @Output() readonly download = new EventEmitter();\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly contactClick = new EventEmitter();\\n\\n /** Download list popup overlay positioning */\\n readonly DOWNLOADS_LIST_POSITION = DOWNLOADS_LIST_POSITION;\\n\\n /** Gets whether the footer required is small */\\n get isSmall(): boolean {\\n return this.size === \'small\';\\n }\\n\\n /** Whether the download list panel is open */\\n downloadListOpen = false;\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      User readable format label

      \\n","line":17,"rawdescription":"\\n\\nUser readable format label\\n"}],"indexSignatures":[],"kind":165,"description":"

      Base type for different download format options.

      \\n","rawdescription":"\\n\\nBase type for different download format options.\\n","methods":[]},{"name":"InternalNode","id":"interface-InternalNode-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","properties":[{"name":"data","deprecated":false,"deprecationMessage":"","type":"T","optional":false,"description":"

      Associated user node data

      \\n","line":43,"rawdescription":"\\nAssociated user node data"},{"name":"expandable","deprecated":false,"deprecationMessage":"","type":"boolean","optional":false,"description":"

      Whether the node can be expanded to display child nodes

      \\n","line":39,"rawdescription":"\\nWhether the node can be expanded to display child nodes"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Displayed label

      \\n","line":37,"rawdescription":"\\nDisplayed label"},{"name":"level","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Depth of node in the tree

      \\n","line":41,"rawdescription":"\\nDepth of node in the tree"}],"indexSignatures":[],"kind":165,"description":"

      Internal interface for flat tissue data hierarchy

      \\n","rawdescription":"\\n\\nInternal interface for flat tissue data hierarchy\\n","methods":[]},{"name":"MetricItem","id":"interface-MetricItem-e52c0a1cdf090042d1924c4907a4034774cbb442217faca9ec5035e76d2796116cf55644ecf49ae040fdea1168f9c5d99f6ce15b2079f70de3d853fece481b30","file":"src/lib/metrics/metrics.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n An interface representing a single metric with an icon, value and description.\\n */\\nexport interface MetricItem {\\n /** Represents the icon associated with the metric. */\\n icon: string;\\n /** Describes the numberical value of the metric. */\\n value: string;\\n /** Describes the type of metric. */\\n description: string;\\n}\\n/**\\n * Describes the metrics for the HuBMAP project.\\n */\\n@Component({\\n selector: \'hra-metrics\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./metrics.component.html\',\\n styleUrls: [\'./metrics.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MetricsComponent {\\n /** Main title of metrics component. */\\n @Input() title = \'\';\\n\\n /** Logo of metrics component. */\\n @Input() logo = \'\';\\n\\n /** List of metrics that will be shown to the user. */\\n @Input() metrics: MetricItem[] = [];\\n}\\n","properties":[{"name":"description","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Describes the type of metric.

      \\n","line":13,"rawdescription":"\\nDescribes the type of metric."},{"name":"icon","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Represents the icon associated with the metric.

      \\n","line":9,"rawdescription":"\\nRepresents the icon associated with the metric."},{"name":"value","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Describes the numberical value of the metric.

      \\n","line":11,"rawdescription":"\\nDescribes the numberical value of the metric."}],"indexSignatures":[],"kind":165,"description":"

      An interface representing a single metric with an icon, value and description.

      \\n","rawdescription":"\\n\\nAn interface representing a single metric with an icon, value and description.\\n","methods":[]},{"name":"NodeMapEntry","id":"interface-NodeMapEntry-34dafc0493fcadf92dd676bebad498e3798e87879ccd7ab9c56dfb6b52cf51b41a6b132fa4c00fa2f32867f3f84829bef3163da37de19cf480f10a8cd94e74f1","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.onCrosswalkHover(undefined as never as MouseEvent));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n if (event) {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n } else {\\n this.nodeHoverData$.next(undefined);\\n this.nodeHover.emit();\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","properties":[{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node id in svg

      \\n","line":69,"rawdescription":"\\nNode id in svg"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node label

      \\n","line":67,"rawdescription":"\\nNode label"},{"name":"ontologyId","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Ontology id of cell type

      \\n","line":71,"rawdescription":"\\nOntology id of cell type"}],"indexSignatures":[],"kind":165,"description":"

      Interface for node entries

      \\n","rawdescription":"\\nInterface for node entries","methods":[]},{"name":"NodeTooltipData","id":"interface-NodeTooltipData-34dafc0493fcadf92dd676bebad498e3798e87879ccd7ab9c56dfb6b52cf51b41a6b132fa4c00fa2f32867f3f84829bef3163da37de19cf480f10a8cd94e74f1","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.onCrosswalkHover(undefined as never as MouseEvent));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n if (event) {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n } else {\\n this.nodeHoverData$.next(undefined);\\n this.nodeHover.emit();\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","properties":[{"name":"node","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node name

      \\n","line":59,"rawdescription":"\\nNode name"},{"name":"origin","deprecated":false,"deprecationMessage":"","type":"literal type","optional":false,"description":"

      Center point of hovered node in screen coordinates

      \\n","line":61,"rawdescription":"\\nCenter point of hovered node in screen coordinates"}],"indexSignatures":[],"kind":165,"description":"

      Node tooltip data

      \\n","rawdescription":"\\nNode tooltip data","methods":[]},{"name":"SectionItem","id":"interface-SectionItem-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","properties":[{"name":"data","deprecated":false,"deprecationMessage":"","type":"DataItem","optional":false,"description":"

      A DateItem property that represents a section and its data

      \\n","line":18,"rawdescription":"\\nA DateItem property that represents a section and its data"},{"name":"isLastItem","deprecated":false,"deprecationMessage":"","type":"boolean","optional":false,"description":"

      A boolean property that represents the last item of a section

      \\n","line":20,"rawdescription":"\\nA boolean property that represents the last item of a section"},{"name":"section","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      A number property that represents the section number

      \\n","line":16,"rawdescription":"\\nA number property that represents the section number"}],"indexSignatures":[],"kind":165,"description":"

      An item which represents a section with a data item and an indicator for the last item in the section

      \\n","rawdescription":"\\nAn item which represents a section with a data item and an indicator for the last item in the section","methods":[]},{"name":"SourceListItem","id":"interface-SourceListItem-f0d0464b044f898be3752719190f2d8ad8511283d4daafb2f8b17bd0f4dfa0290abbbeb293819664c07134fcaee5a64313aaf72d69e335a063e244c2ba1d7c0c","file":"src/lib/source-list/source-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmptyBiomarkerComponent, LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/** SourceListItem interface contains title and link to the dataset for the SourceList*/\\nexport interface SourceListItem {\\n /** Title of the dataset in the SourceList */\\n title: string;\\n\\n /** Label of the dataset in the SourceList */\\n label: string;\\n\\n /** Link to the dataset in the SourceList */\\n link: string;\\n}\\n\\n/** This component shows list of sources with title and links to the datasets */\\n@Component({\\n selector: \'hra-source-list\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule, MatIconModule, LabelBoxComponent, EmptyBiomarkerComponent],\\n templateUrl: \'./source-list.component.html\',\\n styleUrls: [\'./source-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SourceListComponent {\\n /** List of sources with titles and links displayed to the user */\\n @Input() sources: SourceListItem[] = [];\\n /**\\n * Input buttonon text of empty biomarker component.\\n */\\n @Input() collaborateText = \'\';\\n\\n /**\\n * Input message markdown of empty biomarker component.\\n */\\n @Input() message = \'\';\\n /**\\n * Show table of source list component which toggles to true or false\\n * based on click\\n */\\n showTable = true;\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly collaborateClick = new EventEmitter();\\n\\n /**\\n * It changes the value of showTable to false if value it true\\n * and vice versa\\n */\\n toggleTable(): void {\\n this.showTable = !this.showTable;\\n }\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Label of the dataset in the SourceList

      \\n","line":13,"rawdescription":"\\nLabel of the dataset in the SourceList"},{"name":"link","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Link to the dataset in the SourceList

      \\n","line":16,"rawdescription":"\\nLink to the dataset in the SourceList"},{"name":"title","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Title of the dataset in the SourceList

      \\n","line":10,"rawdescription":"\\nTitle of the dataset in the SourceList"}],"indexSignatures":[],"kind":165,"description":"

      SourceListItem interface contains title and link to the dataset for the SourceList

      \\n","rawdescription":"\\nSourceListItem interface contains title and link to the dataset for the SourceList","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerTableDataCardComponent","id":"component-BiomarkerTableDataCardComponent-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table-data-card","styleUrls":["./biomarker-table-data-card.component.scss"],"styles":[],"templateUrl":["./biomarker-table-data-card.component.html"],"viewProviders":[],"inputsClass":[{"name":"data","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nNested list of DataItems for each section which is displayed to the user","description":"

      Nested list of DataItems for each section which is displayed to the user

      \\n","line":34,"type":"DataItem[][]","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"sectionItems","defaultValue":"[]","deprecated":false,"deprecationMessage":"","type":"SectionItem[]","optional":false,"description":"

      Converted nested array of DataItem into Flat array of SectionItem

      \\n","line":37,"rawdescription":"\\nConverted nested array of DataItem into Flat array of SectionItem"}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      This component displays a table with sections, where each section contains a list of items with a label and a value.

      \\n","rawdescription":"\\nThis component displays a table with sections, where each section contains a list of items with a label and a value.","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: flex;\\n padding: 1rem 1.5rem;\\n border-radius: 0.5rem;\\n box-shadow: 0.063rem 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n background-color: vars.$primary-contrast-rgb;\\n\\n .mat-mdc-cell {\\n padding: 0.25rem 0rem;\\n }\\n\\n .mat-mdc-row {\\n height: fit-content;\\n }\\n\\n .no-border {\\n border: none;\\n }\\n\\n .label {\\n color: #243142;\\n padding-right: 3rem;\\n }\\n\\n .value {\\n color: #4c5a69;\\n }\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n}\\n","styleUrl":"./biomarker-table-data-card.component.scss"}],"stylesData":"","implements":["OnChanges"],"templateData":"
      No data
      \\n
      - +
      - +
      - +
      - +
      - +
      - +
      - +
      - +
      - +
      - +
      - +
      - +
      - +
      - +
      Basic usageSpecialize query arguments and/or return typeBasic usageSpecialize query arguments and/or return type
      0\\" [dataSource]=\\"sectionItems\\">\\n \\n\\n \x3c!-- Label Column --\x3e\\n \\n \\n \\n \\n\\n \x3c!-- Value Column --\x3e\\n \\n \\n \\n \\n\\n \\n
      \\n Biomarker Table Data Card\\n
      Item Label\\n {{ element.data.label }}\\n Item Value\\n {{ element.data.value }}\\n
      \\n"},{"name":"BiomarkerTableDataIconComponent","id":"component-BiomarkerTableDataIconComponent-0fab04062dee70e0c4d57bfdc6f056400c9b82591b050c6912b9e59a896e1a5535f884a104c1d3f95c19721a049ca51f5b2a953512dc1d6a501c29d5399a063c","file":"src/lib/biomarker-table-data-icon/biomarker-table-data-icon.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table-data-icon","styleUrls":["./biomarker-table-data-icon.component.scss"],"styles":[],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[{"name":"color","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRepresents the color of the icon","description":"

      Represents the color of the icon

      \\n","line":17,"type":"string","decorators":[]},{"name":"size","defaultValue":"0","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRepresents the size of the icon","description":"

      Represents the size of the icon

      \\n","line":20,"type":"number","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Describes the data icon for the table

      \\n","rawdescription":"\\n\\nDescribes the data icon for the table\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, HostBinding, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n * Describes the data icon for the table\\n */\\n@Component({\\n selector: \'hra-biomarker-table-data-icon\',\\n standalone: true,\\n imports: [CommonModule],\\n template: \'\',\\n styleUrls: [\'./biomarker-table-data-icon.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataIconComponent {\\n /** Represents the color of the icon */\\n @HostBinding(\'style.background-color\') @Input() color = \'\';\\n\\n /** Represents the size of the icon */\\n @HostBinding(\'style.--radius.rem\') @Input() size = 0;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n border-radius: 50%;\\n --radius: 0.625rem;\\n width: var(--radius);\\n height: var(--radius);\\n}\\n","styleUrl":"./biomarker-table-data-icon.component.scss"}],"stylesData":""},{"name":"ContactModalComponent","id":"component-ContactModalComponent-309310b2740da63be5ea5aaa894ef73ced8bed2a86b50643af4dd031551d6cdb7b26ece6b3328d0e31c21e46f940bd8b901f5665c241ca2a4cb38f39631bd8a3","file":"src/lib/contact-modal/contact-modal.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-contact-modal","styleUrls":["./contact-modal.component.scss"],"styles":[],"templateUrl":["./contact-modal.component.html"],"viewProviders":[],"inputsClass":[{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product logo URL to displayed on the left side.","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":49,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product title to displayed on the left side.","description":"

      Input for product title to displayed on the left side.

      \\n","line":52,"type":"string","decorators":[]}],"outputsClass":[{"name":"closeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the cancel button or close icon is clicked","description":"

      Emits when the cancel button or close icon is clicked

      \\n","line":58,"type":"EventEmitter"},{"name":"submitClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the submit button is clicked and all the values are appropriate.","description":"

      Emits when the submit button is clicked and all the values are appropriate.

      \\n","line":55,"type":"EventEmitter"}],"propertiesClass":[{"name":"contactData","defaultValue":"EMPTY_CONTACT_DATA","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Asigns the undefined initially to all the input fields.

      \\n","line":66,"rawdescription":"\\nAsigns the undefined initially to all the input fields."}],"methodsClass":[{"name":"submit","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":76,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nIt emits the updated value of contact data","description":"

      It emits the updated value of contact data

      \\n"},{"name":"updateData","args":[{"name":"key","type":"K","deprecated":false,"deprecationMessage":""},{"name":"value","type":"","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":["K"],"line":69,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nUpdates the contact data object with a new value for a given key.","description":"

      Updates the contact data object with a new value for a given key.

      \\n","jsdoctags":[{"name":"key","type":"K","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"value","type":"","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Contact modal component.

      \\n","rawdescription":"\\n\\nContact modal component.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmailInputComponent, RequiredInputComponent, RequiredTextboxComponent } from \'@hra-ui/components/atoms\';\\nimport { produce } from \'immer\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n An interface representing contact data information which will be emitted if all the fields are in correct format.\\n */\\nexport interface ContactData {\\n /** The email address of the person submitting the form. */\\n email: string;\\n /** The subject line of the message being sent. */\\n subject: string;\\n /** The body of the message being sent. */\\n message: string;\\n}\\n\\n/** Initial empty contact data */\\nconst EMPTY_CONTACT_DATA: Partial = {\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n};\\n\\n/**\\n * Contact modal component.\\n */\\n@Component({\\n selector: \'hra-contact-modal\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatIconModule,\\n EmailInputComponent,\\n MarkdownModule,\\n RequiredTextboxComponent,\\n RequiredInputComponent,\\n ],\\n templateUrl: \'./contact-modal.component.html\',\\n styleUrls: [\'./contact-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactModalComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Emits when the submit button is clicked and all the values are appropriate. */\\n @Output() readonly submitClick = new EventEmitter();\\n\\n /** Emits when the cancel button or close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n\\n /** A function to disable the submit button. If all the values are in approproiate format, then it will be enabled. */\\n get disableSubmit(): boolean {\\n return Object.values(this.contactData).some((value) => value === undefined);\\n }\\n\\n /** Asigns the undefined initially to all the input fields. */\\n contactData = EMPTY_CONTACT_DATA;\\n\\n /** Updates the contact data object with a new value for a given key. */\\n updateData(key: K, value?: ContactData[K]): void {\\n this.contactData = produce(this.contactData, (draft) => {\\n draft[key] = value;\\n });\\n }\\n\\n /** It emits the updated value of contact data */\\n submit(): void {\\n this.submitClick.emit(this.contactData as ContactData);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n position: relative;\\n padding-top: 2rem;\\n margin-right: 1.5rem;\\n margin-left: 1.5rem;\\n font-family: \'Inter\';\\n\\n .product-logo {\\n display: flex;\\n align-items: center;\\n\\n .product-logo-image {\\n margin-right: 1rem;\\n }\\n\\n .product-title {\\n color: #990000;\\n margin: 0;\\n font-weight: 600;\\n }\\n }\\n\\n .close {\\n position: absolute;\\n top: 1.5rem;\\n right: 0rem;\\n }\\n\\n .submit {\\n margin-right: 1.5rem;\\n }\\n\\n .submit,\\n .cancel {\\n width: 7.5rem;\\n }\\n\\n .email {\\n margin-top: 1.25rem;\\n }\\n\\n .message-field {\\n margin-top: 1rem;\\n }\\n\\n .subject-field {\\n margin-top: 1rem;\\n }\\n\\n .desc {\\n margin-top: 1.5rem;\\n }\\n}\\n","styleUrl":"./contact-modal.component.scss"}],"stylesData":"","accessors":{"disableSubmit":{"name":"disableSubmit","getSignature":{"name":"disableSubmit","type":"boolean","returnType":"boolean","line":61,"rawdescription":"\\nA function to disable the submit button. If all the values are in approproiate format, then it will be enabled.","description":"

      A function to disable the submit button. If all the values are in approproiate format, then it will be enabled.

      \\n"}}},"templateData":"\\n \\"Prodoct\\n

      {{ productTitle }}

      \\n
      \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n"},{"name":"FooterComponent","id":"component-FooterComponent-45c5a61fc5d68c201808fb76ff867f9a7cf8e42e6ef95ae08b440dbd37ce63eb4c77c3da0597ef90973854d65522a3ba496eeb5eccbe75750c1fd2f5abf52e6b","file":"src/lib/footer/footer.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-footer","styleUrls":["./footer.component.scss"],"styles":[],"templateUrl":["./footer.component.html"],"viewProviders":[],"inputsClass":[{"name":"downloadFormats","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDifferent download formats options displayed to the user","description":"

      Different download formats options displayed to the user

      \\n","line":74,"type":"T[]","decorators":[]},{"name":"embed","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for embed link in HRA Portal","description":"

      Input for embed link in HRA Portal

      \\n","line":71,"type":"any","decorators":[]},{"name":"hraPortal","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for HRA Portal link","description":"

      Input for HRA Portal link

      \\n","line":65,"type":"any","decorators":[]},{"name":"illustrationMetadata","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for Illustration metadata page link in HRA Portal","description":"

      Input for Illustration metadata page link in HRA Portal

      \\n","line":68,"type":"any","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product logo URL to displayed on the left side.","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":59,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product title to displayed on the left side.","description":"

      Input for product title to displayed on the left side.

      \\n","line":62,"type":"string","decorators":[]},{"name":"size","defaultValue":"\'large\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHost binding of footer component","description":"

      Host binding of footer component

      \\n","line":56,"type":"\\"small\\" | \\"large\\"","decorators":[]}],"outputsClass":[{"name":"contactClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the contact button is clicked","description":"

      Emits when the contact button is clicked

      \\n","line":80,"type":"EventEmitter"},{"name":"download","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the selected download format","description":"

      Emits the selected download format

      \\n","line":77,"type":"EventEmitter"}],"propertiesClass":[{"name":"downloadListOpen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Whether the download list panel is open

      \\n","line":91,"rawdescription":"\\nWhether the download list panel is open"},{"name":"DOWNLOADS_LIST_POSITION","defaultValue":"DOWNLOADS_LIST_POSITION","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Download list popup overlay positioning

      \\n","line":83,"rawdescription":"\\nDownload list popup overlay positioning","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for footer that displays its content at the bottom of the page with different action buttons.

      \\n","rawdescription":"\\n\\nComponent for footer that displays its content at the bottom of the page with different action buttons.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { MatListModule } from \'@angular/material/list\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * Base type for different download format options.\\n */\\nexport interface DownloadFormat {\\n /**\\n * User readable format label\\n */\\n label: string;\\n}\\n\\n/**\\n * Positioning value for the download list popup\\n */\\nconst DOWNLOADS_LIST_POSITION: ConnectedPosition[] = [\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n];\\n\\n/**\\n * Component for footer that displays its content at the bottom of the page with different action buttons.\\n */\\n@Component({\\n selector: \'hra-footer\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, OverlayModule, MatListModule, LinkDirective],\\n templateUrl: \'./footer.component.html\',\\n styleUrls: [\'./footer.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterComponent {\\n /** Host binding of footer component */\\n @HostBinding(\'class\')\\n @Input()\\n size: \'small\' | \'large\' = \'large\';\\n\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Input for HRA Portal link */\\n @Input() hraPortal = EMPTY_LINK;\\n\\n /** Input for Illustration metadata page link in HRA Portal */\\n @Input() illustrationMetadata = EMPTY_LINK;\\n\\n /** Input for embed link in HRA Portal */\\n @Input() embed = EMPTY_LINK;\\n\\n /** Different download formats options displayed to the user */\\n @Input() downloadFormats: T[] = [];\\n\\n /** Emits the selected download format */\\n @Output() readonly download = new EventEmitter();\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly contactClick = new EventEmitter();\\n\\n /** Download list popup overlay positioning */\\n readonly DOWNLOADS_LIST_POSITION = DOWNLOADS_LIST_POSITION;\\n\\n /** Gets whether the footer required is small */\\n get isSmall(): boolean {\\n return this.size === \'small\';\\n }\\n\\n /** Whether the download list panel is open */\\n downloadListOpen = false;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n padding: 1rem 2rem;\\n border-top: 0.063rem solid #e2e7e9;\\n align-items: center;\\n background-color: #f8f9fa;\\n gap: 1rem;\\n\\n --palette-primary-500: #abcdef;\\n\\n .controls {\\n display: flex;\\n justify-content: flex-end;\\n }\\n .filler {\\n flex-grow: 1;\\n }\\n\\n .product-title {\\n color: #990000;\\n margin-right: 0rem;\\n }\\n\\n a {\\n cursor: pointer;\\n display: flex;\\n }\\n\\n .product-logo-image {\\n height: 1.2rem;\\n margin-right: 1rem;\\n }\\n\\n button {\\n justify-content: center;\\n align-items: center;\\n min-width: 9rem;\\n min-height: 3rem;\\n gap: 0.5rem;\\n\\n --palette-primary-100-rgb: #4c5a69;\\n --palette-primary-500-rgb: #243142;\\n\\n &.mat-accent {\\n &:active {\\n --palette-primary-700-rgb: #4c5a69;\\n }\\n .mat-icon {\\n z-index: 1;\\n }\\n }\\n }\\n}\\n\\n::ng-deep {\\n .download-options-panel {\\n box-shadow: 0.1rem 0.1rem 0.4rem 0.2rem #dad7d7;\\n background-color: #ffffff;\\n }\\n}\\n","styleUrl":"./footer.component.scss"}],"stylesData":"","accessors":{"isSmall":{"name":"isSmall","getSignature":{"name":"isSmall","type":"boolean","returnType":"boolean","line":86,"rawdescription":"\\nGets whether the footer required is small","description":"

      Gets whether the footer required is small

      \\n"}}},"templateData":"\\n
      \\n\\n\\n\\n\\n download\\n Download\\n\\n\\n\\n\\n
      \\n\\n\\n\\n\\n\\n\\n \\n \\n {{ format.label }}\\n \\n \\n\\n"},{"name":"FullscreenContainerComponent","id":"component-FullscreenContainerComponent-78edc2b37cbc90a17be0fcca4ed7291593d5f3d12c4ea823de3f9510c13bad4492bc5cd65823726fc7e333c874880c17093ff9d20096fd92e20137c8cc4f75af","file":"src/lib/fullscreen/fullscreen-container.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-fullscreen-container","styleUrls":[],"styles":["\\n :host {\\n display: block;\\n position: relative;\\n }\\n "],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[{"name":"fullscreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA boolean input property that controls the fullscreen mode","description":"

      A boolean input property that controls the fullscreen mode

      \\n","line":38,"type":"boolean","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"content","deprecated":false,"deprecationMessage":"","type":"QueryList","optional":true,"description":"

      A property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component's content area

      \\n","line":35,"rawdescription":"\\nA property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component\'s content area","decorators":[{"name":"ContentChildren","stringifiedArguments":"FullscreenContentComponent"}],"modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component that wraps any child components of type FullscreenContentComponent and\\nsets their isFullScreen property to true or false based on its own fullscreen input property

      \\n","rawdescription":"\\nA component that wraps any child components of type FullscreenContentComponent and\\nsets their isFullScreen property to true or false based on its own fullscreen input property\\n","type":"component","sourceCode":"import {\\n AfterContentInit,\\n ChangeDetectionStrategy,\\n Component,\\n ContentChildren,\\n Input,\\n OnChanges,\\n QueryList,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { FullscreenContentComponent } from \'./fullscreen-content.component\';\\n\\n/** A component that wraps any child components of type FullscreenContentComponent and\\n * sets their isFullScreen property to true or false based on its own fullscreen input property\\n */\\n@Component({\\n selector: \'hra-fullscreen-container\',\\n standalone: true,\\n imports: [CommonModule, FullscreenContentComponent],\\n template: \'\',\\n styles: [\\n `\\n :host {\\n display: block;\\n position: relative;\\n }\\n `,\\n ],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FullscreenContainerComponent implements AfterContentInit, OnChanges {\\n /** A property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component\'s content area */\\n @ContentChildren(FullscreenContentComponent)\\n readonly content?: QueryList;\\n\\n /** A boolean input property that controls the fullscreen mode */\\n @Input() fullscreen = false;\\n\\n /** It calls the updateFullscreenMode method to set the isFullScreen property of the child\\n * FullscreenContentComponent instances based on the value of the fullscreen input property\\n */\\n ngAfterContentInit(): void {\\n this.updateFullscreenMode();\\n }\\n\\n /** It checks if the fullscreen input property has changed, and calls the updateFullscreenMode method if it has */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'fullscreen\' in changes) {\\n this.updateFullscreenMode();\\n }\\n }\\n\\n /** A private method that sets the isFullScreen property of each child FullscreenContentComponent based on the value of the fullscreen */\\n private updateFullscreenMode(): void {\\n this.content?.forEach((content) => {\\n content.isFullScreen = this.fullscreen;\\n });\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":"","stylesData":"\\n :host {\\n display: block;\\n position: relative;\\n }\\n \\n","implements":["AfterContentInit","OnChanges"]},{"name":"FullscreenContentComponent","id":"component-FullscreenContentComponent-061cdd7c639f9c53e46272aaf23ed318885fbcf937978d8940b0f0baf165576129c5897204992603662d7b530bcd8d63a7d7a97602a18e97b7f1711f84c4725f","file":"src/lib/fullscreen/fullscreen-content.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-fullscreen-content","styleUrls":["./fullscreen-content.component.scss"],"styles":[],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"isFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":40,"rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","decorators":[{"name":"HostBinding","stringifiedArguments":"\'class.fullscreen-on\'"},{"name":"HostBinding","stringifiedArguments":"\'@animateResize\'"}]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[{"name":"@animateResize","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":40,"type":"boolean","decorators":[]},{"name":"class.fullscreen-on","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":40,"type":"boolean","decorators":[]}],"hostListeners":[],"description":"

      A component that displays its content in fullscreen mode when its isFullScreen property is set to true

      \\n","rawdescription":"\\nA component that displays its content in fullscreen mode when its isFullScreen property is set to true","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, HostBinding } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { animate, state, style, transition, trigger } from \'@angular/animations\';\\n\\n/** A component that displays its content in fullscreen mode when its isFullScreen property is set to true */\\n@Component({\\n selector: \'hra-fullscreen-content\',\\n standalone: true,\\n imports: [CommonModule],\\n animations: [\\n trigger(\'animateResize\', [\\n state(\\n \'true\',\\n style({\\n width: \'100%\',\\n position: \'absolute\',\\n right: 0,\\n })\\n ),\\n state(\\n \'false\',\\n style({\\n width: \'50%\',\\n position: \'absolute\',\\n right: 0,\\n })\\n ),\\n transition(\'true <=> false\', [animate(\'0.5s ease\')]),\\n ]),\\n ],\\n template: \'\',\\n styleUrls: [\'./fullscreen-content.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FullscreenContentComponent {\\n /** This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true */\\n @HostBinding(\'class.fullscreen-on\')\\n /** This binds the isFullScreen property to the @animateResize when isFullScreen is true */\\n @HostBinding(\'@animateResize\')\\n isFullScreen = false;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n overflow-y: hidden;\\n transition: width 0.5s ease;\\n width: 50%;\\n\\n &.fullscreen-on {\\n z-index: 100;\\n background: #f8f9fa;\\n }\\n}\\n","styleUrl":"./fullscreen-content.component.scss"}],"stylesData":""},{"name":"HeaderComponent","id":"component-HeaderComponent-81f5689eacf69c8f1658a62e299bcad0df485f2cc8e6664f3f16cfa7d30400e53a54549f6aa8125abb2fc207fb428887c0a19dde695063a2d92611d78d9c6956","file":"src/lib/header/header.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-header","styleUrls":["./header.component.scss"],"styles":[],"templateUrl":["./header.component.html"],"viewProviders":[],"inputsClass":[{"name":"aboutLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for about link","description":"

      Input for about link

      \\n","line":40,"type":"any","decorators":[]},{"name":"appTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for app title to show on the left side.\\n","description":"

      Input for app title to show on the left side.

      \\n","line":34,"type":"string","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for product logo URL to displayed on the left side.\\n","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":24,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for product title to displayed on the left side.\\n","description":"

      Input for product title to displayed on the left side.

      \\n","line":29,"type":"string","decorators":[]},{"name":"productTitleLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for Product Title link","description":"

      Input for Product Title link

      \\n","line":37,"type":"any","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Header component, displays on top of every page.

      \\n","rawdescription":"\\n\\nHeader component, displays on top of every page.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk\';\\n\\n/**\\n * Header component, displays on top of every page.\\n */\\n@Component({\\n selector: \'hra-header\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MatRippleModule, LinkDirective],\\n templateUrl: \'./header.component.html\',\\n styleUrls: [\'./header.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HeaderComponent {\\n /**\\n * Input for product logo URL to displayed on the left side.\\n */\\n @Input() productLogoUrl = \'\';\\n\\n /**\\n * Input for product title to displayed on the left side.\\n */\\n @Input() productTitle = \'\';\\n\\n /**\\n * Input for app title to show on the left side.\\n */\\n @Input() appTitle = \'\';\\n\\n /** Input for Product Title link */\\n @Input() productTitleLink = EMPTY_LINK;\\n\\n /** Input for about link */\\n @Input() aboutLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: flex;\\n align-items: center;\\n height: 5rem;\\n padding: 0 2rem 0 1rem;\\n\\n @include utils.define-flex-filler();\\n\\n h1 {\\n // Reset margins for h1 elements\\n margin: 0;\\n }\\n\\n .product {\\n display: flex;\\n align-items: center;\\n text-decoration: none;\\n // Style the ripple animation\\n padding: 0 1rem;\\n border-radius: 0.25rem;\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\\n .text {\\n margin-left: 1rem;\\n font-weight: 600;\\n color: vars.$accent-rgb;\\n }\\n }\\n\\n .app {\\n margin-left: 0.5rem;\\n }\\n\\n .about {\\n width: 9rem;\\n height: 3rem;\\n text-decoration: none;\\n span {\\n border-bottom: 1px solid var(--palette-primary-500-rgb);\\n }\\n .icon {\\n width: 1.5rem;\\n height: 1.5rem;\\n font-size: 1.5rem;\\n }\\n }\\n\\n @media (max-width: 30rem) {\\n height: 4.5rem;\\n\\n .product .text,\\n .about .text {\\n @include utils.sr-only();\\n }\\n\\n .product {\\n height: 2.5rem;\\n padding: 0 0.25rem;\\n\\n .logo {\\n width: 1.5rem;\\n height: 1.5rem;\\n }\\n }\\n\\n .app {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n }\\n\\n .about {\\n min-width: 2.5rem;\\n width: 2.5rem;\\n height: 2.5rem;\\n padding: 0;\\n\\n .icon {\\n margin: 0;\\n }\\n }\\n }\\n\\n @media (max-width: 20rem) {\\n padding: 0;\\n }\\n}\\n","styleUrl":"./header.component.scss"}],"stylesData":"","templateData":"\\n \\n

      {{ productTitle }}

      \\n
      \\n

      {{ appTitle }}

      \\n\\n
      \\n\\n\\n info_outlined\\n About\\n\\n"},{"name":"HraLandingPageIntroWcComponent","id":"component-HraLandingPageIntroWcComponent-57ba89b5fa60bec2ad59de1cc52e4d3002935eab8da7f77895b1d7b507237df7df5d8fa2fec4dd3ba498b8d06fc5f70758beb2ba67ccbb24f2819798948e81d4","file":"src/lib/hra-landing-page-intro-wc/hra-landing-page-intro-wc.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-ui-hra-landing-page-intro-wc","styleUrls":["./hra-landing-page-intro-wc.component.scss"],"styles":[],"templateUrl":["./hra-landing-page-intro-wc.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for FTU Explorer","description":"

      Description for FTU Explorer

      \\n","line":19,"type":"string","decorators":[]},{"name":"partners","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThank you message to partners","description":"

      Thank you message to partners

      \\n","line":22,"type":"string","decorators":[]},{"name":"readMore","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro Image file url","description":"

      Intro Image file url

      \\n","line":25,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro title for FTU Explorer","description":"

      Intro title for FTU Explorer

      \\n","line":16,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro - Web coomponent

      \\n","rawdescription":"\\nComponent for LandingPage Intro - Web coomponent","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Component for LandingPage Intro - Web coomponent */\\n@Component({\\n selector: \'hra-ui-hra-landing-page-intro-wc\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule],\\n templateUrl: \'./hra-landing-page-intro-wc.component.html\',\\n styleUrls: [\'./hra-landing-page-intro-wc.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HraLandingPageIntroWcComponent {\\n /** Intro title for FTU Explorer */\\n @Input() title = \'\';\\n\\n /** Description for FTU Explorer */\\n @Input() description = \'\';\\n\\n /** Thank you message to partners */\\n @Input() partners = \'\';\\n\\n /** Intro Image file url */\\n @Input() readMore = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n gap: 8px;\\n padding: 24px, 32px, 24px, 32px;\\n .title {\\n font-size: 20px;\\n font-family: Inter;\\n font-weight: 400;\\n line-height: 24px;\\n letter-spacing: 0em;\\n text-align: left;\\n }\\n\\n .description .partners .readMore {\\n font-family: Inter;\\n font-size: 16px;\\n font-weight: 400;\\n line-height: 24px;\\n letter-spacing: 0em;\\n text-align: left;\\n }\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n ::ng-deep p {\\n margin: 0;\\n }\\n}\\n","styleUrl":"./hra-landing-page-intro-wc.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n\\n\\n\\n\\n\\n"},{"name":"InfoModalComponent","id":"component-InfoModalComponent-56dc03e6960f4005149bab8dbf6a5b713061505964f6b3cc7d33868ed7f83aff7dbf222ccf66999864c6313f218c20f849715b3ebcc4d2ea44285c6e07811662","file":"src/lib/info-modal/info-modal.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-info-modal","styleUrls":["./info-modal.component.scss"],"styles":[],"templateUrl":["./info-modal.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInformation modal message to the user","description":"

      Information modal message to the user

      \\n","line":24,"type":"string","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nProduct logo shown to the user","description":"

      Product logo shown to the user

      \\n","line":21,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nProduct title shown to the user","description":"

      Product title shown to the user

      \\n","line":18,"type":"string","decorators":[]}],"outputsClass":[{"name":"closeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the close icon is clicked","description":"

      Emits when the close icon is clicked

      \\n","line":27,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays an information modal to the user with the product title and logo and description

      \\n","rawdescription":"\\nDisplays an information modal to the user with the product title and logo and description","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Displays an information modal to the user with the product title and logo and description */\\n@Component({\\n selector: \'hra-info-modal\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MarkdownModule],\\n templateUrl: \'./info-modal.component.html\',\\n styleUrls: [\'./info-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class InfoModalComponent {\\n /** Product title shown to the user */\\n @Input() productTitle = \'\';\\n\\n /** Product logo shown to the user */\\n @Input() productLogoUrl = \'\';\\n\\n /** Information modal message to the user */\\n @Input() description = \'\';\\n\\n /** Emits when the close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n position: relative;\\n padding: 2rem 2rem 1.25rem 2rem;\\n\\n .close {\\n position: absolute;\\n top: 1.5rem;\\n right: 1.5rem;\\n }\\n\\n .title {\\n display: flex;\\n align-items: center;\\n\\n .product-logo-image {\\n height: 2.75rem;\\n margin-right: 1rem;\\n }\\n\\n .product-title {\\n margin: 0;\\n color: #990000;\\n }\\n }\\n\\n .description {\\n display: block;\\n margin-top: 1rem;\\n }\\n}\\n","styleUrl":"./info-modal.component.scss"}],"stylesData":"","templateData":"\\n \\"Prodoct\\n

      {{ productTitle }}

      \\n
      \\n\\n\\n\\n\\n"},{"name":"InteractiveSvgComponent","id":"component-InteractiveSvgComponent-34dafc0493fcadf92dd676bebad498e3798e87879ccd7ab9c56dfb6b52cf51b41a6b132fa4c00fa2f32867f3f84829bef3163da37de19cf480f10a8cd94e74f1","file":"src/lib/interactive-svg/interactive-svg.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":["ViewEncapsulation.ShadowDom"],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-interactive-svg","styleUrls":["./interactive-svg.component.scss"],"styles":[],"templateUrl":["./interactive-svg.component.html"],"viewProviders":[],"inputsClass":[{"name":"highlightId","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHighlighted ontology id","description":"

      Highlighted ontology id

      \\n","line":94,"type":"string","decorators":[]},{"name":"mapping","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nMapping info","description":"

      Mapping info

      \\n","line":91,"type":"T[]","decorators":[]},{"name":"url","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSVG url","description":"

      SVG url

      \\n","line":88,"type":"string","decorators":[]}],"outputsClass":[{"name":"nodeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits node id when clicked","description":"

      Emits node id when clicked

      \\n","line":100,"type":"EventEmitter"},{"name":"nodeHover","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits node id when hovered","description":"

      Emits node id when hovered

      \\n","line":97,"type":"EventEmitter"}],"propertiesClass":[{"name":"NEVER_EVAL_SCRIPTS","defaultValue":"SVGScriptEvalMode.NEVER","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      SVG script eval mode

      \\n","line":103,"rawdescription":"\\nSVG script eval mode","modifierKind":[144]},{"name":"nodeHoverData$","defaultValue":"new BehaviorSubject(undefined)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable of node hover data or undefined when there is no active hover

      \\n","line":109,"rawdescription":"\\nObservable of node hover data or undefined when there is no active hover","modifierKind":[144]},{"name":"nodeHoverDelayedData$","defaultValue":"this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)))","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable of node hover with a timer

      \\n","line":112,"rawdescription":"\\nObservable of node hover with a timer","modifierKind":[144]},{"name":"TOOLTIP_POSITIONS","defaultValue":"TOOLTIP_POSITIONS","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Tooltip position settings

      \\n","line":106,"rawdescription":"\\nTooltip position settings","modifierKind":[144]}],"methodsClass":[{"name":"formatNodeName","args":[{"name":"name","type":"string","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"string","typeParameters":[],"line":196,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nRemoves underscores from id\\n","description":"

      Removes underscores from id

      \\n","jsdoctags":[{"name":{"pos":4993,"end":4997,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"name"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4987,"end":4992,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Node name

      \\n"},{"tagName":{"pos":5014,"end":5021,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      node name without underscores

      \\n"}]},{"name":"setSvgElement","args":[{"name":"el","type":"SVGElement","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":181,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nSets SVG element\\n","description":"

      Sets SVG element

      \\n","jsdoctags":[{"name":{"pos":4595,"end":4597,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"el"},"type":"SVGElement","deprecated":false,"deprecationMessage":"","tagName":{"pos":4589,"end":4594,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      SVG element

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Interactive SVG component

      \\n","rawdescription":"\\n\\nInteractive SVG component\\n","type":"component","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.onCrosswalkHover(undefined as never as MouseEvent));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n if (event) {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n } else {\\n this.nodeHoverData$.next(undefined);\\n this.nodeHover.emit();\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":".svg {\\n max-height: calc(100vh - 14rem);\\n overflow-y: auto;\\n}\\nsvg {\\n max-height: calc(100vh - 10rem);\\n width: 100%;\\n}\\n\\n[id^=\'Crosswalk\'] {\\n :is(path, polygon, polyline) {\\n fill: transparent;\\n stroke: transparent;\\n }\\n\\n .hover-active & g:hover > :is(path, polygon, polyline),\\n .hover-active & g > g:hover > :is(path, polygon, polyline),\\n .click-active {\\n fill: hsl(0deg 100% 50%);\\n mix-blend-mode: saturation;\\n }\\n}\\n\\n::-webkit-scrollbar {\\n width: 0.5rem;\\n height: 0.5rem;\\n}\\n\\n::-webkit-scrollbar-track {\\n background: #f8f9fa;\\n border: 0.063rem solid #d3d3d3;\\n}\\n\\n::-webkit-scrollbar-thumb {\\n background: #a0abb4;\\n border-radius: 0.5rem;\\n}\\n","styleUrl":"./interactive-svg.component.scss"}],"stylesData":"","implements":["OnChanges","OnDestroy"],"templateData":"\\n\\n\\n \\n \\n \\n\\n"},{"name":"LandingPageInDepthComponent","id":"component-LandingPageInDepthComponent-266cc77d12f81268af62a259a42675f25c0be65e3cab6881ce7afcd3dbaa4ab87e767f669fc822ea592327de677787a00c9eb4a5b9b1171d78fe6aefc8cc439b","file":"src/lib/landing-page-in-depth/landing-page-in-depth.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-landing-page-in-depth","styleUrls":["./landing-page-in-depth.component.scss"],"styles":[],"templateUrl":["./landing-page-in-depth.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage description shown to the user","description":"

      Image description shown to the user

      \\n","line":24,"type":"string","decorators":[]},{"name":"img","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage shown to the user","description":"

      Image shown to the user

      \\n","line":27,"type":"string","decorators":[]},{"name":"moreLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLink to navigate to on more button click","description":"

      Link to navigate to on more button click

      \\n","line":33,"type":"any","decorators":[]},{"name":"moreText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nText for more button","description":"

      Text for more button

      \\n","line":30,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage title shown to the user","description":"

      Image title shown to the user

      \\n","line":21,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays the image and also corresponding title and text along with a button to read more

      \\n","rawdescription":"\\n\\nDisplays the image and also corresponding title and text along with a button to read more\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n * Displays the image and also corresponding title and text along with a button to read more\\n */\\n@Component({\\n selector: \'hra-landing-page-in-depth\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule, MatButtonModule, MatIconModule, LinkDirective],\\n templateUrl: \'./landing-page-in-depth.component.html\',\\n styleUrls: [\'./landing-page-in-depth.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageInDepthComponent {\\n /** Image title shown to the user */\\n @Input() title = \'\';\\n\\n /** Image description shown to the user */\\n @Input() description = \'\';\\n\\n /** Image shown to the user */\\n @Input() img = \'\';\\n\\n /** Text for more button */\\n @Input() moreText = \'\';\\n\\n /** Link to navigate to on more button click */\\n @Input() moreLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 2fr 3fr;\\n grid-template-rows: auto auto 1fr;\\n column-gap: 2rem;\\n row-gap: 2rem;\\n padding: 3.5rem 2rem;\\n\\n .image {\\n grid-column: 1;\\n grid-row: 1 / span 3;\\n width: 100%;\\n height: auto;\\n align-self: center;\\n border-radius: 1rem;\\n box-shadow: 0.06rem 0.13rem 1rem 0.13rem #00000029;\\n }\\n\\n .title {\\n font-size: 2rem;\\n line-height: 2.5rem;\\n margin: 0;\\n }\\n\\n .description {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n\\n ::ng-deep p {\\n margin: 0;\\n }\\n\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n }\\n\\n .more-button {\\n width: fit-content;\\n height: 3rem;\\n }\\n}\\n","styleUrl":"./landing-page-in-depth.component.scss"}],"stylesData":"","templateData":"\\"\\"\\n

      {{ title }}

      \\n\\n\\n"},{"name":"LandingPageIntroComponent","id":"component-LandingPageIntroComponent-8e48a2ad3d32eea60c9dee7976b3dbc195b3a8107a3c174ac68b4696362903f19522bad089b509daae23505334aa5361945e7a8124fd32f17a6834c349c87aed","file":"src/lib/landing-page-intro/landing-page-intro.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-landing-page-intro","styleUrls":["./landing-page-intro.component.scss"],"styles":[],"templateUrl":["./landing-page-intro.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for FTU Explorer","description":"

      Description for FTU Explorer

      \\n","line":22,"type":"string","decorators":[]},{"name":"img","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro Image file url","description":"

      Intro Image file url

      \\n","line":28,"type":"string","decorators":[]},{"name":"moreLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLink to navigate to on more button click","description":"

      Link to navigate to on more button click

      \\n","line":34,"type":"any","decorators":[]},{"name":"moreText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nText for more button","description":"

      Text for more button

      \\n","line":31,"type":"string","decorators":[]},{"name":"partners","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThank you message to partners","description":"

      Thank you message to partners

      \\n","line":25,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro title for FTU Explorer","description":"

      Intro title for FTU Explorer

      \\n","line":19,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro

      \\n","rawdescription":"\\nComponent for LandingPage Intro","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Component for LandingPage Intro */\\n@Component({\\n selector: \'hra-landing-page-intro\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MarkdownModule, LinkDirective],\\n templateUrl: \'./landing-page-intro.component.html\',\\n styleUrls: [\'./landing-page-intro.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageIntroComponent {\\n /** Intro title for FTU Explorer */\\n @Input() title = \'\';\\n\\n /** Description for FTU Explorer */\\n @Input() description = \'\';\\n\\n /** Thank you message to partners */\\n @Input() partners = \'\';\\n\\n /** Intro Image file url */\\n @Input() img = \'\';\\n\\n /** Text for more button */\\n @Input() moreText = \'\';\\n\\n /** Link to navigate to on more button click */\\n @Input() moreLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 3fr 2fr;\\n grid-template-rows: auto auto 3rem 1fr;\\n align-items: start;\\n column-gap: 2rem;\\n row-gap: 2rem;\\n\\n .title {\\n font-size: 3rem;\\n line-height: 4rem;\\n margin: 0;\\n }\\n\\n .more-button {\\n width: fit-content;\\n height: 3rem;\\n }\\n\\n .image {\\n grid-column: 2;\\n grid-row: 1 / span 4;\\n place-self: center;\\n width: 100%;\\n height: auto;\\n }\\n\\n .description,\\n .partners {\\n ::ng-deep p {\\n margin: 0;\\n }\\n\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n }\\n\\n .red-theme {\\n background-color: #990000;\\n border-color: #990000;\\n &:hover {\\n background-color: #990000;\\n border-color: #990000;\\n\\n mat-icon {\\n transform: translateX(30%);\\n transition: 0.5s;\\n }\\n }\\n\\n &:active,\\n &:focus,\\n &:focus:not(:hover) {\\n background-color: #990000;\\n border-color: #990000;\\n\\n ::ng-deep .mat-mdc-focus-indicator {\\n background-color: #990000 !important;\\n border-color: #990000;\\n }\\n }\\n }\\n}\\n","styleUrl":"./landing-page-intro.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n\\n\\n\\n\\n\\"alt\\"\\n"},{"name":"MetricsComponent","id":"component-MetricsComponent-e52c0a1cdf090042d1924c4907a4034774cbb442217faca9ec5035e76d2796116cf55644ecf49ae040fdea1168f9c5d99f6ce15b2079f70de3d853fece481b30","file":"src/lib/metrics/metrics.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-metrics","styleUrls":["./metrics.component.scss"],"styles":[],"templateUrl":["./metrics.component.html"],"viewProviders":[],"inputsClass":[{"name":"logo","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLogo of metrics component.","description":"

      Logo of metrics component.

      \\n","line":31,"type":"string","decorators":[]},{"name":"metrics","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nList of metrics that will be shown to the user.","description":"

      List of metrics that will be shown to the user.

      \\n","line":34,"type":"MetricItem[]","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nMain title of metrics component.","description":"

      Main title of metrics component.

      \\n","line":28,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Describes the metrics for the HuBMAP project.

      \\n","rawdescription":"\\n\\nDescribes the metrics for the HuBMAP project.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n An interface representing a single metric with an icon, value and description.\\n */\\nexport interface MetricItem {\\n /** Represents the icon associated with the metric. */\\n icon: string;\\n /** Describes the numberical value of the metric. */\\n value: string;\\n /** Describes the type of metric. */\\n description: string;\\n}\\n/**\\n * Describes the metrics for the HuBMAP project.\\n */\\n@Component({\\n selector: \'hra-metrics\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./metrics.component.html\',\\n styleUrls: [\'./metrics.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MetricsComponent {\\n /** Main title of metrics component. */\\n @Input() title = \'\';\\n\\n /** Logo of metrics component. */\\n @Input() logo = \'\';\\n\\n /** List of metrics that will be shown to the user. */\\n @Input() metrics: MetricItem[] = [];\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n padding: 2rem 0 0 0;\\n background: #f8f9fa;\\n gap: 0.5rem;\\n\\n .logo {\\n height: 2.75rem;\\n }\\n\\n .header-title {\\n font-size: 2rem;\\n line-height: 2.5rem;\\n }\\n\\n .metrics {\\n display: flex;\\n flex-direction: row;\\n overflow-x: auto;\\n max-width: 100%;\\n gap: 2rem;\\n padding: 2rem 1.75rem;\\n\\n .metric {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n min-width: 14.25rem;\\n height: 14.75rem;\\n padding-top: 2rem;\\n padding-bottom: 2rem;\\n\\n .logo {\\n margin-bottom: 2rem;\\n }\\n\\n .value {\\n font-size: 3rem;\\n line-height: 4rem;\\n margin-bottom: 0.25rem;\\n }\\n\\n .description {\\n font-size: 1rem;\\n text-align: center;\\n }\\n }\\n }\\n}\\n","styleUrl":"./metrics.component.scss"}],"stylesData":"","templateData":"\\"\\"\\n{{ title }}\\n\\n
      \\n
      \\n \\"\\"\\n {{ item.value }} \\n {{ item.description }} \\n
      \\n
      \\n"},{"name":"ScreenSizeNoticeComponent","id":"component-ScreenSizeNoticeComponent-6b641a220201d969fb228ecf72f5e7a8fc87da742b8a53350bc9c27cea9c54a6493313826b99ec8c34dfd7004772a27748e45af5b0c9ead80bdf168a781117f8","file":"src/lib/screen-size-notice/screen-size-notice.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-screen-size-notice","styleUrls":["./screen-size-notice.component.scss"],"styles":[],"templateUrl":["./screen-size-notice.component.html"],"viewProviders":[],"inputsClass":[{"name":"content","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for passing screen size notice content\\n","description":"

      Input for passing screen size notice content

      \\n","line":23,"type":"string","decorators":[]},{"name":"portal","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput of screen size notice component\\n","description":"

      Input of screen size notice component

      \\n","line":28,"type":"any","decorators":[]}],"outputsClass":[{"name":"proceedClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the proceed button is clicked","description":"

      Emits when the proceed button is clicked

      \\n","line":31,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The screen size notice component displays a notice for the users specifying the required screen size

      \\n","rawdescription":"\\n\\nThe screen size notice component displays a notice for the users specifying the required screen size\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\n\\n/**\\n * The screen size notice component displays a notice for the users specifying the required screen size\\n */\\n@Component({\\n selector: \'hra-screen-size-notice\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule, MatButtonModule, MatIconModule, LinkDirective],\\n templateUrl: \'./screen-size-notice.component.html\',\\n styleUrls: [\'./screen-size-notice.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ScreenSizeNoticeComponent {\\n /**\\n * Input for passing screen size notice content\\n */\\n @Input() content = \'\';\\n\\n /**\\n * Input of screen size notice component\\n */\\n @Input() portal = EMPTY_LINK;\\n\\n /** Emits when the proceed button is clicked */\\n @Output() readonly proceedClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: none;\\n position: relative;\\n border-radius: 0.5rem;\\n padding: 1.5rem;\\n flex-direction: column;\\n\\n .header-close {\\n position: absolute;\\n top: 0.625rem;\\n right: 1rem;\\n }\\n\\n h3 {\\n margin: 0 0 1rem 0;\\n font-weight: 700;\\n }\\n\\n .btn-stroked {\\n font-weight: 700;\\n margin-bottom: 1rem;\\n margin-top: 1rem;\\n padding: 0.75rem 0;\\n letter-spacing: 0.5px;\\n }\\n\\n .btn-flat {\\n font-weight: 700;\\n font-size: 16px;\\n padding: 0.75rem 0;\\n letter-spacing: 0.5px;\\n color: white;\\n }\\n\\n .content {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n letter-spacing: 0.5px;\\n }\\n\\n @media (max-width: 480px) {\\n display: flex;\\n }\\n}\\n","styleUrl":"./screen-size-notice.component.scss"}],"stylesData":"","templateData":"

      Screen Size Notice

      \\n\\n\\n\\n Human Reference Atlas Portal \\n"},{"name":"SourceListComponent","id":"component-SourceListComponent-f0d0464b044f898be3752719190f2d8ad8511283d4daafb2f8b17bd0f4dfa0290abbbeb293819664c07134fcaee5a64313aaf72d69e335a063e244c2ba1d7c0c","file":"src/lib/source-list/source-list.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-source-list","styleUrls":["./source-list.component.scss"],"styles":[],"templateUrl":["./source-list.component.html"],"viewProviders":[],"inputsClass":[{"name":"collaborateText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput buttonon text of empty biomarker component.\\n","description":"

      Input buttonon text of empty biomarker component.

      \\n","line":34,"type":"string","decorators":[]},{"name":"message","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput message markdown of empty biomarker component.\\n","description":"

      Input message markdown of empty biomarker component.

      \\n","line":39,"type":"string","decorators":[]},{"name":"sources","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nList of sources with titles and links displayed to the user","description":"

      List of sources with titles and links displayed to the user

      \\n","line":30,"type":"SourceListItem[]","decorators":[]}],"outputsClass":[{"name":"collaborateClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the contact button is clicked","description":"

      Emits when the contact button is clicked

      \\n","line":47,"type":"EventEmitter"}],"propertiesClass":[{"name":"showTable","defaultValue":"true","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Show table of source list component which toggles to true or false\\nbased on click

      \\n","line":44,"rawdescription":"\\n\\nShow table of source list component which toggles to true or false\\nbased on click\\n"}],"methodsClass":[{"name":"toggleTable","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":53,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nIt changes the value of showTable to false if value it true\\nand vice versa\\n","description":"

      It changes the value of showTable to false if value it true\\nand vice versa

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      This component shows list of sources with title and links to the datasets

      \\n","rawdescription":"\\nThis component shows list of sources with title and links to the datasets","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmptyBiomarkerComponent, LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/** SourceListItem interface contains title and link to the dataset for the SourceList*/\\nexport interface SourceListItem {\\n /** Title of the dataset in the SourceList */\\n title: string;\\n\\n /** Label of the dataset in the SourceList */\\n label: string;\\n\\n /** Link to the dataset in the SourceList */\\n link: string;\\n}\\n\\n/** This component shows list of sources with title and links to the datasets */\\n@Component({\\n selector: \'hra-source-list\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule, MatIconModule, LabelBoxComponent, EmptyBiomarkerComponent],\\n templateUrl: \'./source-list.component.html\',\\n styleUrls: [\'./source-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SourceListComponent {\\n /** List of sources with titles and links displayed to the user */\\n @Input() sources: SourceListItem[] = [];\\n /**\\n * Input buttonon text of empty biomarker component.\\n */\\n @Input() collaborateText = \'\';\\n\\n /**\\n * Input message markdown of empty biomarker component.\\n */\\n @Input() message = \'\';\\n /**\\n * Show table of source list component which toggles to true or false\\n * based on click\\n */\\n showTable = true;\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly collaborateClick = new EventEmitter();\\n\\n /**\\n * It changes the value of showTable to false if value it true\\n * and vice versa\\n */\\n toggleTable(): void {\\n this.showTable = !this.showTable;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n height: 100%;\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n\\n .toggle {\\n display: flex;\\n align-items: center;\\n height: 3.5rem;\\n grid-area: source-list-header;\\n color: var(--dark-primary-text);\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n }\\n\\n .table-content {\\n height: calc(100% - 3.5rem);\\n overflow: auto;\\n\\n &.hidden {\\n display: none;\\n }\\n\\n table {\\n height: 100%;\\n }\\n\\n .mat-mdc-cell {\\n vertical-align: top;\\n border: none;\\n padding: 0.25rem 0.875rem;\\n font-size: 1rem;\\n }\\n\\n ::ng-deep .mdc-data-table__content {\\n display: block;\\n padding: 1rem 0rem;\\n }\\n }\\n}\\n","styleUrl":"./source-list.component.scss"}],"stylesData":"","templateData":"\\n Source Data\\n \\n {{ showTable ? \'keyboard_arrow_down\' : \'keyboard_arrow_up\' }}\\n \\n\\n\\n
      \\n \\n \\n\\n \x3c!-- Position Column --\x3e\\n \\n \\n \\n \\n\\n \x3c!-- Data Column --\x3e\\n \\n \\n \\n \\n\\n \\n
      \\n Source List Table with Title and Links\\n
      Item Number{{ i + 1 }}.Title and Link\\n {{ element.title }}\\n
      \\n {{ element.label }}\\n
      \\n \\n
      \\n"},{"name":"TissueTreeListComponent","id":"component-TissueTreeListComponent-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-tissue-tree-list","styleUrls":["./tissue-tree-list.component.scss"],"styles":[],"templateUrl":["./tissue-tree-list.component.html"],"viewProviders":[],"inputsClass":[{"name":"nodes","defaultValue":"{} as Record","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput of tissue tree list component\\n","description":"

      Input of tissue tree list component

      \\n","line":69,"type":"Record","decorators":[]},{"name":"selected","defaultValue":"undefined","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nNode selected, to view the data associated with it\\n","description":"

      Node selected, to view the data associated with it

      \\n","line":74,"type":"T","decorators":[]}],"outputsClass":[{"name":"selectedChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nOutput of tissue tree list component\\n","description":"

      Output of tissue tree list component

      \\n","line":79,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n )","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      tree controller, used to control the nodes in the tree

      \\n","line":84,"rawdescription":"\\n\\ntree controller, used to control the nodes in the tree\\n","modifierKind":[144]},{"name":"dataSource","defaultValue":"new MatTreeFlatDataSource(this.control, this.flattener)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Data source of tissue tree list component, defines the data in mat-tree

      \\n","line":107,"rawdescription":"\\n\\nData source of tissue tree list component, defines the data in mat-tree\\n","modifierKind":[144]},{"name":"flattener","defaultValue":"new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n )","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Flattener of tissue tree list component, returns flat-data structure

      \\n","line":92,"rawdescription":"\\n\\nFlattener of tissue tree list component, returns flat-data structure\\n","modifierKind":[144]}],"methodsClass":[{"name":"hasChild","args":[{"name":"_","type":"number","deprecated":false,"deprecationMessage":""},{"name":"node","type":"InternalNode","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"boolean","typeParameters":[],"line":128,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ncheck if the current node has children\\n","description":"

      check if the current node has children

      \\n","jsdoctags":[{"name":"_","type":"number","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":3422,"end":3426,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"node"},"type":"InternalNode","deprecated":false,"deprecationMessage":"","tagName":{"pos":3416,"end":3421,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      current selected node

      \\n"},{"tagName":{"pos":3455,"end":3462,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      boolean, which means if node has children

      \\n"}]},{"name":"resetSelection","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":146,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nResets selection and collapes all nodes of the tree.\\n","description":"

      Resets selection and collapes all nodes of the tree.

      \\n"},{"name":"selectNode","args":[{"name":"node","type":"T","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":136,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nIt selects the node, which is clicked.\\n","description":"

      It selects the node, which is clicked.

      \\n","jsdoctags":[{"name":{"pos":3665,"end":3669,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"node"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":3659,"end":3664,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Tissue Tree Item, which is clicked

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Tabular View for hubMap tissue side-bar

      \\n","rawdescription":"\\n\\nTabular View for hubMap tissue side-bar\\n","type":"component","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n max-height: calc(100% - 5rem);\\n overflow-y: auto;\\n .row {\\n min-height: 2rem;\\n &.child {\\n padding: 5px 0 5px 64px;\\n }\\n &.selected {\\n background-color: vars.$accent-lighter-rgb;\\n }\\n\\n .toggle {\\n width: 2rem;\\n height: 2rem;\\n padding: 0.25rem;\\n }\\n\\n .label-container {\\n display: flex;\\n align-items: center;\\n height: 2rem;\\n padding: 0 1rem;\\n border-radius: 0.25rem;\\n\\n .link {\\n cursor: pointer;\\n text-decoration: none;\\n color: rgba(vars.$dark-primary-text);\\n }\\n }\\n\\n &.selected .label-container .link {\\n color: vars.$accent-rgb;\\n }\\n }\\n}\\n","styleUrl":"./tissue-tree-list.component.scss"}],"stylesData":"","implements":["OnChanges"],"templateData":"\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n\\n\\n\\n
      \\n \\n {{ label }}\\n \\n \\n {{ label }}\\n \\n
      \\n
      \\n"},{"name":"TitleCardComponent","id":"component-TitleCardComponent-dda33e0370aff82797f5b3494c98b25f59e8b87daefd03e828cec8116928222c19885f73255625acfce7c66d590784fd1ad8faa664dac65130f8119fc2670670","file":"src/lib/title-card/title-card.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-title-card","styleUrls":["./title-card.component.scss"],"styles":[],"templateUrl":["./title-card.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for the title card shown to the user","description":"

      Description for the title card shown to the user

      \\n","line":19,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTitle for the title card shown to the user","description":"

      Title for the title card shown to the user

      \\n","line":16,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays title card to the user with title and description

      \\n","rawdescription":"\\nDisplays title card to the user with title and description","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Displays title card to the user with title and description */\\n@Component({\\n selector: \'hra-title-card\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule],\\n templateUrl: \'./title-card.component.html\',\\n styleUrls: [\'./title-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TitleCardComponent {\\n /** Title for the title card shown to the user*/\\n @Input() title = \'\';\\n\\n /** Description for the title card shown to the user*/\\n @Input() description = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n","styleUrl":"./title-card.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n"}],"modules":[],"miscellaneous":{"variables":[{"name":"DOWNLOADS_LIST_POSITION","ctype":"miscellaneous","subtype":"variable","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n]","rawdescription":"Positioning value for the download list popup","description":"

      Positioning value for the download list popup

      \\n"},{"name":"EMPTY_CONTACT_DATA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"Partial","defaultValue":"{\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n}","rawdescription":"Initial empty contact data","description":"

      Initial empty contact data

      \\n"},{"name":"HOVER_DELAY","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"number","defaultValue":"200","rawdescription":"Delay before tooltip becomes visible","description":"

      Delay before tooltip becomes visible

      \\n"},{"name":"TOOLTIP_POSITIONS","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n]","rawdescription":"Tooltip position settings","description":"

      Tooltip position settings

      \\n"}],"functions":[],"typealiases":[],"enumerations":[],"groupedVariables":{"src/lib/footer/footer.component.ts":[{"name":"DOWNLOADS_LIST_POSITION","ctype":"miscellaneous","subtype":"variable","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n]","rawdescription":"Positioning value for the download list popup","description":"

      Positioning value for the download list popup

      \\n"}],"src/lib/contact-modal/contact-modal.component.ts":[{"name":"EMPTY_CONTACT_DATA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"Partial","defaultValue":"{\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n}","rawdescription":"Initial empty contact data","description":"

      Initial empty contact data

      \\n"}],"src/lib/interactive-svg/interactive-svg.component.ts":[{"name":"HOVER_DELAY","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"number","defaultValue":"200","rawdescription":"Delay before tooltip becomes visible","description":"

      Delay before tooltip becomes visible

      \\n"},{"name":"TOOLTIP_POSITIONS","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n]","rawdescription":"Tooltip position settings","description":"

      Tooltip position settings

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{}}}')},"./dist/compodoc/components-organisms/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"DataCell","id":"interface-DataCell-1a11b32dee89b55746dd02d393406aa7ea06e3d180099074510a109749d06241410786b045f3a9d570f4479be6442014b194d68f340724b0e76b4b0983b59760","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /**Cell name which is hovered, used for highlighting */\\n @Input() hightlightedCellName = \'\';\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","properties":[{"name":"color","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Represents the color of the icon

      \\n","line":22,"rawdescription":"\\nRepresents the color of the icon"},{"name":"data","deprecated":false,"deprecationMessage":"","type":"literal type","optional":false,"description":"

      Represents the data for the data card

      \\n","line":26,"rawdescription":"\\nRepresents the data for the data card"},{"name":"size","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Represents the size of the icon

      \\n","line":24,"rawdescription":"\\nRepresents the size of the icon"}],"indexSignatures":[],"kind":165,"description":"

      An interface representing a single cell of the table.

      \\n","rawdescription":"\\n\\nAn interface representing a single cell of the table.\\n","methods":[]},{"name":"TissueInfo","id":"interface-TissueInfo-1a11b32dee89b55746dd02d393406aa7ea06e3d180099074510a109749d06241410786b045f3a9d570f4479be6442014b194d68f340724b0e76b4b0983b59760","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /**Cell name which is hovered, used for highlighting */\\n @Input() hightlightedCellName = \'\';\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","properties":[{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      ID of the Tissue

      \\n","line":40,"rawdescription":"\\nID of the Tissue"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Name of the Tissue

      \\n","line":42,"rawdescription":"\\nName of the Tissue"}],"indexSignatures":[],"kind":165,"description":"

      Details of the Tissue

      \\n","rawdescription":"\\n\\nDetails of the Tissue\\n","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerTableComponent","id":"component-BiomarkerTableComponent-1a11b32dee89b55746dd02d393406aa7ea06e3d180099074510a109749d06241410786b045f3a9d570f4479be6442014b194d68f340724b0e76b4b0983b59760","file":"src/lib/biomarker-table/biomarker-table.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table","styleUrls":["./biomarker-table.component.scss"],"styles":[],"templateUrl":["./biomarker-table.component.html"],"viewProviders":[],"inputsClass":[{"name":"columns","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nColumns for the table","description":"

      Columns for the table

      \\n","line":73,"type":"string[]","decorators":[]},{"name":"data","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRows of the table","description":"

      Rows of the table

      \\n","line":76,"type":"DataRow[]","decorators":[]},{"name":"gradient","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nGradient colors along with their stop points","description":"

      Gradient colors along with their stop points

      \\n","line":79,"type":"GradientPoint[]","decorators":[]},{"name":"hightlightedCellName","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nCell name which is hovered, used for highlighting","description":"

      Cell name which is hovered, used for highlighting

      \\n","line":85,"type":"string","decorators":[]},{"name":"sizes","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":82,"type":"SizeLegend[]","decorators":[]},{"name":"tissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n }","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput: TissueInfo carrying the details of the tissue open\\n","description":"

      Input: TissueInfo carrying the details of the tissue open

      \\n","line":67,"type":"TissueInfo","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"dataSource","defaultValue":"new MatTableDataSource>([])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Source for the table

      \\n","line":93,"rawdescription":"\\nSource for the table","modifierKind":[144]}],"methodsClass":[{"name":"getColor","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"string","typeParameters":[],"line":165,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nCalculates the color of this value on this gradient\\n","description":"

      Calculates the color of this value on this gradient

      \\n","jsdoctags":[{"name":{"pos":4778,"end":4783,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":4772,"end":4777,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":4790,"end":4797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getHoverData","args":[{"type":"[number, DataRow]","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"[][]","typeParameters":[],"line":192,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nrocesses the object for hover data for Table Cell\\n","description":"

      rocesses the object for hover data for Table Cell

      \\n","jsdoctags":[{"type":"[number, DataRow]","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":5512,"end":5519,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getMinMaxColor","args":[{"name":"meanExpression","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"literal type","typeParameters":[],"line":133,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets Min and Max color grade based on the meanExpression value\\n","description":"

      Gets Min and Max color grade based on the meanExpression value

      \\n","jsdoctags":[{"name":{"pos":3545,"end":3559,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"meanExpression"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3539,"end":3544,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3566,"end":3573,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getMinMaxSize","args":[{"name":"percentage","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"literal type","typeParameters":[],"line":151,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets Min and Max size grade based on the Percentage value\\n","description":"

      Gets Min and Max size grade based on the Percentage value

      \\n","jsdoctags":[{"name":{"pos":4199,"end":4209,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"percentage"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":4193,"end":4198,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":4216,"end":4223,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getSize","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"number","typeParameters":[],"line":181,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ngets Size of the Cell based on the percentage value\\n","description":"

      gets Size of the Cell based on the percentage value

      \\n","jsdoctags":[{"name":{"pos":5181,"end":5186,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":5175,"end":5180,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":5193,"end":5200,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"hex2rgb","args":[{"name":"hex","type":"string","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"RGBTriplet","typeParameters":[],"line":121,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nConverts HexCode to RGB\\n","description":"

      Converts HexCode to RGB

      \\n","jsdoctags":[{"name":{"pos":3236,"end":3239,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"hex"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3230,"end":3235,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3246,"end":3253,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"lerp","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""},{"name":"min","type":"number","deprecated":false,"deprecationMessage":""},{"name":"max","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"number","typeParameters":[],"line":112,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nLerp function to give value beween min and max value based on the given value\\n\\n","description":"

      Lerp function to give value beween min and max value based on the given value

      \\n","jsdoctags":[{"name":{"pos":3024,"end":3029,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3018,"end":3023,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"name":{"pos":3042,"end":3045,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"min"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3036,"end":3041,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"name":{"pos":3058,"end":3061,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"max"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3052,"end":3057,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3068,"end":3075,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Cell types table, describing the types and quanitites of cells for a specific organ

      \\n","rawdescription":"\\nCell types table, describing the types and quanitites of cells for a specific organ","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /**Cell name which is hovered, used for highlighting */\\n @Input() hightlightedCellName = \'\';\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n\\n .table {\\n margin-left: -1px;\\n\\n .highlight {\\n background-color: #f8f9fa;\\n }\\n td.type {\\n text-transform: lowercase;\\n }\\n }\\n\\n .table th {\\n background-color: #fff7f8;\\n color: #59264d;\\n text-align: right;\\n }\\n\\n .table td {\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-left: 0.063rem solid #d3d3d3;\\n }\\n\\n .table tr:first-child td {\\n border-top: 0rem solid #d3d3d3;\\n }\\n\\n tr > td:first-child {\\n text-align: left;\\n padding: 0 2rem;\\n }\\n\\n tr > th:first-child {\\n text-align: left;\\n padding: 0 2rem;\\n }\\n\\n tr > td:last-of-type {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n tr > th:last-of-type {\\n border-right: 0.063rem solid #d3d3d3;\\n border-left: solid #d3d3d3 1px;\\n }\\n\\n .type {\\n height: 3rem;\\n max-width: 26rem;\\n min-width: 17rem;\\n border-radius: 0rem;\\n white-space: nowrap;\\n }\\n\\n .count {\\n text-align: right;\\n height: 3rem;\\n min-width: 6.5rem;\\n }\\n\\n .count:not(:first-child) {\\n border-left: solid #d3d3d3 1px;\\n }\\n\\n .icon-header {\\n max-width: 5rem;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n }\\n\\n .icon-cell {\\n max-width: 5rem;\\n min-height: 3rem;\\n\\n .icon {\\n margin: auto;\\n }\\n }\\n}\\n\\n::ng-deep .mat-mdc-tab-header {\\n margin-left: -1px !important;\\n}\\n\\n::ng-deep .biomarker-table-hover.full-column-name {\\n display: flex;\\n padding: 1rem 1.5rem;\\n border-radius: 0.5rem;\\n box-shadow: 0.063rem 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n background-color: vars.$primary-contrast-rgb;\\n overflow: auto;\\n max-width: fit-content;\\n}\\n","styleUrl":"./biomarker-table.component.scss"}],"stylesData":"","implements":["OnChanges"],"accessors":{"columnsWithTypeAndCount":{"name":"columnsWithTypeAndCount","getSignature":{"name":"columnsWithTypeAndCount","type":"[]","returnType":"string[]","line":88,"rawdescription":"\\nGetter method to provide the definations of the columns","description":"

      Getter method to provide the definations of the columns

      \\n"}}},"templateData":"\\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n
      \\n Cell type table by Biomarker\\n
      Cell Type\\n {{ element[0] }}\\n Cell Count\\n {{ element[1] !== undefined ? (element[1] | number) : \'no data\' }}\\n \\n {{ column }}\\n \\n \\n \\n\\n \\n
      \\n
      \\n
      \\n\\n\\n
      \\n {{ columnName }}\\n
      \\n
      \\n\\n\\n \\n\\n"}],"modules":[],"miscellaneous":{"variables":[],"functions":[],"typealiases":[{"name":"DataRow","ctype":"miscellaneous","subtype":"typealias","rawtype":"[string, , ...[]]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      Describes the composition of a single row in the table

      \\n","kind":183},{"name":"RGBTriplet","ctype":"miscellaneous","subtype":"typealias","rawtype":"[number, number, number]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      RGBTriblet of type RGB to store color

      \\n","kind":183}],"enumerations":[],"groupedVariables":{},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{"src/lib/biomarker-table/biomarker-table.component.ts":[{"name":"DataRow","ctype":"miscellaneous","subtype":"typealias","rawtype":"[string, , ...[]]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      Describes the composition of a single row in the table

      \\n","kind":183},{"name":"RGBTriplet","ctype":"miscellaneous","subtype":"typealias","rawtype":"[number, number, number]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      RGBTriblet of type RGB to store color

      \\n","kind":183}]}}}')},"./dist/compodoc/shared-theming/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[],"injectables":[{"name":"ThemingState","id":"injectable-ThemingState-bc96eb085e9f41108d0a07c93ef58359e93bf96384f9b49b4e90d3f6f570a75ca04b1bd6fce0878c0c58715039571f02f400086da7f63acae3a2987851ae31fa","file":"src/lib/state/theming.state.ts","properties":[],"methods":[{"name":"load","args":[{"name":"ctx","type":"ThemingContext","deprecated":false,"deprecationMessage":""},{"type":"Load","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable<>","typeParameters":[],"line":44,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAction for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.\\n","description":"

      Action for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Load"}],"jsdoctags":[{"name":{"pos":1096,"end":1099,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ThemingContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1090,"end":1095,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State Context

      \\n"},{"type":"Load","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":1173,"end":1180,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      asyncronous data from the url

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State for keeping track of theming applied

      \\n","rawdescription":"\\n\\nState for keeping track of theming applied\\n","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { MaterialCssVariables, MaterialCssVarsService } from \'angular-material-css-vars\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable, tap } from \'rxjs\';\\nimport { Load } from \'./theming.actions\';\\nimport { ThemingContext, ThemingModel, THEMING_FILE_SCHEMA } from \'./theming.model\';\\n\\n/**\\n * State for keeping track of theming applied\\n */\\n@State({\\n /**\\n * name of the state\\n */\\n name: \'theming\',\\n /**\\n * state variables default value\\n */\\n defaults: {},\\n})\\n/**\\n * Theming state class\\n */\\n@Injectable()\\nexport class ThemingState {\\n /**\\n * http service for link loading\\n */\\n private readonly http = inject(HttpClient);\\n /**\\n * Material-vars service for setting theming variables\\n */\\n private readonly materialVars = inject(MaterialCssVarsService);\\n\\n /**\\n * Action for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.\\n * @param ctx State Context\\n * @param action Action with url(yaml url) to load\\n * @returns asyncronous data from the url\\n */\\n @Action(Load)\\n load(ctx: ThemingContext, { url }: Load): Observable {\\n return this.http.get(url, { responseType: \'text\' }).pipe(\\n map((data) => load(data, { filename: url })),\\n map((data) => THEMING_FILE_SCHEMA.parse(data)),\\n tap((data) => ctx.setState(data)),\\n tap((data) => this.setVariables(data))\\n );\\n }\\n\\n /**\\n * Set values to the material-css-vars pallete keys\\n * @param data key-value pairs set in state\\n */\\n private setVariables(data: ThemingModel): void {\\n for (const [key, value] of Object.entries(data)) {\\n this.materialVars.setVariable(key as MaterialCssVariables, value);\\n }\\n }\\n}\\n","type":"injectable"}],"guards":[],"interceptors":[],"classes":[{"name":"Load","id":"class-Load-469f09c45915febbba378ba114f9cebc6d6342ca6e618a54edaa277bdc8b3fbbce18cea9b8c908ad8794b8a3f9a2fac6a9e21ab80e6e979fda2c08bca4eb995b","file":"src/lib/state/theming.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"export class Load {\\n /**\\n * static type for the action\\n */\\n static readonly type = \'[Theming] Load Theming File\';\\n /**\\n * Initialising type for the action\\n */\\n readonly type = Load.type;\\n\\n /**\\n * It takes URL of the yaml file, and loads it.\\n * @param url URL of the yaml file, containing theming color key-value pairs\\n */\\n constructor(readonly url: string) {}\\n}\\n","constructorObj":{"name":"constructor","description":"

      It takes URL of the yaml file, and loads it.

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":12,"rawdescription":"\\n\\nIt takes URL of the yaml file, and loads it.\\n","jsdoctags":[{"name":{"pos":354,"end":357,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":348,"end":353,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      URL of the yaml file, containing theming color key-value pairs

      \\n"}]},"properties":[{"name":"type","defaultValue":"\'[Theming] Load Theming File\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      static type for the action

      \\n","line":8,"rawdescription":"\\n\\nstatic type for the action\\n","modifierKind":[124,144]},{"name":"type","defaultValue":"Load.type","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Initialising type for the action

      \\n","line":12,"rawdescription":"\\n\\nInitialising type for the action\\n","modifierKind":[144]}],"description":"

      Load Action, which is triggered to load yaml file, to get theming pallete

      \\n","rawdescription":"\\n\\nLoad Action, which is triggered to load yaml file, to get theming pallete\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]}],"directives":[],"components":[],"modules":[{"name":"ThemingModule","id":"module-ThemingModule-a5ac292a1d8f0af8ae5b93edb01358072adb02eaa2e0139627ccb0f40b61d38613bc286464b0e4b2577330616277bc72746d8169acd7a4f527abd04f0e0fe000","description":"

      Configures global theming

      \\n","deprecationMessage":"","deprecated":false,"file":"src/lib/theming.module.ts","methods":[],"sourceCode":"import { NgModule } from \'@angular/core\';\\nimport { NgxsModule } from \'@ngxs/store\';\\nimport { MaterialCssVarsModule } from \'angular-material-css-vars\';\\nimport { ThemingState } from \'./state/theming.state\';\\n\\n/** Configures global theming */\\n@NgModule({\\n imports: [MaterialCssVarsModule.forRoot({}), NgxsModule.forFeature([ThemingState])],\\n})\\nexport class ThemingModule {}\\n","children":[{"type":"providers","elements":[]},{"type":"declarations","elements":[]},{"type":"imports","elements":[]},{"type":"exports","elements":[]},{"type":"bootstrap","elements":[]},{"type":"classes","elements":[]}]}],"miscellaneous":{"variables":[{"name":"placeholder","ctype":"miscellaneous","subtype":"variable","file":"src/index.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"undefined","rawdescription":"Placeholder to make build and tests pass until any actual library code is created","description":"

      Placeholder to make build and tests pass until any actual library code is created

      \\n"},{"name":"THEMING_FILE_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(z.nativeEnum(MaterialCssVariables), z.string())","rawdescription":"Theming mdoel schema, having records with key as material-css-vars pallete keys and string values","description":"

      Theming mdoel schema, having records with key as material-css-vars pallete keys and string values

      \\n"}],"functions":[],"typealiases":[{"name":"ThemingContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State context for theming, with reference of model

      \\n","kind":177},{"name":"ThemingModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for theming

      \\n","kind":177}],"enumerations":[],"groupedVariables":{"src/index.ts":[{"name":"placeholder","ctype":"miscellaneous","subtype":"variable","file":"src/index.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"undefined","rawdescription":"Placeholder to make build and tests pass until any actual library code is created","description":"

      Placeholder to make build and tests pass until any actual library code is created

      \\n"}],"src/lib/state/theming.model.ts":[{"name":"THEMING_FILE_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(z.nativeEnum(MaterialCssVariables), z.string())","rawdescription":"Theming mdoel schema, having records with key as material-css-vars pallete keys and string values","description":"

      Theming mdoel schema, having records with key as material-css-vars pallete keys and string values

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{"src/lib/state/theming.model.ts":[{"name":"ThemingContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State context for theming, with reference of model

      \\n","kind":177},{"name":"ThemingModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for theming

      \\n","kind":177}]}}}')}},__webpack_require__=>{var __webpack_exec__=moduleId=>__webpack_require__(__webpack_require__.s=moduleId);__webpack_require__.O(0,[758],(()=>(__webpack_exec__("./storybook-config-entry.js"),__webpack_exec__("./.storybook/styles.scss?ngGlobalStyle"))));__webpack_require__.O()}]); \ No newline at end of file diff --git a/storybook/cdk/main.7eb4a063.iframe.bundle.js b/storybook/cdk/main.7eb4a063.iframe.bundle.js deleted file mode 100644 index 7c60303f2..000000000 --- a/storybook/cdk/main.7eb4a063.iframe.bundle.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[179],{"./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$":(module,__unused_webpack_exports,__webpack_require__)=>{var map={"./cdk/documentation.json":"./dist/compodoc/cdk/documentation.json","./components-atoms/documentation.json":"./dist/compodoc/components-atoms/documentation.json","./components-behavioral/documentation.json":"./dist/compodoc/components-behavioral/documentation.json","./components-molecules/documentation.json":"./dist/compodoc/components-molecules/documentation.json","./components-organisms/documentation.json":"./dist/compodoc/components-organisms/documentation.json","./shared-theming/documentation.json":"./dist/compodoc/shared-theming/documentation.json"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$"},"./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$":(module,__unused_webpack_exports,__webpack_require__)=>{var map={"./src/lib/hover/hover.directive.stories":["./libs/cdk/src/lib/hover/hover.directive.stories.ts",8,424],"./src/lib/hover/hover.directive.stories.ts":["./libs/cdk/src/lib/hover/hover.directive.stories.ts",8,424],"./src/lib/link/link.directive.stories":["./libs/cdk/src/lib/link/link.directive.stories.ts",607,688],"./src/lib/link/link.directive.stories.ts":["./libs/cdk/src/lib/link/link.directive.stories.ts",607,688]};function webpackAsyncContext(req){if(!__webpack_require__.o(map,req))return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}));var ids=map[req],id=ids[0];return Promise.all(ids.slice(1).map(__webpack_require__.e)).then((()=>__webpack_require__(id)))}webpackAsyncContext.keys=()=>Object.keys(map),webpackAsyncContext.id="./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$",module.exports=webpackAsyncContext},"./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$":module=>{function webpackEmptyAsyncContext(req){return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}))}webpackEmptyAsyncContext.keys=()=>[],webpackEmptyAsyncContext.resolve=webpackEmptyAsyncContext,webpackEmptyAsyncContext.id="./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$",module.exports=webpackEmptyAsyncContext},"./.storybook/styles.scss?ngGlobalStyle":()=>{},"./libs/cdk/.storybook/preview.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{argTypesEnhancers:()=>argTypesEnhancers,decorators:()=>decorators,parameters:()=>parameters});var http=__webpack_require__("./node_modules/@angular/common/fesm2020/http.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),animations=__webpack_require__("./node_modules/@angular/platform-browser/fesm2020/animations.mjs"),ngxs_logger_plugin=__webpack_require__("./node_modules/@ngxs/logger-plugin/fesm2015/ngxs-logger-plugin.js"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),angular=__webpack_require__("./node_modules/@storybook/addon-docs/angular/index.js"),dist=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),ngx_markdown=__webpack_require__("./node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs"),tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),angular_material_css_vars=__webpack_require__("./node_modules/angular-material-css-vars/fesm2020/angular-material-css-vars.mjs"),js_yaml=__webpack_require__("./node_modules/js-yaml/dist/js-yaml.mjs"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js");class Load{constructor(url){this.url=url,this.type=Load.type}}Load.type="[Theming] Load Theming File";var lib=__webpack_require__("./node_modules/zod/lib/index.mjs");const THEMING_FILE_SCHEMA=lib.z.record(lib.z.nativeEnum(angular_material_css_vars.Rm),lib.z.string());let ThemingState=class ThemingState{constructor(){this.http=(0,core.inject)(http.eN),this.materialVars=(0,core.inject)(angular_material_css_vars.jO)}load(ctx,{url}){return this.http.get(url,{responseType:"text"}).pipe((0,map.U)((data=>(0,js_yaml.zD)(data,{filename:url}))),(0,map.U)((data=>THEMING_FILE_SCHEMA.parse(data))),(0,tap.b)((data=>ctx.setState(data))),(0,tap.b)((data=>this.setVariables(data))))}setVariables(data){for(const[key,value]of Object.entries(data))this.materialVars.setVariable(key,value)}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(Load),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,Load]),(0,tslib_es6.w6)("design:returntype",Observable.y)],ThemingState.prototype,"load",null),ThemingState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"theming",defaults:{}}),(0,core.Injectable)()],ThemingState);let ThemingModule=class ThemingModule{};function parseDefaultValue(type){const{defaultValue,type:typeDef}=type;if(void 0===defaultValue||"string"!=typeof defaultValue||"string"===typeDef?.name)return defaultValue;switch(typeDef?.name){case"array":case"boolean":case"number":case"object":try{return new Function("return "+defaultValue)()}catch(_error){return}case"enum":return typeDef.value.includes(defaultValue)?defaultValue:void 0;default:return}}ThemingModule=(0,tslib_es6.gn)([(0,core.NgModule)({imports:[angular_material_css_vars.Pe.forRoot({}),ngxs_store.$l.forFeature([ThemingState])]})],ThemingModule);const parameters={actions:{argTypesRegex:"^on[A-Z].*"},controls:{matchers:{color:/(background|color)$/i,date:/Date$/}},docs:{inlineStories:!0}},argTypesEnhancers=[function fixArgTypes(){return context=>{const argTypes={...context.argTypes},exclude=[...context.parameters.controls?.exclude??[]];for(const[key,type]of Object.entries(argTypes))switch(type.table.category){case"inputs":const defaultValue=parseDefaultValue(type);defaultValue!==type.defaultValue&&(argTypes[key]={...type,defaultValue});break;case"outputs":argTypes[key]={...type,defaultValue:void 0};break;default:exclude.push(key)}return context.parameters.controls={...context.parameters.controls,exclude},argTypes}}()],decorators=[(0,dist.applicationConfig)({providers:[(0,core.importProvidersFrom)(animations.BrowserAnimationsModule,http.JF,ngxs_store.$l.forRoot([],{developmentMode:!0}),ngxs_logger_plugin.xz.forRoot(),ngx_markdown.JP.forRoot({loader:http.eN}),ThemingModule)]}),(0,dist.componentWrapperDecorator)((story=>`\n
      ${story}
      \n
      \n `)),function addState(){return(fn,ctx)=>{const config=ctx.parameters.state;return config?(0,dist.applicationConfig)({providers:[(0,core.importProvidersFrom)(ngxs_store.$l.forFeature(config.states)),{provide:core.APP_INITIALIZER,multi:!0,useFactory:store=>()=>{const{actions}=config;return actions&&actions.length>0?store.dispatch(actions):void 0},deps:[ngxs_store.yh]}]})(fn,ctx):fn(ctx)}}()];!function setDocs(library){const docs=__webpack_require__("./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$")(`./${library}/documentation.json`);(0,angular.P)(docs)}("cdk")},"./storybook-config-entry.js":(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{"use strict";var dist=__webpack_require__("./node_modules/@storybook/global/dist/index.mjs"),external_STORYBOOK_MODULE_PREVIEW_API_=__webpack_require__("@storybook/preview-api");const external_STORYBOOK_MODULE_CHANNEL_POSTMESSAGE_namespaceObject=__STORYBOOK_MODULE_CHANNEL_POSTMESSAGE__,external_STORYBOOK_MODULE_CHANNEL_WEBSOCKET_namespaceObject=__STORYBOOK_MODULE_CHANNEL_WEBSOCKET__;var asyncToGenerator=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");const pipeline=x=>x(),importers=[function(){var _ref=(0,asyncToGenerator.Z)((function*(path){if(!/^\.[\\/](?:libs\/cdk(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.mdx)$/.exec(path))return;const pathRemainder=path.substring(11);return __webpack_require__("./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$")("./"+pathRemainder)}));return function(_x){return _ref.apply(this,arguments)}}(),function(){var _ref2=(0,asyncToGenerator.Z)((function*(path){if(!/^\.[\\/](?:libs\/cdk(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.(js|jsx|ts|tsx))$/.exec(path))return;const pathRemainder=path.substring(11);return __webpack_require__("./libs/cdk lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/cdk(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$")("./"+pathRemainder)}));return function(_x2){return _ref2.apply(this,arguments)}}()];function _importFn(){return(_importFn=(0,asyncToGenerator.Z)((function*(path){for(let i=0;iimporters[i](path)));if(moduleExports)return moduleExports}}))).apply(this,arguments)}const{SERVER_CHANNEL_URL}=dist.global,channel=(0,external_STORYBOOK_MODULE_CHANNEL_POSTMESSAGE_namespaceObject.createChannel)({page:"preview"});if(external_STORYBOOK_MODULE_PREVIEW_API_.addons.setChannel(channel),SERVER_CHANNEL_URL){const serverChannel=(0,external_STORYBOOK_MODULE_CHANNEL_WEBSOCKET_namespaceObject.createChannel)({url:SERVER_CHANNEL_URL});external_STORYBOOK_MODULE_PREVIEW_API_.addons.setServerChannel(serverChannel),window.__STORYBOOK_SERVER_CHANNEL__=serverChannel}const preview=new external_STORYBOOK_MODULE_PREVIEW_API_.PreviewWeb;window.__STORYBOOK_PREVIEW__=preview,window.__STORYBOOK_STORY_STORE__=preview.storyStore,window.__STORYBOOK_ADDONS_CHANNEL__=channel,window.__STORYBOOK_CLIENT_API__=new external_STORYBOOK_MODULE_PREVIEW_API_.ClientApi({storyStore:preview.storyStore}),preview.initialize({importFn:function importFn(_x3){return _importFn.apply(this,arguments)},getProjectAnnotations:()=>(0,external_STORYBOOK_MODULE_PREVIEW_API_.composeConfigs)([__webpack_require__("./node_modules/@storybook/angular/dist/client/docs/config.js"),__webpack_require__("./node_modules/@storybook/angular/dist/client/config.js"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/docs/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/actions/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/backgrounds/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/measure/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/outline/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/highlight/preview.mjs"),__webpack_require__("./libs/cdk/.storybook/preview.ts")])})},"./node_modules/@storybook/addon-docs/dist sync recursive":module=>{function webpackEmptyContext(req){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id="./node_modules/@storybook/addon-docs/dist sync recursive",module.exports=webpackEmptyContext},"@storybook/channels":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CHANNELS__},"@storybook/client-logger":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CLIENT_LOGGER__},"@storybook/core-client":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CORE_CLIENT__},"@storybook/core-events":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CORE_EVENTS__},"@storybook/preview-api":module=>{"use strict";module.exports=__STORYBOOK_MODULE_PREVIEW_API__},"./dist/compodoc/cdk/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"ActionConstructor","id":"interface-ActionConstructor-79d65b59eb27f474fc1f2fbef720f134360ce0d1017b538dfe48bd3ca60c6a0472d1789cdc31f57a5190150ce49b1ca0d304e9e44f722b1c4c992c619605ba68","file":"state/src/actions/actions.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { registerActionType } from \'./action-type-registry\';\\n\\n/** Base action type */\\nexport interface Action {\\n /** Action type */\\n readonly type: string;\\n}\\n\\n/** Base action constructor */\\nexport interface ActionConstructor {\\n /** Action type */\\n readonly type: string;\\n\\n /** Create a new action */\\n new (): Action;\\n}\\n\\n/**\\n * Creates an action factory that adds a common group string to each action type\\n * @param group Common action type group\\n * @returns An action factory\\n */\\nexport function ActionGroup(group: string): (type: string) => ActionConstructor {\\n return (type) => Action(`[${group}] ${type}`);\\n}\\n\\n/**\\n * Creates a new base action with a specified type\\n * @param type Action type\\n * @returns A base action class\\n */\\nexport function Action(type: string): ActionConstructor {\\n registerActionType(type);\\n return class BaseAction {\\n static readonly type = type;\\n readonly type = type;\\n };\\n}\\n","properties":[{"name":"type","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Action type

      \\n","line":12,"rawdescription":"\\nAction type","modifierKind":[144]}],"indexSignatures":[],"kind":174,"description":"

      Base action constructor

      \\n","rawdescription":"\\nBase action constructor","methods":[]},{"name":"DestructorScope","id":"interface-DestructorScope-c4b53b823f2f6845a68f4b66881cc81070616d6b5124d0d203f80f1eeee060d84d1d05eab91b3a6e833ea4aef93cdf9d68ef0051d58b85ca5101c609dad76a05","file":"injectors/src/lib/on-destroy/destructor-subject.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ReplaySubject } from \'rxjs\';\\n\\n/** Object on which cleanup functions can be registered */\\nexport interface DestructorScope {\\n /**\\n * Register a cleanup function\\n * @param cb Cleanup callback function\\n */\\n onDestroy(cb: () => void): void;\\n}\\n\\n/**\\n * Determines whether an object is destructor scope like\\n * @param obj Value to test\\n * @returns true if the object seems to be a destructor scope, otherwise false\\n */\\nexport function isDestructorScopeLike(obj: unknown): obj is DestructorScope {\\n const isObject = typeof obj === \'object\' && obj !== null;\\n return isObject && \'onDestroy\' in obj && typeof obj.onDestroy === \'function\';\\n}\\n\\n/**\\n * A subject type that is associated with a destructor scope.\\n * When the cleanup function is run the subject emits a single\\n * undefined value and immediately completes\\n */\\nexport class ScopedDestructorSubject extends ReplaySubject {\\n /**\\n * Creates a new subject and attaches cleanup to the destructor scope\\n * @param scope Associated scope\\n */\\n constructor(scope: DestructorScope) {\\n super(1);\\n\\n scope.onDestroy(() => {\\n this.next();\\n this.complete();\\n });\\n }\\n}\\n","properties":[],"indexSignatures":[],"kind":167,"description":"

      Object on which cleanup functions can be registered

      \\n","rawdescription":"\\nObject on which cleanup functions can be registered","methods":[{"name":"onDestroy","args":[{"name":"cb","type":"function","deprecated":false,"deprecationMessage":"","function":[]}],"optional":false,"returnType":"void","typeParameters":[],"line":9,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nRegister a cleanup function\\n","description":"

      Register a cleanup function

      \\n","jsdoctags":[{"name":{"pos":184,"end":186,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"cb"},"type":"function","deprecated":false,"deprecationMessage":"","function":[],"tagName":{"pos":178,"end":183,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Cleanup callback function

      \\n"}]}]},{"name":"HoverContext","id":"interface-HoverContext-09dbb1791c1e8551d99aeb917f0d664e71738bebaebeed4601b7634f7980b675771162be311571667692c787d939ee9eeb40e57b4627c9cd75ebc926e849cc0d","file":"src/lib/hover/hover.directive.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectionPositionPair, Overlay } from \'@angular/cdk/overlay\';\\nimport { TemplatePortal } from \'@angular/cdk/portal\';\\nimport { Directive, ElementRef, HostListener, inject, Input, TemplateRef, ViewContainerRef } from \'@angular/core\';\\n\\n/** Context passed to hover content templates */\\nexport interface HoverContext {\\n /** Data provided by the user for use inside the content template */\\n $implicit: T;\\n}\\n\\n/** Hover overlay directive to be used across the application */\\n@Directive({\\n selector: \'[hraHover]\',\\n standalone: true,\\n})\\nexport class HoverDirective {\\n /** Setter for the content to be displayed in the overlay */\\n @Input(\'hraHover\')\\n set content(content: TemplateRef>) {\\n this.portal = new TemplatePortal(content, this.viewContainerRef, this._data);\\n this.updateContent();\\n }\\n\\n /** Setter for the context that is to be displayed in the portal attached to the overlay */\\n @Input(\'hraHoverData\')\\n set data(data: T) {\\n this._data = { $implicit: data };\\n if (this.portal) {\\n this.portal.context = this._data;\\n this.updateContent();\\n }\\n }\\n\\n /** Reference to the element that the directive is attached to */\\n private readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /** Reference to the overlay that is created when the userhovers over the element along with its position setting */\\n readonly overlayRef = inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n });\\n\\n /** Reference view container that the directive is attached to */\\n private readonly viewContainerRef = inject(ViewContainerRef);\\n\\n /** Store the data that is passed into the data input property */\\n private _data?: HoverContext;\\n\\n /** Portal that is created to display the overlay */\\n portal?: TemplatePortal>;\\n\\n /** Function to handle the mouse over event to attach the portal and display the hover content */\\n @HostListener(\'mouseover\')\\n startHover(): void {\\n const { overlayRef, portal } = this;\\n if (!overlayRef.hasAttached() && portal) {\\n overlayRef.attach(portal);\\n }\\n }\\n\\n /** Function to handle the mouse out event to detach the portal */\\n @HostListener(\'mouseout\')\\n endHover(): void {\\n const { overlayRef } = this;\\n if (overlayRef.hasAttached()) {\\n overlayRef.detach();\\n }\\n }\\n\\n /** Function to handle the updation of overlay with up to date content when the input changes */\\n private updateContent(): void {\\n const { overlayRef, portal } = this;\\n if (overlayRef.hasAttached() && portal) {\\n overlayRef.detach();\\n overlayRef.attach(portal);\\n }\\n }\\n}\\n","properties":[{"name":"$implicit","deprecated":false,"deprecationMessage":"","type":"T","optional":false,"description":"

      Data provided by the user for use inside the content template

      \\n","line":8,"rawdescription":"\\nData provided by the user for use inside the content template"}],"indexSignatures":[],"kind":165,"description":"

      Context passed to hover content templates

      \\n","rawdescription":"\\nContext passed to hover content templates","methods":[]},{"name":"SelectOptions","id":"interface-SelectOptions-2a1e9b4935fb82769eb1dadf40ec0992c0e3f24e9bc0b33376fb53e5f271e89e87100bf0c22b87ea85ce9dd36fbdd2e6fb22f6978dc61aff4d02559ba5c9c8f0","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectorRef, inject } from \'@angular/core\';\\nimport { Any } from \'@hra-ui/utils/types\';\\nimport { StateToken, Store } from \'@ngxs/store\';\\nimport { MonoTypeOperatorFunction, Observable, takeUntil, tap } from \'rxjs\';\\nimport { injectDestroy$ } from \'../on-destroy/on-destroy\';\\n\\n/** Selector type for select style functions */\\nexport type StateSelector = ((...args: Any[]) => T) | StateToken;\\n\\n/** `select$` configuration options */\\nexport interface SelectOptions {\\n /** Whether to mark the containing view for change detection on emits. Defaults to true. */\\n notifyOnChange?: boolean;\\n}\\n\\n/**\\n * Marks a view for change detection whenever a new value is emitted\\n * @param options Options to explicitly disable marking\\n * @returns A rxjs operator\\n */\\nfunction markForCheck(options?: SelectOptions): MonoTypeOperatorFunction {\\n const notifyOnChange = options?.notifyOnChange ?? true;\\n const cdr = inject(ChangeDetectorRef, { optional: true });\\n if (notifyOnChange && cdr) {\\n const markFn = () => cdr.markForCheck();\\n return tap({ next: markFn, error: markFn, complete: markFn });\\n }\\n\\n return (source) => source;\\n}\\n\\n/**\\n * Creates an observable emitting parts of the state. The observable\'s lifetime\\n * is automatically tied to the injection context where this is called.\\n * @param selector State selection function or token\\n * @param options Additional select options\\n * @returns An observable of the selected state\\n */\\nexport function select$(selector: StateSelector, options?: SelectOptions): Observable {\\n return inject(Store)\\n .select(selector as StateToken)\\n .pipe(takeUntil(injectDestroy$()), markForCheck(options));\\n}\\n","properties":[{"name":"notifyOnChange","deprecated":false,"deprecationMessage":"","type":"boolean","optional":true,"description":"

      Whether to mark the containing view for change detection on emits. Defaults to true.

      \\n","line":13,"rawdescription":"\\nWhether to mark the containing view for change detection on emits. Defaults to true."}],"indexSignatures":[],"kind":165,"description":"

      select$ configuration options

      \\n","rawdescription":"\\n`select$` configuration options","methods":[]}],"injectables":[{"name":"LinkRegistryState","id":"injectable-LinkRegistryState-b37e5428b2389fadb722624de33c6e4366fe24d94941b86e08c58ba2167a6e863002542c94b564c5ac03cba9122d8a463f2c34e1d925aed7babf8aa973f35fbb","file":"state/src/link-registry/link-registry.state.ts","properties":[],"methods":[{"name":"addMany","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddMany","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":57,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd multiple entries\\n","description":"

      Add multiple entries

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddMany"}],"jsdoctags":[{"name":{"pos":1614,"end":1617,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1608,"end":1613,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddMany","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addOne","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Add","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd a single entry\\n","description":"

      Add a single entry

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Add"}],"jsdoctags":[{"name":{"pos":1359,"end":1362,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1353,"end":1358,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Add","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addYaml","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":""},{"name":"filename","type":"string","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":[],"line":68,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nParse and add entries from yaml\\n","description":"

      Parse and add entries from yaml

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddFromYaml"}],"jsdoctags":[{"name":{"pos":1858,"end":1861,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1852,"end":1857,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":1933,"end":1941,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"filename"},"type":"string","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1927,"end":1932,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional url/filename from which the data was loaded (for improved error messages)

      \\n"}]},{"name":"loadYaml","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":81,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nLoad and add entries from an external yaml file\\n","description":"

      Load and add entries from an external yaml file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadFromYaml"}],"jsdoctags":[{"name":{"pos":2358,"end":2361,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2352,"end":2357,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2435,"end":2442,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entries has been added

      \\n"}]},{"name":"navigate","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Navigate","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Promise","typeParameters":[],"line":94,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nNavigate to Internal or External urls from id\\n","description":"

      Navigate to Internal or External urls from id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Navigate"}],"modifierKind":[131],"jsdoctags":[{"name":{"pos":2826,"end":2829,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2820,"end":2825,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Navigate","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2898,"end":2905,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A promise

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State for keeping track of links globally

      \\n","rawdescription":"\\nState for keeping track of links globally","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable, NgZone } from \'@angular/core\';\\nimport { Router, UrlCreationOptions } from \'@angular/router\';\\nimport { createExternalUrl } from \'@hra-ui/utils\';\\nimport { UnionMember } from \'@hra-ui/utils/types\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable } from \'rxjs\';\\nimport { Add, AddFromYaml, AddMany, LoadFromYaml, Navigate } from \'./link-registry.actions\';\\nimport {\\n ExternalLinkEntry,\\n InternalLinkEntry,\\n LinkEntry,\\n LinkId,\\n LinkRegistryContext,\\n LinkRegistryModel,\\n LinkType,\\n LINK_REGISTRY_SCHEMA,\\n} from \'./link-registry.model\';\\n\\n/** Query function for link entry optionally with type specified */\\nexport type LinkRegistryQuery = (\\n id: LinkId,\\n type?: T\\n) => UnionMember | undefined;\\n\\n/** State for keeping track of links globally */\\n@State({\\n name: \'linkRegistry\',\\n defaults: {},\\n})\\n@Injectable()\\nexport class LinkRegistryState {\\n /** Http service for link loading */\\n private readonly http = inject(HttpClient);\\n /** Injects angular router */\\n private readonly router = inject(Router, { optional: true });\\n /** Injects ngZone for routing */\\n private readonly zone = inject(NgZone);\\n\\n /**\\n * Add a single entry\\n * @param ctx State context\\n * @param action Action with id and entry to add\\n */\\n @Action(Add)\\n addOne(ctx: LinkRegistryContext, { id, entry }: Add): void {\\n this.addMany(ctx, new AddMany({ [id]: entry }));\\n }\\n\\n /**\\n * Add multiple entries\\n * @param ctx State context\\n * @param action Action with entries to add\\n */\\n @Action(AddMany)\\n addMany(ctx: LinkRegistryContext, { entries }: AddMany): void {\\n ctx.patchState(entries);\\n }\\n\\n /**\\n * Parse and add entries from yaml\\n * @param ctx State context\\n * @param action Action with raw yaml data\\n * @param filename Optional url/filename from which the data was loaded (for improved error messages)\\n */\\n @Action(AddFromYaml)\\n addYaml(ctx: LinkRegistryContext, { yaml }: AddFromYaml, filename?: string): void {\\n const data = load(yaml, { filename });\\n const entries = LINK_REGISTRY_SCHEMA.parse(data);\\n this.addMany(ctx, new AddMany(entries));\\n }\\n\\n /**\\n * Load and add entries from an external yaml file\\n * @param ctx State context\\n * @param action Action with the external file url\\n * @returns An observable that completes when the entries has been added\\n */\\n @Action(LoadFromYaml)\\n loadYaml(ctx: LinkRegistryContext, { url }: LoadFromYaml): Observable {\\n return this.http\\n .get(url, { responseType: \'text\' })\\n .pipe(map((data) => this.addYaml(ctx, new AddFromYaml(data), url)));\\n }\\n\\n /**\\n * Navigate to Internal or External urls from id\\n * @param ctx State context\\n * @param param1 Navigate action with link id\\n * @returns A promise\\n */\\n @Action(Navigate)\\n async navigate(ctx: LinkRegistryContext, { id, extras }: Navigate): Promise {\\n const entry = ctx.getState()[id];\\n switch (entry?.type) {\\n case LinkType.Internal:\\n await this.navigateToInternal(entry, extras);\\n break;\\n\\n case LinkType.External:\\n this.navigateToExternal(entry, extras);\\n break;\\n\\n default:\\n throw new Error(`Cannot navigate to non-existing link \'${id}\'`);\\n }\\n }\\n\\n /**\\n * Method to navigate to an internal link using Angular router\\n * @param entry Internal Link Entry with commands and extras\\n */\\n private async navigateToInternal(entry: InternalLinkEntry, extras: UrlCreationOptions): Promise {\\n await this.zone.run(() => this.router?.navigate(entry.commands, { ...entry.extras, ...extras }));\\n }\\n\\n /**\\n * Method to navigate to an external link using window\\n * @param entry External link entry with url, target, and rel\\n */\\n private navigateToExternal(entry: ExternalLinkEntry, extras: UrlCreationOptions): void {\\n const url = createExternalUrl(entry.url, extras);\\n window.open(url, entry.target, entry.rel);\\n }\\n}\\n","type":"injectable"},{"name":"ResourceRegistryState","id":"injectable-ResourceRegistryState-ee091eca7099a68b29fcf8b081af0f6e4eec5cfb7b538ee0423d54f17301e5430869290d05c8adab76fffaddd9c6c3cfff4569f15b2e831e632827f4347dee77","file":"state/src/resource-registry/resource-registry.state.ts","properties":[],"methods":[{"name":"addMany","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddMany","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":40,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd multiple entries\\n","description":"

      Add multiple entries

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddMany"}],"jsdoctags":[{"name":{"pos":1038,"end":1041,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1032,"end":1037,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddMany","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addOne","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Add","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":30,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd a single entry\\n","description":"

      Add a single entry

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Add"}],"jsdoctags":[{"name":{"pos":779,"end":782,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":773,"end":778,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Add","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addYaml","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":""},{"name":"filename","type":"string","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":[],"line":51,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nParse and add entries from yaml\\n","description":"

      Parse and add entries from yaml

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddFromYaml"}],"jsdoctags":[{"name":{"pos":1286,"end":1289,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1280,"end":1285,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":1361,"end":1369,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"filename"},"type":"string","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1355,"end":1360,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional url/filename from which the data was loaded (for improved error messages)

      \\n"}]},{"name":"loadMarkdown","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadMarkdown","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":77,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdds a markdown entry with content loaded from an external file\\n","description":"

      Adds a markdown entry with content loaded from an external file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadMarkdown"}],"jsdoctags":[{"name":{"pos":2284,"end":2287,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2278,"end":2283,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadMarkdown","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2375,"end":2382,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entry has been added

      \\n"}]},{"name":"loadYaml","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":64,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nLoad and add entries from an external yaml file\\n","description":"

      Load and add entries from an external yaml file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadFromYaml"}],"jsdoctags":[{"name":{"pos":1794,"end":1797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1788,"end":1793,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":1871,"end":1878,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entries has been added

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State keeping track of global resources

      \\n","rawdescription":"\\nState keeping track of global resources","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable } from \'rxjs\';\\nimport { Add, AddFromYaml, AddMany, LoadFromYaml, LoadMarkdown } from \'./resource-registry.actions\';\\nimport {\\n BuiltinResourceType,\\n ResourceRegistryContext,\\n ResourceRegistryModel,\\n RESOURCE_REGISTRY_SCHEMA,\\n} from \'./resource-registry.model\';\\n\\n/** State keeping track of global resources */\\n@State({\\n name: \'resourceRegistry\',\\n defaults: {},\\n})\\n@Injectable()\\nexport class ResourceRegistryState {\\n /** Http service for resource loading */\\n private readonly http = inject(HttpClient);\\n\\n /**\\n * Add a single entry\\n * @param ctx State context\\n * @param action Action with id and entry to add\\n */\\n @Action(Add)\\n addOne(ctx: ResourceRegistryContext, { id, entry }: Add): void {\\n this.addMany(ctx, new AddMany({ [id]: entry }));\\n }\\n\\n /**\\n * Add multiple entries\\n * @param ctx State context\\n * @param action Action with entries to add\\n */\\n @Action(AddMany)\\n addMany(ctx: ResourceRegistryContext, { entries }: AddMany): void {\\n ctx.patchState(entries);\\n }\\n\\n /**\\n * Parse and add entries from yaml\\n * @param ctx State context\\n * @param action Action with raw yaml data\\n * @param filename Optional url/filename from which the data was loaded (for improved error messages)\\n */\\n @Action(AddFromYaml)\\n addYaml(ctx: ResourceRegistryContext, { yaml }: AddFromYaml, filename?: string): void {\\n const data = load(yaml, { filename });\\n const entries = RESOURCE_REGISTRY_SCHEMA.parse(data);\\n this.addMany(ctx, new AddMany(entries));\\n }\\n\\n /**\\n * Load and add entries from an external yaml file\\n * @param ctx State context\\n * @param action Action with the external file url\\n * @returns An observable that completes when the entries has been added\\n */\\n @Action(LoadFromYaml)\\n loadYaml(ctx: ResourceRegistryContext, { url }: LoadFromYaml): Observable {\\n return this.http\\n .get(url, { responseType: \'text\' })\\n .pipe(map((data) => this.addYaml(ctx, new AddFromYaml(data), url)));\\n }\\n\\n /**\\n * Adds a markdown entry with content loaded from an external file\\n * @param ctx State context\\n * @param action Action with id and url to the external markdown\\n * @returns An observable that completes when the entry has been added\\n */\\n @Action(LoadMarkdown)\\n loadMarkdown(ctx: ResourceRegistryContext, { id, url }: LoadMarkdown): Observable {\\n return this.http.get(url, { responseType: \'text\' }).pipe(\\n map((markdown) => new Add(id, { type: BuiltinResourceType.Markdown, markdown })),\\n map((action) => this.addOne(ctx, action))\\n );\\n }\\n}\\n","type":"injectable"},{"name":"StorageState","id":"injectable-StorageState-72ac0507a219407170a641eb4ddefe5f02c0732d08adcd982880a7dd4d0f18ca6dcce1c0b1395a82191bcf464db28277c68d3df9b3f5ac52620adc50aabfd494","file":"state/src/storage/storage.state.ts","properties":[],"methods":[{"name":"clear","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Clear","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":65,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nclears the values of the specified storage id\\n","description":"

      clears the values of the specified storage id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Clear"}],"jsdoctags":[{"name":{"pos":1825,"end":1828,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1819,"end":1824,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Clear","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"delete","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Delete","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":55,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ndeletes the value pointed by key in the list of values stored in the specified storage id\\n","description":"

      deletes the value pointed by key in the list of values stored in the specified storage id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Delete"}],"jsdoctags":[{"name":{"pos":1441,"end":1444,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1435,"end":1440,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Delete","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"getStorage","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Storage","typeParameters":[],"line":27,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nStorageState class to manage storage objects\\n","description":"

      StorageState class to manage storage objects

      \\n","modifierKind":[124],"jsdoctags":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":627,"end":634,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"
        \\n
      • Storage objects - session and local
      • \\n
      \\n"}]},{"name":"set","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Set","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":45,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nsets the key,value pair in the given storageId\\n","description":"

      sets the key,value pair in the given storageId

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Set"}],"jsdoctags":[{"name":{"pos":1010,"end":1013,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1004,"end":1009,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Set","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","description":"

      State holding Storage types

      \\n","rawdescription":"\\n\\nState holding Storage types\\n","sourceCode":"import { produce } from \'immer\';\\nimport { StorageContext } from \'./storage.model\';\\nimport { Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { StorageId, StorageModel } from \'./storage.model\';\\nimport { Set, Delete, Clear } from \'./storage.actions\';\\n/**\\n * State holding Storage types\\n */\\n@State({\\n name: \'storage\',\\n defaults: {\\n [StorageId.Local]: 0,\\n [StorageId.Session]: 0,\\n },\\n})\\n@Injectable()\\n/**\\n * class for managing storage state\\n */\\nexport class StorageState {\\n /**\\n * StorageState class to manage storage objects\\n * @param id-Storage Identifier\\n * @returns - Storage objects - session and local\\n */\\n static getStorage(id: StorageId): Storage {\\n switch (id) {\\n case StorageId.Local:\\n return localStorage;\\n\\n case StorageId.Session:\\n return sessionStorage;\\n\\n default:\\n throw new Error(`No such storage \'${id}\'`);\\n }\\n }\\n /**\\n * sets the key,value pair in the given storageId\\n * @param ctx - StorageContext object\\n * @param param1- {id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Set)\\n set(ctx: StorageContext, { id, key, value }: Set): void {\\n StorageState.getStorage(id).setItem(key, value);\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * deletes the value pointed by key in the list of values stored in the specified storage id\\n * @param ctx - StorageContext object\\n * @param param1- id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Delete)\\n delete(ctx: StorageContext, { id, key }: Delete): void {\\n StorageState.getStorage(id).removeItem(key);\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * clears the values of the specified storage id\\n * @param ctx - StorageContext object\\n * @param param1 - id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Clear)\\n clear(ctx: StorageContext, { id }: Clear): void {\\n StorageState.getStorage(id).clear();\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * increases count after each operation is performed on the specified storage id\\n * @param ctx - StorageContext obje\\n * @param id - StorageId - Storage identifier for which the change count has to be updated\\n */\\n private increaseChangeCount(ctx: StorageContext, id: StorageId): void {\\n ctx.setState(\\n produce((draft) => {\\n draft[id] += 1;\\n })\\n );\\n }\\n}\\n","type":"injectable"}],"guards":[],"interceptors":[],"classes":[{"name":"Add","id":"class-Add-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite a single link

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"LinkId","deprecated":false,"deprecationMessage":""},{"name":"entry","type":"LinkEntry","deprecated":false,"deprecationMessage":""}],"line":9,"rawdescription":"\\n\\nAdd or overwrite a single link\\n","jsdoctags":[{"name":{"pos":356,"end":358,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"LinkId","deprecated":false,"deprecationMessage":"","tagName":{"pos":350,"end":355,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      link identifier

      \\n"},{"name":{"pos":387,"end":392,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entry"},"type":"LinkEntry","deprecated":false,"deprecationMessage":"","tagName":{"pos":381,"end":386,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      link entry

      \\n"}]},"properties":[],"description":"

      Add a single link

      \\n","rawdescription":"\\nAdd a single link","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Add","id":"class-Add-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite a single resource

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"entry","type":"ResourceEntry","deprecated":false,"deprecationMessage":""}],"line":8,"rawdescription":"\\n\\nAdd or overwrite a single resource\\n","jsdoctags":[{"name":{"pos":326,"end":328,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":320,"end":325,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource identifier

      \\n"},{"name":{"pos":361,"end":366,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entry"},"type":"ResourceEntry","deprecated":false,"deprecationMessage":"","tagName":{"pos":355,"end":360,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource entry

      \\n"}]},"properties":[],"description":"

      Add a single resource

      \\n","rawdescription":"\\nAdd a single resource","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"Add-1"},{"name":"AddFromYaml","id":"class-AddFromYaml-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add links from unparsed yaml

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"yaml","type":"string","deprecated":false,"deprecationMessage":""}],"line":32,"rawdescription":"\\n\\nAdd links from unparsed yaml\\n","jsdoctags":[{"name":{"pos":892,"end":896,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"yaml"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":886,"end":891,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Unparsed yaml data

      \\n"}]},"properties":[],"description":"

      Add entries from yaml file

      \\n","rawdescription":"\\nAdd entries from yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"AddFromYaml","id":"class-AddFromYaml-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add resources from unparsed yaml

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"yaml","type":"string","deprecated":false,"deprecationMessage":""}],"line":31,"rawdescription":"\\n\\nAdd resources from unparsed yaml\\n","jsdoctags":[{"name":{"pos":908,"end":912,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"yaml"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":902,"end":907,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Unparsed yaml data

      \\n"}]},"properties":[],"description":"

      Add resources from raw yaml data

      \\n","rawdescription":"\\nAdd resources from raw yaml data","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"AddFromYaml-1"},{"name":"AddMany","id":"class-AddMany-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite multiple links

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"entries","type":"Partial>","deprecated":false,"deprecationMessage":""}],"line":21,"rawdescription":"\\n\\nAdd or overwrite multiple links\\n","jsdoctags":[{"name":{"pos":633,"end":640,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entries"},"type":"Partial>","deprecated":false,"deprecationMessage":"","tagName":{"pos":627,"end":632,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      New links

      \\n"}]},"properties":[],"description":"

      Add multiple links at once

      \\n","rawdescription":"\\nAdd multiple links at once","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"AddMany","id":"class-AddMany-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite multiple resources

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"entries","type":"Partial>","deprecated":false,"deprecationMessage":""}],"line":20,"rawdescription":"\\n\\nAdd or overwrite multiple resources\\n","jsdoctags":[{"name":{"pos":627,"end":634,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entries"},"type":"Partial>","deprecated":false,"deprecationMessage":"","tagName":{"pos":621,"end":626,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      New resources

      \\n"}]},"properties":[],"description":"

      Add multiple resources at once

      \\n","rawdescription":"\\nAdd multiple resources at once","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"AddMany-1"},{"name":"Clear","id":"class-Clear-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for clear action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""}],"line":37,"rawdescription":"\\n\\nconstructor class for clear action object\\n","jsdoctags":[{"name":{"pos":1146,"end":1148,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1140,"end":1145,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"}]},"properties":[],"description":"

      Clear the values stored in the specified StorageId

      \\n","rawdescription":"\\n\\nClear the values stored in the specified StorageId\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Delete","id":"class-Delete-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for Delete action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""},{"name":"key","type":"string","deprecated":false,"deprecationMessage":""}],"line":24,"rawdescription":"\\n\\nconstructor class for Delete action object\\n","jsdoctags":[{"name":{"pos":769,"end":771,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":763,"end":768,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"},{"name":{"pos":823,"end":826,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"key"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":817,"end":822,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - Key to be stored in the storage identifier
      • \\n
      \\n"}]},"properties":[],"description":"

      Class Delete Action for delete method

      \\n","rawdescription":"\\n\\n Class Delete Action for delete method\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LinkRegistrySelectors","id":"class-LinkRegistrySelectors-06d9e020c846f4521dcfb2095cd0e77e9f6aa4c734e6cd2f8081eef02dec593dc6ad455cf1a4d65585ecec0f48fb03db1829258cbc3db21e3c7603e10eb90644","file":"state/src/link-registry/link-registry.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UnionMember } from \'@hra-ui/utils/types\';\\nimport { Selector } from \'@ngxs/store\';\\nimport { LinkEntry, LinkId, LinkRegistryModel, LinkType } from \'./link-registry.model\';\\nimport { LinkRegistryQuery, LinkRegistryState } from \'./link-registry.state\';\\n\\n/**\\n * Selectors for Link Registry\\n */\\nexport class LinkRegistrySelectors {\\n /**\\n * Queries for a link entry\\n * @param state Current state\\n * @returns link query function\\n */\\n @Selector([LinkRegistryState])\\n static query(state: LinkRegistryModel): LinkRegistryQuery {\\n return (id, type) => this.getEntry(state, id, type);\\n }\\n\\n /**\\n * Gets a link entry by id and optionally type\\n * @param state link registry state\\n * @param id Entry id\\n * @param type Optional entry type\\n * @returns The entry if found, undefined otherwise\\n */\\n private static getEntry(\\n state: LinkRegistryModel,\\n id: LinkId,\\n type?: T\\n ): UnionMember | undefined {\\n const entry = state[id] as UnionMember;\\n const typeMatches = type === undefined || entry?.type === type;\\n return typeMatches ? entry : undefined;\\n }\\n}\\n","properties":[],"description":"

      Selectors for Link Registry

      \\n","rawdescription":"\\n\\nSelectors for Link Registry\\n","methods":[{"name":"query","args":[{"name":"state","type":"LinkRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"LinkRegistryQuery","typeParameters":[],"line":16,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries for a link entry\\n","description":"

      Queries for a link entry

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'LinkRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":382,"end":387,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"LinkRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":376,"end":381,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":408,"end":415,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      link query function

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LoadFromYaml","id":"class-LoadFromYaml-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote yaml file and add links

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":43,"rawdescription":"\\n\\nLoads a remote yaml file and add links\\n","jsdoctags":[{"name":{"pos":1145,"end":1148,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1139,"end":1144,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote yaml file url

      \\n"}]},"properties":[],"description":"

      Add links from a remote yaml file

      \\n","rawdescription":"\\nAdd links from a remote yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LoadFromYaml","id":"class-LoadFromYaml-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote yaml file and add resources

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":42,"rawdescription":"\\n\\nLoads a remote yaml file and add resources\\n","jsdoctags":[{"name":{"pos":1169,"end":1172,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1163,"end":1168,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote yaml file url

      \\n"}]},"properties":[],"description":"

      Add resources from a remote yaml file

      \\n","rawdescription":"\\nAdd resources from a remote yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"LoadFromYaml-1"},{"name":"LoadMarkdown","id":"class-LoadMarkdown-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote markdown file and add a resource

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":53,"rawdescription":"\\n\\nLoads a remote markdown file and add a resource\\n","jsdoctags":[{"name":{"pos":1456,"end":1458,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1450,"end":1455,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":1483,"end":1486,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1477,"end":1482,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote markdown file url

      \\n"}]},"properties":[],"description":"

      Add a markdown resource with data loaded from a remote file

      \\n","rawdescription":"\\nAdd a markdown resource with data loaded from a remote file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Navigate","id":"class-Navigate-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      navigate to a link

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"LinkId","deprecated":false,"deprecationMessage":""},{"name":"extras","type":"UrlCreationOptions","deprecated":false,"deprecationMessage":"","defaultValue":"{}"}],"line":53,"rawdescription":"\\n\\nnavigate to a link\\n","jsdoctags":[{"name":{"pos":1386,"end":1388,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"LinkId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1380,"end":1385,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      unqiue identifier of link

      \\n"},{"name":{"pos":1427,"end":1433,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"extras"},"type":"UrlCreationOptions","deprecated":false,"deprecationMessage":"","defaultValue":"{}","tagName":{"pos":1421,"end":1426,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options when building the navigation url

      \\n"}]},"properties":[],"description":"

      Navigate to an Internal or external url from Link id

      \\n","rawdescription":"\\nNavigate to an Internal or external url from Link id","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"ResourceRegistrySelectors","id":"class-ResourceRegistrySelectors-30ee3cdaa36f8226c7eb574e0036e13521cbd6aeb6308e5ace88b8f7fd329f9bf1e99352d718ddf22dd6071fcd1548ba48117f604dc8951e00c89e925255254d","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { Selector } from \'@ngxs/store\';\\nimport {\\n BuiltinResourceType,\\n getEntry,\\n ResourceEntry,\\n ResourceId,\\n ResourceRegistryModel,\\n ResourceType,\\n} from \'./resource-registry.model\';\\nimport { ResourceRegistryState } from \'./resource-registry.state\';\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.entry} */\\nexport type EntryQuery = (id: ResourceId, type: ResourceType) => T | undefined;\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.anyEntry} */\\nexport type AnyEntryQuery = (id: ResourceId) => ResourceEntry | undefined;\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.field} */\\nexport type FieldQuery = (\\n id: ResourceId,\\n type: ResourceType,\\n field: K,\\n defaultValue?: T[K]\\n) => T[K];\\n\\n/** Query function for resource data */\\nexport type DataQuery = (id: ResourceId) => T;\\n\\n/** Selectors for ResourceRegistry */\\nexport class ResourceRegistrySelectors {\\n /**\\n * Queries an entry by id and type\\n * @param state Current state\\n * @returns Entry query function\\n */\\n @Selector([ResourceRegistryState])\\n static entry(state: ResourceRegistryModel): EntryQuery {\\n return (id, type) => getEntry(state, id, type);\\n }\\n\\n /**\\n * Queries an entry by id\\n * @param state Current state\\n * @returns Any entry query function\\n */\\n @Selector([ResourceRegistryState])\\n static anyEntry(state: ResourceRegistryModel): AnyEntryQuery {\\n return (id) => getEntry(state, id);\\n }\\n\\n /**\\n * Queries a field of an entry\\n * @param state Current state\\n * @returns A field query function\\n */\\n @Selector([ResourceRegistryState])\\n static field(state: ResourceRegistryModel): FieldQuery {\\n return (id, type, field, defaultValue?) => {\\n const entry = getEntry(state, id, type);\\n return entry?.[field] ?? (defaultValue as never);\\n };\\n }\\n\\n /**\\n * Query for any text data\\n * @param state Current state\\n * @returns Text data query function\\n */\\n @Selector([ResourceRegistryState])\\n static anyText(state: ResourceRegistryModel): DataQuery {\\n return (id) => {\\n const entry = getEntry(state, id);\\n switch (entry?.type) {\\n case BuiltinResourceType.Markdown:\\n return entry.markdown;\\n\\n case BuiltinResourceType.Text:\\n return entry.text;\\n\\n default:\\n return \'\';\\n }\\n };\\n }\\n\\n /**\\n * Query for markdown data\\n * @param state Current state\\n * @returns Markdown data query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static markdown(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Markdown, \'markdown\', \'\');\\n }\\n\\n /**\\n * Query for text data\\n * @param state Current state\\n * @returns Text data query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static text(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Text, \'text\', \'\');\\n }\\n\\n /**\\n * Query for an url\\n * @param state Current state\\n * @returns Url query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static url(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Url, \'url\', \'\');\\n }\\n}\\n","properties":[],"description":"

      Selectors for ResourceRegistry

      \\n","rawdescription":"\\nSelectors for ResourceRegistry","methods":[{"name":"anyEntry","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"AnyEntryQuery","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries an entry by id\\n","description":"

      Queries an entry by id

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1315,"end":1320,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1309,"end":1314,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1341,"end":1348,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Any entry query function

      \\n"}]},{"name":"anyText","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":70,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for any text data\\n","description":"

      Query for any text data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1948,"end":1953,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1942,"end":1947,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1974,"end":1981,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Text data query function

      \\n"}]},{"name":"entry","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"EntryQuery","typeParameters":[],"line":37,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries an entry by id and type\\n","description":"

      Queries an entry by id and type

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1055,"end":1060,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1049,"end":1054,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1081,"end":1088,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Entry query function

      \\n"}]},{"name":"field","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"FieldQuery","typeParameters":[],"line":57,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries a field of an entry\\n","description":"

      Queries a field of an entry

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1578,"end":1583,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1572,"end":1577,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1604,"end":1611,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A field query function

      \\n"}]},{"name":"markdown","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":92,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for markdown data\\n","description":"

      Query for markdown data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2486,"end":2493,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Markdown data query function

      \\n"}]},{"name":"text","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":102,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for text data\\n","description":"

      Query for text data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2790,"end":2797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Text data query function

      \\n"}]},{"name":"url","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":112,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for an url\\n","description":"

      Query for an url

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":3075,"end":3082,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Url query function

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"ScopedDestructorSubject","id":"class-ScopedDestructorSubject-c4b53b823f2f6845a68f4b66881cc81070616d6b5124d0d203f80f1eeee060d84d1d05eab91b3a6e833ea4aef93cdf9d68ef0051d58b85ca5101c609dad76a05","file":"injectors/src/lib/on-destroy/destructor-subject.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ReplaySubject } from \'rxjs\';\\n\\n/** Object on which cleanup functions can be registered */\\nexport interface DestructorScope {\\n /**\\n * Register a cleanup function\\n * @param cb Cleanup callback function\\n */\\n onDestroy(cb: () => void): void;\\n}\\n\\n/**\\n * Determines whether an object is destructor scope like\\n * @param obj Value to test\\n * @returns true if the object seems to be a destructor scope, otherwise false\\n */\\nexport function isDestructorScopeLike(obj: unknown): obj is DestructorScope {\\n const isObject = typeof obj === \'object\' && obj !== null;\\n return isObject && \'onDestroy\' in obj && typeof obj.onDestroy === \'function\';\\n}\\n\\n/**\\n * A subject type that is associated with a destructor scope.\\n * When the cleanup function is run the subject emits a single\\n * undefined value and immediately completes\\n */\\nexport class ScopedDestructorSubject extends ReplaySubject {\\n /**\\n * Creates a new subject and attaches cleanup to the destructor scope\\n * @param scope Associated scope\\n */\\n constructor(scope: DestructorScope) {\\n super(1);\\n\\n scope.onDestroy(() => {\\n this.next();\\n this.complete();\\n });\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Creates a new subject and attaches cleanup to the destructor scope

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"scope","type":"DestructorScope","deprecated":false,"deprecationMessage":""}],"line":27,"rawdescription":"\\n\\nCreates a new subject and attaches cleanup to the destructor scope\\n","jsdoctags":[{"name":{"pos":985,"end":990,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"scope"},"type":"DestructorScope","deprecated":false,"deprecationMessage":"","tagName":{"pos":979,"end":984,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Associated scope

      \\n"}]},"properties":[],"description":"

      A subject type that is associated with a destructor scope.\\nWhen the cleanup function is run the subject emits a single\\nundefined value and immediately completes

      \\n","rawdescription":"\\n\\nA subject type that is associated with a destructor scope.\\nWhen the cleanup function is run the subject emits a single\\nundefined value and immediately completes\\n","methods":[],"indexSignatures":[],"extends":"ReplaySubject","inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Set","id":"class-Set-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for Set action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""},{"name":"key","type":"string","deprecated":false,"deprecationMessage":""},{"name":"value","type":"string","deprecated":false,"deprecationMessage":""}],"line":10,"rawdescription":"\\n\\nconstructor class for Set action object\\n","jsdoctags":[{"name":{"pos":310,"end":312,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":304,"end":309,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"},{"name":{"pos":364,"end":367,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"key"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":358,"end":363,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - Key to be stored in the storage identifier
      • \\n
      \\n"},{"name":{"pos":440,"end":445,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":434,"end":439,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - value to be stored with the key
      • \\n
      \\n"}]},"properties":[],"description":"

      Class Set Action for set method

      \\n","rawdescription":"\\n\\nClass Set Action for set method\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"SnapshotObserver","id":"class-SnapshotObserver-e299315c33d01b7c5b9d7d2f8238209af3dd388427c9dfe124370b0bfb7c5852050237aaa3ca958ccb01cd0160e3e0a8d823189c91a4e0415996d17a10fef041","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ErrorObserver, NextObserver } from \'rxjs\';\\n\\n/** Object indicating that no error has been emitted */\\nconst NO_ERROR_SENTINEL_OBJ = {};\\n\\n/** Observer storing the latest value from a snapshot stream */\\nexport class SnapshotObserver implements NextObserver, ErrorObserver {\\n /** The latest value */\\n private value?: T = undefined;\\n /** An error value if not equal to `NO_ERROR_SENTINEL` */\\n private errorValue: unknown = NO_ERROR_SENTINEL_OBJ;\\n\\n /**\\n * Gets the latest value or throw on errors\\n * @returns The latest value\\n * @throws If an error has been emitted\\n */\\n get(): T {\\n if (this.errorValue !== NO_ERROR_SENTINEL_OBJ) {\\n throw this.errorValue;\\n }\\n\\n return this.value as T;\\n }\\n\\n /**\\n * Handles value emits\\n * @param value The new value\\n */\\n next(value: T): void {\\n this.value = value;\\n }\\n\\n /**\\n * Handles error emits\\n * @param err The error value\\n */\\n error(err: unknown): void {\\n this.value = undefined;\\n this.errorValue = err;\\n }\\n}\\n","properties":[],"description":"

      Observer storing the latest value from a snapshot stream

      \\n","rawdescription":"\\nObserver storing the latest value from a snapshot stream","methods":[{"name":"error","args":[{"name":"err","type":"","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":38,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nHandles error emits\\n","description":"

      Handles error emits

      \\n","jsdoctags":[{"name":{"pos":895,"end":898,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"err"},"type":"","deprecated":false,"deprecationMessage":"","tagName":{"pos":889,"end":894,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The error value

      \\n"}]},{"name":"get","args":[],"optional":false,"returnType":"T","typeParameters":[],"line":18,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets the latest value or throw on errors\\n","description":"

      Gets the latest value or throw on errors

      \\n","jsdoctags":[{"tagName":{"pos":521,"end":528,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The latest value

      \\n"}]},{"name":"next","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":30,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nHandles value emits\\n","description":"

      Handles value emits

      \\n","jsdoctags":[{"name":{"pos":772,"end":777,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":766,"end":771,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The new value

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"implements":["NextObserver","ErrorObserver"]},{"name":"StorageSelectors","id":"class-StorageSelectors-0d938da881e0833812d0d5fc912c373462855e27613ce56879abba3b34f8959431587c9ddcb129155b8908fe5dfe59498c3fcf8f154c461cf4461e749b880df5","file":"state/src/storage/storage.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { Selector } from \'@ngxs/store\';\\nimport { StorageId } from \'./storage.model\';\\nimport { StorageState } from \'./storage.state\';\\n/**\\n * Storage selectors - class for retrieving storage types\\n */\\nexport class StorageSelectors {\\n /**\\n * returns the value stored in the key,value pair in the storageId given\\n * @returns (id,key) of the given storage id else undefined\\n */\\n @Selector([StorageState])\\n static get(): (id: StorageId, key: string) => string | undefined {\\n return (id, key) => StorageState.getStorage(id).getItem(key) ?? undefined;\\n }\\n /**\\n * returns the number of items in the given storage id stored\\n * @returns length of the given StorageId supplied\\n */\\n @Selector([StorageState])\\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\\n // @ts-ignore Allow selector name\\n static length(): (id: StorageId) => number | undefined {\\n return (id) => StorageState.getStorage(id).length;\\n }\\n}\\n","properties":[],"description":"

      Storage selectors - class for retrieving storage types

      \\n","rawdescription":"\\n\\nStorage selectors - class for retrieving storage types\\n","methods":[{"name":"get","args":[],"optional":false,"returnType":"string | undefined","typeParameters":[],"line":13,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nreturns the value stored in the key,value pair in the storageId given\\n","description":"

      returns the value stored in the key,value pair in the storageId given

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'StorageState\']"}],"modifierKind":[124],"jsdoctags":[{"tagName":{"pos":318,"end":325,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      (id,key) of the given storage id else undefined

      \\n"}]},{"name":"length","args":[],"optional":false,"returnType":"number | undefined","typeParameters":[],"line":23,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nreturns the number of items in the given storage id stored\\n","description":"

      returns the number of items in the given storage id stored

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'StorageState\']"}],"modifierKind":[124],"jsdoctags":[{"tagName":{"pos":636,"end":643,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      length of the given StorageId supplied

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]}],"directives":[{"name":"HoverDirective","id":"directive-HoverDirective-09dbb1791c1e8551d99aeb917f0d664e71738bebaebeed4601b7634f7980b675771162be311571667692c787d939ee9eeb40e57b4627c9cd75ebc926e849cc0d","file":"src/lib/hover/hover.directive.ts","type":"directive","description":"

      Hover overlay directive to be used across the application

      \\n","rawdescription":"\\nHover overlay directive to be used across the application","sourceCode":"import { ConnectionPositionPair, Overlay } from \'@angular/cdk/overlay\';\\nimport { TemplatePortal } from \'@angular/cdk/portal\';\\nimport { Directive, ElementRef, HostListener, inject, Input, TemplateRef, ViewContainerRef } from \'@angular/core\';\\n\\n/** Context passed to hover content templates */\\nexport interface HoverContext {\\n /** Data provided by the user for use inside the content template */\\n $implicit: T;\\n}\\n\\n/** Hover overlay directive to be used across the application */\\n@Directive({\\n selector: \'[hraHover]\',\\n standalone: true,\\n})\\nexport class HoverDirective {\\n /** Setter for the content to be displayed in the overlay */\\n @Input(\'hraHover\')\\n set content(content: TemplateRef>) {\\n this.portal = new TemplatePortal(content, this.viewContainerRef, this._data);\\n this.updateContent();\\n }\\n\\n /** Setter for the context that is to be displayed in the portal attached to the overlay */\\n @Input(\'hraHoverData\')\\n set data(data: T) {\\n this._data = { $implicit: data };\\n if (this.portal) {\\n this.portal.context = this._data;\\n this.updateContent();\\n }\\n }\\n\\n /** Reference to the element that the directive is attached to */\\n private readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /** Reference to the overlay that is created when the userhovers over the element along with its position setting */\\n readonly overlayRef = inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n });\\n\\n /** Reference view container that the directive is attached to */\\n private readonly viewContainerRef = inject(ViewContainerRef);\\n\\n /** Store the data that is passed into the data input property */\\n private _data?: HoverContext;\\n\\n /** Portal that is created to display the overlay */\\n portal?: TemplatePortal>;\\n\\n /** Function to handle the mouse over event to attach the portal and display the hover content */\\n @HostListener(\'mouseover\')\\n startHover(): void {\\n const { overlayRef, portal } = this;\\n if (!overlayRef.hasAttached() && portal) {\\n overlayRef.attach(portal);\\n }\\n }\\n\\n /** Function to handle the mouse out event to detach the portal */\\n @HostListener(\'mouseout\')\\n endHover(): void {\\n const { overlayRef } = this;\\n if (overlayRef.hasAttached()) {\\n overlayRef.detach();\\n }\\n }\\n\\n /** Function to handle the updation of overlay with up to date content when the input changes */\\n private updateContent(): void {\\n const { overlayRef, portal } = this;\\n if (overlayRef.hasAttached() && portal) {\\n overlayRef.detach();\\n overlayRef.attach(portal);\\n }\\n }\\n}\\n","selector":"[hraHover]","providers":[],"inputsClass":[{"name":"hraHover","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSetter for the content to be displayed in the overlay","description":"

      Setter for the content to be displayed in the overlay

      \\n","line":19,"type":"TemplateRef>","decorators":[]},{"name":"hraHoverData","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSetter for the context that is to be displayed in the portal attached to the overlay","description":"

      Setter for the context that is to be displayed in the portal attached to the overlay

      \\n","line":26,"type":"T","decorators":[]}],"outputsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[{"name":"mouseout","args":[],"argsDecorator":[],"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse out event to detach the portal","description":"

      Function to handle the mouse out event to detach the portal

      \\n","line":71},{"name":"mouseover","args":[],"argsDecorator":[],"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse over event to attach the portal and display the hover content","description":"

      Function to handle the mouse over event to attach the portal and display the hover content

      \\n","line":62}],"propertiesClass":[{"name":"overlayRef","defaultValue":"inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Reference to the overlay that is created when the userhovers over the element along with its position setting

      \\n","line":38,"rawdescription":"\\nReference to the overlay that is created when the userhovers over the element along with its position setting","modifierKind":[144]},{"name":"portal","deprecated":false,"deprecationMessage":"","type":"TemplatePortal>","optional":true,"description":"

      Portal that is created to display the overlay

      \\n","line":58,"rawdescription":"\\nPortal that is created to display the overlay"}],"methodsClass":[{"name":"endHover","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":71,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse out event to detach the portal","description":"

      Function to handle the mouse out event to detach the portal

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'mouseout\'"}]},{"name":"startHover","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":62,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse over event to attach the portal and display the hover content","description":"

      Function to handle the mouse over event to attach the portal and display the hover content

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'mouseover\'"}]}],"accessors":{"content":{"name":"content","setSignature":{"name":"content","type":"void","deprecated":false,"deprecationMessage":"","args":[{"name":"content","type":"TemplateRef>","deprecated":false,"deprecationMessage":""}],"returnType":"void","line":19,"rawdescription":"\\nSetter for the content to be displayed in the overlay","description":"

      Setter for the content to be displayed in the overlay

      \\n","jsdoctags":[{"name":"content","type":"TemplateRef>","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}},"data":{"name":"data","setSignature":{"name":"data","type":"void","deprecated":false,"deprecationMessage":"","args":[{"name":"data","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"void","line":26,"rawdescription":"\\nSetter for the context that is to be displayed in the portal attached to the overlay","description":"

      Setter for the context that is to be displayed in the portal attached to the overlay

      \\n","jsdoctags":[{"name":"data","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}}}},{"name":"LinkDirective","id":"directive-LinkDirective-3a72ea9951359ac8c2820ab17b233c7a92ebad446e52761c9694b431a28bc3d08c8fd1d8405a44a840bcdc6b63328cdbda54820dabf5f26d797e1be7d5cd3a23","file":"src/lib/link/link.directive.ts","type":"directive","description":"

      Link Directive for routing

      \\n","rawdescription":"\\nLink Directive for routing","sourceCode":"import { Directive, ElementRef, HostBinding, HostListener, inject, Injector, Input, OnChanges } from \'@angular/core\';\\nimport { ActivatedRoute, Params, QueryParamsHandling, UrlCreationOptions } from \'@angular/router\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { EMPTY_LINK, LinkEntry, LinkRegistryActions, LinkRegistrySelectors, LinkType } from \'@hra-ui/cdk/state\';\\nimport { createExternalUrl, createInternalUrl } from \'@hra-ui/utils\';\\n\\n/** Link Directive for routing */\\n@Directive({\\n selector: \'[hraLink]\',\\n standalone: true,\\n})\\nexport class LinkDirective implements OnChanges {\\n /** linkId with empty string as default value */\\n @Input(\'hraLink\') linkId = EMPTY_LINK;\\n\\n /** Query string parameters */\\n @Input() queryParams?: Params;\\n\\n /** How to handle existing query params */\\n @Input() queryParamsHandling?: QueryParamsHandling;\\n\\n /** Url fragment */\\n @Input() fragment?: string;\\n\\n /** Whether to preserve the existing fragment */\\n @Input() preserveFragment?: boolean;\\n\\n /** Nagivate relative to a route. Only affects internal links. */\\n @Input() relativeTo?: ActivatedRoute;\\n\\n /** href of the element */\\n @HostBinding(\'attr.href\') href?: string;\\n /** rel attribute of the element */\\n @HostBinding(\'attr.rel\') rel?: string;\\n /** target attribute of the element */\\n @HostBinding(\'attr.target\') target?: string;\\n\\n /** Reference to this component\'s injector */\\n private readonly injector = inject(Injector);\\n /** Element tag on which this directive is mounted */\\n private readonly tagName = inject>(ElementRef).nativeElement.tagName.toLowerCase();\\n /** Selector for querying the link registry state */\\n private readonly queryLink = selectQuerySnapshot(LinkRegistrySelectors.query);\\n /** Dispatch action to navigate to a url */\\n private readonly navigate = dispatch(LinkRegistryActions.Navigate);\\n\\n /** Link Entry */\\n private link?: LinkEntry;\\n\\n /** Whether the host element is an anchor */\\n private get isAnchorElement(): boolean {\\n return [\'a\', \'area\'].includes(this.tagName);\\n }\\n\\n /** Whether the host element deals with resource urls */\\n private get isResourceUrl(): boolean {\\n return [\'base\', \'link\'].includes(this.tagName);\\n }\\n\\n /** Collects query params and fragment options into a single object */\\n private get extras(): UrlCreationOptions {\\n const { link } = this;\\n return this.mergeExtras(link?.type === LinkType.Internal ? link.extras : undefined, this);\\n }\\n\\n /** Updates the current link/url based on the inputs */\\n ngOnChanges(): void {\\n this.updateLink();\\n }\\n\\n /**\\n * Triggers when a click action is performed on the element\\n * @param event type of event\\n * @returns true/false based on entry and element\\n */\\n @HostListener(\'click\', [\'$event\'])\\n onClick(event: MouseEvent): boolean {\\n const { link, linkId, isAnchorElement } = this;\\n if (!link) {\\n return true;\\n }\\n\\n if (isAnchorElement) {\\n const { button, ctrlKey, shiftKey, altKey, metaKey } = event;\\n if (link.type === LinkType.External || button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {\\n return true;\\n }\\n }\\n\\n this.navigate(linkId, this.extras);\\n return !isAnchorElement;\\n }\\n\\n /** Updates the link entry and bound attributes */\\n private updateLink(): void {\\n const link = (this.link = this.queryLink(this.linkId));\\n ({ href: this.href, rel: this.rel, target: this.target } = this.getLinkAttributes(link));\\n }\\n\\n /**\\n * Gets the new values for different attributes bound to the host element\\n * @param link Current link entry\\n * @returns New attributes values to bind on the host element\\n */\\n private getLinkAttributes(link?: LinkEntry): { href?: string; rel?: string; target?: string } {\\n const { injector, extras, isResourceUrl } = this;\\n switch (link?.type) {\\n case LinkType.Internal:\\n return { href: createInternalUrl(injector, link.commands, extras, isResourceUrl) };\\n\\n case LinkType.External:\\n return { ...link, href: createExternalUrl(link.url, extras) };\\n\\n default:\\n return {};\\n }\\n }\\n\\n /**\\n * Merges two UrlCreationOptions.\\n * Undefined values in the second set does not override values from the first set.\\n * @param opt1 First set of options\\n * @param opt2 Second set of options\\n * @returns Merged options\\n */\\n private mergeExtras(opt1: UrlCreationOptions | undefined, opt2: UrlCreationOptions): UrlCreationOptions {\\n const result = { ...opt1 };\\n const mergeKey = (key: K) => {\\n if (opt2[key] !== undefined) {\\n result[key] = opt2[key];\\n }\\n };\\n\\n mergeKey(\'queryParams\');\\n mergeKey(\'queryParamsHandling\');\\n mergeKey(\'fragment\');\\n mergeKey(\'preserveFragment\');\\n mergeKey(\'relativeTo\');\\n return result;\\n }\\n}\\n","selector":"[hraLink]","providers":[],"inputsClass":[{"name":"fragment","deprecated":false,"deprecationMessage":"","rawdescription":"\\nUrl fragment","description":"

      Url fragment

      \\n","line":23,"type":"string","decorators":[]},{"name":"hraLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nlinkId with empty string as default value","description":"

      linkId with empty string as default value

      \\n","line":14,"type":"any","decorators":[]},{"name":"preserveFragment","deprecated":false,"deprecationMessage":"","rawdescription":"\\nWhether to preserve the existing fragment","description":"

      Whether to preserve the existing fragment

      \\n","line":26,"type":"boolean","decorators":[]},{"name":"queryParams","deprecated":false,"deprecationMessage":"","rawdescription":"\\nQuery string parameters","description":"

      Query string parameters

      \\n","line":17,"type":"Params","decorators":[]},{"name":"queryParamsHandling","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHow to handle existing query params","description":"

      How to handle existing query params

      \\n","line":20,"type":"QueryParamsHandling","decorators":[]},{"name":"relativeTo","deprecated":false,"deprecationMessage":"","rawdescription":"\\nNagivate relative to a route. Only affects internal links.","description":"

      Nagivate relative to a route. Only affects internal links.

      \\n","line":29,"type":"ActivatedRoute","decorators":[]}],"outputsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[{"name":"attr.href","deprecated":false,"deprecationMessage":"","rawdescription":"\\nhref of the element","description":"

      href of the element

      \\n","line":32,"type":"string","decorators":[]},{"name":"attr.rel","deprecated":false,"deprecationMessage":"","rawdescription":"\\nrel attribute of the element","description":"

      rel attribute of the element

      \\n","line":34,"type":"string","decorators":[]},{"name":"attr.target","deprecated":false,"deprecationMessage":"","rawdescription":"\\ntarget attribute of the element","description":"

      target attribute of the element

      \\n","line":36,"type":"string","decorators":[]}],"hostListeners":[{"name":"click","args":[{"name":"event","type":"MouseEvent","deprecated":false,"deprecationMessage":""}],"argsDecorator":["$event"],"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nTriggers when a click action is performed on the element\\n","description":"

      Triggers when a click action is performed on the element

      \\n","jsdoctags":[{"pos":2659,"end":2691,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":338,"tagName":{"pos":2660,"end":2665,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      type of event

      \\n","name":{"pos":2666,"end":2671,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"event"},"isNameFirst":true,"isBracketed":false},{"pos":2691,"end":2741,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":339,"tagName":{"pos":2692,"end":2699,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true/false based on entry and element

      \\n"}],"line":77}],"propertiesClass":[{"name":"href","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      href of the element

      \\n","line":32,"rawdescription":"\\nhref of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.href\'"}]},{"name":"rel","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      rel attribute of the element

      \\n","line":34,"rawdescription":"\\nrel attribute of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.rel\'"}]},{"name":"target","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      target attribute of the element

      \\n","line":36,"rawdescription":"\\ntarget attribute of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.target\'"}]}],"methodsClass":[{"name":"onClick","args":[{"name":"event","type":"MouseEvent","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"boolean","typeParameters":[],"line":77,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nTriggers when a click action is performed on the element\\n","description":"

      Triggers when a click action is performed on the element

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'click\', [\'$event\']"}],"jsdoctags":[{"name":{"pos":2666,"end":2671,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"event"},"type":"MouseEvent","deprecated":false,"deprecationMessage":"","tagName":{"pos":2660,"end":2665,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      type of event

      \\n"},{"tagName":{"pos":2692,"end":2699,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true/false based on entry and element

      \\n"}]}],"implements":["OnChanges"]}],"components":[{"name":"DestroyHostComponent","id":"component-DestroyHostComponent-673df9acfa9566a60f8f4a880379e6b99e54ae5d5ad511c7cd7a96cae5e2bdc436037556a9ad3ca44bdc0a5f74c3a300031212bae7e0df53e349d8e34d30dd92","file":"injectors/src/lib/on-destroy/destroy-host.component.ts","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-destroy-host","styleUrls":[],"styles":[":host { display: none }"],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"el","defaultValue":"inject(ElementRef).nativeElement","deprecated":false,"deprecationMessage":"","type":"Element","optional":false,"description":"

      Reference to own dom element

      \\n","line":14,"rawdescription":"\\nReference to own dom element","modifierKind":[144]}],"methodsClass":[{"name":"create","args":[{"name":"container","type":"ViewContainerRef","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"ComponentRef","typeParameters":[],"line":22,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nCreates a new DestroyHostComponent inside the provided container.\\nThe element is inserted as the first child (index \'0\') in the container.\\n","description":"

      Creates a new DestroyHostComponent inside the provided container.\\nThe element is inserted as the first child (index '0') in the container.

      \\n","modifierKind":[124],"jsdoctags":[{"name":{"pos":661,"end":670,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"container"},"type":"ViewContainerRef","deprecated":false,"deprecationMessage":"","tagName":{"pos":655,"end":660,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      View in which to create the element

      \\n"},{"tagName":{"pos":713,"end":720,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The ComponentRef of the newly inserted element

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component used when attaching destroy lifecycle observables to a component/directive/pipe

      \\n","rawdescription":"\\n\\nComponent used when attaching destroy lifecycle observables to a component/directive/pipe\\n","type":"component","sourceCode":"import { AfterViewInit, Component, ComponentRef, ElementRef, inject, ViewContainerRef } from \'@angular/core\';\\n\\n/**\\n * Component used when attaching destroy lifecycle observables to a component/directive/pipe\\n */\\n@Component({\\n selector: \'hra-destroy-host\',\\n standalone: true,\\n template: \'\',\\n styles: [\':host { display: none }\'],\\n})\\nexport class DestroyHostComponent implements AfterViewInit {\\n /** Reference to own dom element */\\n readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /**\\n * Creates a new DestroyHostComponent inside the provided container.\\n * The element is inserted as the first child (index \'0\') in the container.\\n * @param container View in which to create the element\\n * @returns The ComponentRef of the newly inserted element\\n */\\n static create(container: ViewContainerRef): ComponentRef {\\n return container.createComponent(DestroyHostComponent, { index: 0 });\\n }\\n\\n /** Disconnects the component from the dom tree */\\n ngAfterViewInit(): void {\\n this.el.remove();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":"","stylesData":":host { display: none }\\n","implements":["AfterViewInit"]}],"modules":[{"name":"CdkStateModule","id":"module-CdkStateModule-a93bb19297573c6c6708763b071fc9fb4b27e887170144694df55a5d5749e030c9dd51938c8c23a8844e3888ac2176fede6d8f95d54f41aead08116fa6c152d4","description":"","deprecationMessage":"","deprecated":false,"file":"state/src/state.module.ts","methods":[],"sourceCode":"import { NgModule } from \'@angular/core\';\\nimport { NgxsModule } from \'@ngxs/store\';\\nimport { LinkRegistryState } from \'./link-registry\';\\nimport { ResourceRegistryState } from \'./resource-registry\';\\nimport { StorageState } from \'./storage\';\\n\\n@NgModule({\\n imports: [NgxsModule.forFeature([LinkRegistryState, ResourceRegistryState, StorageState])],\\n})\\nexport class CdkStateModule {}\\n","children":[{"type":"providers","elements":[]},{"type":"declarations","elements":[]},{"type":"imports","elements":[]},{"type":"exports","elements":[]},{"type":"bootstrap","elements":[]},{"type":"classes","elements":[]}]}],"miscellaneous":{"variables":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'LinkRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'ResourceRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'Storage\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"actionTypeRegistry","ctype":"miscellaneous","subtype":"variable","file":"state/src/actions/action-type-registry.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new Set()","rawdescription":"Registry of action types","description":"

      Registry of action types

      \\n"},{"name":"BUILTIN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.discriminatedUnion(\'type\', [MARKDOWN_ENTRY, TEXT_ENTRY, URL_ENTRY])","rawdescription":"Union of all builtin entries","description":"

      Union of all builtin entries

      \\n"},{"name":"BUILTIN_TYPE_VALUES","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"Object.values(RawBuiltinResourceType)","rawdescription":"Builtin type strings as an array","description":"

      Builtin type strings as an array

      \\n"},{"name":"BuiltinResourceType","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"RawBuiltinResourceType as BuiltinTypes","rawdescription":"Builtin resource types","description":"

      Builtin resource types

      \\n"},{"name":"CUSTOM_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({ type: CUSTOM_ENTRY_TYPE }).passthrough()","rawdescription":"Custom entry","description":"

      Custom entry

      \\n"},{"name":"CUSTOM_ENTRY_TYPE","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .refine((val) => !isBuiltinType(val), \'Invalid builtin resource format\')\\n .transform>(createCustomType)","rawdescription":"Custom entry type validator with transformation","description":"

      Custom entry type validator with transformation

      \\n"},{"name":"CUSTOM_TYPE_PREFIX","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"string","defaultValue":"\'custom:\'","rawdescription":"Prefix of all custom types","description":"

      Prefix of all custom types

      \\n"},{"name":"DESTRUCTOR_CACHE","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/on-destroy/on-destroy.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new WeakMap>()","rawdescription":"Cached destructor observables","description":"

      Cached destructor observables

      \\n"},{"name":"EMPTY_LINK","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"createLinkId(\'@@__EMPTY__\')","rawdescription":"Empty link id","description":"

      Empty link id

      \\n"},{"name":"EXTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.External),\\n url: z.string(),\\n rel: z.string().default(\'noopener\'),\\n target: z.string(),\\n })\\n .partial({ rel: true, target: true })","rawdescription":"Type for external link entry","description":"

      Type for external link entry

      \\n"},{"name":"INTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.Internal),\\n commands: z.any().array(),\\n extras: z\\n .object({\\n queryParams: z.record(z.any()).nullable(),\\n fragment: z.string(),\\n queryParamsHandling: z.enum([\'merge\', \'preserve\', \'\']).nullable(),\\n preserveFragment: z.boolean(),\\n onSameUrlNavigation: z.literal(\'reload\'),\\n skipLocationChange: z.boolean(),\\n replaceUrl: z.boolean(),\\n })\\n .partial(),\\n })\\n .partial({ extras: true })","rawdescription":"Type for internal link entry","description":"

      Type for internal link entry

      \\n"},{"name":"LINK_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(\\n z\\n .string()\\n .transform((id) => `LinkId:\'${id}\'`)\\n .brand(\'LinkId\'),\\n z.discriminatedUnion(\'type\', [EXTERNAL_LINK_SCHEMA, INTERNAL_LINK_SCHEMA])\\n)","rawdescription":"Schema for link registry","description":"

      Schema for link registry

      \\n"},{"name":"MARKDOWN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Markdown),\\n markdown: z.string(),\\n})","rawdescription":"Markdown data","description":"

      Markdown data

      \\n"},{"name":"NO_ERROR_SENTINEL_OBJ","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"object","defaultValue":"{}","rawdescription":"Object indicating that no error has been emitted","description":"

      Object indicating that no error has been emitted

      \\n"},{"name":"RESOURCE_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.union([BUILTIN_ENTRY, CUSTOM_ENTRY])","rawdescription":"Builtin or custom entries","description":"

      Builtin or custom entries

      \\n"},{"name":"RESOURCE_ID","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .transform((id) => `ResourceId:\'${id}\'`)\\n .brand(\'ResourceId\')","rawdescription":"Resource identifier validator with transformation","description":"

      Resource identifier validator with transformation

      \\n"},{"name":"RESOURCE_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(RESOURCE_ID, RESOURCE_ENTRY)","rawdescription":"State schema","description":"

      State schema

      \\n"},{"name":"TEXT_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Text),\\n text: z.string(),\\n})","rawdescription":"Text data","description":"

      Text data

      \\n"},{"name":"URL_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Url),\\n url: z.string(),\\n})","rawdescription":"External url","description":"

      External url

      \\n"}],"functions":[{"name":"Action","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new base action with a specified type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":685,"end":689,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":679,"end":684,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type

      \\n"},{"tagName":{"pos":706,"end":713,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A base action class

      \\n"}]},{"name":"ActionGroup","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory that adds a common group string to each action type

      \\n","args":[{"name":"group","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":421,"end":426,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"group"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Common action type group

      \\n"},{"tagName":{"pos":456,"end":463,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An action factory

      \\n"}]},{"name":"assertUniqueActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Asserts that an action type is unique

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":141,"end":145,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":135,"end":140,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"createActionFactory","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory function

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":""}],"returnType":"A","jsdoctags":[{"name":{"pos":500,"end":504,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":494,"end":499,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor

      \\n"},{"name":{"pos":534,"end":543,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","tagName":{"pos":528,"end":533,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Initial bound arguments

      \\n"},{"tagName":{"pos":572,"end":579,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A factory function creating a new action on each call

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>>>","jsdoctags":[{"name":{"pos":4708,"end":4712,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":4702,"end":4707,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"tagName":{"pos":4735,"end":4742,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type with a payload. The payload should be\\nspecified using the {@link payload} function

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""},{"name":"payload","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":5138,"end":5142,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":5132,"end":5137,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"name":{"pos":5171,"end":5178,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"payload"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":5165,"end":5170,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Payload type

      \\n"},{"tagName":{"pos":5032,"end":5039,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"

      const MyResourceType = createCustomType('my-type', payload<{ value: number }>());

      \\n"},{"tagName":{"pos":5196,"end":5203,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Implementation of createCustomType overloads

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createLinkId","file":"state/src/link-registry/link-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      function to createa unique link ids

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"LinkId","jsdoctags":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createResourceId","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new resource identifier

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":4258,"end":4260,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4252,"end":4257,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw identifier

      \\n"},{"tagName":{"pos":4280,"end":4287,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A resource id

      \\n"}]},{"name":"dispatch","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"A","jsdoctags":[{"name":{"pos":1721,"end":1725,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1715,"end":1720,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":1779,"end":1788,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":1773,"end":1778,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":1835,"end":1842,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatch$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.\\nEach call to the wrapper returns an observable that emits the action instance once the\\ndispatch action has completed.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":2426,"end":2430,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":2420,"end":2425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":2484,"end":2493,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2478,"end":2483,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":2540,"end":2547,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatchAction","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns passed actions unchanged

      \\n","args":[],"returnType":"A","jsdoctags":[{"tagName":{"pos":3054,"end":3061,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchAction$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns an observable that emits the passed actions when the dispatch has finished

      \\n","args":[],"returnType":"Observable
      ","jsdoctags":[{"tagName":{"pos":3418,"end":3425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchImpl","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Common dispatch functionality used to implement all dispatch functions

      \\n","args":[{"name":"actionFactory","deprecated":false,"deprecationMessage":""},{"name":"resultHandler","deprecated":false,"deprecationMessage":""}],"returnType":"R","jsdoctags":[{"name":{"pos":976,"end":989,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"actionFactory"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":970,"end":975,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Creates an action or array of actions from the user provided arguments

      \\n"},{"name":{"pos":1071,"end":1084,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"resultHandler"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1065,"end":1070,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Selects the output value from the action and the dispatch observable

      \\n"},{"tagName":{"pos":1158,"end":1165,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new dispatch function taking user arguments, dispatches actions, and returns a value

      \\n"}]},{"name":"findDestructorScope","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds the nearest destructor scope object in the current injection context

      \\n","args":[],"returnType":"DestructorScope","jsdoctags":[{"tagName":{"pos":1267,"end":1274,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The scope on which cleanup can be attached

      \\n"}]},{"name":"findStableKeyObject","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds a stable object in the current injection context to be\\nused as a key in the destructor cache

      \\n","args":[],"returnType":"object","jsdoctags":[{"tagName":{"pos":912,"end":919,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An object

      \\n"}]},{"name":"firstDefinedValue","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Get the first defined value returned by a generator

      \\n","args":[{"name":"genFn","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":441,"end":446,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"genFn"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":435,"end":440,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Generator function taking no arguments

      \\n"},{"tagName":{"pos":490,"end":497,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The first non-null value

      \\n"}]},{"name":"getEntry","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Internal helper function for getting an entry from the state

      \\n","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""},{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"type","type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"T | undefined","jsdoctags":[{"name":{"pos":5670,"end":5675,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":5664,"end":5669,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state snapshot

      \\n"},{"name":{"pos":5709,"end":5711,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":5703,"end":5708,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":5734,"end":5738,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":5728,"end":5733,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional entry type

      \\n"},{"tagName":{"pos":5763,"end":5770,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The entry object it exists and has the correct type, otherwise undefined

      \\n"}]},{"name":"identity","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Identity function returning the first argument passed

      \\n","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"injectDestroy$","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Inject an observable that emits and completes at the same time as the component, directive, pipe, or service\\nit is injected into. It can be used to control the lifetime of other observables using\\nthe takeUntil pipe, and to build other complex injection functions.

      \\n

      Caveats:

      \\n
        \\n
      • There are NO guarantees about whether the returned observable will emit and complete\\nbefore or after the regular ngOnDestroy lifecycle hook
      • \\n
      • For root and module level services the observable may never complete unless\\nthe containing module is explicitly destroyed, so don't rely on it for important operations
      • \\n
      • Components, directives, pipe, and services that manipulate the ViewContainerRef MUST\\ntake care to maintain the view controlling the lifecycle of the observable. Failure\\nto do so may result in early emit and completion of the returned observable
      • \\n
      \\n

      Based on comment on https://github.com/angular/angular/issues/10185\\nMostly https://github.com/angular/angular/issues/10185#issuecomment-1165545544 and\\nhttps://github.com/angular/angular/issues/10185#issuecomment-1199063426

      \\n","args":[],"returnType":"Observable","jsdoctags":[{"tagName":{"pos":2694,"end":2701,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that emits and completes when the component/directive/etc. is destroyed

      \\n"}]},{"name":"isBuiltinType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type string has builtin support

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":3572,"end":3576,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3566,"end":3571,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3597,"end":3604,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is one of the builtin types, otherwise false

      \\n"}]},{"name":"isCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type is a custom resource type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":3881,"end":3885,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3875,"end":3880,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3906,"end":3913,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is a custom type, otherwise false

      \\n"}]},{"name":"isDestructorScopeLike","file":"injectors/src/lib/on-destroy/destructor-subject.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether an object is destructor scope like

      \\n","args":[{"name":"obj","deprecated":false,"deprecationMessage":""}],"returnType":"DestructorScope","jsdoctags":[{"name":{"pos":328,"end":331,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"obj"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":322,"end":327,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Value to test

      \\n"},{"tagName":{"pos":350,"end":357,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true if the object seems to be a destructor scope, otherwise false

      \\n"}]},{"name":"markForCheck","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Marks a view for change detection whenever a new value is emitted

      \\n","args":[{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"MonoTypeOperatorFunction","jsdoctags":[{"name":{"pos":689,"end":696,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":683,"end":688,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options to explicitly disable marking

      \\n"},{"tagName":{"pos":739,"end":746,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A rxjs operator

      \\n"}]},{"name":"payload","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Helper function used to specify the payload format when creating custom types

      \\n","args":[],"returnType":"ResourceEntryPayload","jsdoctags":[{"tagName":{"pos":4477,"end":4484,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A custom payload type

      \\n"}]},{"name":"pipeActionInstance","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Maps all emits to an action value

      \\n","args":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":""},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":""}],"returnType":"Observable","jsdoctags":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"registerActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Registers an action type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":421,"end":425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"select$","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an observable emitting parts of the state. The observable's lifetime\\nis automatically tied to the injection context where this is called.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":1313,"end":1321,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":1307,"end":1312,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State selection function or token

      \\n"},{"name":{"pos":1366,"end":1373,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1360,"end":1365,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Additional select options

      \\n"},{"tagName":{"pos":1404,"end":1411,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable of the selected state

      \\n"}]},{"name":"selectQuerySnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that can be called with the same arguments as the query selector\\nand returns the latest value each time. Automatically marks components, directives, or pipes\\nfor change detection whenever a new value is available. Note that since typescript has yet to\\nimplement support for higher order generics there is sometimes a need to specialize the\\nreturned query function with the correct arguments and return type. This can be done as shown\\nin the examples.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"SelectQuery","jsdoctags":[{"name":{"pos":2433,"end":2441,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":2427,"end":2432,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store query selector

      \\n"},{"name":{"pos":2473,"end":2482,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2467,"end":2472,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional bound query arguments

      \\n"},{"tagName":{"pos":1631,"end":1638,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Basic usage\\nclass Component {\\n...\\n// Return type: () => string\\nreadonly markdown = querySelectSnapshot(ResourceRegistrySelectors.markdown, id);\\n// Return type: (id: ResourceId) => string\\nreadonly markdownById = querySelectSnapshot(ResourceRegistrySelectors.markdown);\\n...\\n}"},{"tagName":{"pos":1975,"end":1982,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Specialize query arguments and/or return type\\nclass Component {\\n...\\n// Return type: () => number[]\\nreadonly points = querySelectSnapshot(ResourceRegistrySelectors.field, id, type, \'points\', []);\\n// Return type: (field: string, defaultValue: string) => string\\nreadonly getStringField = querySelectSnapshot(ResourceRegistrySelectors.field, id, type);\\n}"},{"tagName":{"pos":2518,"end":2525,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function taking the same arguments as the query selector (excluding bound arguments)

      \\n"}]},{"name":"selectSnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that returns the latest snapshot value each time it is called\\nAutomatically marks components, directives, or pipes for change detection whenever\\na new value is available

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":819,"end":827,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":813,"end":818,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store data selector

      \\n"},{"tagName":{"pos":852,"end":859,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function

      \\n"}]}],"typealiases":[{"name":"AnyEntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.anyEntry}

      \\n","kind":178},{"name":"BuiltinTypes","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Maps raw builtin type strings to ResourceType

      \\n","kind":194},{"name":"CustomResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Typed custom resource entry

      \\n","kind":187},{"name":"CustomResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":" `custom:${T}`","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Custom entry types

      \\n","kind":197},{"name":"DataQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for resource data

      \\n","kind":178},{"name":"EntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.entry}

      \\n","kind":178},{"name":"ExternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for external link entry

      \\n","kind":177},{"name":"ExtractBuiltinEntryType","ctype":"miscellaneous","subtype":"typealias","rawtype":"UnionMember | type | T>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Extracts the builtin entry with type T

      \\n","kind":177},{"name":"FieldQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.field}

      \\n","kind":178},{"name":"InternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for internal link entry

      \\n","kind":177},{"name":"LinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      entry for link registry

      \\n","kind":177},{"name":"LinkId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type for unique identifier for link

      \\n","kind":177},{"name":"LinkRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for State Context of LinkRegistry

      \\n","kind":177},{"name":"LinkRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for LinkRegistry State

      \\n","kind":177},{"name":"LinkRegistryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/link-registry/link-registry.state.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for link entry optionally with type specified

      \\n","kind":178},{"name":"ResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Any resource entry

      \\n","kind":177},{"name":"ResourceEntryPayload","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Payload type used when creating custom types

      \\n","kind":187},{"name":"ResourceId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource identifier

      \\n","kind":177},{"name":"ResourceRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Context type for action handlers

      \\n","kind":177},{"name":"ResourceRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State data model

      \\n","kind":177},{"name":"ResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource type string with entry typings

      \\n","kind":187},{"name":"RestArgs","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Get remaining arguments after applying bound arguments

      \\n","kind":188},{"name":"SelectQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Function type returned by {@link selectQuerySnapshot}

      \\n","kind":178},{"name":"StateSelector","ctype":"miscellaneous","subtype":"typealias","rawtype":" | StateToken","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","description":"

      Selector type for select style functions

      \\n","kind":186},{"name":"StorageContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Helper alias for action handler's ctx argument

      \\n","kind":177},{"name":"StorageModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"Record","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type alias for the array of Storage objects

      \\n","kind":177}],"enumerations":[{"name":"LinkType","childs":[{"name":"Internal","deprecated":false,"deprecationMessage":"","value":"internal"},{"name":"External","deprecated":false,"deprecationMessage":"","value":"external"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Types for Link

      \\n","file":"state/src/link-registry/link-registry.model.ts"},{"name":"RawBuiltinResourceType","childs":[{"name":"Markdown","deprecated":false,"deprecationMessage":"","value":"markdown"},{"name":"Text","deprecated":false,"deprecationMessage":"","value":"text"},{"name":"Url","deprecated":false,"deprecationMessage":"","value":"url"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Raw builtin type strings

      \\n","file":"state/src/resource-registry/resource-registry.model.ts"},{"name":"StorageId","childs":[{"name":"Local","deprecated":false,"deprecationMessage":"","value":"local"},{"name":"Session","deprecated":false,"deprecationMessage":"","value":"session"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      StorageId - enum with values as Local, Session - identifier for storage types

      \\n","file":"state/src/storage/storage.model.ts"}],"groupedVariables":{"state/src/link-registry/link-registry.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'LinkRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/resource-registry/resource-registry.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'ResourceRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/storage/storage.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'Storage\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/actions/action-type-registry.ts":[{"name":"actionTypeRegistry","ctype":"miscellaneous","subtype":"variable","file":"state/src/actions/action-type-registry.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new Set()","rawdescription":"Registry of action types","description":"

      Registry of action types

      \\n"}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"BUILTIN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.discriminatedUnion(\'type\', [MARKDOWN_ENTRY, TEXT_ENTRY, URL_ENTRY])","rawdescription":"Union of all builtin entries","description":"

      Union of all builtin entries

      \\n"},{"name":"BUILTIN_TYPE_VALUES","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"Object.values(RawBuiltinResourceType)","rawdescription":"Builtin type strings as an array","description":"

      Builtin type strings as an array

      \\n"},{"name":"BuiltinResourceType","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"RawBuiltinResourceType as BuiltinTypes","rawdescription":"Builtin resource types","description":"

      Builtin resource types

      \\n"},{"name":"CUSTOM_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({ type: CUSTOM_ENTRY_TYPE }).passthrough()","rawdescription":"Custom entry","description":"

      Custom entry

      \\n"},{"name":"CUSTOM_ENTRY_TYPE","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .refine((val) => !isBuiltinType(val), \'Invalid builtin resource format\')\\n .transform>(createCustomType)","rawdescription":"Custom entry type validator with transformation","description":"

      Custom entry type validator with transformation

      \\n"},{"name":"CUSTOM_TYPE_PREFIX","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"string","defaultValue":"\'custom:\'","rawdescription":"Prefix of all custom types","description":"

      Prefix of all custom types

      \\n"},{"name":"MARKDOWN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Markdown),\\n markdown: z.string(),\\n})","rawdescription":"Markdown data","description":"

      Markdown data

      \\n"},{"name":"RESOURCE_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.union([BUILTIN_ENTRY, CUSTOM_ENTRY])","rawdescription":"Builtin or custom entries","description":"

      Builtin or custom entries

      \\n"},{"name":"RESOURCE_ID","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .transform((id) => `ResourceId:\'${id}\'`)\\n .brand(\'ResourceId\')","rawdescription":"Resource identifier validator with transformation","description":"

      Resource identifier validator with transformation

      \\n"},{"name":"RESOURCE_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(RESOURCE_ID, RESOURCE_ENTRY)","rawdescription":"State schema","description":"

      State schema

      \\n"},{"name":"TEXT_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Text),\\n text: z.string(),\\n})","rawdescription":"Text data","description":"

      Text data

      \\n"},{"name":"URL_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Url),\\n url: z.string(),\\n})","rawdescription":"External url","description":"

      External url

      \\n"}],"injectors/src/lib/on-destroy/on-destroy.ts":[{"name":"DESTRUCTOR_CACHE","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/on-destroy/on-destroy.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new WeakMap>()","rawdescription":"Cached destructor observables","description":"

      Cached destructor observables

      \\n"}],"state/src/link-registry/link-registry.model.ts":[{"name":"EMPTY_LINK","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"createLinkId(\'@@__EMPTY__\')","rawdescription":"Empty link id","description":"

      Empty link id

      \\n"},{"name":"EXTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.External),\\n url: z.string(),\\n rel: z.string().default(\'noopener\'),\\n target: z.string(),\\n })\\n .partial({ rel: true, target: true })","rawdescription":"Type for external link entry","description":"

      Type for external link entry

      \\n"},{"name":"INTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.Internal),\\n commands: z.any().array(),\\n extras: z\\n .object({\\n queryParams: z.record(z.any()).nullable(),\\n fragment: z.string(),\\n queryParamsHandling: z.enum([\'merge\', \'preserve\', \'\']).nullable(),\\n preserveFragment: z.boolean(),\\n onSameUrlNavigation: z.literal(\'reload\'),\\n skipLocationChange: z.boolean(),\\n replaceUrl: z.boolean(),\\n })\\n .partial(),\\n })\\n .partial({ extras: true })","rawdescription":"Type for internal link entry","description":"

      Type for internal link entry

      \\n"},{"name":"LINK_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(\\n z\\n .string()\\n .transform((id) => `LinkId:\'${id}\'`)\\n .brand(\'LinkId\'),\\n z.discriminatedUnion(\'type\', [EXTERNAL_LINK_SCHEMA, INTERNAL_LINK_SCHEMA])\\n)","rawdescription":"Schema for link registry","description":"

      Schema for link registry

      \\n"}],"injectors/src/lib/select/snapshot-observer.ts":[{"name":"NO_ERROR_SENTINEL_OBJ","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"object","defaultValue":"{}","rawdescription":"Object indicating that no error has been emitted","description":"

      Object indicating that no error has been emitted

      \\n"}]},"groupedFunctions":{"state/src/actions/actions.ts":[{"name":"Action","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new base action with a specified type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":685,"end":689,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":679,"end":684,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type

      \\n"},{"tagName":{"pos":706,"end":713,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A base action class

      \\n"}]},{"name":"ActionGroup","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory that adds a common group string to each action type

      \\n","args":[{"name":"group","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":421,"end":426,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"group"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Common action type group

      \\n"},{"tagName":{"pos":456,"end":463,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An action factory

      \\n"}]}],"state/src/actions/action-type-registry.ts":[{"name":"assertUniqueActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Asserts that an action type is unique

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":141,"end":145,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":135,"end":140,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"registerActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Registers an action type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":421,"end":425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]}],"injectors/src/lib/dispatch/dispatch.ts":[{"name":"createActionFactory","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory function

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":""}],"returnType":"A","jsdoctags":[{"name":{"pos":500,"end":504,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":494,"end":499,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor

      \\n"},{"name":{"pos":534,"end":543,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","tagName":{"pos":528,"end":533,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Initial bound arguments

      \\n"},{"tagName":{"pos":572,"end":579,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A factory function creating a new action on each call

      \\n"}]},{"name":"dispatch","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"A","jsdoctags":[{"name":{"pos":1721,"end":1725,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1715,"end":1720,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":1779,"end":1788,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":1773,"end":1778,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":1835,"end":1842,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatch$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.\\nEach call to the wrapper returns an observable that emits the action instance once the\\ndispatch action has completed.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"Observable
      ","jsdoctags":[{"name":{"pos":2426,"end":2430,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":2420,"end":2425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":2484,"end":2493,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2478,"end":2483,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":2540,"end":2547,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatchAction","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns passed actions unchanged

      \\n","args":[],"returnType":"A","jsdoctags":[{"tagName":{"pos":3054,"end":3061,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchAction$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns an observable that emits the passed actions when the dispatch has finished

      \\n","args":[],"returnType":"Observable
      ","jsdoctags":[{"tagName":{"pos":3418,"end":3425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchImpl","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Common dispatch functionality used to implement all dispatch functions

      \\n","args":[{"name":"actionFactory","deprecated":false,"deprecationMessage":""},{"name":"resultHandler","deprecated":false,"deprecationMessage":""}],"returnType":"R","jsdoctags":[{"name":{"pos":976,"end":989,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"actionFactory"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":970,"end":975,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Creates an action or array of actions from the user provided arguments

      \\n"},{"name":{"pos":1071,"end":1084,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"resultHandler"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1065,"end":1070,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Selects the output value from the action and the dispatch observable

      \\n"},{"tagName":{"pos":1158,"end":1165,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new dispatch function taking user arguments, dispatches actions, and returns a value

      \\n"}]},{"name":"identity","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Identity function returning the first argument passed

      \\n","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"pipeActionInstance","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Maps all emits to an action value

      \\n","args":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":""},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":""}],"returnType":"Observable
      ","jsdoctags":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>>>","jsdoctags":[{"name":{"pos":4708,"end":4712,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":4702,"end":4707,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"tagName":{"pos":4735,"end":4742,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type with a payload. The payload should be\\nspecified using the {@link payload} function

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""},{"name":"payload","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":5138,"end":5142,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":5132,"end":5137,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"name":{"pos":5171,"end":5178,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"payload"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":5165,"end":5170,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Payload type

      \\n"},{"tagName":{"pos":5032,"end":5039,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"

      const MyResourceType = createCustomType('my-type', payload<{ value: number }>());

      \\n"},{"tagName":{"pos":5196,"end":5203,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Implementation of createCustomType overloads

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createResourceId","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new resource identifier

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":4258,"end":4260,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4252,"end":4257,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw identifier

      \\n"},{"tagName":{"pos":4280,"end":4287,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A resource id

      \\n"}]},{"name":"getEntry","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Internal helper function for getting an entry from the state

      \\n","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""},{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"type","type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"T | undefined","jsdoctags":[{"name":{"pos":5670,"end":5675,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":5664,"end":5669,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state snapshot

      \\n"},{"name":{"pos":5709,"end":5711,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":5703,"end":5708,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":5734,"end":5738,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":5728,"end":5733,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional entry type

      \\n"},{"tagName":{"pos":5763,"end":5770,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The entry object it exists and has the correct type, otherwise undefined

      \\n"}]},{"name":"isBuiltinType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type string has builtin support

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":3572,"end":3576,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3566,"end":3571,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3597,"end":3604,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is one of the builtin types, otherwise false

      \\n"}]},{"name":"isCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type is a custom resource type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":3881,"end":3885,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3875,"end":3880,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3906,"end":3913,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is a custom type, otherwise false

      \\n"}]},{"name":"payload","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Helper function used to specify the payload format when creating custom types

      \\n","args":[],"returnType":"ResourceEntryPayload","jsdoctags":[{"tagName":{"pos":4477,"end":4484,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A custom payload type

      \\n"}]}],"state/src/link-registry/link-registry.model.ts":[{"name":"createLinkId","file":"state/src/link-registry/link-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      function to createa unique link ids

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"LinkId","jsdoctags":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"injectors/src/lib/on-destroy/on-destroy.ts":[{"name":"findDestructorScope","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds the nearest destructor scope object in the current injection context

      \\n","args":[],"returnType":"DestructorScope","jsdoctags":[{"tagName":{"pos":1267,"end":1274,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The scope on which cleanup can be attached

      \\n"}]},{"name":"findStableKeyObject","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds a stable object in the current injection context to be\\nused as a key in the destructor cache

      \\n","args":[],"returnType":"object","jsdoctags":[{"tagName":{"pos":912,"end":919,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An object

      \\n"}]},{"name":"firstDefinedValue","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Get the first defined value returned by a generator

      \\n","args":[{"name":"genFn","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":441,"end":446,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"genFn"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":435,"end":440,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Generator function taking no arguments

      \\n"},{"tagName":{"pos":490,"end":497,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The first non-null value

      \\n"}]},{"name":"injectDestroy$","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Inject an observable that emits and completes at the same time as the component, directive, pipe, or service\\nit is injected into. It can be used to control the lifetime of other observables using\\nthe takeUntil pipe, and to build other complex injection functions.

      \\n

      Caveats:

      \\n
        \\n
      • There are NO guarantees about whether the returned observable will emit and complete\\nbefore or after the regular ngOnDestroy lifecycle hook
      • \\n
      • For root and module level services the observable may never complete unless\\nthe containing module is explicitly destroyed, so don't rely on it for important operations
      • \\n
      • Components, directives, pipe, and services that manipulate the ViewContainerRef MUST\\ntake care to maintain the view controlling the lifecycle of the observable. Failure\\nto do so may result in early emit and completion of the returned observable
      • \\n
      \\n

      Based on comment on https://github.com/angular/angular/issues/10185\\nMostly https://github.com/angular/angular/issues/10185#issuecomment-1165545544 and\\nhttps://github.com/angular/angular/issues/10185#issuecomment-1199063426

      \\n","args":[],"returnType":"Observable","jsdoctags":[{"tagName":{"pos":2694,"end":2701,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that emits and completes when the component/directive/etc. is destroyed

      \\n"}]}],"injectors/src/lib/on-destroy/destructor-subject.ts":[{"name":"isDestructorScopeLike","file":"injectors/src/lib/on-destroy/destructor-subject.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether an object is destructor scope like

      \\n","args":[{"name":"obj","deprecated":false,"deprecationMessage":""}],"returnType":"DestructorScope","jsdoctags":[{"name":{"pos":328,"end":331,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"obj"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":322,"end":327,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Value to test

      \\n"},{"tagName":{"pos":350,"end":357,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true if the object seems to be a destructor scope, otherwise false

      \\n"}]}],"injectors/src/lib/select/select.ts":[{"name":"markForCheck","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Marks a view for change detection whenever a new value is emitted

      \\n","args":[{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"MonoTypeOperatorFunction","jsdoctags":[{"name":{"pos":689,"end":696,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":683,"end":688,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options to explicitly disable marking

      \\n"},{"tagName":{"pos":739,"end":746,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A rxjs operator

      \\n"}]},{"name":"select$","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an observable emitting parts of the state. The observable's lifetime\\nis automatically tied to the injection context where this is called.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":1313,"end":1321,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":1307,"end":1312,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State selection function or token

      \\n"},{"name":{"pos":1366,"end":1373,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1360,"end":1365,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Additional select options

      \\n"},{"tagName":{"pos":1404,"end":1411,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable of the selected state

      \\n"}]}],"injectors/src/lib/select/select-snapshot.ts":[{"name":"selectQuerySnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that can be called with the same arguments as the query selector\\nand returns the latest value each time. Automatically marks components, directives, or pipes\\nfor change detection whenever a new value is available. Note that since typescript has yet to\\nimplement support for higher order generics there is sometimes a need to specialize the\\nreturned query function with the correct arguments and return type. This can be done as shown\\nin the examples.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"SelectQuery","jsdoctags":[{"name":{"pos":2433,"end":2441,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":2427,"end":2432,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store query selector

      \\n"},{"name":{"pos":2473,"end":2482,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2467,"end":2472,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional bound query arguments

      \\n"},{"tagName":{"pos":1631,"end":1638,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Basic usage\\nclass Component {\\n...\\n// Return type: () => string\\nreadonly markdown = querySelectSnapshot(ResourceRegistrySelectors.markdown, id);\\n// Return type: (id: ResourceId) => string\\nreadonly markdownById = querySelectSnapshot(ResourceRegistrySelectors.markdown);\\n...\\n}"},{"tagName":{"pos":1975,"end":1982,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Specialize query arguments and/or return type\\nclass Component {\\n...\\n// Return type: () => number[]\\nreadonly points = querySelectSnapshot(ResourceRegistrySelectors.field, id, type, \'points\', []);\\n// Return type: (field: string, defaultValue: string) => string\\nreadonly getStringField = querySelectSnapshot(ResourceRegistrySelectors.field, id, type);\\n}"},{"tagName":{"pos":2518,"end":2525,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function taking the same arguments as the query selector (excluding bound arguments)

      \\n"}]},{"name":"selectSnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that returns the latest snapshot value each time it is called\\nAutomatically marks components, directives, or pipes for change detection whenever\\na new value is available

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":819,"end":827,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":813,"end":818,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store data selector

      \\n"},{"tagName":{"pos":852,"end":859,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function

      \\n"}]}]},"groupedEnumerations":{"state/src/link-registry/link-registry.model.ts":[{"name":"LinkType","childs":[{"name":"Internal","deprecated":false,"deprecationMessage":"","value":"internal"},{"name":"External","deprecated":false,"deprecationMessage":"","value":"external"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Types for Link

      \\n","file":"state/src/link-registry/link-registry.model.ts"}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"RawBuiltinResourceType","childs":[{"name":"Markdown","deprecated":false,"deprecationMessage":"","value":"markdown"},{"name":"Text","deprecated":false,"deprecationMessage":"","value":"text"},{"name":"Url","deprecated":false,"deprecationMessage":"","value":"url"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Raw builtin type strings

      \\n","file":"state/src/resource-registry/resource-registry.model.ts"}],"state/src/storage/storage.model.ts":[{"name":"StorageId","childs":[{"name":"Local","deprecated":false,"deprecationMessage":"","value":"local"},{"name":"Session","deprecated":false,"deprecationMessage":"","value":"session"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      StorageId - enum with values as Local, Session - identifier for storage types

      \\n","file":"state/src/storage/storage.model.ts"}]},"groupedTypeAliases":{"state/src/resource-registry/resource-registry.selectors.ts":[{"name":"AnyEntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.anyEntry}

      \\n","kind":178},{"name":"DataQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for resource data

      \\n","kind":178},{"name":"EntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.entry}

      \\n","kind":178},{"name":"FieldQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.field}

      \\n","kind":178}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"BuiltinTypes","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Maps raw builtin type strings to ResourceType

      \\n","kind":194},{"name":"CustomResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Typed custom resource entry

      \\n","kind":187},{"name":"CustomResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":" `custom:${T}`","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Custom entry types

      \\n","kind":197},{"name":"ExtractBuiltinEntryType","ctype":"miscellaneous","subtype":"typealias","rawtype":"UnionMember | type | T>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Extracts the builtin entry with type T

      \\n","kind":177},{"name":"ResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Any resource entry

      \\n","kind":177},{"name":"ResourceEntryPayload","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Payload type used when creating custom types

      \\n","kind":187},{"name":"ResourceId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource identifier

      \\n","kind":177},{"name":"ResourceRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Context type for action handlers

      \\n","kind":177},{"name":"ResourceRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State data model

      \\n","kind":177},{"name":"ResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource type string with entry typings

      \\n","kind":187}],"state/src/link-registry/link-registry.model.ts":[{"name":"ExternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for external link entry

      \\n","kind":177},{"name":"InternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for internal link entry

      \\n","kind":177},{"name":"LinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      entry for link registry

      \\n","kind":177},{"name":"LinkId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type for unique identifier for link

      \\n","kind":177},{"name":"LinkRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for State Context of LinkRegistry

      \\n","kind":177},{"name":"LinkRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for LinkRegistry State

      \\n","kind":177}],"state/src/link-registry/link-registry.state.ts":[{"name":"LinkRegistryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/link-registry/link-registry.state.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for link entry optionally with type specified

      \\n","kind":178}],"injectors/src/lib/select/select-snapshot.ts":[{"name":"RestArgs","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Get remaining arguments after applying bound arguments

      \\n","kind":188},{"name":"SelectQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Function type returned by {@link selectQuerySnapshot}

      \\n","kind":178}],"injectors/src/lib/select/select.ts":[{"name":"StateSelector","ctype":"miscellaneous","subtype":"typealias","rawtype":" | StateToken","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","description":"

      Selector type for select style functions

      \\n","kind":186}],"state/src/storage/storage.model.ts":[{"name":"StorageContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Helper alias for action handler's ctx argument

      \\n","kind":177},{"name":"StorageModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"Record","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type alias for the array of Storage objects

      \\n","kind":177}]}}}')},"./dist/compodoc/components-atoms/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"GradientPoint","id":"interface-GradientPoint-deca5c57881562b1c16d34b446006d52194dfce42a4093fe366ac3fcbeaf7291e08172915aac95fc2938e856084da0fe61a29b9897eb6da4ca9edd58116c7198","file":"src/lib/gradient-legend/gradient-legend.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** An interface of gradient colors along with their percentages for the gradient bar. */\\nexport interface GradientPoint {\\n /** Gradient color at a specific percentage */\\n color: string;\\n /** Percentage point along the gradient bar */\\n percentage: number;\\n}\\n\\n/** Gradient legend for biomarkers */\\n@Component({\\n selector: \'hra-gradient-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./gradient-legend.component.html\',\\n styleUrls: [\'./gradient-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class GradientLegendComponent {\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Computes the css linear-gradient function for the gradient bar */\\n get gradientCss(): string {\\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(\',\');\\n return `linear-gradient(90deg, ${stops})`;\\n }\\n}\\n","properties":[{"name":"color","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Gradient color at a specific percentage

      \\n","line":7,"rawdescription":"\\nGradient color at a specific percentage"},{"name":"percentage","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Percentage point along the gradient bar

      \\n","line":9,"rawdescription":"\\nPercentage point along the gradient bar"}],"indexSignatures":[],"kind":165,"description":"

      An interface of gradient colors along with their percentages for the gradient bar.

      \\n","rawdescription":"\\nAn interface of gradient colors along with their percentages for the gradient bar.","methods":[]},{"name":"SizeLegend","id":"interface-SizeLegend-dae8784679328cc4f52418a0ae905fed758d8fca706c3b6238631087d98a163ec72f26f1b06661d00473eefd6eafd27ab263e34a661981ea71d5a1885746f8e9","file":"src/lib/size-legend/size-legend.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Defining the input data types for the radius and label to be displayed. */\\nexport interface SizeLegend {\\n /** Label under circle */\\n label: string;\\n /** Radius for cirlce */\\n radius: number;\\n}\\n\\n/** Size legend component for the biomarkers table. */\\n@Component({\\n selector: \'hra-size-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./size-legend.component.html\',\\n styleUrls: [\'./size-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SizeLegendComponent {\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Label under circle

      \\n","line":7,"rawdescription":"\\nLabel under circle"},{"name":"radius","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Radius for cirlce

      \\n","line":9,"rawdescription":"\\nRadius for cirlce"}],"indexSignatures":[],"kind":165,"description":"

      Defining the input data types for the radius and label to be displayed.

      \\n","rawdescription":"\\nDefining the input data types for the radius and label to be displayed.","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"EmailInputComponent","id":"component-EmailInputComponent-1f7d0d808093e56fed36089f88f516d958678e7e917eb4299c6deb26edf7810680d231b1d0c349c0b380f39d8927a3738e20cd80686dd35cc343ef10c58dc481","file":"src/lib/email-input/email-input.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-email-input","styleUrls":["./email-input.component.scss"],"styles":[],"templateUrl":["./email-input.component.html"],"viewProviders":[],"inputsClass":[{"name":"placeholder","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA placeholder for the email input field. This will be disappeared when the email is typed.","description":"

      A placeholder for the email input field. This will be disappeared when the email is typed.

      \\n","line":22,"type":"string","decorators":[]}],"outputsClass":[{"name":"emailChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the new email when the input changes or undefined if the email is invalid","description":"

      Emits the new email when the input changes or undefined if the email is invalid

      \\n","line":25,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required, Validators.email],\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A control to validate the email.

      \\n","line":31,"rawdescription":"\\nA control to validate the email.","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable emitting when the component is destroyed

      \\n","line":28,"rawdescription":"\\nObservable emitting when the component is destroyed","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Email input components for contact modal.

      \\n","rawdescription":"\\n\\nEmail input components for contact modal.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { FormControl, ReactiveFormsModule, Validators } from \'@angular/forms\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { map, takeUntil } from \'rxjs\';\\n\\n/**\\n * Email input components for contact modal.\\n */\\n@Component({\\n selector: \'hra-email-input\',\\n standalone: true,\\n imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule],\\n templateUrl: \'./email-input.component.html\',\\n styleUrls: [\'./email-input.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class EmailInputComponent {\\n /** A placeholder for the email input field. This will be disappeared when the email is typed. */\\n @Input() placeholder = \'\';\\n\\n /** Emits the new email when the input changes or undefined if the email is invalid */\\n @Output() readonly emailChange = new EventEmitter();\\n\\n /** Observable emitting when the component is destroyed */\\n readonly destroy$ = injectDestroy$();\\n\\n /** A control to validate the email. */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required, Validators.email],\\n });\\n\\n /** Connects the input control to component outputs */\\n constructor() {\\n const { control, destroy$ } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? value : undefined))\\n )\\n .subscribe((value) => this.emailChange.emit(value as string | undefined));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .email-text-field {\\n width: 100%;\\n background: #ffffff;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./email-input.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Connects the input control to component outputs

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":34,"rawdescription":"\\nConnects the input control to component outputs"},"templateData":"\\n Email \\n \\n\\n \\n Please enter a valid email address\\n \\n Email is required! \\n\\n"},{"name":"EmptyBiomarkerComponent","id":"component-EmptyBiomarkerComponent-37024d95c11a561444e101c6aa7bc4ff857513ca38fac3e421501e21ab27f43cf3f33da15755e5ac3a40b963a23bdf6efe3e86834cd7971258fea52168aa9ad5","file":"src/lib/empty-biomarker/empty-biomarker.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-empty-biomarker","styleUrls":["./empty-biomarker.component.scss"],"styles":[],"templateUrl":["./empty-biomarker.component.html"],"viewProviders":[],"inputsClass":[{"name":"collaborateText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput buttonon text of empty biomarker component.\\n","description":"

      Input buttonon text of empty biomarker component.

      \\n","line":23,"type":"string","decorators":[]},{"name":"message","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput message markdown of empty biomarker component.\\n","description":"

      Input message markdown of empty biomarker component.

      \\n","line":28,"type":"string","decorators":[]}],"outputsClass":[{"name":"collaborateClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAn event emitter that emits the user button click event\\n","description":"

      An event emitter that emits the user button click event

      \\n","line":33,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for any empty biomaker cell\\n to inform about the empty data and has\\n button to navigate to HRA Team.

      \\n","rawdescription":"\\n\\n Component for any empty biomaker cell\\n to inform about the empty data and has\\n button to navigate to HRA Team.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n * Component for any empty biomaker cell\\n * to inform about the empty data and has\\n * button to navigate to HRA Team.\\n */\\n@Component({\\n selector: \'hra-empty-biomarker\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MarkdownModule],\\n templateUrl: \'./empty-biomarker.component.html\',\\n styleUrls: [\'./empty-biomarker.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class EmptyBiomarkerComponent {\\n /**\\n * Input buttonon text of empty biomarker component.\\n */\\n @Input() collaborateText = \'\';\\n\\n /**\\n * Input message markdown of empty biomarker component.\\n */\\n @Input() message = \'\';\\n\\n /**\\n * An event emitter that emits the user button click event\\n */\\n @Output() readonly collaborateClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n padding: 2.625rem 2rem 2.625rem 2rem;\\n\\n .message {\\n color: #243142;\\n }\\n\\n .collaborate-button {\\n margin-top: 2rem;\\n font-weight: 700;\\n color: #fff;\\n width: 100%;\\n max-width: 17.25rem;\\n height: 3rem;\\n }\\n}\\n","styleUrl":"./empty-biomarker.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"GradientLegendComponent","id":"component-GradientLegendComponent-deca5c57881562b1c16d34b446006d52194dfce42a4093fe366ac3fcbeaf7291e08172915aac95fc2938e856084da0fe61a29b9897eb6da4ca9edd58116c7198","file":"src/lib/gradient-legend/gradient-legend.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-gradient-legend","styleUrls":["./gradient-legend.component.scss"],"styles":[],"templateUrl":["./gradient-legend.component.html"],"viewProviders":[],"inputsClass":[{"name":"gradient","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nGradient colors along with their stop points","description":"

      Gradient colors along with their stop points

      \\n","line":23,"type":"GradientPoint[]","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Gradient legend for biomarkers

      \\n","rawdescription":"\\nGradient legend for biomarkers","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** An interface of gradient colors along with their percentages for the gradient bar. */\\nexport interface GradientPoint {\\n /** Gradient color at a specific percentage */\\n color: string;\\n /** Percentage point along the gradient bar */\\n percentage: number;\\n}\\n\\n/** Gradient legend for biomarkers */\\n@Component({\\n selector: \'hra-gradient-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./gradient-legend.component.html\',\\n styleUrls: [\'./gradient-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class GradientLegendComponent {\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Computes the css linear-gradient function for the gradient bar */\\n get gradientCss(): string {\\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(\',\');\\n return `linear-gradient(90deg, ${stops})`;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .gradient-bar {\\n height: 1.5rem;\\n width: 100%;\\n }\\n\\n .legend {\\n display: flex;\\n\\n .filler {\\n flex-grow: 1;\\n }\\n }\\n}\\n","styleUrl":"./gradient-legend.component.scss"}],"stylesData":"","accessors":{"gradientCss":{"name":"gradientCss","getSignature":{"name":"gradientCss","type":"string","returnType":"string","line":26,"rawdescription":"\\nComputes the css linear-gradient function for the gradient bar","description":"

      Computes the css linear-gradient function for the gradient bar

      \\n"}}},"templateData":"
      \\n
      \\n
      0.0
      \\n
      \\n
      1.0
      \\n
      \\n"},{"name":"LabelBoxComponent","id":"component-LabelBoxComponent-ef78615c37f1899e7f105d2e14f13a219f8472171bf04099642de0ee701b87eafba4f218cf04d7ba1c2e552e28262d1b32ae397ca7eab7043ad462a5f76a960d","file":"src/lib/label-box/label-box.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-label-box","styleUrls":["./label-box.component.scss"],"styles":[],"templateUrl":["./label-box.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Label box component for reuse accross the page. The content with "end" selector will be added to the end of the label box

      \\n","rawdescription":"\\nLabel box component for reuse accross the page. The content with \\"end\\" selector will be added to the end of the label box","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Label box component for reuse accross the page. The content with \\"end\\" selector will be added to the end of the label box */\\n@Component({\\n selector: \'hra-label-box\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./label-box.component.html\',\\n styleUrls: [\'./label-box.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LabelBoxComponent {}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n align-items: center;\\n padding: 0.75rem 2rem;\\n background: #f8f9fa;\\n\\n .filler {\\n flex-grow: 1;\\n }\\n}\\n","styleUrl":"./label-box.component.scss"}],"stylesData":"","templateData":"\\n\\n
      \\n\\n\\n"},{"name":"RequiredInputComponent","id":"component-RequiredInputComponent-6a768e79d86219e624a199447195426647b4cde0beb840ecbc68113987b52c6d0be44d19e13b91a4c8d351b9ad503e8a328db1c7626d4ea76b7cc8338bef3247","file":"src/lib/required-input/required-input.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-required-input","styleUrls":["./required-input.component.scss"],"styles":[],"templateUrl":["./required-input.component.html"],"viewProviders":[],"inputsClass":[{"name":"label","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nThe label to display for the text field.\\n","description":"

      The label to display for the text field.

      \\n","line":25,"type":"string","decorators":[]}],"outputsClass":[{"name":"inputChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAn event emitter that emits the input value when it changes.\\n","description":"

      An event emitter that emits the input value when it changes.

      \\n","line":30,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: Validators.required,\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Form control for input to set some input validation.

      \\n","line":40,"rawdescription":"\\n\\nForm control for input to set some input validation.\\n","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Destroy observable used to control the lifetime of other observables.

      \\n","line":35,"rawdescription":"\\n\\nDestroy observable used to control the lifetime of other observables.\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A reusable text field component that can be used to input text.\\nThis input field component also had required validation check.

      \\n","rawdescription":"\\n\\nA reusable text field component that can be used to input text.\\nThis input field component also had required validation check.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\nimport { FormControl, ReactiveFormsModule, Validators } from \'@angular/forms\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { map, takeUntil } from \'rxjs\';\\n\\n/**\\n * A reusable text field component that can be used to input text.\\n * This input field component also had required validation check.\\n */\\n@Component({\\n selector: \'hra-required-input\',\\n standalone: true,\\n imports: [CommonModule, MatFormFieldModule, MatInputModule, ReactiveFormsModule],\\n templateUrl: \'./required-input.component.html\',\\n styleUrls: [\'./required-input.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class RequiredInputComponent {\\n /**\\n * The label to display for the text field.\\n */\\n @Input() label = \'\';\\n\\n /**\\n * An event emitter that emits the input value when it changes.\\n */\\n @Output() readonly inputChange = new EventEmitter();\\n\\n /**\\n * Destroy observable used to control the lifetime of other observables.\\n */\\n readonly destroy$ = injectDestroy$();\\n\\n /**\\n * Form control for input to set some input validation.\\n */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: Validators.required,\\n });\\n\\n /**\\n * Creates an instance of required input component\\n * and it connect the form control value changes to check for validation\\n * before output emmiter is triggered\\n */\\n constructor() {\\n const { control, destroy$, inputChange } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? (value as string) : undefined))\\n )\\n .subscribe(inputChange);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .form-field {\\n width: 100%;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./required-input.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Creates an instance of required input component\\nand it connect the form control value changes to check for validation\\nbefore output emmiter is triggered

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":43,"rawdescription":"\\n\\nCreates an instance of required input component\\nand it connect the form control value changes to check for validation\\nbefore output emmiter is triggered\\n"},"templateData":"\\n {{ label }} \\n \\n {{ label }} is required!\\n\\n"},{"name":"RequiredTextboxComponent","id":"component-RequiredTextboxComponent-ad002581cf0f7ae0707bd500566ee127dc19a3403138f98034117f59231d3c30eaf53896f1e1b5850df7a95498bb9dd632f29b200e38de676c48c0d61c350ad7","file":"src/lib/required-textbox/required-textbox.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-required-textbox","styleUrls":["./required-textbox.component.scss"],"styles":[],"templateUrl":["./required-textbox.component.html"],"viewProviders":[],"inputsClass":[{"name":"label","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA label for the textarea field","description":"

      A label for the textarea field

      \\n","line":25,"type":"string","decorators":[]},{"name":"placeholder","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA placeholder for the message textarea field","description":"

      A placeholder for the message textarea field

      \\n","line":22,"type":"string","decorators":[]}],"outputsClass":[{"name":"messageChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the new message when the input changes or undefined if the message is invalid","description":"

      Emits the new message when the input changes or undefined if the message is invalid

      \\n","line":28,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required],\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A control to validate if the message field is empty

      \\n","line":34,"rawdescription":"\\nA control to validate if the message field is empty","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable emitting when the component is destroyed

      \\n","line":31,"rawdescription":"\\nObservable emitting when the component is destroyed","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The required textbox component displays a message box for users to add a message

      \\n","rawdescription":"\\n\\nThe required textbox component displays a message box for users to add a message\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { FormControl, Validators, ReactiveFormsModule } from \'@angular/forms\';\\nimport { map, takeUntil } from \'rxjs\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\n\\n/**\\n * The required textbox component displays a message box for users to add a message\\n */\\n@Component({\\n selector: \'hra-required-textbox\',\\n standalone: true,\\n imports: [CommonModule, MatInputModule, MatFormFieldModule, ReactiveFormsModule],\\n templateUrl: \'./required-textbox.component.html\',\\n styleUrls: [\'./required-textbox.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class RequiredTextboxComponent {\\n /** A placeholder for the message textarea field */\\n @Input() placeholder = \'\';\\n\\n /** A label for the textarea field */\\n @Input() label = \'\';\\n\\n /** Emits the new message when the input changes or undefined if the message is invalid */\\n @Output() readonly messageChange = new EventEmitter();\\n\\n /** Observable emitting when the component is destroyed */\\n readonly destroy$ = injectDestroy$();\\n\\n /** A control to validate if the message field is empty */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required],\\n });\\n\\n /** Connects the input control to component outputs */\\n constructor() {\\n const { control, destroy$ } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? value : undefined))\\n )\\n .subscribe((value) => this.messageChange.emit(value as string | undefined));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .message-field {\\n width: 100%;\\n background: #ffffff;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./required-textbox.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Connects the input control to component outputs

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":37,"rawdescription":"\\nConnects the input control to component outputs"},"templateData":"\\n {{ label }} \\n \\n {{ label }} is required! \\n\\n"},{"name":"SizeLegendComponent","id":"component-SizeLegendComponent-dae8784679328cc4f52418a0ae905fed758d8fca706c3b6238631087d98a163ec72f26f1b06661d00473eefd6eafd27ab263e34a661981ea71d5a1885746f8e9","file":"src/lib/size-legend/size-legend.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-size-legend","styleUrls":["./size-legend.component.scss"],"styles":[],"templateUrl":["./size-legend.component.html"],"viewProviders":[],"inputsClass":[{"name":"sizes","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":23,"type":"SizeLegend[]","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Size legend component for the biomarkers table.

      \\n","rawdescription":"\\nSize legend component for the biomarkers table.","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Defining the input data types for the radius and label to be displayed. */\\nexport interface SizeLegend {\\n /** Label under circle */\\n label: string;\\n /** Radius for cirlce */\\n radius: number;\\n}\\n\\n/** Size legend component for the biomarkers table. */\\n@Component({\\n selector: \'hra-size-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./size-legend.component.html\',\\n styleUrls: [\'./size-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SizeLegendComponent {\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n flex-direction: row;\\n column-gap: 2rem;\\n\\n .item {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n line-height: 0.5rem;\\n\\n .circle {\\n height: var(--size);\\n width: var(--size);\\n border-radius: 50%;\\n border: 0.125rem solid #75838f;\\n }\\n\\n .label {\\n margin-top: 0.5rem;\\n }\\n\\n .filler {\\n flex-grow: 1;\\n }\\n }\\n}\\n","styleUrl":"./size-legend.component.scss"}],"stylesData":"","templateData":"
      \\n
      \\n
      \\n
      \\n
      {{ text.label }}
      \\n
      \\n"},{"name":"TooltipComponent","id":"component-TooltipComponent-35a19c31cdbb6f67cbbe51d580825640d777ebbf9ef5a43ffc434e7c6af568cda589a5102fcf51027aafecb8ac12123b9ce1a5d04d81c51fa5198963c1c082f1","file":"src/lib/tooltip/tooltip.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-ui-tooltip","styleUrls":["./tooltip.component.scss"],"styles":[],"templateUrl":["./tooltip.component.html"],"viewProviders":[],"inputsClass":[{"name":"text","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nText to display\\n","description":"

      Text to display

      \\n","line":19,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Tooltips for illustrations

      \\n","rawdescription":"\\n\\nTooltips for illustrations\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n * Tooltips for illustrations\\n */\\n@Component({\\n selector: \'hra-ui-tooltip\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./tooltip.component.html\',\\n styleUrls: [\'./tooltip.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TooltipComponent {\\n /**\\n * Text to display\\n */\\n @Input() text = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n .tooltip {\\n display: flex;\\n flex-direction: column;\\n background: white;\\n box-shadow: 1px 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n border-radius: 0.5rem;\\n padding: 1rem;\\n }\\n}\\n","styleUrl":"./tooltip.component.scss"}],"stylesData":"","templateData":"
      {{ text }}
      \\n"}],"modules":[],"miscellaneous":[]}')},"./dist/compodoc/components-behavioral/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerDetailsComponent","id":"component-BiomarkerDetailsComponent-8503d16c5553b5f0a72af9f73fda65990c63701d395abaebc447ce8e23bfa0f8e1e9b5cfc7d39d56b098786ae61ba690c54868785f87565fe0461babf1c87d1d","file":"src/lib/biomarker-details/biomarker-details.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-biomarker-details","styleUrls":["./biomarker-details.component.scss"],"styles":[],"templateUrl":["./biomarker-details.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"collaborateText","defaultValue":"\'Collaborate with the HRA Team\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      button text of empty biomarker component.

      \\n","line":101,"rawdescription":"\\n\\nbutton text of empty biomarker component.\\n","modifierKind":[144]},{"name":"gradientHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Gradient Legend

      \\n","line":56,"rawdescription":"\\nInfo to be shown on the tooltip for Gradient Legend","modifierKind":[144]},{"name":"gradients","defaultValue":"selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Gradient colors along with their stop points

      \\n","line":65,"rawdescription":"\\nGradient colors along with their stop points","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":78,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"isTableFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Indicates if the table is fully shown, defaults to false

      \\n","line":62,"rawdescription":"\\nIndicates if the table is fully shown, defaults to false"},{"name":"message","defaultValue":"`We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      message markdown of empty biomarker component.

      \\n","line":106,"rawdescription":"\\n\\nmessage markdown of empty biomarker component.\\n","modifierKind":[144]},{"name":"sizeHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Size Legend

      \\n","line":59,"rawdescription":"\\nInfo to be shown on the tooltip for Size Legend","modifierKind":[144]},{"name":"sizes","defaultValue":"selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":70,"rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","modifierKind":[144]},{"name":"source","defaultValue":"selectSnapshot(SourceRefsSelectors.sourceReferences)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      List of sources with titles and links displayed to the user

      \\n","line":73,"rawdescription":"\\nList of sources with titles and links displayed to the user","modifierKind":[144]},{"name":"tabs","defaultValue":"selectSnapshot(CellSummarySelectors.aggregates)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Table tabs

      \\n","line":53,"rawdescription":"\\nTable tabs","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":83,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]}],"methodsClass":[{"name":"toggleFullscreen","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":115,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function that toggles isTableFullScreen and\\ncalls the setScreenMode function.\\n","description":"

      A function that toggles isTableFullScreen and\\ncalls the setScreenMode function.

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The component displays the biomarker details which includes the details, gradient legends, size legends and source lists

      \\n","rawdescription":"\\nThe component displays the biomarker details which includes the details, gradient legends, size legends and source lists","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTabsModule } from \'@angular/material/tabs\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { dispatch, selectQuerySnapshot, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { ActiveFtuSelectors, ScreenModeAction, TissueLibrarySelectors } from \'@hra-ui/state\';\\nimport {\\n EmptyBiomarkerComponent,\\n GradientLegendComponent,\\n GradientPoint,\\n LabelBoxComponent,\\n SizeLegend,\\n SizeLegendComponent,\\n} from \'@hra-ui/components/atoms\';\\nimport { BiomarkerTableDataCardComponent, SourceListComponent } from \'@hra-ui/components/molecules\';\\nimport { BiomarkerTableComponent, TissueInfo } from \'@hra-ui/components/organisms\';\\nimport { CellSummarySelectors, ResourceIds as Ids, ResourceTypes as RTypes, SourceRefsSelectors } from \'@hra-ui/state\';\\n\\n/**\\n * PlaceHolder for Empty Tissue Info\\n */\\nconst EMPTY_TISSUE_INFO: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n};\\n\\n/** The component displays the biomarker details which includes the details, gradient legends, size legends and source lists*/\\n@Component({\\n selector: \'ftu-biomarker-details\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatIconModule,\\n MatTabsModule,\\n\\n BiomarkerTableComponent,\\n BiomarkerTableDataCardComponent,\\n GradientLegendComponent,\\n HoverDirective,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n SourceListComponent,\\n EmptyBiomarkerComponent,\\n ],\\n templateUrl: \'./biomarker-details.component.html\',\\n styleUrls: [\'./biomarker-details.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerDetailsComponent {\\n /** Table tabs */\\n readonly tabs = selectSnapshot(CellSummarySelectors.aggregates);\\n\\n /** Info to be shown on the tooltip for Gradient Legend */\\n readonly gradientHoverInfo = selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo);\\n\\n /** Info to be shown on the tooltip for Size Legend */\\n readonly sizeHoverInfo = selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo);\\n\\n /** Indicates if the table is fully shown, defaults to false*/\\n isTableFullScreen = false;\\n\\n /** Gradient colors along with their stop points */\\n readonly gradients = selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >;\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n readonly sizes = selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, []);\\n\\n /** List of sources with titles and links displayed to the user */\\n readonly source = selectSnapshot(SourceRefsSelectors.sourceReferences);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueInfo(): TissueInfo {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n if (iri === undefined) {\\n return EMPTY_TISSUE_INFO;\\n }\\n const { id, label } = tissues[iri];\\n return { id, label };\\n }\\n\\n /**\\n * button text of empty biomarker component.\\n */\\n readonly collaborateText = \'Collaborate with the HRA Team\';\\n\\n /**\\n * message markdown of empty biomarker component.\\n */\\n readonly message = `We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`;\\n\\n /** A dispatcher function to set the screen mode */\\n private readonly setScreenMode = dispatch(ScreenModeAction.Set);\\n\\n /** A function that toggles isTableFullScreen and\\n * calls the setScreenMode function.\\n */\\n toggleFullscreen(): void {\\n this.isTableFullScreen = !this.isTableFullScreen;\\n this.setScreenMode(this.isTableFullScreen);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 21.5rem 21.5rem auto;\\n grid-template-rows: 3.5rem 19.5rem 3rem 5rem auto;\\n grid-template-areas:\\n \'table-header table-header table-header\'\\n \'table table table\'\\n \'gradient-legend-header size-legend-header .\'\\n \'gradient-legend size-legend .\'\\n \'source-list source-list source-list\';\\n\\n .table-header {\\n grid-area: table-header;\\n border-bottom: 0.063rem solid #d3d3d3;\\n width: 43rem;\\n height: 3.5rem;\\n }\\n\\n .table {\\n grid-area: table;\\n max-width: 100%;\\n overflow: auto;\\n\\n ::ng-deep .table-tab-header {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n border-left: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n\\n &:last-child {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n &.mdc-tab-indicator--active {\\n background-color: #f8f9fa;\\n }\\n }\\n }\\n\\n .legend-header {\\n color: vars.$dark-primary-text;\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend-header;\\n }\\n\\n &.size {\\n grid-area: size-legend-header;\\n }\\n\\n .icon {\\n margin-left: 0.6rem;\\n }\\n }\\n\\n .legend {\\n padding: 1rem 2rem;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend;\\n\\n .content {\\n width: 10rem;\\n }\\n }\\n\\n &.size {\\n grid-area: size-legend;\\n }\\n }\\n\\n .source-list {\\n grid-area: source-list;\\n\\n .content {\\n width: min-content;\\n }\\n }\\n}\\n\\n::ng-deep .biomarker-details.info-tooltip {\\n display: flex;\\n padding: 1rem;\\n border: 1px solid #a8a3a3;\\n border-radius: 0.5rem;\\n box-shadow: 1px 2px 16px 2px #00000029;\\n background-color: vars.$primary-contrast-rgb;\\n max-width: 21rem;\\n font-size: small;\\n}\\n","styleUrl":"./biomarker-details.component.scss"}],"stylesData":"","accessors":{"tissueInfo":{"name":"tissueInfo","getSignature":{"name":"tissueInfo","type":"","returnType":"TissueInfo","line":88,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"\\n Cell Types by Gene Biomarkers\\n \\n {{ isTableFullScreen ? \'close_fullscreen\' : \'open_in_full\' }}\\n \\n\\n\\n\\n \\n \\n \\n \\n\\n\\n\\n Biomarker Expression Mean in FTU\\n info_outlined\\n\\n
      \\n \\n
      \\n\\n\\n Percentage of Cells in FTU\\n info_outlined\\n\\n
      \\n \\n
      \\n\\n
      \\n \\n
      \\n\\n\\n
      \\n {{ tooltip }}\\n
      \\n
      \\n"},{"name":"BiomarkerDetailsWcComponent","id":"component-BiomarkerDetailsWcComponent-23b281ecdbeccbab1f36b78fe9188e1016a565a0a462d735ad19f143e753278b009fd29b85a043d3e29f7d0f0e9b0529f3a5b724b0d8f08ca17a3d467c0be29f","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-wc-biomarker-details","styleUrls":["./biomarker-details-wc.component.scss"],"styles":[],"templateUrl":["./biomarker-details-wc.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"collaborateText","defaultValue":"\'Collaborate with the HRA Team\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      button text of empty biomarker component.

      \\n","line":143,"rawdescription":"\\n\\nbutton text of empty biomarker component.\\n","modifierKind":[144]},{"name":"currentUrl","defaultValue":"selectSnapshot(IllustratorSelectors.url)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current illustration url

      \\n","line":69,"rawdescription":"\\n\\nCurrent illustration url\\n","modifierKind":[144]},{"name":"gradientHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Gradient Legend

      \\n","line":109,"rawdescription":"\\nInfo to be shown on the tooltip for Gradient Legend","modifierKind":[144]},{"name":"gradients","defaultValue":"selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Gradient colors along with their stop points

      \\n","line":118,"rawdescription":"\\nGradient colors along with their stop points","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":79,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"isTableFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Indicates if the table is fully shown, defaults to false

      \\n","line":115,"rawdescription":"\\nIndicates if the table is fully shown, defaults to false"},{"name":"mapping","defaultValue":"selectSnapshot(IllustratorSelectors.mapping)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current mapping file

      \\n","line":74,"rawdescription":"\\n\\nCurrent mapping file\\n","modifierKind":[144]},{"name":"message","defaultValue":"`We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      message markdown of empty biomarker component.

      \\n","line":148,"rawdescription":"\\n\\nmessage markdown of empty biomarker component.\\n","modifierKind":[144]},{"name":"sizeHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Size Legend

      \\n","line":112,"rawdescription":"\\nInfo to be shown on the tooltip for Size Legend","modifierKind":[144]},{"name":"sizes","defaultValue":"selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":123,"rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","modifierKind":[144]},{"name":"source","defaultValue":"selectSnapshot(SourceRefsSelectors.sourceReferences)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      List of sources with titles and links displayed to the user

      \\n","line":126,"rawdescription":"\\nList of sources with titles and links displayed to the user","modifierKind":[144]},{"name":"tabs","defaultValue":"selectSnapshot(CellSummarySelectors.aggregates)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Table tabs

      \\n","line":106,"rawdescription":"\\nTable tabs","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":84,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]},{"name":"updateNodeOnClicked","defaultValue":"dispatch(IllustratorActions.SetClicked)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node click

      \\n","line":103,"rawdescription":"\\n\\nUpdates the active node on node click\\n","modifierKind":[144]},{"name":"updateNodeOnHover","defaultValue":"dispatch(IllustratorActions.SetHover)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node hover

      \\n","line":98,"rawdescription":"\\n\\nUpdates the active node on node hover\\n","modifierKind":[144]}],"methodsClass":[{"name":"toggleFullscreen","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":157,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function that toggles isTableFullScreen and\\ncalls the setScreenMode function.\\n","description":"

      A function that toggles isTableFullScreen and\\ncalls the setScreenMode function.

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Biomarker Table Details Web component

      \\n","rawdescription":"\\nComponent for Biomarker Table Details Web component","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTabsModule } from \'@angular/material/tabs\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { selectSnapshot, selectQuerySnapshot, dispatch } from \'@hra-ui/cdk/injectors\';\\nimport {\\n GradientLegendComponent,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n EmptyBiomarkerComponent,\\n GradientPoint,\\n SizeLegend,\\n} from \'@hra-ui/components/atoms\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n InteractiveSvgComponent,\\n SourceListComponent,\\n} from \'@hra-ui/components/molecules\';\\nimport { TissueInfo, BiomarkerTableComponent } from \'@hra-ui/components/organisms\';\\nimport {\\n ActiveFtuSelectors,\\n TissueLibrarySelectors,\\n ScreenModeAction,\\n IllustratorActions,\\n IllustratorSelectors,\\n CellSummarySelectors,\\n ResourceIds as Ids,\\n ResourceTypes as RTypes,\\n SourceRefsSelectors,\\n} from \'@hra-ui/state\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * PlaceHolder for Empty Tissue Info\\n */\\nconst EMPTY_TISSUE_INFO: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n};\\n\\n/** Component for Biomarker Table Details Web component */\\n@Component({\\n selector: \'ftu-wc-biomarker-details\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatIconModule,\\n MatTabsModule,\\n\\n BiomarkerTableComponent,\\n BiomarkerTableDataCardComponent,\\n GradientLegendComponent,\\n HoverDirective,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n SourceListComponent,\\n EmptyBiomarkerComponent,\\n InteractiveSvgComponent,\\n ],\\n templateUrl: \'./biomarker-details-wc.component.html\',\\n styleUrls: [\'./biomarker-details-wc.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerDetailsWcComponent {\\n /**\\n * Current illustration url\\n */\\n readonly currentUrl = selectSnapshot(IllustratorSelectors.url);\\n\\n /**\\n * Current mapping file\\n */\\n readonly mapping = selectSnapshot(IllustratorSelectors.mapping);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueTitle(): string {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n return iri ? tissues[iri].label : \'\';\\n }\\n\\n /**\\n * Updates the active node on node hover\\n */\\n readonly updateNodeOnHover = dispatch(IllustratorActions.SetHover);\\n\\n /**\\n * Updates the active node on node click\\n */\\n readonly updateNodeOnClicked = dispatch(IllustratorActions.SetClicked);\\n\\n /** Table tabs */\\n readonly tabs = selectSnapshot(CellSummarySelectors.aggregates);\\n\\n /** Info to be shown on the tooltip for Gradient Legend */\\n readonly gradientHoverInfo = selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo);\\n\\n /** Info to be shown on the tooltip for Size Legend */\\n readonly sizeHoverInfo = selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo);\\n\\n /** Indicates if the table is fully shown, defaults to false*/\\n isTableFullScreen = false;\\n\\n /** Gradient colors along with their stop points */\\n readonly gradients = selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >;\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n readonly sizes = selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, []);\\n\\n /** List of sources with titles and links displayed to the user */\\n readonly source = selectSnapshot(SourceRefsSelectors.sourceReferences);\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueInfo(): TissueInfo {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n if (iri === undefined) {\\n return EMPTY_TISSUE_INFO;\\n }\\n const { id, label } = tissues[iri];\\n return { id, label };\\n }\\n\\n /**\\n * button text of empty biomarker component.\\n */\\n readonly collaborateText = \'Collaborate with the HRA Team\';\\n\\n /**\\n * message markdown of empty biomarker component.\\n */\\n readonly message = `We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`;\\n\\n /** A dispatcher function to set the screen mode */\\n private readonly setScreenMode = dispatch(ScreenModeAction.Set);\\n\\n /** A function that toggles isTableFullScreen and\\n * calls the setScreenMode function.\\n */\\n toggleFullscreen(): void {\\n this.isTableFullScreen = !this.isTableFullScreen;\\n this.setScreenMode(this.isTableFullScreen);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n border: 0.063rem solid #d3d3d3;\\n\\n ::ng-deep .extraTab {\\n border: 0.063rem solid #d3d3d3;\\n border-top: 0;\\n }\\n\\n .table-header {\\n grid-area: table-header;\\n border: 0.063rem solid #d3d3d3;\\n width: 43rem;\\n height: 3.5rem;\\n }\\n\\n .table {\\n grid-area: table;\\n max-width: 100%;\\n overflow: auto;\\n border: 0.063rem solid #d3d3d3;\\n\\n ::ng-deep .table-tab-header {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n border-left: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n\\n &:last-child {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n &.mdc-tab-indicator--active {\\n background-color: #f8f9fa;\\n }\\n }\\n }\\n\\n hra-biomarker-table {\\n overflow-y: auto;\\n overflow-x: auto;\\n }\\n\\n .legends {\\n display: inline-flex;\\n width: 100%;\\n .legends-right {\\n width: 50%;\\n }\\n .legends-left {\\n width: 50%;\\n }\\n }\\n\\n .legend-header {\\n color: vars.$dark-primary-text;\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend-header;\\n }\\n\\n &.size {\\n grid-area: size-legend-header;\\n }\\n\\n .icon {\\n margin-left: 0.6rem;\\n }\\n }\\n\\n .legend {\\n padding: 1rem 2rem;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend;\\n\\n .content {\\n width: 10rem;\\n }\\n }\\n\\n &.size {\\n grid-area: size-legend;\\n }\\n }\\n\\n .source-list {\\n grid-area: source-list;\\n\\n .content {\\n width: min-content;\\n }\\n }\\n}\\n\\n::ng-deep .biomarker-details.info-tooltip {\\n display: flex;\\n padding: 1rem;\\n border: 1px solid #a8a3a3;\\n border-radius: 0.5rem;\\n box-shadow: 1px 2px 16px 2px #00000029;\\n background-color: vars.$primary-contrast-rgb;\\n max-width: 21rem;\\n font-size: small;\\n}\\n","styleUrl":"./biomarker-details-wc.component.scss"}],"stylesData":"","accessors":{"tissueTitle":{"name":"tissueTitle","getSignature":{"name":"tissueTitle","type":"string","returnType":"string","line":89,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}},"tissueInfo":{"name":"tissueInfo","getSignature":{"name":"tissueInfo","type":"","returnType":"TissueInfo","line":130,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"\\n {{ tissueTitle }}: FTU Illustration\\n \\n {{ isTableFullScreen ? \'close_fullscreen\' : \'open_in_full\' }}\\n \\n\\n\\n\\n \\n \\n \\n \\n \\n \\n\\n
      \\n
      \\n \\n Biomarker Expression Mean in FTU\\n info_outlined\\n \\n
      \\n \\n
      \\n
      \\n\\n
      \\n \\n Percentage of Cells in FTU\\n info_outlined\\n \\n
      \\n \\n
      \\n
      \\n
      \\n \\n
      \\n \\n
      \\n \\n
      \\n\\n \\n
      \\n {{ tooltip }}\\n
      \\n
      \\n
      \\n
      \\n"},{"name":"ContactBehaviorComponent","id":"component-ContactBehaviorComponent-b9d5e223798d92be933b5dbadc75b1d6c247f7b00beb75f933bb07b0a4949d22458ee53931ca654d0b255f40508dbf23ef4e516e2f80368415a86fdfe44d60b6","file":"src/lib/contact-behavior/contact-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-contact-behavior","styleUrls":["./contact-behavior.component.scss"],"styles":[],"templateUrl":["./contact-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"description","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ContactAcknowledgement)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Information modal message to the user

      \\n","line":29,"rawdescription":"\\nInformation modal message to the user","modifierKind":[144]},{"name":"postMessageTemplate","deprecated":false,"deprecationMessage":"","type":"TemplateRef","optional":false,"description":"

      A template to post a message

      \\n","line":20,"rawdescription":"\\nA template to post a message","decorators":[{"name":"ViewChild","stringifiedArguments":"\'postMessage\'"}],"modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":23,"rawdescription":"\\nInput for product logo URL to displayed on the left side.","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":26,"rawdescription":"\\nInput for product title to displayed on the left side.","modifierKind":[144]},{"name":"sendMessage","defaultValue":"dispatch(ContactActions.SendMessage)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A dispatcher function to send message entered by user

      \\n","line":32,"rawdescription":"\\nA dispatcher function to send message entered by user","modifierKind":[144]}],"methodsClass":[{"name":"close","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":51,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which closes the \'Contact us\' dialog and the acknowledgement dialog.","description":"

      A function which closes the 'Contact us' dialog and the acknowledgement dialog.

      \\n"},{"name":"submit","args":[{"name":"message","type":"ContactData","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":44,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box.","description":"

      A function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box.

      \\n","jsdoctags":[{"name":"message","type":"ContactData","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A Component for contact behavior which sends the message entered by the user and shows an acknowledgement

      \\n","rawdescription":"\\nA Component for contact behavior which sends the message entered by the user and shows an acknowledgement","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ViewChild } from \'@angular/core\';\\nimport { MatDialog, MatDialogModule, MatDialogRef } from \'@angular/material/dialog\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { ContactData, ContactModalComponent, InfoModalComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceIds as Ids, ContactActions } from \'@hra-ui/state\';\\n\\n/** A Component for contact behavior which sends the message entered by the user and shows an acknowledgement */\\n@Component({\\n selector: \'ftu-contact-behavior\',\\n standalone: true,\\n imports: [CommonModule, MatDialogModule, ContactModalComponent, InfoModalComponent],\\n templateUrl: \'./contact-behavior.component.html\',\\n styleUrls: [\'./contact-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactBehaviorComponent {\\n /** A template to post a message */\\n @ViewChild(\'postMessage\') readonly postMessageTemplate!: TemplateRef;\\n\\n /** Input for product logo URL to displayed on the left side. */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /** Input for product title to displayed on the left side. */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /** Information modal message to the user */\\n readonly description = selectQuerySnapshot(RR.anyText, Ids.ContactAcknowledgement);\\n\\n /** A dispatcher function to send message entered by user */\\n readonly sendMessage = dispatch(ContactActions.SendMessage);\\n\\n /** A dialog box which shows user an acknowledgement after clicking on submit */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A mat form field dialog which accepts the email, subject, and message of user and validates it */\\n private readonly selfRef = inject(MatDialogRef, { optional: true });\\n\\n /** Dialog box which references the acknowledgement dialog box */\\n private postRef?: MatDialogRef;\\n\\n /** A function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box. */\\n submit(message: ContactData): void {\\n this.sendMessage(message);\\n this.selfRef?.close();\\n this.postRef = this.dialog.open(this.postMessageTemplate);\\n }\\n\\n /** A function which closes the \'Contact us\' dialog and the acknowledgement dialog. */\\n close(): void {\\n this.postRef?.close();\\n this.selfRef?.close();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .contact-modal {\\n width: 41rem;\\n height: 40rem;\\n }\\n\\n .info-modal {\\n width: 35rem;\\n height: 11.8rem;\\n }\\n\\n @media screen and (max-height: 328px) {\\n .contact-modal {\\n height: calc(100vh - 2rem);\\n }\\n }\\n}\\n","styleUrl":"./contact-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n\\n\\n \\n \\n\\n"},{"name":"FooterBehaviorComponent","id":"component-FooterBehaviorComponent-d9ecf51e28e6cdbe2f77b2f819a2e3df3acd0382e946f213975e78af53f6c11b1a7a013fefb862cfa9449b9973d2ea3497fa9687d6c04eb492751c2a83c17410","file":"src/lib/footer-behavior/footer-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-footer-behavior","styleUrls":["./footer-behavior.component.scss"],"styles":[],"templateUrl":["./footer-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"download","defaultValue":"dispatch(DownloadActions.Download)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A dispatcher function to download file in specified format

      \\n","line":39,"rawdescription":"\\nA dispatcher function to download file in specified format","modifierKind":[144]},{"name":"downloadFormats","defaultValue":"selectSnapshot(DownloadSelectors.formats)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects a snapshot of the current value of the available download formats

      \\n","line":27,"rawdescription":"\\nSelects a snapshot of the current value of the available download formats","modifierKind":[144]},{"name":"embed","defaultValue":"LinkIds.Embed","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Embed link routing after clicking on Embed

      \\n","line":36,"rawdescription":"\\nEmbed link routing after clicking on Embed","modifierKind":[144]},{"name":"hraPortal","defaultValue":"LinkIds.Portal","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Hra portal link routing after clicking on HRA Portal

      \\n","line":30,"rawdescription":"\\nHra portal link routing after clicking on HRA Portal","modifierKind":[144]},{"name":"illustrationMetadata","defaultValue":"LinkIds.Illustration","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Metadata page link routing after clicking on Illustration

      \\n","line":33,"rawdescription":"\\nMetadata page link routing after clicking on Illustration","modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":21,"rawdescription":"\\nInput for product logo URL to displayed on the left side.","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":24,"rawdescription":"\\nInput for product title to displayed on the left side.","modifierKind":[144]},{"name":"size","defaultValue":"selectSnapshot(ScreenModeSelectors.size)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects the current value of the available ScreenMode Size

      \\n","line":41,"rawdescription":"\\nSelects the current value of the available ScreenMode Size","modifierKind":[144]}],"methodsClass":[{"name":"contact","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which opens the contact modal dialog box","description":"

      A function which opens the contact modal dialog box

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component for footer behavior which provides functionality for various buttons in footer

      \\n","rawdescription":"\\nA component for footer behavior which provides functionality for various buttons in footer","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { MatDialog, MatDialogConfig, MatDialogModule } from \'@angular/material/dialog\';\\nimport { dispatch, selectQuerySnapshot, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { FooterComponent } from \'@hra-ui/components/molecules\';\\nimport { DownloadActions, DownloadSelectors, ResourceIds as Ids, LinkIds, ScreenModeSelectors } from \'@hra-ui/state\';\\nimport { ContactBehaviorComponent } from \'../contact-behavior/contact-behavior.component\';\\n\\n/** A component for footer behavior which provides functionality for various buttons in footer */\\n@Component({\\n selector: \'ftu-footer-behavior\',\\n standalone: true,\\n imports: [CommonModule, MatDialogModule, FooterComponent, ContactBehaviorComponent],\\n templateUrl: \'./footer-behavior.component.html\',\\n styleUrls: [\'./footer-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterBehaviorComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /** Input for product title to displayed on the left side. */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /** Selects a snapshot of the current value of the available download formats */\\n readonly downloadFormats = selectSnapshot(DownloadSelectors.formats);\\n\\n /** Hra portal link routing after clicking on HRA Portal */\\n readonly hraPortal = LinkIds.Portal;\\n\\n /** Metadata page link routing after clicking on Illustration */\\n readonly illustrationMetadata = LinkIds.Illustration;\\n\\n /** Embed link routing after clicking on Embed */\\n readonly embed = LinkIds.Embed;\\n\\n /** A dispatcher function to download file in specified format */\\n readonly download = dispatch(DownloadActions.Download);\\n /** Selects the current value of the available ScreenMode Size */\\n readonly size = selectSnapshot(ScreenModeSelectors.size);\\n\\n /** A dialog box which shows contact modal after clicking on contact */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A function which opens the contact modal dialog box */\\n contact(): void {\\n const dialogConfig = new MatDialogConfig();\\n dialogConfig.disableClose = true;\\n this.dialog.open(ContactBehaviorComponent, dialogConfig);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./footer-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"HeaderBehaviorComponent","id":"component-HeaderBehaviorComponent-a76f74e70c7aacab4debd2492e1302dc534513cd4598dce499fc0d4f09bf0a16fc333bcb4bb100ffc9dbcb5427533473060400e0ae5eb7051dac7768474ae300","file":"src/lib/header-behavior/header-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-header-behavior","styleUrls":["./header-behavior.component.scss"],"styles":[],"templateUrl":["./header-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"aboutLink","defaultValue":"LinkIds.About","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for about link for user click action.

      \\n","line":41,"rawdescription":"\\n\\nInput for about link for user click action.\\n","modifierKind":[144]},{"name":"appTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.AppTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for app title to show on the left side.

      \\n","line":31,"rawdescription":"\\n\\nInput for app title to show on the left side.\\n","modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":21,"rawdescription":"\\n\\nInput for product logo URL to displayed on the left side.\\n","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":26,"rawdescription":"\\n\\nInput for product title to displayed on the left side.\\n","modifierKind":[144]},{"name":"productTitleLink","defaultValue":"LinkIds.ProductTitle","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title link for user click action

      \\n","line":36,"rawdescription":"\\n\\nInput for product title link for user click action\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Header Behavior

      \\n","rawdescription":"\\nComponent for Header Behavior","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { HeaderComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceIds as Ids, LinkIds } from \'@hra-ui/state\';\\n\\n/** Component for Header Behavior */\\n@Component({\\n selector: \'ftu-header-behavior\',\\n standalone: true,\\n imports: [CommonModule, HeaderComponent],\\n templateUrl: \'./header-behavior.component.html\',\\n styleUrls: [\'./header-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HeaderBehaviorComponent {\\n /**\\n * Input for product logo URL to displayed on the left side.\\n */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /**\\n * Input for product title to displayed on the left side.\\n */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /**\\n * Input for app title to show on the left side.\\n */\\n readonly appTitle = selectQuerySnapshot(RR.anyText, Ids.AppTitle);\\n\\n /**\\n * Input for product title link for user click action\\n */\\n readonly productTitleLink = LinkIds.ProductTitle;\\n\\n /**\\n * Input for about link for user click action.\\n */\\n readonly aboutLink = LinkIds.About;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./header-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"HraLandingPageIntroWcBehaviourComponent","id":"component-HraLandingPageIntroWcBehaviourComponent-b8c2509d12b92bff8ab139855b712563f2a92e8aa91e8ecc05714063b91b1765ade0e9c6e691367a2eaa4724d94d6dfe4ade28c89da03cfcf6eae21630452b23","file":"src/lib/hra-landing-page-intro-wc-behaviour/hra-landing-page-intro-wc-behaviour.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-wc-intro","styleUrls":["./hra-landing-page-intro-wc-behaviour.component.scss"],"styles":[],"templateUrl":["./hra-landing-page-intro-wc-behaviour.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"landingPageIntroDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro description

      \\n","line":21,"rawdescription":"\\nselect snapshot for landing page intro description","modifierKind":[144]},{"name":"landingPageIntroPartners","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":25,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroReadMore","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageIntroReadMore)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":23,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for Landing Page title

      \\n","line":19,"rawdescription":"\\nselect snapshot for Landing Page title","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro Behaviour: Web component

      \\n","rawdescription":"\\nComponent for LandingPage Intro Behaviour: Web component","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { HraLandingPageIntroWcComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceRegistrySelectors as RRS } from \'@hra-ui/cdk/state\';\\nimport { selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceIds as RIds } from \'@hra-ui/state\';\\n\\n/** Component for LandingPage Intro Behaviour: Web component */\\n@Component({\\n selector: \'ftu-wc-intro\',\\n standalone: true,\\n imports: [CommonModule, HraLandingPageIntroWcComponent],\\n templateUrl: \'./hra-landing-page-intro-wc-behaviour.component.html\',\\n styleUrls: [\'./hra-landing-page-intro-wc-behaviour.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HraLandingPageIntroWcBehaviourComponent {\\n /** select snapshot for Landing Page title */\\n readonly landingPageIntroTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle);\\n /** select snapshot for landing page intro description */\\n readonly landingPageIntroDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroReadMore = selectQuerySnapshot(RRS.markdown, RIds.LandingPageIntroReadMore);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroPartners = selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners);\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .intro {\\n display: inline-grid;\\n border: 1px solid #e2e7e9;\\n padding: 24px 32px 24px 32px;\\n width: 71rem;\\n }\\n}\\n","styleUrl":"./hra-landing-page-intro-wc-behaviour.component.scss"}],"stylesData":"","templateData":"\\n"},{"name":"LandingPageContentComponent","id":"component-LandingPageContentComponent-d72615e2863b7f2f08c767452a75c71c9e079687610cd3e50b54f72f11546184f7ad55c5304741d79adb9bb9ea161cdac4253ae6fb1cbbf15040f2814110616a","file":"src/lib/landing-page-content/landing-page-content.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-landing-page-content","styleUrls":["./landing-page-content.component.scss"],"styles":[],"templateUrl":["./landing-page-content.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"intersectableEls","deprecated":false,"deprecationMessage":"","type":"QueryList","optional":false,"description":"

      array of element refs for intersectables

      \\n","line":34,"rawdescription":"\\narray of element refs for intersectables","decorators":[{"name":"ViewChildren","stringifiedArguments":"\'intersectable\', {read: ElementRef}"}],"modifierKind":[144]},{"name":"landingPageDepthDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDepthDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth description

      \\n","line":57,"rawdescription":"\\nselect snapshot for landing page depth description","modifierKind":[144]},{"name":"landingPageDepthImg","defaultValue":"selectQuerySnapshot(RRS.url, RIds.LandingPageDepthImg)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth img

      \\n","line":61,"rawdescription":"\\nselect snapshot for landing page depth img","modifierKind":[144]},{"name":"landingPageDepthMoreText","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthMoreText)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot forlanding page depth more text

      \\n","line":59,"rawdescription":"\\nselect snapshot forlanding page depth more text","modifierKind":[144]},{"name":"landingPageDepthTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth title

      \\n","line":55,"rawdescription":"\\nselect snapshot for landing page depth title","modifierKind":[144]},{"name":"landingPageIntroDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro description

      \\n","line":40,"rawdescription":"\\nselect snapshot for landing page intro description","modifierKind":[144]},{"name":"landingPageIntroImg","defaultValue":"selectQuerySnapshot(RRS.url, RIds.LandingPageIntroImg)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro img

      \\n","line":47,"rawdescription":"\\nselect snapshot for landing page intro img","modifierKind":[144]},{"name":"landingPageIntroMoreText","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageIntroMoreText)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro more text

      \\n","line":45,"rawdescription":"\\nselect snapshot for landing page intro more text","modifierKind":[144]},{"name":"landingPageIntroPartners","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":42,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for Landing Page title

      \\n","line":37,"rawdescription":"\\nselect snapshot for Landing Page title","modifierKind":[144]},{"name":"LinkIds","defaultValue":"LinkIds","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Expose links for use it template

      \\n","line":64,"rawdescription":"\\nExpose links for use it template","modifierKind":[144]},{"name":"metrics","defaultValue":"selectQuerySnapshot(RRS.field, RIds.Metrics, RTypes.Metrics, \'metrics\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics

      \\n","line":49,"rawdescription":"\\nselect snapshot for metrics","modifierKind":[144]},{"name":"metricsLogo","defaultValue":"selectQuerySnapshot(RRS.url, RIds.MetricsLogo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics logo

      \\n","line":53,"rawdescription":"\\nselect snapshot for metrics logo","modifierKind":[144]},{"name":"metricsTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.MetricsTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics title

      \\n","line":51,"rawdescription":"\\nselect snapshot for metrics title","modifierKind":[144]}],"methodsClass":[{"name":"handleIntersection","args":[{"name":"entries","type":"IntersectionObserverEntry[]","deprecated":false,"deprecationMessage":""},{"name":"observer","type":"IntersectionObserver","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":82,"deprecated":false,"deprecationMessage":"","rawdescription":"\\ncallback function for intersection observer","description":"

      callback function for intersection observer

      \\n","jsdoctags":[{"name":"entries","type":"IntersectionObserverEntry[]","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"observer","type":"IntersectionObserver","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPageContent Behavior

      \\n","rawdescription":"\\nComponent for LandingPageContent Behavior","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport {\\n AfterViewInit,\\n ChangeDetectionStrategy,\\n Component,\\n ElementRef,\\n inject,\\n QueryList,\\n Renderer2,\\n ViewChildren,\\n} from \'@angular/core\';\\nimport { injectDestroy$, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RRS } from \'@hra-ui/cdk/state\';\\nimport {\\n LandingPageInDepthComponent,\\n LandingPageIntroComponent,\\n MetricItem,\\n MetricsComponent,\\n} from \'@hra-ui/components/molecules\';\\nimport { LinkIds, ResourceIds as RIds, ResourceTypes as RTypes } from \'@hra-ui/state\';\\n\\n/** Component for LandingPageContent Behavior */\\n@Component({\\n selector: \'ftu-landing-page-content\',\\n standalone: true,\\n imports: [CommonModule, LandingPageIntroComponent, MetricsComponent, LandingPageInDepthComponent],\\n templateUrl: \'./landing-page-content.component.html\',\\n styleUrls: [\'./landing-page-content.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageContentComponent implements AfterViewInit {\\n /** array of element refs for intersectables */\\n @ViewChildren(\'intersectable\', { read: ElementRef })\\n readonly intersectableEls!: QueryList;\\n\\n /** select snapshot for Landing Page title */\\n readonly landingPageIntroTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle);\\n\\n /** select snapshot for landing page intro description */\\n readonly landingPageIntroDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroPartners = selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners);\\n\\n /** select snapshot for landing page intro more text */\\n readonly landingPageIntroMoreText = selectQuerySnapshot(RRS.anyText, RIds.LandingPageIntroMoreText);\\n /** select snapshot for landing page intro img */\\n readonly landingPageIntroImg = selectQuerySnapshot(RRS.url, RIds.LandingPageIntroImg);\\n /** select snapshot for metrics */\\n readonly metrics = selectQuerySnapshot(RRS.field, RIds.Metrics, RTypes.Metrics, \'metrics\' as const, []);\\n /** select snapshot for metrics title */\\n readonly metricsTitle = selectQuerySnapshot(RRS.anyText, RIds.MetricsTitle);\\n /** select snapshot for metrics logo */\\n readonly metricsLogo = selectQuerySnapshot(RRS.url, RIds.MetricsLogo);\\n /** select snapshot for landing page depth title */\\n readonly landingPageDepthTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthTitle);\\n /** select snapshot for landing page depth description */\\n readonly landingPageDepthDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDepthDescription);\\n /** select snapshot forlanding page depth more text */\\n readonly landingPageDepthMoreText = selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthMoreText);\\n /** select snapshot for landing page depth img */\\n readonly landingPageDepthImg = selectQuerySnapshot(RRS.url, RIds.LandingPageDepthImg);\\n\\n /** Expose links for use it template */\\n readonly LinkIds = LinkIds;\\n\\n /** Renderer to add class for animation */\\n private readonly renderer = inject(Renderer2);\\n /** destroys observer */\\n private readonly destroy$ = injectDestroy$();\\n\\n /** creates an observer after view init */\\n ngAfterViewInit(): void {\\n const observer = new IntersectionObserver(this.handleIntersection.bind(this), {\\n threshold: 0.18,\\n });\\n\\n this.intersectableEls.forEach((el) => observer.observe(el.nativeElement));\\n this.destroy$.subscribe(() => observer.disconnect());\\n }\\n\\n /** callback function for intersection observer */\\n handleIntersection(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void {\\n for (const { isIntersecting, target } of entries) {\\n if (isIntersecting) {\\n this.renderer.addClass(target, \'visible\');\\n observer.unobserve(target);\\n }\\n }\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n overflow-x: hidden;\\n\\n .intro {\\n margin: 3.5rem 2rem;\\n }\\n\\n .metrics {\\n opacity: 0;\\n\\n &.visible {\\n animation: fadeIn 2s ease-in forwards;\\n }\\n }\\n\\n .in-depth {\\n opacity: 0;\\n\\n &.visible {\\n overflow: hidden;\\n animation: slideIn 2s ease-in-out forwards;\\n }\\n }\\n}\\n\\n@keyframes fadeIn {\\n 0% {\\n opacity: 0;\\n }\\n\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n@keyframes slideIn {\\n 0% {\\n transform: translateX(200%);\\n opacity: 1;\\n }\\n\\n 100% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n}\\n","styleUrl":"./landing-page-content.component.scss"}],"stylesData":"","implements":["AfterViewInit"],"templateData":"\\n\\n\\n\\n\\n\\n"},{"name":"MedicalIllustrationBehaviorComponent","id":"component-MedicalIllustrationBehaviorComponent-6fea78f0a6011315eef3ff0e9cf3f451130b68d93388f1b8ff7f362f6c7f2ec8bbad2f6518d0329f94a749b1e02a1018129acf2b8340f015397957c3e0fd985d","file":"src/lib/medical-illustration-behavior/medical-illustration-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-medical-illustration-behavior","styleUrls":["./medical-illustration-behavior.component.scss"],"styles":[],"templateUrl":["./medical-illustration-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"currentUrl","defaultValue":"selectSnapshot(IllustratorSelectors.url)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current illustration url

      \\n","line":23,"rawdescription":"\\n\\nCurrent illustration url\\n","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":33,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"mapping","defaultValue":"selectSnapshot(IllustratorSelectors.mapping)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current mapping file

      \\n","line":28,"rawdescription":"\\n\\nCurrent mapping file\\n","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":38,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]},{"name":"updateNodeOnClicked","defaultValue":"dispatch(IllustratorActions.SetClicked)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node click

      \\n","line":57,"rawdescription":"\\n\\nUpdates the active node on node click\\n","modifierKind":[144]},{"name":"updateNodeOnHover","defaultValue":"dispatch(IllustratorActions.SetHover)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node hover

      \\n","line":52,"rawdescription":"\\n\\nUpdates the active node on node hover\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Behavior component for medical illustration component

      \\n","rawdescription":"\\n\\nBehavior component for medical illustration component\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { dispatch, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\nimport { InteractiveSvgComponent } from \'@hra-ui/components/molecules\';\\nimport { ActiveFtuSelectors, IllustratorActions, IllustratorSelectors, TissueLibrarySelectors } from \'@hra-ui/state\';\\n\\n/**\\n * Behavior component for medical illustration component\\n */\\n@Component({\\n selector: \'ftu-medical-illustration-behavior\',\\n standalone: true,\\n imports: [CommonModule, InteractiveSvgComponent, LabelBoxComponent],\\n templateUrl: \'./medical-illustration-behavior.component.html\',\\n styleUrls: [\'./medical-illustration-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MedicalIllustrationBehaviorComponent {\\n /**\\n * Current illustration url\\n */\\n readonly currentUrl = selectSnapshot(IllustratorSelectors.url);\\n\\n /**\\n * Current mapping file\\n */\\n readonly mapping = selectSnapshot(IllustratorSelectors.mapping);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueTitle(): string {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n return iri ? tissues[iri].label : \'\';\\n }\\n\\n /**\\n * Updates the active node on node hover\\n */\\n readonly updateNodeOnHover = dispatch(IllustratorActions.SetHover);\\n\\n /**\\n * Updates the active node on node click\\n */\\n readonly updateNodeOnClicked = dispatch(IllustratorActions.SetClicked);\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n hra-label-box {\\n border-bottom: 0.063rem solid #d3d3d3;\\n width: 100%;\\n height: 3.5rem;\\n }\\n}\\n","styleUrl":"./medical-illustration-behavior.component.scss"}],"stylesData":"","accessors":{"tissueTitle":{"name":"tissueTitle","getSignature":{"name":"tissueTitle","type":"string","returnType":"string","line":43,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"{{ tissueTitle }}\\n\\n\\n"},{"name":"ScreenNoticeBehaviorComponent","id":"component-ScreenNoticeBehaviorComponent-de4fc156bf7f658d9ca0a8d114626d829387a03f3b206cb5439f1ad22b9e157cbc51e850b06eb8f0b9dd48a75acb723b42c7fd79d0c50694757e9d23cac9f416","file":"src/lib/screen-notice-behavior/screen-notice-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-ui-screen-notice-behavior","styleUrls":["./screen-notice-behavior.component.scss"],"styles":[],"templateUrl":["./screen-notice-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"content","defaultValue":"selectQuerySnapshot(RR.anyText, ResourceIds.ScreenSizeNoticeContent)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Content of screen notice behavior component

      \\n","line":21,"rawdescription":"\\nContent of screen notice behavior component","modifierKind":[144]},{"name":"portal","defaultValue":"LinkIds.Portal","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Hra portal link routing after clicking on HRA Portal

      \\n","line":24,"rawdescription":"\\nHra portal link routing after clicking on HRA Portal","modifierKind":[144]}],"methodsClass":[{"name":"close","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":33,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which closes the screen size notice dialog box","description":"

      A function which closes the screen size notice dialog box

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component for screen size notice behavior which provides the content to be displayed and provides functionality\\nfor the buttons on the notice modal

      \\n","rawdescription":"\\nA component for screen size notice behavior which provides the content to be displayed and provides functionality\\nfor the buttons on the notice modal","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR, StorageActions, StorageId } from \'@hra-ui/cdk/state\';\\nimport { ResourceIds, LinkIds } from \'@hra-ui/state\';\\nimport { ScreenSizeNoticeComponent } from \'@hra-ui/components/molecules\';\\nimport { MatDialogRef } from \'@angular/material/dialog\';\\n\\n/** A component for screen size notice behavior which provides the content to be displayed and provides functionality\\n * for the buttons on the notice modal */\\n@Component({\\n selector: \'ftu-ui-screen-notice-behavior\',\\n standalone: true,\\n imports: [CommonModule, ScreenSizeNoticeComponent],\\n templateUrl: \'./screen-notice-behavior.component.html\',\\n styleUrls: [\'./screen-notice-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ScreenNoticeBehaviorComponent {\\n /** Content of screen notice behavior component*/\\n readonly content = selectQuerySnapshot(RR.anyText, ResourceIds.ScreenSizeNoticeContent);\\n\\n /** Hra portal link routing after clicking on HRA Portal*/\\n readonly portal = LinkIds.Portal;\\n\\n /** Reference for the screen size notice dialog box*/\\n private readonly ref = inject(MatDialogRef, { optional: true });\\n\\n /** A dispatcher function that sets the Local Storage as \'shown\'*/\\n private readonly setScreenNoticeShown = dispatch(StorageActions.Set, StorageId.Local, \'screen-size-notice\', \'shown\');\\n\\n /** A function which closes the screen size notice dialog box*/\\n close(): void {\\n this.setScreenNoticeShown();\\n this.ref?.close();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./screen-notice-behavior.component.scss"}],"stylesData":"","templateData":" \\n"},{"name":"TissueLibraryBehaviorComponent","id":"component-TissueLibraryBehaviorComponent-1565978e9f70870b546b49f929236ee86c2eb9cc241e10b805863df59e4d66dca72495ffa8c27a7f282e396acc84f78b6724255570a4eab733a3af995543b47a","file":"src/lib/tissue-library-behavior/tissue-library-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-tissue-library-behavior","styleUrls":["./tissue-library-behavior.component.scss"],"styles":[],"templateUrl":["./tissue-library-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"list","deprecated":false,"deprecationMessage":"","type":"TissueTreeListComponent","optional":true,"description":"

      Reference to the TissueTreeListComponent.

      \\n","line":25,"rawdescription":"\\n\\nReference to the TissueTreeListComponent.\\n","decorators":[{"name":"ViewChild","stringifiedArguments":"\'list\', {static: true}"}],"modifierKind":[144]},{"name":"selected","deprecated":false,"deprecationMessage":"","type":"Tissue","optional":true,"description":"

      Selected of tissue library behavior component

      \\n","line":34,"rawdescription":"\\n\\nSelected of tissue library behavior component\\n"},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for tissues data

      \\n","line":30,"rawdescription":"\\n\\nInput for tissues data\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Tissue Library Behavior

      \\n","rawdescription":"\\n\\nComponent for Tissue Library Behavior\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, ViewChild } from \'@angular/core\';\\nimport { select$, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { TissueTreeListComponent } from \'@hra-ui/components/molecules\';\\nimport { Tissue } from \'@hra-ui/services\';\\nimport { ActiveFtuSelectors, TissueLibrarySelectors } from \'@hra-ui/state\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * Component for Tissue Library Behavior\\n */\\n@Component({\\n selector: \'ftu-tissue-library-behavior\',\\n standalone: true,\\n imports: [CommonModule, LabelBoxComponent, TissueTreeListComponent],\\n templateUrl: \'./tissue-library-behavior.component.html\',\\n styleUrls: [\'./tissue-library-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueLibraryBehaviorComponent {\\n /**\\n * Reference to the TissueTreeListComponent.\\n */\\n @ViewChild(\'list\', { static: true })\\n readonly list?: TissueTreeListComponent;\\n\\n /**\\n * Input for tissues data\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n /**\\n * Selected of tissue library behavior component\\n */\\n selected?: Tissue;\\n\\n /**\\n * Sets the TissueItem instance as undefined if\\n * the url is undefined\\n */\\n constructor() {\\n /** Get iris from the observable else reset selection if\\n * iri is undefined\\n */\\n select$(ActiveFtuSelectors.iri).subscribe((iri) => {\\n this.selected = iri && this.tissues()[iri];\\n if (iri === undefined) {\\n this.list?.resetSelection();\\n }\\n });\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .label {\\n border-bottom: 1px solid #e2e7e9;\\n width: 100%;\\n height: 3.5rem;\\n }\\n}\\n","styleUrl":"./tissue-library-behavior.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Sets the TissueItem instance as undefined if\\nthe url is undefined

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":34,"rawdescription":"\\n\\nSets the TissueItem instance as undefined if\\nthe url is undefined\\n"},"templateData":"FTU Library\\n \\n"}],"modules":[],"miscellaneous":{"variables":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details/biomarker-details.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"},{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}],"functions":[],"typealiases":[],"enumerations":[],"groupedVariables":{"src/lib/biomarker-details/biomarker-details.component.ts":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details/biomarker-details.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}],"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{}}}')},"./dist/compodoc/components-molecules/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"ContactData","id":"interface-ContactData-309310b2740da63be5ea5aaa894ef73ced8bed2a86b50643af4dd031551d6cdb7b26ece6b3328d0e31c21e46f940bd8b901f5665c241ca2a4cb38f39631bd8a3","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmailInputComponent, RequiredInputComponent, RequiredTextboxComponent } from \'@hra-ui/components/atoms\';\\nimport { produce } from \'immer\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n An interface representing contact data information which will be emitted if all the fields are in correct format.\\n */\\nexport interface ContactData {\\n /** The email address of the person submitting the form. */\\n email: string;\\n /** The subject line of the message being sent. */\\n subject: string;\\n /** The body of the message being sent. */\\n message: string;\\n}\\n\\n/** Initial empty contact data */\\nconst EMPTY_CONTACT_DATA: Partial = {\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n};\\n\\n/**\\n * Contact modal component.\\n */\\n@Component({\\n selector: \'hra-contact-modal\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatIconModule,\\n EmailInputComponent,\\n MarkdownModule,\\n RequiredTextboxComponent,\\n RequiredInputComponent,\\n ],\\n templateUrl: \'./contact-modal.component.html\',\\n styleUrls: [\'./contact-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactModalComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Emits when the submit button is clicked and all the values are appropriate. */\\n @Output() readonly submitClick = new EventEmitter();\\n\\n /** Emits when the cancel button or close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n\\n /** A function to disable the submit button. If all the values are in approproiate format, then it will be enabled. */\\n get disableSubmit(): boolean {\\n return Object.values(this.contactData).some((value) => value === undefined);\\n }\\n\\n /** Asigns the undefined initially to all the input fields. */\\n contactData = EMPTY_CONTACT_DATA;\\n\\n /** Updates the contact data object with a new value for a given key. */\\n updateData(key: K, value?: ContactData[K]): void {\\n this.contactData = produce(this.contactData, (draft) => {\\n draft[key] = value;\\n });\\n }\\n\\n /** It emits the updated value of contact data */\\n submit(): void {\\n this.submitClick.emit(this.contactData as ContactData);\\n }\\n}\\n","properties":[{"name":"email","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The email address of the person submitting the form.

      \\n","line":14,"rawdescription":"\\nThe email address of the person submitting the form."},{"name":"message","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The body of the message being sent.

      \\n","line":18,"rawdescription":"\\nThe body of the message being sent."},{"name":"subject","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The subject line of the message being sent.

      \\n","line":16,"rawdescription":"\\nThe subject line of the message being sent."}],"indexSignatures":[],"kind":165,"description":"

      An interface representing contact data information which will be emitted if all the fields are in correct format.

      \\n","rawdescription":"\\n\\nAn interface representing contact data information which will be emitted if all the fields are in correct format.\\n","methods":[]},{"name":"DataItem","id":"interface-DataItem-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      A string property that represents the label

      \\n","line":8,"rawdescription":"\\nA string property that represents the label"},{"name":"value","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      A string property that represents the value

      \\n","line":10,"rawdescription":"\\nA string property that represents the value"}],"indexSignatures":[],"kind":165,"description":"

      An item which defines a string label and a string value

      \\n","rawdescription":"\\nAn item which defines a string label and a string value","methods":[]},{"name":"DataNode","id":"interface-DataNode-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","properties":[{"name":"children","deprecated":false,"deprecationMessage":"","type":"K[]","optional":true,"description":"

      Nested nodes

      \\n","line":29,"rawdescription":"\\nNested nodes"},{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      Id to pass as a query parameter on navigation

      \\n","line":25,"rawdescription":"\\nId to pass as a query parameter on navigation"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      User readable label

      \\n","line":23,"rawdescription":"\\nUser readable label"},{"name":"link","deprecated":false,"deprecationMessage":"","type":"LinkId","optional":true,"description":"

      Link to navigate to on node click

      \\n","line":27,"rawdescription":"\\nLink to navigate to on node click"}],"indexSignatures":[],"kind":165,"description":"

      Base node type

      \\n","rawdescription":"\\nBase node type","methods":[]},{"name":"DownloadFormat","id":"interface-DownloadFormat-45c5a61fc5d68c201808fb76ff867f9a7cf8e42e6ef95ae08b440dbd37ce63eb4c77c3da0597ef90973854d65522a3ba496eeb5eccbe75750c1fd2f5abf52e6b","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { MatListModule } from \'@angular/material/list\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * Base type for different download format options.\\n */\\nexport interface DownloadFormat {\\n /**\\n * User readable format label\\n */\\n label: string;\\n}\\n\\n/**\\n * Positioning value for the download list popup\\n */\\nconst DOWNLOADS_LIST_POSITION: ConnectedPosition[] = [\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n];\\n\\n/**\\n * Component for footer that displays its content at the bottom of the page with different action buttons.\\n */\\n@Component({\\n selector: \'hra-footer\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, OverlayModule, MatListModule, LinkDirective],\\n templateUrl: \'./footer.component.html\',\\n styleUrls: [\'./footer.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterComponent {\\n /** Host binding of footer component */\\n @HostBinding(\'class\')\\n @Input()\\n size: \'small\' | \'large\' = \'large\';\\n\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Input for HRA Portal link */\\n @Input() hraPortal = EMPTY_LINK;\\n\\n /** Input for Illustration metadata page link in HRA Portal */\\n @Input() illustrationMetadata = EMPTY_LINK;\\n\\n /** Input for embed link in HRA Portal */\\n @Input() embed = EMPTY_LINK;\\n\\n /** Different download formats options displayed to the user */\\n @Input() downloadFormats: T[] = [];\\n\\n /** Emits the selected download format */\\n @Output() readonly download = new EventEmitter();\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly contactClick = new EventEmitter();\\n\\n /** Download list popup overlay positioning */\\n readonly DOWNLOADS_LIST_POSITION = DOWNLOADS_LIST_POSITION;\\n\\n /** Gets whether the footer required is small */\\n get isSmall(): boolean {\\n return this.size === \'small\';\\n }\\n\\n /** Whether the download list panel is open */\\n downloadListOpen = false;\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      User readable format label

      \\n","line":17,"rawdescription":"\\n\\nUser readable format label\\n"}],"indexSignatures":[],"kind":165,"description":"

      Base type for different download format options.

      \\n","rawdescription":"\\n\\nBase type for different download format options.\\n","methods":[]},{"name":"InternalNode","id":"interface-InternalNode-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","properties":[{"name":"data","deprecated":false,"deprecationMessage":"","type":"T","optional":false,"description":"

      Associated user node data

      \\n","line":43,"rawdescription":"\\nAssociated user node data"},{"name":"expandable","deprecated":false,"deprecationMessage":"","type":"boolean","optional":false,"description":"

      Whether the node can be expanded to display child nodes

      \\n","line":39,"rawdescription":"\\nWhether the node can be expanded to display child nodes"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Displayed label

      \\n","line":37,"rawdescription":"\\nDisplayed label"},{"name":"level","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Depth of node in the tree

      \\n","line":41,"rawdescription":"\\nDepth of node in the tree"}],"indexSignatures":[],"kind":165,"description":"

      Internal interface for flat tissue data hierarchy

      \\n","rawdescription":"\\n\\nInternal interface for flat tissue data hierarchy\\n","methods":[]},{"name":"MetricItem","id":"interface-MetricItem-e52c0a1cdf090042d1924c4907a4034774cbb442217faca9ec5035e76d2796116cf55644ecf49ae040fdea1168f9c5d99f6ce15b2079f70de3d853fece481b30","file":"src/lib/metrics/metrics.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n An interface representing a single metric with an icon, value and description.\\n */\\nexport interface MetricItem {\\n /** Represents the icon associated with the metric. */\\n icon: string;\\n /** Describes the numberical value of the metric. */\\n value: string;\\n /** Describes the type of metric. */\\n description: string;\\n}\\n/**\\n * Describes the metrics for the HuBMAP project.\\n */\\n@Component({\\n selector: \'hra-metrics\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./metrics.component.html\',\\n styleUrls: [\'./metrics.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MetricsComponent {\\n /** Main title of metrics component. */\\n @Input() title = \'\';\\n\\n /** Logo of metrics component. */\\n @Input() logo = \'\';\\n\\n /** List of metrics that will be shown to the user. */\\n @Input() metrics: MetricItem[] = [];\\n}\\n","properties":[{"name":"description","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Describes the type of metric.

      \\n","line":13,"rawdescription":"\\nDescribes the type of metric."},{"name":"icon","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Represents the icon associated with the metric.

      \\n","line":9,"rawdescription":"\\nRepresents the icon associated with the metric."},{"name":"value","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Describes the numberical value of the metric.

      \\n","line":11,"rawdescription":"\\nDescribes the numberical value of the metric."}],"indexSignatures":[],"kind":165,"description":"

      An interface representing a single metric with an icon, value and description.

      \\n","rawdescription":"\\n\\nAn interface representing a single metric with an icon, value and description.\\n","methods":[]},{"name":"NodeMapEntry","id":"interface-NodeMapEntry-985e710eb317dd3ff5ea26a7d11e504b64a31e68fa3680b8455ed3925acd6cb8cc0fbc37282dd5fa62df18c6514780783a2cf000f5bfeadbefaa7232ebdef28a","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.nodeHoverData$.next(undefined));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","properties":[{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node id in svg

      \\n","line":69,"rawdescription":"\\nNode id in svg"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node label

      \\n","line":67,"rawdescription":"\\nNode label"},{"name":"ontologyId","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Ontology id of cell type

      \\n","line":71,"rawdescription":"\\nOntology id of cell type"}],"indexSignatures":[],"kind":165,"description":"

      Interface for node entries

      \\n","rawdescription":"\\nInterface for node entries","methods":[]},{"name":"NodeTooltipData","id":"interface-NodeTooltipData-985e710eb317dd3ff5ea26a7d11e504b64a31e68fa3680b8455ed3925acd6cb8cc0fbc37282dd5fa62df18c6514780783a2cf000f5bfeadbefaa7232ebdef28a","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.nodeHoverData$.next(undefined));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","properties":[{"name":"node","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node name

      \\n","line":59,"rawdescription":"\\nNode name"},{"name":"origin","deprecated":false,"deprecationMessage":"","type":"literal type","optional":false,"description":"

      Center point of hovered node in screen coordinates

      \\n","line":61,"rawdescription":"\\nCenter point of hovered node in screen coordinates"}],"indexSignatures":[],"kind":165,"description":"

      Node tooltip data

      \\n","rawdescription":"\\nNode tooltip data","methods":[]},{"name":"SectionItem","id":"interface-SectionItem-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","properties":[{"name":"data","deprecated":false,"deprecationMessage":"","type":"DataItem","optional":false,"description":"

      A DateItem property that represents a section and its data

      \\n","line":18,"rawdescription":"\\nA DateItem property that represents a section and its data"},{"name":"isLastItem","deprecated":false,"deprecationMessage":"","type":"boolean","optional":false,"description":"

      A boolean property that represents the last item of a section

      \\n","line":20,"rawdescription":"\\nA boolean property that represents the last item of a section"},{"name":"section","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      A number property that represents the section number

      \\n","line":16,"rawdescription":"\\nA number property that represents the section number"}],"indexSignatures":[],"kind":165,"description":"

      An item which represents a section with a data item and an indicator for the last item in the section

      \\n","rawdescription":"\\nAn item which represents a section with a data item and an indicator for the last item in the section","methods":[]},{"name":"SourceListItem","id":"interface-SourceListItem-3e55f2d90acdd1770d63ee01d7cb04bfb862e234a989f6253c27f416e0d0d33c9fd51a594ccdd21bb13acf50a7076f9a951f5f110e2d6c319be91dfc009e7d61","file":"src/lib/source-list/source-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/** SourceListItem interface contains title and link to the dataset for the SourceList*/\\nexport interface SourceListItem {\\n /** Title of the dataset in the SourceList */\\n title: string;\\n\\n /** Label of the dataset in the SourceList */\\n label: string;\\n\\n /** Link to the dataset in the SourceList */\\n link: string;\\n}\\n\\n/** This component shows list of sources with title and links to the datasets */\\n@Component({\\n selector: \'hra-source-list\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule, MatIconModule, LabelBoxComponent],\\n templateUrl: \'./source-list.component.html\',\\n styleUrls: [\'./source-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SourceListComponent {\\n /** List of sources with titles and links displayed to the user */\\n @Input() sources: SourceListItem[] = [];\\n /**\\n * Show table of source list component which toggles to true or false\\n * based on click\\n */\\n showTable = true;\\n\\n /**\\n * It changes the value of showTable to false if value it true\\n * and vice versa\\n */\\n toggleTable(): void {\\n this.showTable = !this.showTable;\\n }\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Label of the dataset in the SourceList

      \\n","line":13,"rawdescription":"\\nLabel of the dataset in the SourceList"},{"name":"link","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Link to the dataset in the SourceList

      \\n","line":16,"rawdescription":"\\nLink to the dataset in the SourceList"},{"name":"title","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Title of the dataset in the SourceList

      \\n","line":10,"rawdescription":"\\nTitle of the dataset in the SourceList"}],"indexSignatures":[],"kind":165,"description":"

      SourceListItem interface contains title and link to the dataset for the SourceList

      \\n","rawdescription":"\\nSourceListItem interface contains title and link to the dataset for the SourceList","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerTableDataCardComponent","id":"component-BiomarkerTableDataCardComponent-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table-data-card","styleUrls":["./biomarker-table-data-card.component.scss"],"styles":[],"templateUrl":["./biomarker-table-data-card.component.html"],"viewProviders":[],"inputsClass":[{"name":"data","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nNested list of DataItems for each section which is displayed to the user","description":"

      Nested list of DataItems for each section which is displayed to the user

      \\n","line":34,"type":"DataItem[][]","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"sectionItems","defaultValue":"[]","deprecated":false,"deprecationMessage":"","type":"SectionItem[]","optional":false,"description":"

      Converted nested array of DataItem into Flat array of SectionItem

      \\n","line":37,"rawdescription":"\\nConverted nested array of DataItem into Flat array of SectionItem"}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      This component displays a table with sections, where each section contains a list of items with a label and a value.

      \\n","rawdescription":"\\nThis component displays a table with sections, where each section contains a list of items with a label and a value.","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: flex;\\n padding: 1rem 1.5rem;\\n border-radius: 0.5rem;\\n box-shadow: 0.063rem 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n background-color: vars.$primary-contrast-rgb;\\n\\n .mat-mdc-cell {\\n padding: 0.25rem 0rem;\\n }\\n\\n .mat-mdc-row {\\n height: fit-content;\\n }\\n\\n .no-border {\\n border: none;\\n }\\n\\n .label {\\n color: #243142;\\n padding-right: 3rem;\\n }\\n\\n .value {\\n color: #4c5a69;\\n }\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n}\\n","styleUrl":"./biomarker-table-data-card.component.scss"}],"stylesData":"","implements":["OnChanges"],"templateData":"
      No data
      \\n 0\\" [dataSource]=\\"sectionItems\\">\\n \\n\\n \x3c!-- Label Column --\x3e\\n \\n \\n \\n \\n\\n \x3c!-- Value Column --\x3e\\n \\n \\n \\n \\n\\n \\n
      \\n Biomarker Table Data Card\\n
      Item Label\\n {{ element.data.label }}\\n Item Value\\n {{ element.data.value }}\\n
      \\n"},{"name":"BiomarkerTableDataIconComponent","id":"component-BiomarkerTableDataIconComponent-0fab04062dee70e0c4d57bfdc6f056400c9b82591b050c6912b9e59a896e1a5535f884a104c1d3f95c19721a049ca51f5b2a953512dc1d6a501c29d5399a063c","file":"src/lib/biomarker-table-data-icon/biomarker-table-data-icon.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table-data-icon","styleUrls":["./biomarker-table-data-icon.component.scss"],"styles":[],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[{"name":"color","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRepresents the color of the icon","description":"

      Represents the color of the icon

      \\n","line":17,"type":"string","decorators":[]},{"name":"size","defaultValue":"0","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRepresents the size of the icon","description":"

      Represents the size of the icon

      \\n","line":20,"type":"number","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Describes the data icon for the table

      \\n","rawdescription":"\\n\\nDescribes the data icon for the table\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, HostBinding, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n * Describes the data icon for the table\\n */\\n@Component({\\n selector: \'hra-biomarker-table-data-icon\',\\n standalone: true,\\n imports: [CommonModule],\\n template: \'\',\\n styleUrls: [\'./biomarker-table-data-icon.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataIconComponent {\\n /** Represents the color of the icon */\\n @HostBinding(\'style.background-color\') @Input() color = \'\';\\n\\n /** Represents the size of the icon */\\n @HostBinding(\'style.--radius.rem\') @Input() size = 0;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n border-radius: 50%;\\n --radius: 0.625rem;\\n width: var(--radius);\\n height: var(--radius);\\n}\\n","styleUrl":"./biomarker-table-data-icon.component.scss"}],"stylesData":""},{"name":"ContactModalComponent","id":"component-ContactModalComponent-309310b2740da63be5ea5aaa894ef73ced8bed2a86b50643af4dd031551d6cdb7b26ece6b3328d0e31c21e46f940bd8b901f5665c241ca2a4cb38f39631bd8a3","file":"src/lib/contact-modal/contact-modal.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-contact-modal","styleUrls":["./contact-modal.component.scss"],"styles":[],"templateUrl":["./contact-modal.component.html"],"viewProviders":[],"inputsClass":[{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product logo URL to displayed on the left side.","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":49,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product title to displayed on the left side.","description":"

      Input for product title to displayed on the left side.

      \\n","line":52,"type":"string","decorators":[]}],"outputsClass":[{"name":"closeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the cancel button or close icon is clicked","description":"

      Emits when the cancel button or close icon is clicked

      \\n","line":58,"type":"EventEmitter"},{"name":"submitClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the submit button is clicked and all the values are appropriate.","description":"

      Emits when the submit button is clicked and all the values are appropriate.

      \\n","line":55,"type":"EventEmitter"}],"propertiesClass":[{"name":"contactData","defaultValue":"EMPTY_CONTACT_DATA","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Asigns the undefined initially to all the input fields.

      \\n","line":66,"rawdescription":"\\nAsigns the undefined initially to all the input fields."}],"methodsClass":[{"name":"submit","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":76,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nIt emits the updated value of contact data","description":"

      It emits the updated value of contact data

      \\n"},{"name":"updateData","args":[{"name":"key","type":"K","deprecated":false,"deprecationMessage":""},{"name":"value","type":"","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":["K"],"line":69,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nUpdates the contact data object with a new value for a given key.","description":"

      Updates the contact data object with a new value for a given key.

      \\n","jsdoctags":[{"name":"key","type":"K","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"value","type":"","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Contact modal component.

      \\n","rawdescription":"\\n\\nContact modal component.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmailInputComponent, RequiredInputComponent, RequiredTextboxComponent } from \'@hra-ui/components/atoms\';\\nimport { produce } from \'immer\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n An interface representing contact data information which will be emitted if all the fields are in correct format.\\n */\\nexport interface ContactData {\\n /** The email address of the person submitting the form. */\\n email: string;\\n /** The subject line of the message being sent. */\\n subject: string;\\n /** The body of the message being sent. */\\n message: string;\\n}\\n\\n/** Initial empty contact data */\\nconst EMPTY_CONTACT_DATA: Partial = {\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n};\\n\\n/**\\n * Contact modal component.\\n */\\n@Component({\\n selector: \'hra-contact-modal\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatIconModule,\\n EmailInputComponent,\\n MarkdownModule,\\n RequiredTextboxComponent,\\n RequiredInputComponent,\\n ],\\n templateUrl: \'./contact-modal.component.html\',\\n styleUrls: [\'./contact-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactModalComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Emits when the submit button is clicked and all the values are appropriate. */\\n @Output() readonly submitClick = new EventEmitter();\\n\\n /** Emits when the cancel button or close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n\\n /** A function to disable the submit button. If all the values are in approproiate format, then it will be enabled. */\\n get disableSubmit(): boolean {\\n return Object.values(this.contactData).some((value) => value === undefined);\\n }\\n\\n /** Asigns the undefined initially to all the input fields. */\\n contactData = EMPTY_CONTACT_DATA;\\n\\n /** Updates the contact data object with a new value for a given key. */\\n updateData(key: K, value?: ContactData[K]): void {\\n this.contactData = produce(this.contactData, (draft) => {\\n draft[key] = value;\\n });\\n }\\n\\n /** It emits the updated value of contact data */\\n submit(): void {\\n this.submitClick.emit(this.contactData as ContactData);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n position: relative;\\n padding-top: 2rem;\\n margin-right: 1.5rem;\\n margin-left: 1.5rem;\\n\\n .product-logo {\\n display: flex;\\n align-items: center;\\n\\n .product-logo-image {\\n margin-right: 1rem;\\n }\\n\\n .product-title {\\n color: #990000;\\n margin: 0;\\n font-weight: 600;\\n }\\n }\\n\\n .close {\\n position: absolute;\\n top: 1.5rem;\\n right: 0rem;\\n }\\n\\n .submit {\\n margin-right: 1.5rem;\\n }\\n\\n .submit,\\n .cancel {\\n width: 7.5rem;\\n }\\n\\n .email {\\n margin-top: 1.25rem;\\n }\\n\\n .message-field {\\n margin-top: 1rem;\\n }\\n\\n .subject-field {\\n margin-top: 1rem;\\n }\\n\\n .desc {\\n margin-top: 1.5rem;\\n }\\n}\\n","styleUrl":"./contact-modal.component.scss"}],"stylesData":"","accessors":{"disableSubmit":{"name":"disableSubmit","getSignature":{"name":"disableSubmit","type":"boolean","returnType":"boolean","line":61,"rawdescription":"\\nA function to disable the submit button. If all the values are in approproiate format, then it will be enabled.","description":"

      A function to disable the submit button. If all the values are in approproiate format, then it will be enabled.

      \\n"}}},"templateData":"\\n \\"Prodoct\\n

      {{ productTitle }}

      \\n
      \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n"},{"name":"FooterComponent","id":"component-FooterComponent-45c5a61fc5d68c201808fb76ff867f9a7cf8e42e6ef95ae08b440dbd37ce63eb4c77c3da0597ef90973854d65522a3ba496eeb5eccbe75750c1fd2f5abf52e6b","file":"src/lib/footer/footer.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-footer","styleUrls":["./footer.component.scss"],"styles":[],"templateUrl":["./footer.component.html"],"viewProviders":[],"inputsClass":[{"name":"downloadFormats","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDifferent download formats options displayed to the user","description":"

      Different download formats options displayed to the user

      \\n","line":74,"type":"T[]","decorators":[]},{"name":"embed","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for embed link in HRA Portal","description":"

      Input for embed link in HRA Portal

      \\n","line":71,"type":"any","decorators":[]},{"name":"hraPortal","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for HRA Portal link","description":"

      Input for HRA Portal link

      \\n","line":65,"type":"any","decorators":[]},{"name":"illustrationMetadata","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for Illustration metadata page link in HRA Portal","description":"

      Input for Illustration metadata page link in HRA Portal

      \\n","line":68,"type":"any","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product logo URL to displayed on the left side.","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":59,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product title to displayed on the left side.","description":"

      Input for product title to displayed on the left side.

      \\n","line":62,"type":"string","decorators":[]},{"name":"size","defaultValue":"\'large\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHost binding of footer component","description":"

      Host binding of footer component

      \\n","line":56,"type":"\\"small\\" | \\"large\\"","decorators":[]}],"outputsClass":[{"name":"contactClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the contact button is clicked","description":"

      Emits when the contact button is clicked

      \\n","line":80,"type":"EventEmitter"},{"name":"download","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the selected download format","description":"

      Emits the selected download format

      \\n","line":77,"type":"EventEmitter"}],"propertiesClass":[{"name":"downloadListOpen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Whether the download list panel is open

      \\n","line":91,"rawdescription":"\\nWhether the download list panel is open"},{"name":"DOWNLOADS_LIST_POSITION","defaultValue":"DOWNLOADS_LIST_POSITION","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Download list popup overlay positioning

      \\n","line":83,"rawdescription":"\\nDownload list popup overlay positioning","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for footer that displays its content at the bottom of the page with different action buttons.

      \\n","rawdescription":"\\n\\nComponent for footer that displays its content at the bottom of the page with different action buttons.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { MatListModule } from \'@angular/material/list\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * Base type for different download format options.\\n */\\nexport interface DownloadFormat {\\n /**\\n * User readable format label\\n */\\n label: string;\\n}\\n\\n/**\\n * Positioning value for the download list popup\\n */\\nconst DOWNLOADS_LIST_POSITION: ConnectedPosition[] = [\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n];\\n\\n/**\\n * Component for footer that displays its content at the bottom of the page with different action buttons.\\n */\\n@Component({\\n selector: \'hra-footer\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, OverlayModule, MatListModule, LinkDirective],\\n templateUrl: \'./footer.component.html\',\\n styleUrls: [\'./footer.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterComponent {\\n /** Host binding of footer component */\\n @HostBinding(\'class\')\\n @Input()\\n size: \'small\' | \'large\' = \'large\';\\n\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Input for HRA Portal link */\\n @Input() hraPortal = EMPTY_LINK;\\n\\n /** Input for Illustration metadata page link in HRA Portal */\\n @Input() illustrationMetadata = EMPTY_LINK;\\n\\n /** Input for embed link in HRA Portal */\\n @Input() embed = EMPTY_LINK;\\n\\n /** Different download formats options displayed to the user */\\n @Input() downloadFormats: T[] = [];\\n\\n /** Emits the selected download format */\\n @Output() readonly download = new EventEmitter();\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly contactClick = new EventEmitter();\\n\\n /** Download list popup overlay positioning */\\n readonly DOWNLOADS_LIST_POSITION = DOWNLOADS_LIST_POSITION;\\n\\n /** Gets whether the footer required is small */\\n get isSmall(): boolean {\\n return this.size === \'small\';\\n }\\n\\n /** Whether the download list panel is open */\\n downloadListOpen = false;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n padding: 1rem 2rem;\\n border-top: 0.063rem solid #e2e7e9;\\n align-items: center;\\n background-color: #f8f9fa;\\n gap: 1rem;\\n\\n --palette-primary-500: #abcdef;\\n\\n .controls {\\n display: flex;\\n justify-content: flex-end;\\n }\\n .filler {\\n flex-grow: 1;\\n }\\n\\n .product-title {\\n color: #990000;\\n margin-right: 0rem;\\n }\\n\\n a {\\n cursor: pointer;\\n display: flex;\\n }\\n\\n .product-logo-image {\\n height: 1.2rem;\\n margin-right: 1rem;\\n }\\n\\n button {\\n justify-content: center;\\n align-items: center;\\n min-width: 9rem;\\n min-height: 3rem;\\n gap: 0.5rem;\\n\\n --palette-primary-100-rgb: #4c5a69;\\n --palette-primary-500-rgb: #243142;\\n\\n &.mat-accent {\\n &:active {\\n --palette-primary-700-rgb: #4c5a69;\\n }\\n .mat-icon {\\n z-index: 1;\\n }\\n }\\n }\\n}\\n\\n::ng-deep {\\n .download-options-panel {\\n box-shadow: 0.1rem 0.1rem 0.4rem 0.2rem #dad7d7;\\n background-color: #ffffff;\\n }\\n}\\n","styleUrl":"./footer.component.scss"}],"stylesData":"","accessors":{"isSmall":{"name":"isSmall","getSignature":{"name":"isSmall","type":"boolean","returnType":"boolean","line":86,"rawdescription":"\\nGets whether the footer required is small","description":"

      Gets whether the footer required is small

      \\n"}}},"templateData":"\\n
      \\n\\n\\n\\n\\n download\\n Download\\n\\n\\n\\n\\n
      \\n\\n\\n\\n\\n\\n\\n \\n \\n {{ format.label }}\\n \\n \\n\\n"},{"name":"FullscreenContainerComponent","id":"component-FullscreenContainerComponent-78edc2b37cbc90a17be0fcca4ed7291593d5f3d12c4ea823de3f9510c13bad4492bc5cd65823726fc7e333c874880c17093ff9d20096fd92e20137c8cc4f75af","file":"src/lib/fullscreen/fullscreen-container.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-fullscreen-container","styleUrls":[],"styles":["\\n :host {\\n display: block;\\n position: relative;\\n }\\n "],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[{"name":"fullscreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA boolean input property that controls the fullscreen mode","description":"

      A boolean input property that controls the fullscreen mode

      \\n","line":38,"type":"boolean","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"content","deprecated":false,"deprecationMessage":"","type":"QueryList","optional":true,"description":"

      A property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component's content area

      \\n","line":35,"rawdescription":"\\nA property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component\'s content area","decorators":[{"name":"ContentChildren","stringifiedArguments":"FullscreenContentComponent"}],"modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component that wraps any child components of type FullscreenContentComponent and\\nsets their isFullScreen property to true or false based on its own fullscreen input property

      \\n","rawdescription":"\\nA component that wraps any child components of type FullscreenContentComponent and\\nsets their isFullScreen property to true or false based on its own fullscreen input property\\n","type":"component","sourceCode":"import {\\n AfterContentInit,\\n ChangeDetectionStrategy,\\n Component,\\n ContentChildren,\\n Input,\\n OnChanges,\\n QueryList,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { FullscreenContentComponent } from \'./fullscreen-content.component\';\\n\\n/** A component that wraps any child components of type FullscreenContentComponent and\\n * sets their isFullScreen property to true or false based on its own fullscreen input property\\n */\\n@Component({\\n selector: \'hra-fullscreen-container\',\\n standalone: true,\\n imports: [CommonModule, FullscreenContentComponent],\\n template: \'\',\\n styles: [\\n `\\n :host {\\n display: block;\\n position: relative;\\n }\\n `,\\n ],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FullscreenContainerComponent implements AfterContentInit, OnChanges {\\n /** A property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component\'s content area */\\n @ContentChildren(FullscreenContentComponent)\\n readonly content?: QueryList;\\n\\n /** A boolean input property that controls the fullscreen mode */\\n @Input() fullscreen = false;\\n\\n /** It calls the updateFullscreenMode method to set the isFullScreen property of the child\\n * FullscreenContentComponent instances based on the value of the fullscreen input property\\n */\\n ngAfterContentInit(): void {\\n this.updateFullscreenMode();\\n }\\n\\n /** It checks if the fullscreen input property has changed, and calls the updateFullscreenMode method if it has */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'fullscreen\' in changes) {\\n this.updateFullscreenMode();\\n }\\n }\\n\\n /** A private method that sets the isFullScreen property of each child FullscreenContentComponent based on the value of the fullscreen */\\n private updateFullscreenMode(): void {\\n this.content?.forEach((content) => {\\n content.isFullScreen = this.fullscreen;\\n });\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":"","stylesData":"\\n :host {\\n display: block;\\n position: relative;\\n }\\n \\n","implements":["AfterContentInit","OnChanges"]},{"name":"FullscreenContentComponent","id":"component-FullscreenContentComponent-6710fc01baaf0574ecee8c1610a0f285865856eb963b364d086ef5d9528a4680bd78469b881201a033e582734f9ab5cabb16aeef9e5e00bd2679e67b73a067d9","file":"src/lib/fullscreen/fullscreen-content.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-fullscreen-content","styleUrls":["./fullscreen-content.component.scss"],"styles":[],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"isFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":15,"rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","decorators":[{"name":"HostBinding","stringifiedArguments":"\'class.fullscreen-on\'"}]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[{"name":"class.fullscreen-on","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":15,"type":"boolean","decorators":[]}],"hostListeners":[],"description":"

      A component that displays its content in fullscreen mode when its isFullScreen property is set to true

      \\n","rawdescription":"\\nA component that displays its content in fullscreen mode when its isFullScreen property is set to true","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, HostBinding } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** A component that displays its content in fullscreen mode when its isFullScreen property is set to true */\\n@Component({\\n selector: \'hra-fullscreen-content\',\\n standalone: true,\\n imports: [CommonModule],\\n template: \'\',\\n styleUrls: [\'./fullscreen-content.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FullscreenContentComponent {\\n /** This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true */\\n @HostBinding(\'class.fullscreen-on\') isFullScreen = false;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n overflow-y: scroll;\\n\\n &.fullscreen-on {\\n position: absolute;\\n inset: 0;\\n z-index: 100;\\n }\\n}\\n","styleUrl":"./fullscreen-content.component.scss"}],"stylesData":""},{"name":"HeaderComponent","id":"component-HeaderComponent-81f5689eacf69c8f1658a62e299bcad0df485f2cc8e6664f3f16cfa7d30400e53a54549f6aa8125abb2fc207fb428887c0a19dde695063a2d92611d78d9c6956","file":"src/lib/header/header.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-header","styleUrls":["./header.component.scss"],"styles":[],"templateUrl":["./header.component.html"],"viewProviders":[],"inputsClass":[{"name":"aboutLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for about link","description":"

      Input for about link

      \\n","line":40,"type":"any","decorators":[]},{"name":"appTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for app title to show on the left side.\\n","description":"

      Input for app title to show on the left side.

      \\n","line":34,"type":"string","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for product logo URL to displayed on the left side.\\n","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":24,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for product title to displayed on the left side.\\n","description":"

      Input for product title to displayed on the left side.

      \\n","line":29,"type":"string","decorators":[]},{"name":"productTitleLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for Product Title link","description":"

      Input for Product Title link

      \\n","line":37,"type":"any","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Header component, displays on top of every page.

      \\n","rawdescription":"\\n\\nHeader component, displays on top of every page.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk\';\\n\\n/**\\n * Header component, displays on top of every page.\\n */\\n@Component({\\n selector: \'hra-header\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MatRippleModule, LinkDirective],\\n templateUrl: \'./header.component.html\',\\n styleUrls: [\'./header.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HeaderComponent {\\n /**\\n * Input for product logo URL to displayed on the left side.\\n */\\n @Input() productLogoUrl = \'\';\\n\\n /**\\n * Input for product title to displayed on the left side.\\n */\\n @Input() productTitle = \'\';\\n\\n /**\\n * Input for app title to show on the left side.\\n */\\n @Input() appTitle = \'\';\\n\\n /** Input for Product Title link */\\n @Input() productTitleLink = EMPTY_LINK;\\n\\n /** Input for about link */\\n @Input() aboutLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: flex;\\n align-items: center;\\n height: 5rem;\\n padding: 0 2rem 0 1rem;\\n\\n @include utils.define-flex-filler();\\n\\n h1 {\\n // Reset margins for h1 elements\\n margin: 0;\\n }\\n\\n .product {\\n display: flex;\\n align-items: center;\\n text-decoration: none;\\n // Style the ripple animation\\n padding: 0 1rem;\\n border-radius: 0.25rem;\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\\n .text {\\n margin-left: 1rem;\\n font-weight: 600;\\n color: vars.$accent-rgb;\\n }\\n }\\n\\n .app {\\n margin-left: 0.5rem;\\n }\\n\\n .about {\\n width: 9rem;\\n height: 3rem;\\n\\n .icon {\\n width: 1.5rem;\\n height: 1.5rem;\\n font-size: 1.5rem;\\n }\\n }\\n\\n @media (max-width: 30rem) {\\n height: 4.5rem;\\n\\n .product .text,\\n .about .text {\\n @include utils.sr-only();\\n }\\n\\n .product {\\n height: 2.5rem;\\n padding: 0 0.25rem;\\n\\n .logo {\\n width: 1.5rem;\\n height: 1.5rem;\\n }\\n }\\n\\n .app {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n }\\n\\n .about {\\n min-width: 2.5rem;\\n width: 2.5rem;\\n height: 2.5rem;\\n padding: 0;\\n\\n .icon {\\n margin: 0;\\n }\\n }\\n }\\n\\n @media (max-width: 20rem) {\\n padding: 0;\\n }\\n}\\n","styleUrl":"./header.component.scss"}],"stylesData":"","templateData":"\\n \\n

      {{ productTitle }}

      \\n
      \\n

      {{ appTitle }}

      \\n\\n
      \\n\\n\\n info_outlined\\n About\\n\\n"},{"name":"HraLandingPageIntroWcComponent","id":"component-HraLandingPageIntroWcComponent-57ba89b5fa60bec2ad59de1cc52e4d3002935eab8da7f77895b1d7b507237df7df5d8fa2fec4dd3ba498b8d06fc5f70758beb2ba67ccbb24f2819798948e81d4","file":"src/lib/hra-landing-page-intro-wc/hra-landing-page-intro-wc.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-ui-hra-landing-page-intro-wc","styleUrls":["./hra-landing-page-intro-wc.component.scss"],"styles":[],"templateUrl":["./hra-landing-page-intro-wc.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for FTU Explorer","description":"

      Description for FTU Explorer

      \\n","line":19,"type":"string","decorators":[]},{"name":"partners","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThank you message to partners","description":"

      Thank you message to partners

      \\n","line":22,"type":"string","decorators":[]},{"name":"readMore","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro Image file url","description":"

      Intro Image file url

      \\n","line":25,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro title for FTU Explorer","description":"

      Intro title for FTU Explorer

      \\n","line":16,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro - Web coomponent

      \\n","rawdescription":"\\nComponent for LandingPage Intro - Web coomponent","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Component for LandingPage Intro - Web coomponent */\\n@Component({\\n selector: \'hra-ui-hra-landing-page-intro-wc\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule],\\n templateUrl: \'./hra-landing-page-intro-wc.component.html\',\\n styleUrls: [\'./hra-landing-page-intro-wc.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HraLandingPageIntroWcComponent {\\n /** Intro title for FTU Explorer */\\n @Input() title = \'\';\\n\\n /** Description for FTU Explorer */\\n @Input() description = \'\';\\n\\n /** Thank you message to partners */\\n @Input() partners = \'\';\\n\\n /** Intro Image file url */\\n @Input() readMore = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n gap: 8px;\\n padding: 24px, 32px, 24px, 32px;\\n .title {\\n font-size: 20px;\\n font-family: Inter;\\n font-weight: 400;\\n line-height: 24px;\\n letter-spacing: 0em;\\n text-align: left;\\n }\\n\\n .description .partners .readMore {\\n font-family: Inter;\\n font-size: 16px;\\n font-weight: 400;\\n line-height: 24px;\\n letter-spacing: 0em;\\n text-align: left;\\n }\\n}\\n::ng-deep p {\\n margin: 0;\\n}\\n\\n::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n}\\n","styleUrl":"./hra-landing-page-intro-wc.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n\\n\\n\\n\\n\\n"},{"name":"InfoModalComponent","id":"component-InfoModalComponent-56dc03e6960f4005149bab8dbf6a5b713061505964f6b3cc7d33868ed7f83aff7dbf222ccf66999864c6313f218c20f849715b3ebcc4d2ea44285c6e07811662","file":"src/lib/info-modal/info-modal.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-info-modal","styleUrls":["./info-modal.component.scss"],"styles":[],"templateUrl":["./info-modal.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInformation modal message to the user","description":"

      Information modal message to the user

      \\n","line":24,"type":"string","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nProduct logo shown to the user","description":"

      Product logo shown to the user

      \\n","line":21,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nProduct title shown to the user","description":"

      Product title shown to the user

      \\n","line":18,"type":"string","decorators":[]}],"outputsClass":[{"name":"closeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the close icon is clicked","description":"

      Emits when the close icon is clicked

      \\n","line":27,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays an information modal to the user with the product title and logo and description

      \\n","rawdescription":"\\nDisplays an information modal to the user with the product title and logo and description","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Displays an information modal to the user with the product title and logo and description */\\n@Component({\\n selector: \'hra-info-modal\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MarkdownModule],\\n templateUrl: \'./info-modal.component.html\',\\n styleUrls: [\'./info-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class InfoModalComponent {\\n /** Product title shown to the user */\\n @Input() productTitle = \'\';\\n\\n /** Product logo shown to the user */\\n @Input() productLogoUrl = \'\';\\n\\n /** Information modal message to the user */\\n @Input() description = \'\';\\n\\n /** Emits when the close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n position: relative;\\n padding: 2rem 2rem 1.25rem 2rem;\\n\\n .close {\\n position: absolute;\\n top: 1.5rem;\\n right: 1.5rem;\\n }\\n\\n .title {\\n display: flex;\\n align-items: center;\\n\\n .product-logo-image {\\n height: 2.75rem;\\n margin-right: 1rem;\\n }\\n\\n .product-title {\\n margin: 0;\\n color: #990000;\\n }\\n }\\n\\n .description {\\n display: block;\\n margin-top: 1rem;\\n }\\n}\\n","styleUrl":"./info-modal.component.scss"}],"stylesData":"","templateData":"\\n \\"Prodoct\\n

      {{ productTitle }}

      \\n
      \\n\\n\\n\\n\\n"},{"name":"InteractiveSvgComponent","id":"component-InteractiveSvgComponent-985e710eb317dd3ff5ea26a7d11e504b64a31e68fa3680b8455ed3925acd6cb8cc0fbc37282dd5fa62df18c6514780783a2cf000f5bfeadbefaa7232ebdef28a","file":"src/lib/interactive-svg/interactive-svg.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":["ViewEncapsulation.ShadowDom"],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-interactive-svg","styleUrls":["./interactive-svg.component.scss"],"styles":[],"templateUrl":["./interactive-svg.component.html"],"viewProviders":[],"inputsClass":[{"name":"highlightId","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHighlighted ontology id","description":"

      Highlighted ontology id

      \\n","line":94,"type":"string","decorators":[]},{"name":"mapping","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nMapping info","description":"

      Mapping info

      \\n","line":91,"type":"T[]","decorators":[]},{"name":"url","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSVG url","description":"

      SVG url

      \\n","line":88,"type":"string","decorators":[]}],"outputsClass":[{"name":"nodeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits node id when clicked","description":"

      Emits node id when clicked

      \\n","line":100,"type":"EventEmitter"},{"name":"nodeHover","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits node id when hovered","description":"

      Emits node id when hovered

      \\n","line":97,"type":"EventEmitter"}],"propertiesClass":[{"name":"NEVER_EVAL_SCRIPTS","defaultValue":"SVGScriptEvalMode.NEVER","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      SVG script eval mode

      \\n","line":103,"rawdescription":"\\nSVG script eval mode","modifierKind":[144]},{"name":"nodeHoverData$","defaultValue":"new BehaviorSubject(undefined)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable of node hover data or undefined when there is no active hover

      \\n","line":109,"rawdescription":"\\nObservable of node hover data or undefined when there is no active hover","modifierKind":[144]},{"name":"nodeHoverDelayedData$","defaultValue":"this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)))","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable of node hover with a timer

      \\n","line":112,"rawdescription":"\\nObservable of node hover with a timer","modifierKind":[144]},{"name":"TOOLTIP_POSITIONS","defaultValue":"TOOLTIP_POSITIONS","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Tooltip position settings

      \\n","line":106,"rawdescription":"\\nTooltip position settings","modifierKind":[144]}],"methodsClass":[{"name":"formatNodeName","args":[{"name":"name","type":"string","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"string","typeParameters":[],"line":196,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nRemoves underscores from id\\n","description":"

      Removes underscores from id

      \\n","jsdoctags":[{"name":{"pos":4993,"end":4997,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"name"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4987,"end":4992,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Node name

      \\n"},{"tagName":{"pos":5014,"end":5021,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      node name without underscores

      \\n"}]},{"name":"setSvgElement","args":[{"name":"el","type":"SVGElement","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":181,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nSets SVG element\\n","description":"

      Sets SVG element

      \\n","jsdoctags":[{"name":{"pos":4595,"end":4597,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"el"},"type":"SVGElement","deprecated":false,"deprecationMessage":"","tagName":{"pos":4589,"end":4594,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      SVG element

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Interactive SVG component

      \\n","rawdescription":"\\n\\nInteractive SVG component\\n","type":"component","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.nodeHoverData$.next(undefined));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":".svg {\\n max-height: calc(100vh - 14rem);\\n overflow-y: auto;\\n}\\nsvg {\\n max-height: calc(100vh - 10rem);\\n width: 100%;\\n}\\n\\n[id^=\'Crosswalk\'] {\\n :is(path, polygon, polyline) {\\n fill: transparent;\\n stroke: transparent;\\n }\\n\\n .hover-active & g:hover > :is(path, polygon, polyline),\\n .hover-active & g > g:hover > :is(path, polygon, polyline),\\n .click-active {\\n fill: hsl(0deg 100% 50%);\\n mix-blend-mode: saturation;\\n }\\n}\\n","styleUrl":"./interactive-svg.component.scss"}],"stylesData":"","implements":["OnChanges","OnDestroy"],"templateData":"\\n\\n\\n \\n \\n \\n\\n"},{"name":"LandingPageInDepthComponent","id":"component-LandingPageInDepthComponent-266cc77d12f81268af62a259a42675f25c0be65e3cab6881ce7afcd3dbaa4ab87e767f669fc822ea592327de677787a00c9eb4a5b9b1171d78fe6aefc8cc439b","file":"src/lib/landing-page-in-depth/landing-page-in-depth.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-landing-page-in-depth","styleUrls":["./landing-page-in-depth.component.scss"],"styles":[],"templateUrl":["./landing-page-in-depth.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage description shown to the user","description":"

      Image description shown to the user

      \\n","line":24,"type":"string","decorators":[]},{"name":"img","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage shown to the user","description":"

      Image shown to the user

      \\n","line":27,"type":"string","decorators":[]},{"name":"moreLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLink to navigate to on more button click","description":"

      Link to navigate to on more button click

      \\n","line":33,"type":"any","decorators":[]},{"name":"moreText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nText for more button","description":"

      Text for more button

      \\n","line":30,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage title shown to the user","description":"

      Image title shown to the user

      \\n","line":21,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays the image and also corresponding title and text along with a button to read more

      \\n","rawdescription":"\\n\\nDisplays the image and also corresponding title and text along with a button to read more\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n * Displays the image and also corresponding title and text along with a button to read more\\n */\\n@Component({\\n selector: \'hra-landing-page-in-depth\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule, MatButtonModule, MatIconModule, LinkDirective],\\n templateUrl: \'./landing-page-in-depth.component.html\',\\n styleUrls: [\'./landing-page-in-depth.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageInDepthComponent {\\n /** Image title shown to the user */\\n @Input() title = \'\';\\n\\n /** Image description shown to the user */\\n @Input() description = \'\';\\n\\n /** Image shown to the user */\\n @Input() img = \'\';\\n\\n /** Text for more button */\\n @Input() moreText = \'\';\\n\\n /** Link to navigate to on more button click */\\n @Input() moreLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 2fr 3fr;\\n grid-template-rows: auto auto 1fr;\\n column-gap: 2rem;\\n row-gap: 2rem;\\n padding: 3.5rem 2rem;\\n\\n .image {\\n grid-column: 1;\\n grid-row: 1 / span 3;\\n width: 100%;\\n height: auto;\\n align-self: center;\\n border-radius: 1rem;\\n box-shadow: 0.06rem 0.13rem 1rem 0.13rem #00000029;\\n }\\n\\n .title {\\n font-size: 2rem;\\n line-height: 2.5rem;\\n margin: 0;\\n }\\n\\n .description {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n\\n ::ng-deep p {\\n margin: 0;\\n }\\n\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n }\\n\\n .more-button {\\n width: fit-content;\\n height: 3rem;\\n }\\n}\\n","styleUrl":"./landing-page-in-depth.component.scss"}],"stylesData":"","templateData":"\\"\\"\\n

      {{ title }}

      \\n\\n\\n"},{"name":"LandingPageIntroComponent","id":"component-LandingPageIntroComponent-8e48a2ad3d32eea60c9dee7976b3dbc195b3a8107a3c174ac68b4696362903f19522bad089b509daae23505334aa5361945e7a8124fd32f17a6834c349c87aed","file":"src/lib/landing-page-intro/landing-page-intro.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-landing-page-intro","styleUrls":["./landing-page-intro.component.scss"],"styles":[],"templateUrl":["./landing-page-intro.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for FTU Explorer","description":"

      Description for FTU Explorer

      \\n","line":22,"type":"string","decorators":[]},{"name":"img","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro Image file url","description":"

      Intro Image file url

      \\n","line":28,"type":"string","decorators":[]},{"name":"moreLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLink to navigate to on more button click","description":"

      Link to navigate to on more button click

      \\n","line":34,"type":"any","decorators":[]},{"name":"moreText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nText for more button","description":"

      Text for more button

      \\n","line":31,"type":"string","decorators":[]},{"name":"partners","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThank you message to partners","description":"

      Thank you message to partners

      \\n","line":25,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro title for FTU Explorer","description":"

      Intro title for FTU Explorer

      \\n","line":19,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro

      \\n","rawdescription":"\\nComponent for LandingPage Intro","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Component for LandingPage Intro */\\n@Component({\\n selector: \'hra-landing-page-intro\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MarkdownModule, LinkDirective],\\n templateUrl: \'./landing-page-intro.component.html\',\\n styleUrls: [\'./landing-page-intro.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageIntroComponent {\\n /** Intro title for FTU Explorer */\\n @Input() title = \'\';\\n\\n /** Description for FTU Explorer */\\n @Input() description = \'\';\\n\\n /** Thank you message to partners */\\n @Input() partners = \'\';\\n\\n /** Intro Image file url */\\n @Input() img = \'\';\\n\\n /** Text for more button */\\n @Input() moreText = \'\';\\n\\n /** Link to navigate to on more button click */\\n @Input() moreLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 3fr 2fr;\\n grid-template-rows: auto auto 3rem 1fr;\\n align-items: start;\\n column-gap: 2rem;\\n row-gap: 2rem;\\n\\n .title {\\n font-size: 3rem;\\n line-height: 4rem;\\n margin: 0;\\n }\\n\\n .more-button {\\n width: fit-content;\\n height: 3rem;\\n }\\n\\n .image {\\n grid-column: 2;\\n grid-row: 1 / span 4;\\n place-self: center;\\n width: 100%;\\n height: auto;\\n }\\n\\n .description,\\n .partners {\\n ::ng-deep p {\\n margin: 0;\\n }\\n\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n }\\n}\\n","styleUrl":"./landing-page-intro.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n\\n\\n\\n\\n\\"alt\\"\\n"},{"name":"MetricsComponent","id":"component-MetricsComponent-e52c0a1cdf090042d1924c4907a4034774cbb442217faca9ec5035e76d2796116cf55644ecf49ae040fdea1168f9c5d99f6ce15b2079f70de3d853fece481b30","file":"src/lib/metrics/metrics.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-metrics","styleUrls":["./metrics.component.scss"],"styles":[],"templateUrl":["./metrics.component.html"],"viewProviders":[],"inputsClass":[{"name":"logo","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLogo of metrics component.","description":"

      Logo of metrics component.

      \\n","line":31,"type":"string","decorators":[]},{"name":"metrics","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nList of metrics that will be shown to the user.","description":"

      List of metrics that will be shown to the user.

      \\n","line":34,"type":"MetricItem[]","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nMain title of metrics component.","description":"

      Main title of metrics component.

      \\n","line":28,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Describes the metrics for the HuBMAP project.

      \\n","rawdescription":"\\n\\nDescribes the metrics for the HuBMAP project.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n An interface representing a single metric with an icon, value and description.\\n */\\nexport interface MetricItem {\\n /** Represents the icon associated with the metric. */\\n icon: string;\\n /** Describes the numberical value of the metric. */\\n value: string;\\n /** Describes the type of metric. */\\n description: string;\\n}\\n/**\\n * Describes the metrics for the HuBMAP project.\\n */\\n@Component({\\n selector: \'hra-metrics\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./metrics.component.html\',\\n styleUrls: [\'./metrics.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MetricsComponent {\\n /** Main title of metrics component. */\\n @Input() title = \'\';\\n\\n /** Logo of metrics component. */\\n @Input() logo = \'\';\\n\\n /** List of metrics that will be shown to the user. */\\n @Input() metrics: MetricItem[] = [];\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n padding: 2rem 0 0 0;\\n background: #f8f9fa;\\n gap: 0.5rem;\\n\\n .logo {\\n height: 2.75rem;\\n }\\n\\n .header-title {\\n font-size: 2rem;\\n line-height: 2.5rem;\\n }\\n\\n .metrics {\\n display: flex;\\n flex-direction: row;\\n overflow-x: auto;\\n max-width: 100%;\\n gap: 2rem;\\n padding: 2rem 1.75rem;\\n\\n .metric {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n min-width: 14.25rem;\\n height: 14.75rem;\\n padding-top: 2rem;\\n padding-bottom: 2rem;\\n\\n .logo {\\n margin-bottom: 2rem;\\n }\\n\\n .value {\\n font-size: 3rem;\\n line-height: 4rem;\\n margin-bottom: 0.25rem;\\n }\\n\\n .description {\\n font-size: 1rem;\\n text-align: center;\\n }\\n }\\n }\\n}\\n","styleUrl":"./metrics.component.scss"}],"stylesData":"","templateData":"\\"\\"\\n{{ title }}\\n\\n
      \\n
      \\n \\"\\"\\n {{ item.value }} \\n {{ item.description }} \\n
      \\n
      \\n"},{"name":"ScreenSizeNoticeComponent","id":"component-ScreenSizeNoticeComponent-6b641a220201d969fb228ecf72f5e7a8fc87da742b8a53350bc9c27cea9c54a6493313826b99ec8c34dfd7004772a27748e45af5b0c9ead80bdf168a781117f8","file":"src/lib/screen-size-notice/screen-size-notice.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-screen-size-notice","styleUrls":["./screen-size-notice.component.scss"],"styles":[],"templateUrl":["./screen-size-notice.component.html"],"viewProviders":[],"inputsClass":[{"name":"content","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for passing screen size notice content\\n","description":"

      Input for passing screen size notice content

      \\n","line":23,"type":"string","decorators":[]},{"name":"portal","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput of screen size notice component\\n","description":"

      Input of screen size notice component

      \\n","line":28,"type":"any","decorators":[]}],"outputsClass":[{"name":"proceedClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the proceed button is clicked","description":"

      Emits when the proceed button is clicked

      \\n","line":31,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The screen size notice component displays a notice for the users specifying the required screen size

      \\n","rawdescription":"\\n\\nThe screen size notice component displays a notice for the users specifying the required screen size\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\n\\n/**\\n * The screen size notice component displays a notice for the users specifying the required screen size\\n */\\n@Component({\\n selector: \'hra-screen-size-notice\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule, MatButtonModule, MatIconModule, LinkDirective],\\n templateUrl: \'./screen-size-notice.component.html\',\\n styleUrls: [\'./screen-size-notice.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ScreenSizeNoticeComponent {\\n /**\\n * Input for passing screen size notice content\\n */\\n @Input() content = \'\';\\n\\n /**\\n * Input of screen size notice component\\n */\\n @Input() portal = EMPTY_LINK;\\n\\n /** Emits when the proceed button is clicked */\\n @Output() readonly proceedClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: none;\\n position: relative;\\n border-radius: 0.5rem;\\n padding: 1.5rem;\\n flex-direction: column;\\n\\n .header-close {\\n position: absolute;\\n top: 0.625rem;\\n right: 1rem;\\n }\\n\\n h3 {\\n margin: 0 0 1rem 0;\\n font-weight: 700;\\n }\\n\\n .btn-stroked {\\n font-weight: 700;\\n margin-bottom: 1rem;\\n margin-top: 1rem;\\n padding: 0.75rem 0;\\n letter-spacing: 0.5px;\\n }\\n\\n .btn-flat {\\n font-weight: 700;\\n font-size: 16px;\\n padding: 0.75rem 0;\\n letter-spacing: 0.5px;\\n color: white;\\n }\\n\\n .content {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n letter-spacing: 0.5px;\\n }\\n\\n @media (max-width: 480px) {\\n display: flex;\\n }\\n}\\n","styleUrl":"./screen-size-notice.component.scss"}],"stylesData":"","templateData":"

      Screen Size Notice

      \\n\\n\\n\\n Human Reference Atlas Portal \\n"},{"name":"SourceListComponent","id":"component-SourceListComponent-3e55f2d90acdd1770d63ee01d7cb04bfb862e234a989f6253c27f416e0d0d33c9fd51a594ccdd21bb13acf50a7076f9a951f5f110e2d6c319be91dfc009e7d61","file":"src/lib/source-list/source-list.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-source-list","styleUrls":["./source-list.component.scss"],"styles":[],"templateUrl":["./source-list.component.html"],"viewProviders":[],"inputsClass":[{"name":"sources","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nList of sources with titles and links displayed to the user","description":"

      List of sources with titles and links displayed to the user

      \\n","line":30,"type":"SourceListItem[]","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"showTable","defaultValue":"true","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Show table of source list component which toggles to true or false\\nbased on click

      \\n","line":35,"rawdescription":"\\n\\nShow table of source list component which toggles to true or false\\nbased on click\\n"}],"methodsClass":[{"name":"toggleTable","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":41,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nIt changes the value of showTable to false if value it true\\nand vice versa\\n","description":"

      It changes the value of showTable to false if value it true\\nand vice versa

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      This component shows list of sources with title and links to the datasets

      \\n","rawdescription":"\\nThis component shows list of sources with title and links to the datasets","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/** SourceListItem interface contains title and link to the dataset for the SourceList*/\\nexport interface SourceListItem {\\n /** Title of the dataset in the SourceList */\\n title: string;\\n\\n /** Label of the dataset in the SourceList */\\n label: string;\\n\\n /** Link to the dataset in the SourceList */\\n link: string;\\n}\\n\\n/** This component shows list of sources with title and links to the datasets */\\n@Component({\\n selector: \'hra-source-list\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule, MatIconModule, LabelBoxComponent],\\n templateUrl: \'./source-list.component.html\',\\n styleUrls: [\'./source-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SourceListComponent {\\n /** List of sources with titles and links displayed to the user */\\n @Input() sources: SourceListItem[] = [];\\n /**\\n * Show table of source list component which toggles to true or false\\n * based on click\\n */\\n showTable = true;\\n\\n /**\\n * It changes the value of showTable to false if value it true\\n * and vice versa\\n */\\n toggleTable(): void {\\n this.showTable = !this.showTable;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n\\n @include utils.define-flex-filler();\\n\\n h1 {\\n margin: 0;\\n }\\n\\n .mat-mdc-cell {\\n vertical-align: top;\\n border: none;\\n padding: 0.25rem 0.875rem;\\n font-size: 1rem;\\n }\\n\\n .filler {\\n width: 30rem;\\n }\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n\\n .table-content {\\n height: calc(100vh - 25rem);\\n overflow: auto;\\n }\\n\\n .toggle {\\n margin-bottom: 1rem;\\n display: flex;\\n align-items: center;\\n width: 43rem;\\n height: 3.5rem;\\n grid-area: source-list-header;\\n color: var(--dark-primary-text);\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n .mat-icon {\\n margin-left: 32rem;\\n }\\n }\\n\\n .hidden {\\n display: none;\\n }\\n}\\n","styleUrl":"./source-list.component.scss"}],"stylesData":"","templateData":"\\n Source Data\\n \\n {{ showTable ? \'keyboard_arrow_down\' : \'keyboard_arrow_up\' }}\\n \\n\\n\\n
      \\n \\n \\n\\n \x3c!-- Position Column --\x3e\\n \\n \\n \\n \\n\\n \x3c!-- Data Column --\x3e\\n \\n \\n \\n \\n\\n \\n
      \\n Source List Table with Title and Links\\n
      Item Number{{ i + 1 }}.Title and Link\\n {{ element.title }}\\n
      \\n {{ element.label }}\\n
      \\n
      \\n"},{"name":"TissueTreeListComponent","id":"component-TissueTreeListComponent-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-tissue-tree-list","styleUrls":["./tissue-tree-list.component.scss"],"styles":[],"templateUrl":["./tissue-tree-list.component.html"],"viewProviders":[],"inputsClass":[{"name":"nodes","defaultValue":"{} as Record","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput of tissue tree list component\\n","description":"

      Input of tissue tree list component

      \\n","line":69,"type":"Record","decorators":[]},{"name":"selected","defaultValue":"undefined","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nNode selected, to view the data associated with it\\n","description":"

      Node selected, to view the data associated with it

      \\n","line":74,"type":"T","decorators":[]}],"outputsClass":[{"name":"selectedChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nOutput of tissue tree list component\\n","description":"

      Output of tissue tree list component

      \\n","line":79,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n )","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      tree controller, used to control the nodes in the tree

      \\n","line":84,"rawdescription":"\\n\\ntree controller, used to control the nodes in the tree\\n","modifierKind":[144]},{"name":"dataSource","defaultValue":"new MatTreeFlatDataSource(this.control, this.flattener)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Data source of tissue tree list component, defines the data in mat-tree

      \\n","line":107,"rawdescription":"\\n\\nData source of tissue tree list component, defines the data in mat-tree\\n","modifierKind":[144]},{"name":"flattener","defaultValue":"new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n )","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Flattener of tissue tree list component, returns flat-data structure

      \\n","line":92,"rawdescription":"\\n\\nFlattener of tissue tree list component, returns flat-data structure\\n","modifierKind":[144]}],"methodsClass":[{"name":"hasChild","args":[{"name":"_","type":"number","deprecated":false,"deprecationMessage":""},{"name":"node","type":"InternalNode","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"boolean","typeParameters":[],"line":128,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ncheck if the current node has children\\n","description":"

      check if the current node has children

      \\n","jsdoctags":[{"name":"_","type":"number","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":3422,"end":3426,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"node"},"type":"InternalNode","deprecated":false,"deprecationMessage":"","tagName":{"pos":3416,"end":3421,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      current selected node

      \\n"},{"tagName":{"pos":3455,"end":3462,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      boolean, which means if node has children

      \\n"}]},{"name":"resetSelection","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":146,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nResets selection and collapes all nodes of the tree.\\n","description":"

      Resets selection and collapes all nodes of the tree.

      \\n"},{"name":"selectNode","args":[{"name":"node","type":"T","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":136,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nIt selects the node, which is clicked.\\n","description":"

      It selects the node, which is clicked.

      \\n","jsdoctags":[{"name":{"pos":3665,"end":3669,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"node"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":3659,"end":3664,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Tissue Tree Item, which is clicked

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Tabular View for hubMap tissue side-bar

      \\n","rawdescription":"\\n\\nTabular View for hubMap tissue side-bar\\n","type":"component","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n\\n .row {\\n min-height: 2rem;\\n &.child {\\n padding: 5px 0 5px 64px;\\n }\\n &.selected {\\n background-color: vars.$accent-lighter-rgb;\\n }\\n\\n .toggle {\\n width: 2rem;\\n height: 2rem;\\n padding: 0.25rem;\\n }\\n\\n .label-container {\\n display: flex;\\n align-items: center;\\n height: 2rem;\\n padding: 0 1rem;\\n border-radius: 0.25rem;\\n\\n .link {\\n cursor: pointer;\\n text-decoration: none;\\n color: rgba(vars.$dark-primary-text);\\n }\\n }\\n\\n &.selected .label-container .link {\\n color: vars.$accent-rgb;\\n }\\n }\\n}\\n","styleUrl":"./tissue-tree-list.component.scss"}],"stylesData":"","implements":["OnChanges"],"templateData":"\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n\\n\\n\\n
      \\n \\n {{ label }}\\n \\n \\n {{ label }}\\n \\n
      \\n
      \\n"},{"name":"TitleCardComponent","id":"component-TitleCardComponent-dda33e0370aff82797f5b3494c98b25f59e8b87daefd03e828cec8116928222c19885f73255625acfce7c66d590784fd1ad8faa664dac65130f8119fc2670670","file":"src/lib/title-card/title-card.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-title-card","styleUrls":["./title-card.component.scss"],"styles":[],"templateUrl":["./title-card.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for the title card shown to the user","description":"

      Description for the title card shown to the user

      \\n","line":19,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTitle for the title card shown to the user","description":"

      Title for the title card shown to the user

      \\n","line":16,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays title card to the user with title and description

      \\n","rawdescription":"\\nDisplays title card to the user with title and description","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Displays title card to the user with title and description */\\n@Component({\\n selector: \'hra-title-card\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule],\\n templateUrl: \'./title-card.component.html\',\\n styleUrls: [\'./title-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TitleCardComponent {\\n /** Title for the title card shown to the user*/\\n @Input() title = \'\';\\n\\n /** Description for the title card shown to the user*/\\n @Input() description = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n","styleUrl":"./title-card.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n"}],"modules":[],"miscellaneous":{"variables":[{"name":"DOWNLOADS_LIST_POSITION","ctype":"miscellaneous","subtype":"variable","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n]","rawdescription":"Positioning value for the download list popup","description":"

      Positioning value for the download list popup

      \\n"},{"name":"EMPTY_CONTACT_DATA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"Partial","defaultValue":"{\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n}","rawdescription":"Initial empty contact data","description":"

      Initial empty contact data

      \\n"},{"name":"HOVER_DELAY","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"number","defaultValue":"200","rawdescription":"Delay before tooltip becomes visible","description":"

      Delay before tooltip becomes visible

      \\n"},{"name":"TOOLTIP_POSITIONS","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n]","rawdescription":"Tooltip position settings","description":"

      Tooltip position settings

      \\n"}],"functions":[],"typealiases":[],"enumerations":[],"groupedVariables":{"src/lib/footer/footer.component.ts":[{"name":"DOWNLOADS_LIST_POSITION","ctype":"miscellaneous","subtype":"variable","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n]","rawdescription":"Positioning value for the download list popup","description":"

      Positioning value for the download list popup

      \\n"}],"src/lib/contact-modal/contact-modal.component.ts":[{"name":"EMPTY_CONTACT_DATA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"Partial","defaultValue":"{\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n}","rawdescription":"Initial empty contact data","description":"

      Initial empty contact data

      \\n"}],"src/lib/interactive-svg/interactive-svg.component.ts":[{"name":"HOVER_DELAY","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"number","defaultValue":"200","rawdescription":"Delay before tooltip becomes visible","description":"

      Delay before tooltip becomes visible

      \\n"},{"name":"TOOLTIP_POSITIONS","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n]","rawdescription":"Tooltip position settings","description":"

      Tooltip position settings

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{}}}')},"./dist/compodoc/components-organisms/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"DataCell","id":"interface-DataCell-8184af54c2f6160c9b2d42822572e9b264f75fd4f946f4d5820f757cd703d36c9aad63db881dac21526dcf80389e4cc8938378e742a088b11fc047da063a9bbb","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","properties":[{"name":"color","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Represents the color of the icon

      \\n","line":22,"rawdescription":"\\nRepresents the color of the icon"},{"name":"data","deprecated":false,"deprecationMessage":"","type":"literal type","optional":false,"description":"

      Represents the data for the data card

      \\n","line":26,"rawdescription":"\\nRepresents the data for the data card"},{"name":"size","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Represents the size of the icon

      \\n","line":24,"rawdescription":"\\nRepresents the size of the icon"}],"indexSignatures":[],"kind":165,"description":"

      An interface representing a single cell of the table.

      \\n","rawdescription":"\\n\\nAn interface representing a single cell of the table.\\n","methods":[]},{"name":"TissueInfo","id":"interface-TissueInfo-8184af54c2f6160c9b2d42822572e9b264f75fd4f946f4d5820f757cd703d36c9aad63db881dac21526dcf80389e4cc8938378e742a088b11fc047da063a9bbb","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","properties":[{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      ID of the Tissue

      \\n","line":40,"rawdescription":"\\nID of the Tissue"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Name of the Tissue

      \\n","line":42,"rawdescription":"\\nName of the Tissue"}],"indexSignatures":[],"kind":165,"description":"

      Details of the Tissue

      \\n","rawdescription":"\\n\\nDetails of the Tissue\\n","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerTableComponent","id":"component-BiomarkerTableComponent-8184af54c2f6160c9b2d42822572e9b264f75fd4f946f4d5820f757cd703d36c9aad63db881dac21526dcf80389e4cc8938378e742a088b11fc047da063a9bbb","file":"src/lib/biomarker-table/biomarker-table.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table","styleUrls":["./biomarker-table.component.scss"],"styles":[],"templateUrl":["./biomarker-table.component.html"],"viewProviders":[],"inputsClass":[{"name":"columns","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nColumns for the table","description":"

      Columns for the table

      \\n","line":73,"type":"string[]","decorators":[]},{"name":"data","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRows of the table","description":"

      Rows of the table

      \\n","line":76,"type":"DataRow[]","decorators":[]},{"name":"gradient","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nGradient colors along with their stop points","description":"

      Gradient colors along with their stop points

      \\n","line":79,"type":"GradientPoint[]","decorators":[]},{"name":"sizes","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":82,"type":"SizeLegend[]","decorators":[]},{"name":"tissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n }","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput: TissueInfo carrying the details of the tissue open\\n","description":"

      Input: TissueInfo carrying the details of the tissue open

      \\n","line":67,"type":"TissueInfo","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"dataSource","defaultValue":"new MatTableDataSource>([])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Source for the table

      \\n","line":90,"rawdescription":"\\nSource for the table","modifierKind":[144]}],"methodsClass":[{"name":"getColor","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"string","typeParameters":[],"line":162,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nCalculates the color of this value on this gradient\\n","description":"

      Calculates the color of this value on this gradient

      \\n","jsdoctags":[{"name":{"pos":4681,"end":4686,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":4675,"end":4680,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":4693,"end":4700,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getHoverData","args":[{"type":"[number, DataRow]","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"[][]","typeParameters":[],"line":189,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nrocesses the object for hover data for Table Cell\\n","description":"

      rocesses the object for hover data for Table Cell

      \\n","jsdoctags":[{"type":"[number, DataRow]","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":5415,"end":5422,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getMinMaxColor","args":[{"name":"meanExpression","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"literal type","typeParameters":[],"line":130,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets Min and Max color grade based on the meanExpression value\\n","description":"

      Gets Min and Max color grade based on the meanExpression value

      \\n","jsdoctags":[{"name":{"pos":3448,"end":3462,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"meanExpression"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3442,"end":3447,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3469,"end":3476,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getMinMaxSize","args":[{"name":"percentage","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"literal type","typeParameters":[],"line":148,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets Min and Max size grade based on the Percentage value\\n","description":"

      Gets Min and Max size grade based on the Percentage value

      \\n","jsdoctags":[{"name":{"pos":4102,"end":4112,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"percentage"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":4096,"end":4101,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":4119,"end":4126,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getSize","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"number","typeParameters":[],"line":178,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ngets Size of the Cell based on the percentage value\\n","description":"

      gets Size of the Cell based on the percentage value

      \\n","jsdoctags":[{"name":{"pos":5084,"end":5089,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":5078,"end":5083,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":5096,"end":5103,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"hex2rgb","args":[{"name":"hex","type":"string","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"RGBTriplet","typeParameters":[],"line":118,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nConverts HexCode to RGB\\n","description":"

      Converts HexCode to RGB

      \\n","jsdoctags":[{"name":{"pos":3139,"end":3142,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"hex"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3133,"end":3138,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3149,"end":3156,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"lerp","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""},{"name":"min","type":"number","deprecated":false,"deprecationMessage":""},{"name":"max","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"number","typeParameters":[],"line":109,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nLerp function to give value beween min and max value based on the given value\\n\\n","description":"

      Lerp function to give value beween min and max value based on the given value

      \\n","jsdoctags":[{"name":{"pos":2927,"end":2932,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":2921,"end":2926,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"name":{"pos":2945,"end":2948,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"min"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":2939,"end":2944,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"name":{"pos":2961,"end":2964,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"max"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":2955,"end":2960,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":2971,"end":2978,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Cell types table, describing the types and quanitites of cells for a specific organ

      \\n","rawdescription":"\\nCell types table, describing the types and quanitites of cells for a specific organ","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n max-height: 16.5rem;\\n max-width: 43rem;\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n\\n .table {\\n margin-left: -1px;\\n .emptyFiller {\\n padding: 1.3rem;\\n }\\n }\\n .table th {\\n background-color: #fff7f8;\\n color: #59264d;\\n text-align: right;\\n }\\n\\n .table td {\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-left: 0.063rem solid #d3d3d3;\\n }\\n\\n .table tr:first-child td {\\n border-top: 0rem solid #d3d3d3;\\n }\\n\\n tr > td:first-child {\\n text-align: left;\\n padding: 0 2rem;\\n }\\n\\n tr > th:first-child {\\n text-align: left;\\n padding: 0 2rem;\\n }\\n\\n tr > td:last-of-type {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n tr > th:last-of-type {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n .type {\\n height: 3rem;\\n max-width: 26rem;\\n min-width: 17rem;\\n border-radius: 0rem;\\n white-space: nowrap;\\n }\\n\\n .count {\\n text-align: right;\\n height: 3rem;\\n min-width: 6.5rem;\\n }\\n\\n .icon-header {\\n max-width: 5rem;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n }\\n\\n .icon-cell {\\n max-width: 5rem;\\n min-height: 3rem;\\n\\n .icon {\\n margin: auto;\\n }\\n }\\n}\\n\\n::ng-deep .mat-mdc-tab-header {\\n margin-left: -1px !important;\\n}\\n\\n::ng-deep .biomarker-table-hover.full-column-name {\\n display: flex;\\n padding: 1rem 1.5rem;\\n border-radius: 0.5rem;\\n box-shadow: 0.063rem 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n background-color: vars.$primary-contrast-rgb;\\n overflow: auto;\\n max-width: fit-content;\\n}\\n","styleUrl":"./biomarker-table.component.scss"}],"stylesData":"","implements":["OnChanges"],"accessors":{"columnsWithTypeAndCount":{"name":"columnsWithTypeAndCount","getSignature":{"name":"columnsWithTypeAndCount","type":"[]","returnType":"string[]","line":85,"rawdescription":"\\nGetter method to provide the definations of the columns","description":"

      Getter method to provide the definations of the columns

      \\n"}}},"templateData":"\\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n
      \\n Cell type table by Biomarker\\n
      Cell Type\\n {{ element[0] }}\\n Cell Count\\n {{ element[1] !== undefined ? (element[1] | number) : \'no data\' }}\\n \\n {{ column }}\\n \\n \\n \\n\\n \\n
      \\n
      \\n
      \\n\\n\\n
      \\n {{ columnName }}\\n
      \\n
      \\n\\n\\n \\n\\n"}],"modules":[],"miscellaneous":{"variables":[],"functions":[],"typealiases":[{"name":"DataRow","ctype":"miscellaneous","subtype":"typealias","rawtype":"[string, , ...[]]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      Describes the composition of a single row in the table

      \\n","kind":183},{"name":"RGBTriplet","ctype":"miscellaneous","subtype":"typealias","rawtype":"[number, number, number]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      RGBTriblet of type RGB to store color

      \\n","kind":183}],"enumerations":[],"groupedVariables":{},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{"src/lib/biomarker-table/biomarker-table.component.ts":[{"name":"DataRow","ctype":"miscellaneous","subtype":"typealias","rawtype":"[string, , ...[]]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      Describes the composition of a single row in the table

      \\n","kind":183},{"name":"RGBTriplet","ctype":"miscellaneous","subtype":"typealias","rawtype":"[number, number, number]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      RGBTriblet of type RGB to store color

      \\n","kind":183}]}}}')},"./dist/compodoc/shared-theming/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[],"injectables":[{"name":"ThemingState","id":"injectable-ThemingState-bc96eb085e9f41108d0a07c93ef58359e93bf96384f9b49b4e90d3f6f570a75ca04b1bd6fce0878c0c58715039571f02f400086da7f63acae3a2987851ae31fa","file":"src/lib/state/theming.state.ts","properties":[],"methods":[{"name":"load","args":[{"name":"ctx","type":"ThemingContext","deprecated":false,"deprecationMessage":""},{"type":"Load","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable<>","typeParameters":[],"line":44,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAction for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.\\n","description":"

      Action for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Load"}],"jsdoctags":[{"name":{"pos":1096,"end":1099,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ThemingContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1090,"end":1095,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State Context

      \\n"},{"type":"Load","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":1173,"end":1180,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      asyncronous data from the url

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State for keeping track of theming applied

      \\n","rawdescription":"\\n\\nState for keeping track of theming applied\\n","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { MaterialCssVariables, MaterialCssVarsService } from \'angular-material-css-vars\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable, tap } from \'rxjs\';\\nimport { Load } from \'./theming.actions\';\\nimport { ThemingContext, ThemingModel, THEMING_FILE_SCHEMA } from \'./theming.model\';\\n\\n/**\\n * State for keeping track of theming applied\\n */\\n@State({\\n /**\\n * name of the state\\n */\\n name: \'theming\',\\n /**\\n * state variables default value\\n */\\n defaults: {},\\n})\\n/**\\n * Theming state class\\n */\\n@Injectable()\\nexport class ThemingState {\\n /**\\n * http service for link loading\\n */\\n private readonly http = inject(HttpClient);\\n /**\\n * Material-vars service for setting theming variables\\n */\\n private readonly materialVars = inject(MaterialCssVarsService);\\n\\n /**\\n * Action for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.\\n * @param ctx State Context\\n * @param action Action with url(yaml url) to load\\n * @returns asyncronous data from the url\\n */\\n @Action(Load)\\n load(ctx: ThemingContext, { url }: Load): Observable {\\n return this.http.get(url, { responseType: \'text\' }).pipe(\\n map((data) => load(data, { filename: url })),\\n map((data) => THEMING_FILE_SCHEMA.parse(data)),\\n tap((data) => ctx.setState(data)),\\n tap((data) => this.setVariables(data))\\n );\\n }\\n\\n /**\\n * Set values to the material-css-vars pallete keys\\n * @param data key-value pairs set in state\\n */\\n private setVariables(data: ThemingModel): void {\\n for (const [key, value] of Object.entries(data)) {\\n this.materialVars.setVariable(key as MaterialCssVariables, value);\\n }\\n }\\n}\\n","type":"injectable"}],"guards":[],"interceptors":[],"classes":[{"name":"Load","id":"class-Load-469f09c45915febbba378ba114f9cebc6d6342ca6e618a54edaa277bdc8b3fbbce18cea9b8c908ad8794b8a3f9a2fac6a9e21ab80e6e979fda2c08bca4eb995b","file":"src/lib/state/theming.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"export class Load {\\n /**\\n * static type for the action\\n */\\n static readonly type = \'[Theming] Load Theming File\';\\n /**\\n * Initialising type for the action\\n */\\n readonly type = Load.type;\\n\\n /**\\n * It takes URL of the yaml file, and loads it.\\n * @param url URL of the yaml file, containing theming color key-value pairs\\n */\\n constructor(readonly url: string) {}\\n}\\n","constructorObj":{"name":"constructor","description":"

      It takes URL of the yaml file, and loads it.

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":12,"rawdescription":"\\n\\nIt takes URL of the yaml file, and loads it.\\n","jsdoctags":[{"name":{"pos":354,"end":357,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":348,"end":353,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      URL of the yaml file, containing theming color key-value pairs

      \\n"}]},"properties":[{"name":"type","defaultValue":"\'[Theming] Load Theming File\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      static type for the action

      \\n","line":8,"rawdescription":"\\n\\nstatic type for the action\\n","modifierKind":[124,144]},{"name":"type","defaultValue":"Load.type","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Initialising type for the action

      \\n","line":12,"rawdescription":"\\n\\nInitialising type for the action\\n","modifierKind":[144]}],"description":"

      Load Action, which is triggered to load yaml file, to get theming pallete

      \\n","rawdescription":"\\n\\nLoad Action, which is triggered to load yaml file, to get theming pallete\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]}],"directives":[],"components":[],"modules":[{"name":"ThemingModule","id":"module-ThemingModule-a5ac292a1d8f0af8ae5b93edb01358072adb02eaa2e0139627ccb0f40b61d38613bc286464b0e4b2577330616277bc72746d8169acd7a4f527abd04f0e0fe000","description":"

      Configures global theming

      \\n","deprecationMessage":"","deprecated":false,"file":"src/lib/theming.module.ts","methods":[],"sourceCode":"import { NgModule } from \'@angular/core\';\\nimport { NgxsModule } from \'@ngxs/store\';\\nimport { MaterialCssVarsModule } from \'angular-material-css-vars\';\\nimport { ThemingState } from \'./state/theming.state\';\\n\\n/** Configures global theming */\\n@NgModule({\\n imports: [MaterialCssVarsModule.forRoot({}), NgxsModule.forFeature([ThemingState])],\\n})\\nexport class ThemingModule {}\\n","children":[{"type":"providers","elements":[]},{"type":"declarations","elements":[]},{"type":"imports","elements":[]},{"type":"exports","elements":[]},{"type":"bootstrap","elements":[]},{"type":"classes","elements":[]}]}],"miscellaneous":{"variables":[{"name":"placeholder","ctype":"miscellaneous","subtype":"variable","file":"src/index.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"undefined","rawdescription":"Placeholder to make build and tests pass until any actual library code is created","description":"

      Placeholder to make build and tests pass until any actual library code is created

      \\n"},{"name":"THEMING_FILE_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(z.nativeEnum(MaterialCssVariables), z.string())","rawdescription":"Theming mdoel schema, having records with key as material-css-vars pallete keys and string values","description":"

      Theming mdoel schema, having records with key as material-css-vars pallete keys and string values

      \\n"}],"functions":[],"typealiases":[{"name":"ThemingContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State context for theming, with reference of model

      \\n","kind":177},{"name":"ThemingModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for theming

      \\n","kind":177}],"enumerations":[],"groupedVariables":{"src/index.ts":[{"name":"placeholder","ctype":"miscellaneous","subtype":"variable","file":"src/index.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"undefined","rawdescription":"Placeholder to make build and tests pass until any actual library code is created","description":"

      Placeholder to make build and tests pass until any actual library code is created

      \\n"}],"src/lib/state/theming.model.ts":[{"name":"THEMING_FILE_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(z.nativeEnum(MaterialCssVariables), z.string())","rawdescription":"Theming mdoel schema, having records with key as material-css-vars pallete keys and string values","description":"

      Theming mdoel schema, having records with key as material-css-vars pallete keys and string values

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{"src/lib/state/theming.model.ts":[{"name":"ThemingContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State context for theming, with reference of model

      \\n","kind":177},{"name":"ThemingModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for theming

      \\n","kind":177}]}}}')}},__webpack_require__=>{var __webpack_exec__=moduleId=>__webpack_require__(__webpack_require__.s=moduleId);__webpack_require__.O(0,[758],(()=>(__webpack_exec__("./storybook-config-entry.js"),__webpack_exec__("./.storybook/styles.scss?ngGlobalStyle"))));__webpack_require__.O()}]); \ No newline at end of file diff --git a/storybook/cdk/main.css b/storybook/cdk/main.css index 265fab4dc..a37079967 100644 --- a/storybook/cdk/main.css +++ b/storybook/cdk/main.css @@ -6248,6 +6248,8 @@ textarea.cdk-textarea-autosize-measuring-firefox { button.mdc-button { font-weight: 700; font-size: 1rem; + letter-spacing: initial; + line-height: 1.5rem; } button.mdc-button.mat-primary { background-color: var(--palette-primary-500-rgb); diff --git a/storybook/cdk/project.json b/storybook/cdk/project.json index bca46af7a..2de4e9038 100644 --- a/storybook/cdk/project.json +++ b/storybook/cdk/project.json @@ -1 +1 @@ -{"generatedAt":1693513171773,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":true,"hasStorybookEslint":true,"refCount":0,"metaFramework":{"name":"nx","packageName":"@nrwl/storybook","version":"15.9.2"},"monorepo":"Nx","packageManager":{"type":"npm","version":"8.19.4"},"framework":{"name":"@storybook/angular","options":{}},"builder":"@storybook/builder-webpack5","renderer":"@storybook/angular","storybookVersion":"7.0.2","storybookVersionSpecifier":"^7.0.2","language":"typescript","storybookPackages":{"@nrwl/storybook":{"version":"15.9.2"},"@storybook/angular":{"version":"7.0.2"},"@storybook/core-common":{"version":"7.0.2"},"@storybook/core-server":{"version":"7.0.2"},"@storybook/test-runner":{"version":"0.10.0"},"eslint-plugin-storybook":{"version":"0.6.11"}},"addons":{"@storybook/addon-essentials":{"version":"7.0.2"}}} +{"generatedAt":1694197238755,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":true,"hasStorybookEslint":true,"refCount":0,"metaFramework":{"name":"nx","packageName":"@nrwl/storybook","version":"15.9.2"},"monorepo":"Nx","packageManager":{"type":"npm","version":"8.19.4"},"framework":{"name":"@storybook/angular","options":{}},"builder":"@storybook/builder-webpack5","renderer":"@storybook/angular","storybookVersion":"7.0.2","storybookVersionSpecifier":"^7.0.2","language":"typescript","storybookPackages":{"@nrwl/storybook":{"version":"15.9.2"},"@storybook/angular":{"version":"7.0.2"},"@storybook/core-common":{"version":"7.0.2"},"@storybook/core-server":{"version":"7.0.2"},"@storybook/test-runner":{"version":"0.10.0"},"eslint-plugin-storybook":{"version":"0.6.11"}},"addons":{"@storybook/addon-essentials":{"version":"7.0.2"}}} diff --git a/storybook/components-atoms/iframe.html b/storybook/components-atoms/iframe.html index 5357aa375..1a51bf616 100644 --- a/storybook/components-atoms/iframe.html +++ b/storybook/components-atoms/iframe.html @@ -348,8 +348,8 @@ window['DOCS_OPTIONS'] = {"defaultName":"Docs","autodocs":true}; \ No newline at end of file + import './main.a347215b.iframe.bundle.js'; \ No newline at end of file diff --git a/storybook/components-atoms/main.2515e811.iframe.bundle.js b/storybook/components-atoms/main.2515e811.iframe.bundle.js deleted file mode 100644 index 0edc4c72e..000000000 --- a/storybook/components-atoms/main.2515e811.iframe.bundle.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[179],{"./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$":(module,__unused_webpack_exports,__webpack_require__)=>{var map={"./cdk/documentation.json":"./dist/compodoc/cdk/documentation.json","./components-atoms/documentation.json":"./dist/compodoc/components-atoms/documentation.json","./components-behavioral/documentation.json":"./dist/compodoc/components-behavioral/documentation.json","./components-molecules/documentation.json":"./dist/compodoc/components-molecules/documentation.json","./components-organisms/documentation.json":"./dist/compodoc/components-organisms/documentation.json","./shared-theming/documentation.json":"./dist/compodoc/shared-theming/documentation.json"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$"},"./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$":(module,__unused_webpack_exports,__webpack_require__)=>{var map={"./src/lib/email-input/email-input.component.stories":["./libs/components/atoms/src/lib/email-input/email-input.component.stories.ts",582,933,942],"./src/lib/email-input/email-input.component.stories.ts":["./libs/components/atoms/src/lib/email-input/email-input.component.stories.ts",582,933,942],"./src/lib/empty-biomarker/empty-biomarker.stories":["./libs/components/atoms/src/lib/empty-biomarker/empty-biomarker.stories.ts",582,849,798],"./src/lib/empty-biomarker/empty-biomarker.stories.ts":["./libs/components/atoms/src/lib/empty-biomarker/empty-biomarker.stories.ts",582,849,798],"./src/lib/gradient-legend/gradient-legend.component.stories":["./libs/components/atoms/src/lib/gradient-legend/gradient-legend.component.stories.ts",983],"./src/lib/gradient-legend/gradient-legend.component.stories.ts":["./libs/components/atoms/src/lib/gradient-legend/gradient-legend.component.stories.ts",983],"./src/lib/label-box/label-box.component.stories":["./libs/components/atoms/src/lib/label-box/label-box.component.stories.ts",582,242],"./src/lib/label-box/label-box.component.stories.ts":["./libs/components/atoms/src/lib/label-box/label-box.component.stories.ts",582,242],"./src/lib/required-input/required-input.component.stories":["./libs/components/atoms/src/lib/required-input/required-input.component.stories.ts",582,933,661],"./src/lib/required-input/required-input.component.stories.ts":["./libs/components/atoms/src/lib/required-input/required-input.component.stories.ts",582,933,661],"./src/lib/required-textbox/required-textbox.component.stories":["./libs/components/atoms/src/lib/required-textbox/required-textbox.component.stories.ts",582,933,446],"./src/lib/required-textbox/required-textbox.component.stories.ts":["./libs/components/atoms/src/lib/required-textbox/required-textbox.component.stories.ts",582,933,446],"./src/lib/size-legend/size-legend.component.stories":["./libs/components/atoms/src/lib/size-legend/size-legend.component.stories.ts",236],"./src/lib/size-legend/size-legend.component.stories.ts":["./libs/components/atoms/src/lib/size-legend/size-legend.component.stories.ts",236]};function webpackAsyncContext(req){if(!__webpack_require__.o(map,req))return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}));var ids=map[req],id=ids[0];return Promise.all(ids.slice(1).map(__webpack_require__.e)).then((()=>__webpack_require__(id)))}webpackAsyncContext.keys=()=>Object.keys(map),webpackAsyncContext.id="./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$",module.exports=webpackAsyncContext},"./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$":module=>{function webpackEmptyAsyncContext(req){return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}))}webpackEmptyAsyncContext.keys=()=>[],webpackEmptyAsyncContext.resolve=webpackEmptyAsyncContext,webpackEmptyAsyncContext.id="./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$",module.exports=webpackEmptyAsyncContext},"./.storybook/styles.scss?ngGlobalStyle":()=>{},"./libs/components/atoms/.storybook/preview.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{argTypesEnhancers:()=>argTypesEnhancers,decorators:()=>decorators,parameters:()=>parameters});var http=__webpack_require__("./node_modules/@angular/common/fesm2020/http.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),animations=__webpack_require__("./node_modules/@angular/platform-browser/fesm2020/animations.mjs"),ngxs_logger_plugin=__webpack_require__("./node_modules/@ngxs/logger-plugin/fesm2015/ngxs-logger-plugin.js"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),angular=__webpack_require__("./node_modules/@storybook/addon-docs/angular/index.js"),dist=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),ngx_markdown=__webpack_require__("./node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs"),tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),angular_material_css_vars=__webpack_require__("./node_modules/angular-material-css-vars/fesm2020/angular-material-css-vars.mjs"),js_yaml=__webpack_require__("./node_modules/js-yaml/dist/js-yaml.mjs"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js");class Load{constructor(url){this.url=url,this.type=Load.type}}Load.type="[Theming] Load Theming File";var lib=__webpack_require__("./node_modules/zod/lib/index.mjs");const THEMING_FILE_SCHEMA=lib.z.record(lib.z.nativeEnum(angular_material_css_vars.Rm),lib.z.string());let ThemingState=class ThemingState{constructor(){this.http=(0,core.inject)(http.eN),this.materialVars=(0,core.inject)(angular_material_css_vars.jO)}load(ctx,{url}){return this.http.get(url,{responseType:"text"}).pipe((0,map.U)((data=>(0,js_yaml.zD)(data,{filename:url}))),(0,map.U)((data=>THEMING_FILE_SCHEMA.parse(data))),(0,tap.b)((data=>ctx.setState(data))),(0,tap.b)((data=>this.setVariables(data))))}setVariables(data){for(const[key,value]of Object.entries(data))this.materialVars.setVariable(key,value)}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(Load),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,Load]),(0,tslib_es6.w6)("design:returntype",Observable.y)],ThemingState.prototype,"load",null),ThemingState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"theming",defaults:{}}),(0,core.Injectable)()],ThemingState);let ThemingModule=class ThemingModule{};function parseDefaultValue(type){const{defaultValue,type:typeDef}=type;if(void 0===defaultValue||"string"!=typeof defaultValue||"string"===typeDef?.name)return defaultValue;switch(typeDef?.name){case"array":case"boolean":case"number":case"object":try{return new Function("return "+defaultValue)()}catch(_error){return}case"enum":return typeDef.value.includes(defaultValue)?defaultValue:void 0;default:return}}ThemingModule=(0,tslib_es6.gn)([(0,core.NgModule)({imports:[angular_material_css_vars.Pe.forRoot({}),ngxs_store.$l.forFeature([ThemingState])]})],ThemingModule);const parameters={actions:{argTypesRegex:"^on[A-Z].*"},controls:{matchers:{color:/(background|color)$/i,date:/Date$/}},docs:{inlineStories:!0}},argTypesEnhancers=[function fixArgTypes(){return context=>{const argTypes={...context.argTypes},exclude=[...context.parameters.controls?.exclude??[]];for(const[key,type]of Object.entries(argTypes))switch(type.table.category){case"inputs":const defaultValue=parseDefaultValue(type);defaultValue!==type.defaultValue&&(argTypes[key]={...type,defaultValue});break;case"outputs":argTypes[key]={...type,defaultValue:void 0};break;default:exclude.push(key)}return context.parameters.controls={...context.parameters.controls,exclude},argTypes}}()],decorators=[(0,dist.applicationConfig)({providers:[(0,core.importProvidersFrom)(animations.BrowserAnimationsModule,http.JF,ngxs_store.$l.forRoot([],{developmentMode:!0}),ngxs_logger_plugin.xz.forRoot(),ngx_markdown.JP.forRoot({loader:http.eN}),ThemingModule)]}),(0,dist.componentWrapperDecorator)((story=>`\n
      ${story}
      \n
      \n `)),function addState(){return(fn,ctx)=>{const config=ctx.parameters.state;return config?(0,dist.applicationConfig)({providers:[(0,core.importProvidersFrom)(ngxs_store.$l.forFeature(config.states)),{provide:core.APP_INITIALIZER,multi:!0,useFactory:store=>()=>{const{actions}=config;return actions&&actions.length>0?store.dispatch(actions):void 0},deps:[ngxs_store.yh]}]})(fn,ctx):fn(ctx)}}()];!function setDocs(library){const docs=__webpack_require__("./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$")(`./${library}/documentation.json`);(0,angular.P)(docs)}("components-atoms")},"./storybook-config-entry.js":(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{"use strict";var dist=__webpack_require__("./node_modules/@storybook/global/dist/index.mjs"),external_STORYBOOK_MODULE_PREVIEW_API_=__webpack_require__("@storybook/preview-api");const external_STORYBOOK_MODULE_CHANNEL_POSTMESSAGE_namespaceObject=__STORYBOOK_MODULE_CHANNEL_POSTMESSAGE__,external_STORYBOOK_MODULE_CHANNEL_WEBSOCKET_namespaceObject=__STORYBOOK_MODULE_CHANNEL_WEBSOCKET__;var asyncToGenerator=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");const pipeline=x=>x(),importers=[function(){var _ref=(0,asyncToGenerator.Z)((function*(path){if(!/^\.[\\/](?:libs\/components\/atoms(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.mdx)$/.exec(path))return;const pathRemainder=path.substring(24);return __webpack_require__("./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$")("./"+pathRemainder)}));return function(_x){return _ref.apply(this,arguments)}}(),function(){var _ref2=(0,asyncToGenerator.Z)((function*(path){if(!/^\.[\\/](?:libs\/components\/atoms(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.(js|jsx|ts|tsx))$/.exec(path))return;const pathRemainder=path.substring(24);return __webpack_require__("./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$")("./"+pathRemainder)}));return function(_x2){return _ref2.apply(this,arguments)}}()];function _importFn(){return(_importFn=(0,asyncToGenerator.Z)((function*(path){for(let i=0;iimporters[i](path)));if(moduleExports)return moduleExports}}))).apply(this,arguments)}const{SERVER_CHANNEL_URL}=dist.global,channel=(0,external_STORYBOOK_MODULE_CHANNEL_POSTMESSAGE_namespaceObject.createChannel)({page:"preview"});if(external_STORYBOOK_MODULE_PREVIEW_API_.addons.setChannel(channel),SERVER_CHANNEL_URL){const serverChannel=(0,external_STORYBOOK_MODULE_CHANNEL_WEBSOCKET_namespaceObject.createChannel)({url:SERVER_CHANNEL_URL});external_STORYBOOK_MODULE_PREVIEW_API_.addons.setServerChannel(serverChannel),window.__STORYBOOK_SERVER_CHANNEL__=serverChannel}const preview=new external_STORYBOOK_MODULE_PREVIEW_API_.PreviewWeb;window.__STORYBOOK_PREVIEW__=preview,window.__STORYBOOK_STORY_STORE__=preview.storyStore,window.__STORYBOOK_ADDONS_CHANNEL__=channel,window.__STORYBOOK_CLIENT_API__=new external_STORYBOOK_MODULE_PREVIEW_API_.ClientApi({storyStore:preview.storyStore}),preview.initialize({importFn:function importFn(_x3){return _importFn.apply(this,arguments)},getProjectAnnotations:()=>(0,external_STORYBOOK_MODULE_PREVIEW_API_.composeConfigs)([__webpack_require__("./node_modules/@storybook/angular/dist/client/docs/config.js"),__webpack_require__("./node_modules/@storybook/angular/dist/client/config.js"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/docs/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/actions/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/backgrounds/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/measure/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/outline/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/highlight/preview.mjs"),__webpack_require__("./libs/components/atoms/.storybook/preview.ts")])})},"./node_modules/@storybook/addon-docs/dist sync recursive":module=>{function webpackEmptyContext(req){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id="./node_modules/@storybook/addon-docs/dist sync recursive",module.exports=webpackEmptyContext},"@storybook/channels":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CHANNELS__},"@storybook/client-logger":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CLIENT_LOGGER__},"@storybook/core-client":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CORE_CLIENT__},"@storybook/core-events":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CORE_EVENTS__},"@storybook/preview-api":module=>{"use strict";module.exports=__STORYBOOK_MODULE_PREVIEW_API__},"./dist/compodoc/cdk/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"ActionConstructor","id":"interface-ActionConstructor-79d65b59eb27f474fc1f2fbef720f134360ce0d1017b538dfe48bd3ca60c6a0472d1789cdc31f57a5190150ce49b1ca0d304e9e44f722b1c4c992c619605ba68","file":"state/src/actions/actions.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { registerActionType } from \'./action-type-registry\';\\n\\n/** Base action type */\\nexport interface Action {\\n /** Action type */\\n readonly type: string;\\n}\\n\\n/** Base action constructor */\\nexport interface ActionConstructor {\\n /** Action type */\\n readonly type: string;\\n\\n /** Create a new action */\\n new (): Action;\\n}\\n\\n/**\\n * Creates an action factory that adds a common group string to each action type\\n * @param group Common action type group\\n * @returns An action factory\\n */\\nexport function ActionGroup(group: string): (type: string) => ActionConstructor {\\n return (type) => Action(`[${group}] ${type}`);\\n}\\n\\n/**\\n * Creates a new base action with a specified type\\n * @param type Action type\\n * @returns A base action class\\n */\\nexport function Action(type: string): ActionConstructor {\\n registerActionType(type);\\n return class BaseAction {\\n static readonly type = type;\\n readonly type = type;\\n };\\n}\\n","properties":[{"name":"type","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Action type

      \\n","line":12,"rawdescription":"\\nAction type","modifierKind":[144]}],"indexSignatures":[],"kind":174,"description":"

      Base action constructor

      \\n","rawdescription":"\\nBase action constructor","methods":[]},{"name":"DestructorScope","id":"interface-DestructorScope-c4b53b823f2f6845a68f4b66881cc81070616d6b5124d0d203f80f1eeee060d84d1d05eab91b3a6e833ea4aef93cdf9d68ef0051d58b85ca5101c609dad76a05","file":"injectors/src/lib/on-destroy/destructor-subject.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ReplaySubject } from \'rxjs\';\\n\\n/** Object on which cleanup functions can be registered */\\nexport interface DestructorScope {\\n /**\\n * Register a cleanup function\\n * @param cb Cleanup callback function\\n */\\n onDestroy(cb: () => void): void;\\n}\\n\\n/**\\n * Determines whether an object is destructor scope like\\n * @param obj Value to test\\n * @returns true if the object seems to be a destructor scope, otherwise false\\n */\\nexport function isDestructorScopeLike(obj: unknown): obj is DestructorScope {\\n const isObject = typeof obj === \'object\' && obj !== null;\\n return isObject && \'onDestroy\' in obj && typeof obj.onDestroy === \'function\';\\n}\\n\\n/**\\n * A subject type that is associated with a destructor scope.\\n * When the cleanup function is run the subject emits a single\\n * undefined value and immediately completes\\n */\\nexport class ScopedDestructorSubject extends ReplaySubject {\\n /**\\n * Creates a new subject and attaches cleanup to the destructor scope\\n * @param scope Associated scope\\n */\\n constructor(scope: DestructorScope) {\\n super(1);\\n\\n scope.onDestroy(() => {\\n this.next();\\n this.complete();\\n });\\n }\\n}\\n","properties":[],"indexSignatures":[],"kind":167,"description":"

      Object on which cleanup functions can be registered

      \\n","rawdescription":"\\nObject on which cleanup functions can be registered","methods":[{"name":"onDestroy","args":[{"name":"cb","type":"function","deprecated":false,"deprecationMessage":"","function":[]}],"optional":false,"returnType":"void","typeParameters":[],"line":9,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nRegister a cleanup function\\n","description":"

      Register a cleanup function

      \\n","jsdoctags":[{"name":{"pos":184,"end":186,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"cb"},"type":"function","deprecated":false,"deprecationMessage":"","function":[],"tagName":{"pos":178,"end":183,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Cleanup callback function

      \\n"}]}]},{"name":"HoverContext","id":"interface-HoverContext-09dbb1791c1e8551d99aeb917f0d664e71738bebaebeed4601b7634f7980b675771162be311571667692c787d939ee9eeb40e57b4627c9cd75ebc926e849cc0d","file":"src/lib/hover/hover.directive.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectionPositionPair, Overlay } from \'@angular/cdk/overlay\';\\nimport { TemplatePortal } from \'@angular/cdk/portal\';\\nimport { Directive, ElementRef, HostListener, inject, Input, TemplateRef, ViewContainerRef } from \'@angular/core\';\\n\\n/** Context passed to hover content templates */\\nexport interface HoverContext {\\n /** Data provided by the user for use inside the content template */\\n $implicit: T;\\n}\\n\\n/** Hover overlay directive to be used across the application */\\n@Directive({\\n selector: \'[hraHover]\',\\n standalone: true,\\n})\\nexport class HoverDirective {\\n /** Setter for the content to be displayed in the overlay */\\n @Input(\'hraHover\')\\n set content(content: TemplateRef>) {\\n this.portal = new TemplatePortal(content, this.viewContainerRef, this._data);\\n this.updateContent();\\n }\\n\\n /** Setter for the context that is to be displayed in the portal attached to the overlay */\\n @Input(\'hraHoverData\')\\n set data(data: T) {\\n this._data = { $implicit: data };\\n if (this.portal) {\\n this.portal.context = this._data;\\n this.updateContent();\\n }\\n }\\n\\n /** Reference to the element that the directive is attached to */\\n private readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /** Reference to the overlay that is created when the userhovers over the element along with its position setting */\\n readonly overlayRef = inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n });\\n\\n /** Reference view container that the directive is attached to */\\n private readonly viewContainerRef = inject(ViewContainerRef);\\n\\n /** Store the data that is passed into the data input property */\\n private _data?: HoverContext;\\n\\n /** Portal that is created to display the overlay */\\n portal?: TemplatePortal>;\\n\\n /** Function to handle the mouse over event to attach the portal and display the hover content */\\n @HostListener(\'mouseover\')\\n startHover(): void {\\n const { overlayRef, portal } = this;\\n if (!overlayRef.hasAttached() && portal) {\\n overlayRef.attach(portal);\\n }\\n }\\n\\n /** Function to handle the mouse out event to detach the portal */\\n @HostListener(\'mouseout\')\\n endHover(): void {\\n const { overlayRef } = this;\\n if (overlayRef.hasAttached()) {\\n overlayRef.detach();\\n }\\n }\\n\\n /** Function to handle the updation of overlay with up to date content when the input changes */\\n private updateContent(): void {\\n const { overlayRef, portal } = this;\\n if (overlayRef.hasAttached() && portal) {\\n overlayRef.detach();\\n overlayRef.attach(portal);\\n }\\n }\\n}\\n","properties":[{"name":"$implicit","deprecated":false,"deprecationMessage":"","type":"T","optional":false,"description":"

      Data provided by the user for use inside the content template

      \\n","line":8,"rawdescription":"\\nData provided by the user for use inside the content template"}],"indexSignatures":[],"kind":165,"description":"

      Context passed to hover content templates

      \\n","rawdescription":"\\nContext passed to hover content templates","methods":[]},{"name":"SelectOptions","id":"interface-SelectOptions-2a1e9b4935fb82769eb1dadf40ec0992c0e3f24e9bc0b33376fb53e5f271e89e87100bf0c22b87ea85ce9dd36fbdd2e6fb22f6978dc61aff4d02559ba5c9c8f0","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectorRef, inject } from \'@angular/core\';\\nimport { Any } from \'@hra-ui/utils/types\';\\nimport { StateToken, Store } from \'@ngxs/store\';\\nimport { MonoTypeOperatorFunction, Observable, takeUntil, tap } from \'rxjs\';\\nimport { injectDestroy$ } from \'../on-destroy/on-destroy\';\\n\\n/** Selector type for select style functions */\\nexport type StateSelector = ((...args: Any[]) => T) | StateToken;\\n\\n/** `select$` configuration options */\\nexport interface SelectOptions {\\n /** Whether to mark the containing view for change detection on emits. Defaults to true. */\\n notifyOnChange?: boolean;\\n}\\n\\n/**\\n * Marks a view for change detection whenever a new value is emitted\\n * @param options Options to explicitly disable marking\\n * @returns A rxjs operator\\n */\\nfunction markForCheck(options?: SelectOptions): MonoTypeOperatorFunction {\\n const notifyOnChange = options?.notifyOnChange ?? true;\\n const cdr = inject(ChangeDetectorRef, { optional: true });\\n if (notifyOnChange && cdr) {\\n const markFn = () => cdr.markForCheck();\\n return tap({ next: markFn, error: markFn, complete: markFn });\\n }\\n\\n return (source) => source;\\n}\\n\\n/**\\n * Creates an observable emitting parts of the state. The observable\'s lifetime\\n * is automatically tied to the injection context where this is called.\\n * @param selector State selection function or token\\n * @param options Additional select options\\n * @returns An observable of the selected state\\n */\\nexport function select$(selector: StateSelector, options?: SelectOptions): Observable {\\n return inject(Store)\\n .select(selector as StateToken)\\n .pipe(takeUntil(injectDestroy$()), markForCheck(options));\\n}\\n","properties":[{"name":"notifyOnChange","deprecated":false,"deprecationMessage":"","type":"boolean","optional":true,"description":"

      Whether to mark the containing view for change detection on emits. Defaults to true.

      \\n","line":13,"rawdescription":"\\nWhether to mark the containing view for change detection on emits. Defaults to true."}],"indexSignatures":[],"kind":165,"description":"

      select$ configuration options

      \\n","rawdescription":"\\n`select$` configuration options","methods":[]}],"injectables":[{"name":"LinkRegistryState","id":"injectable-LinkRegistryState-b37e5428b2389fadb722624de33c6e4366fe24d94941b86e08c58ba2167a6e863002542c94b564c5ac03cba9122d8a463f2c34e1d925aed7babf8aa973f35fbb","file":"state/src/link-registry/link-registry.state.ts","properties":[],"methods":[{"name":"addMany","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddMany","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":57,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd multiple entries\\n","description":"

      Add multiple entries

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddMany"}],"jsdoctags":[{"name":{"pos":1614,"end":1617,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1608,"end":1613,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddMany","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addOne","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Add","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd a single entry\\n","description":"

      Add a single entry

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Add"}],"jsdoctags":[{"name":{"pos":1359,"end":1362,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1353,"end":1358,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Add","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addYaml","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":""},{"name":"filename","type":"string","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":[],"line":68,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nParse and add entries from yaml\\n","description":"

      Parse and add entries from yaml

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddFromYaml"}],"jsdoctags":[{"name":{"pos":1858,"end":1861,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1852,"end":1857,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":1933,"end":1941,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"filename"},"type":"string","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1927,"end":1932,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional url/filename from which the data was loaded (for improved error messages)

      \\n"}]},{"name":"loadYaml","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":81,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nLoad and add entries from an external yaml file\\n","description":"

      Load and add entries from an external yaml file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadFromYaml"}],"jsdoctags":[{"name":{"pos":2358,"end":2361,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2352,"end":2357,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2435,"end":2442,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entries has been added

      \\n"}]},{"name":"navigate","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Navigate","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Promise","typeParameters":[],"line":94,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nNavigate to Internal or External urls from id\\n","description":"

      Navigate to Internal or External urls from id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Navigate"}],"modifierKind":[131],"jsdoctags":[{"name":{"pos":2826,"end":2829,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2820,"end":2825,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Navigate","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2898,"end":2905,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A promise

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State for keeping track of links globally

      \\n","rawdescription":"\\nState for keeping track of links globally","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable, NgZone } from \'@angular/core\';\\nimport { Router, UrlCreationOptions } from \'@angular/router\';\\nimport { createExternalUrl } from \'@hra-ui/utils\';\\nimport { UnionMember } from \'@hra-ui/utils/types\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable } from \'rxjs\';\\nimport { Add, AddFromYaml, AddMany, LoadFromYaml, Navigate } from \'./link-registry.actions\';\\nimport {\\n ExternalLinkEntry,\\n InternalLinkEntry,\\n LinkEntry,\\n LinkId,\\n LinkRegistryContext,\\n LinkRegistryModel,\\n LinkType,\\n LINK_REGISTRY_SCHEMA,\\n} from \'./link-registry.model\';\\n\\n/** Query function for link entry optionally with type specified */\\nexport type LinkRegistryQuery = (\\n id: LinkId,\\n type?: T\\n) => UnionMember | undefined;\\n\\n/** State for keeping track of links globally */\\n@State({\\n name: \'linkRegistry\',\\n defaults: {},\\n})\\n@Injectable()\\nexport class LinkRegistryState {\\n /** Http service for link loading */\\n private readonly http = inject(HttpClient);\\n /** Injects angular router */\\n private readonly router = inject(Router, { optional: true });\\n /** Injects ngZone for routing */\\n private readonly zone = inject(NgZone);\\n\\n /**\\n * Add a single entry\\n * @param ctx State context\\n * @param action Action with id and entry to add\\n */\\n @Action(Add)\\n addOne(ctx: LinkRegistryContext, { id, entry }: Add): void {\\n this.addMany(ctx, new AddMany({ [id]: entry }));\\n }\\n\\n /**\\n * Add multiple entries\\n * @param ctx State context\\n * @param action Action with entries to add\\n */\\n @Action(AddMany)\\n addMany(ctx: LinkRegistryContext, { entries }: AddMany): void {\\n ctx.patchState(entries);\\n }\\n\\n /**\\n * Parse and add entries from yaml\\n * @param ctx State context\\n * @param action Action with raw yaml data\\n * @param filename Optional url/filename from which the data was loaded (for improved error messages)\\n */\\n @Action(AddFromYaml)\\n addYaml(ctx: LinkRegistryContext, { yaml }: AddFromYaml, filename?: string): void {\\n const data = load(yaml, { filename });\\n const entries = LINK_REGISTRY_SCHEMA.parse(data);\\n this.addMany(ctx, new AddMany(entries));\\n }\\n\\n /**\\n * Load and add entries from an external yaml file\\n * @param ctx State context\\n * @param action Action with the external file url\\n * @returns An observable that completes when the entries has been added\\n */\\n @Action(LoadFromYaml)\\n loadYaml(ctx: LinkRegistryContext, { url }: LoadFromYaml): Observable {\\n return this.http\\n .get(url, { responseType: \'text\' })\\n .pipe(map((data) => this.addYaml(ctx, new AddFromYaml(data), url)));\\n }\\n\\n /**\\n * Navigate to Internal or External urls from id\\n * @param ctx State context\\n * @param param1 Navigate action with link id\\n * @returns A promise\\n */\\n @Action(Navigate)\\n async navigate(ctx: LinkRegistryContext, { id, extras }: Navigate): Promise {\\n const entry = ctx.getState()[id];\\n switch (entry?.type) {\\n case LinkType.Internal:\\n await this.navigateToInternal(entry, extras);\\n break;\\n\\n case LinkType.External:\\n this.navigateToExternal(entry, extras);\\n break;\\n\\n default:\\n throw new Error(`Cannot navigate to non-existing link \'${id}\'`);\\n }\\n }\\n\\n /**\\n * Method to navigate to an internal link using Angular router\\n * @param entry Internal Link Entry with commands and extras\\n */\\n private async navigateToInternal(entry: InternalLinkEntry, extras: UrlCreationOptions): Promise {\\n await this.zone.run(() => this.router?.navigate(entry.commands, { ...entry.extras, ...extras }));\\n }\\n\\n /**\\n * Method to navigate to an external link using window\\n * @param entry External link entry with url, target, and rel\\n */\\n private navigateToExternal(entry: ExternalLinkEntry, extras: UrlCreationOptions): void {\\n const url = createExternalUrl(entry.url, extras);\\n window.open(url, entry.target, entry.rel);\\n }\\n}\\n","type":"injectable"},{"name":"ResourceRegistryState","id":"injectable-ResourceRegistryState-ee091eca7099a68b29fcf8b081af0f6e4eec5cfb7b538ee0423d54f17301e5430869290d05c8adab76fffaddd9c6c3cfff4569f15b2e831e632827f4347dee77","file":"state/src/resource-registry/resource-registry.state.ts","properties":[],"methods":[{"name":"addMany","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddMany","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":40,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd multiple entries\\n","description":"

      Add multiple entries

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddMany"}],"jsdoctags":[{"name":{"pos":1038,"end":1041,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1032,"end":1037,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddMany","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addOne","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Add","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":30,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd a single entry\\n","description":"

      Add a single entry

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Add"}],"jsdoctags":[{"name":{"pos":779,"end":782,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":773,"end":778,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Add","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addYaml","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":""},{"name":"filename","type":"string","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":[],"line":51,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nParse and add entries from yaml\\n","description":"

      Parse and add entries from yaml

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddFromYaml"}],"jsdoctags":[{"name":{"pos":1286,"end":1289,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1280,"end":1285,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":1361,"end":1369,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"filename"},"type":"string","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1355,"end":1360,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional url/filename from which the data was loaded (for improved error messages)

      \\n"}]},{"name":"loadMarkdown","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadMarkdown","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":77,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdds a markdown entry with content loaded from an external file\\n","description":"

      Adds a markdown entry with content loaded from an external file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadMarkdown"}],"jsdoctags":[{"name":{"pos":2284,"end":2287,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2278,"end":2283,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadMarkdown","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2375,"end":2382,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entry has been added

      \\n"}]},{"name":"loadYaml","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":64,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nLoad and add entries from an external yaml file\\n","description":"

      Load and add entries from an external yaml file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadFromYaml"}],"jsdoctags":[{"name":{"pos":1794,"end":1797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1788,"end":1793,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":1871,"end":1878,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entries has been added

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State keeping track of global resources

      \\n","rawdescription":"\\nState keeping track of global resources","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable } from \'rxjs\';\\nimport { Add, AddFromYaml, AddMany, LoadFromYaml, LoadMarkdown } from \'./resource-registry.actions\';\\nimport {\\n BuiltinResourceType,\\n ResourceRegistryContext,\\n ResourceRegistryModel,\\n RESOURCE_REGISTRY_SCHEMA,\\n} from \'./resource-registry.model\';\\n\\n/** State keeping track of global resources */\\n@State({\\n name: \'resourceRegistry\',\\n defaults: {},\\n})\\n@Injectable()\\nexport class ResourceRegistryState {\\n /** Http service for resource loading */\\n private readonly http = inject(HttpClient);\\n\\n /**\\n * Add a single entry\\n * @param ctx State context\\n * @param action Action with id and entry to add\\n */\\n @Action(Add)\\n addOne(ctx: ResourceRegistryContext, { id, entry }: Add): void {\\n this.addMany(ctx, new AddMany({ [id]: entry }));\\n }\\n\\n /**\\n * Add multiple entries\\n * @param ctx State context\\n * @param action Action with entries to add\\n */\\n @Action(AddMany)\\n addMany(ctx: ResourceRegistryContext, { entries }: AddMany): void {\\n ctx.patchState(entries);\\n }\\n\\n /**\\n * Parse and add entries from yaml\\n * @param ctx State context\\n * @param action Action with raw yaml data\\n * @param filename Optional url/filename from which the data was loaded (for improved error messages)\\n */\\n @Action(AddFromYaml)\\n addYaml(ctx: ResourceRegistryContext, { yaml }: AddFromYaml, filename?: string): void {\\n const data = load(yaml, { filename });\\n const entries = RESOURCE_REGISTRY_SCHEMA.parse(data);\\n this.addMany(ctx, new AddMany(entries));\\n }\\n\\n /**\\n * Load and add entries from an external yaml file\\n * @param ctx State context\\n * @param action Action with the external file url\\n * @returns An observable that completes when the entries has been added\\n */\\n @Action(LoadFromYaml)\\n loadYaml(ctx: ResourceRegistryContext, { url }: LoadFromYaml): Observable {\\n return this.http\\n .get(url, { responseType: \'text\' })\\n .pipe(map((data) => this.addYaml(ctx, new AddFromYaml(data), url)));\\n }\\n\\n /**\\n * Adds a markdown entry with content loaded from an external file\\n * @param ctx State context\\n * @param action Action with id and url to the external markdown\\n * @returns An observable that completes when the entry has been added\\n */\\n @Action(LoadMarkdown)\\n loadMarkdown(ctx: ResourceRegistryContext, { id, url }: LoadMarkdown): Observable {\\n return this.http.get(url, { responseType: \'text\' }).pipe(\\n map((markdown) => new Add(id, { type: BuiltinResourceType.Markdown, markdown })),\\n map((action) => this.addOne(ctx, action))\\n );\\n }\\n}\\n","type":"injectable"},{"name":"StorageState","id":"injectable-StorageState-72ac0507a219407170a641eb4ddefe5f02c0732d08adcd982880a7dd4d0f18ca6dcce1c0b1395a82191bcf464db28277c68d3df9b3f5ac52620adc50aabfd494","file":"state/src/storage/storage.state.ts","properties":[],"methods":[{"name":"clear","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Clear","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":65,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nclears the values of the specified storage id\\n","description":"

      clears the values of the specified storage id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Clear"}],"jsdoctags":[{"name":{"pos":1825,"end":1828,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1819,"end":1824,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Clear","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"delete","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Delete","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":55,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ndeletes the value pointed by key in the list of values stored in the specified storage id\\n","description":"

      deletes the value pointed by key in the list of values stored in the specified storage id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Delete"}],"jsdoctags":[{"name":{"pos":1441,"end":1444,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1435,"end":1440,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Delete","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"getStorage","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Storage","typeParameters":[],"line":27,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nStorageState class to manage storage objects\\n","description":"

      StorageState class to manage storage objects

      \\n","modifierKind":[124],"jsdoctags":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":627,"end":634,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"
        \\n
      • Storage objects - session and local
      • \\n
      \\n"}]},{"name":"set","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Set","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":45,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nsets the key,value pair in the given storageId\\n","description":"

      sets the key,value pair in the given storageId

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Set"}],"jsdoctags":[{"name":{"pos":1010,"end":1013,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1004,"end":1009,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Set","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","description":"

      State holding Storage types

      \\n","rawdescription":"\\n\\nState holding Storage types\\n","sourceCode":"import { produce } from \'immer\';\\nimport { StorageContext } from \'./storage.model\';\\nimport { Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { StorageId, StorageModel } from \'./storage.model\';\\nimport { Set, Delete, Clear } from \'./storage.actions\';\\n/**\\n * State holding Storage types\\n */\\n@State({\\n name: \'storage\',\\n defaults: {\\n [StorageId.Local]: 0,\\n [StorageId.Session]: 0,\\n },\\n})\\n@Injectable()\\n/**\\n * class for managing storage state\\n */\\nexport class StorageState {\\n /**\\n * StorageState class to manage storage objects\\n * @param id-Storage Identifier\\n * @returns - Storage objects - session and local\\n */\\n static getStorage(id: StorageId): Storage {\\n switch (id) {\\n case StorageId.Local:\\n return localStorage;\\n\\n case StorageId.Session:\\n return sessionStorage;\\n\\n default:\\n throw new Error(`No such storage \'${id}\'`);\\n }\\n }\\n /**\\n * sets the key,value pair in the given storageId\\n * @param ctx - StorageContext object\\n * @param param1- {id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Set)\\n set(ctx: StorageContext, { id, key, value }: Set): void {\\n StorageState.getStorage(id).setItem(key, value);\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * deletes the value pointed by key in the list of values stored in the specified storage id\\n * @param ctx - StorageContext object\\n * @param param1- id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Delete)\\n delete(ctx: StorageContext, { id, key }: Delete): void {\\n StorageState.getStorage(id).removeItem(key);\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * clears the values of the specified storage id\\n * @param ctx - StorageContext object\\n * @param param1 - id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Clear)\\n clear(ctx: StorageContext, { id }: Clear): void {\\n StorageState.getStorage(id).clear();\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * increases count after each operation is performed on the specified storage id\\n * @param ctx - StorageContext obje\\n * @param id - StorageId - Storage identifier for which the change count has to be updated\\n */\\n private increaseChangeCount(ctx: StorageContext, id: StorageId): void {\\n ctx.setState(\\n produce((draft) => {\\n draft[id] += 1;\\n })\\n );\\n }\\n}\\n","type":"injectable"}],"guards":[],"interceptors":[],"classes":[{"name":"Add","id":"class-Add-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite a single link

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"LinkId","deprecated":false,"deprecationMessage":""},{"name":"entry","type":"LinkEntry","deprecated":false,"deprecationMessage":""}],"line":9,"rawdescription":"\\n\\nAdd or overwrite a single link\\n","jsdoctags":[{"name":{"pos":356,"end":358,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"LinkId","deprecated":false,"deprecationMessage":"","tagName":{"pos":350,"end":355,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      link identifier

      \\n"},{"name":{"pos":387,"end":392,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entry"},"type":"LinkEntry","deprecated":false,"deprecationMessage":"","tagName":{"pos":381,"end":386,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      link entry

      \\n"}]},"properties":[],"description":"

      Add a single link

      \\n","rawdescription":"\\nAdd a single link","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Add","id":"class-Add-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite a single resource

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"entry","type":"ResourceEntry","deprecated":false,"deprecationMessage":""}],"line":8,"rawdescription":"\\n\\nAdd or overwrite a single resource\\n","jsdoctags":[{"name":{"pos":326,"end":328,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":320,"end":325,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource identifier

      \\n"},{"name":{"pos":361,"end":366,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entry"},"type":"ResourceEntry","deprecated":false,"deprecationMessage":"","tagName":{"pos":355,"end":360,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource entry

      \\n"}]},"properties":[],"description":"

      Add a single resource

      \\n","rawdescription":"\\nAdd a single resource","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"Add-1"},{"name":"AddFromYaml","id":"class-AddFromYaml-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add links from unparsed yaml

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"yaml","type":"string","deprecated":false,"deprecationMessage":""}],"line":32,"rawdescription":"\\n\\nAdd links from unparsed yaml\\n","jsdoctags":[{"name":{"pos":892,"end":896,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"yaml"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":886,"end":891,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Unparsed yaml data

      \\n"}]},"properties":[],"description":"

      Add entries from yaml file

      \\n","rawdescription":"\\nAdd entries from yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"AddFromYaml","id":"class-AddFromYaml-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add resources from unparsed yaml

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"yaml","type":"string","deprecated":false,"deprecationMessage":""}],"line":31,"rawdescription":"\\n\\nAdd resources from unparsed yaml\\n","jsdoctags":[{"name":{"pos":908,"end":912,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"yaml"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":902,"end":907,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Unparsed yaml data

      \\n"}]},"properties":[],"description":"

      Add resources from raw yaml data

      \\n","rawdescription":"\\nAdd resources from raw yaml data","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"AddFromYaml-1"},{"name":"AddMany","id":"class-AddMany-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite multiple links

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"entries","type":"Partial>","deprecated":false,"deprecationMessage":""}],"line":21,"rawdescription":"\\n\\nAdd or overwrite multiple links\\n","jsdoctags":[{"name":{"pos":633,"end":640,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entries"},"type":"Partial>","deprecated":false,"deprecationMessage":"","tagName":{"pos":627,"end":632,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      New links

      \\n"}]},"properties":[],"description":"

      Add multiple links at once

      \\n","rawdescription":"\\nAdd multiple links at once","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"AddMany","id":"class-AddMany-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite multiple resources

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"entries","type":"Partial>","deprecated":false,"deprecationMessage":""}],"line":20,"rawdescription":"\\n\\nAdd or overwrite multiple resources\\n","jsdoctags":[{"name":{"pos":627,"end":634,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entries"},"type":"Partial>","deprecated":false,"deprecationMessage":"","tagName":{"pos":621,"end":626,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      New resources

      \\n"}]},"properties":[],"description":"

      Add multiple resources at once

      \\n","rawdescription":"\\nAdd multiple resources at once","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"AddMany-1"},{"name":"Clear","id":"class-Clear-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for clear action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""}],"line":37,"rawdescription":"\\n\\nconstructor class for clear action object\\n","jsdoctags":[{"name":{"pos":1146,"end":1148,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1140,"end":1145,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"}]},"properties":[],"description":"

      Clear the values stored in the specified StorageId

      \\n","rawdescription":"\\n\\nClear the values stored in the specified StorageId\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Delete","id":"class-Delete-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for Delete action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""},{"name":"key","type":"string","deprecated":false,"deprecationMessage":""}],"line":24,"rawdescription":"\\n\\nconstructor class for Delete action object\\n","jsdoctags":[{"name":{"pos":769,"end":771,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":763,"end":768,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"},{"name":{"pos":823,"end":826,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"key"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":817,"end":822,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - Key to be stored in the storage identifier
      • \\n
      \\n"}]},"properties":[],"description":"

      Class Delete Action for delete method

      \\n","rawdescription":"\\n\\n Class Delete Action for delete method\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LinkRegistrySelectors","id":"class-LinkRegistrySelectors-06d9e020c846f4521dcfb2095cd0e77e9f6aa4c734e6cd2f8081eef02dec593dc6ad455cf1a4d65585ecec0f48fb03db1829258cbc3db21e3c7603e10eb90644","file":"state/src/link-registry/link-registry.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UnionMember } from \'@hra-ui/utils/types\';\\nimport { Selector } from \'@ngxs/store\';\\nimport { LinkEntry, LinkId, LinkRegistryModel, LinkType } from \'./link-registry.model\';\\nimport { LinkRegistryQuery, LinkRegistryState } from \'./link-registry.state\';\\n\\n/**\\n * Selectors for Link Registry\\n */\\nexport class LinkRegistrySelectors {\\n /**\\n * Queries for a link entry\\n * @param state Current state\\n * @returns link query function\\n */\\n @Selector([LinkRegistryState])\\n static query(state: LinkRegistryModel): LinkRegistryQuery {\\n return (id, type) => this.getEntry(state, id, type);\\n }\\n\\n /**\\n * Gets a link entry by id and optionally type\\n * @param state link registry state\\n * @param id Entry id\\n * @param type Optional entry type\\n * @returns The entry if found, undefined otherwise\\n */\\n private static getEntry(\\n state: LinkRegistryModel,\\n id: LinkId,\\n type?: T\\n ): UnionMember | undefined {\\n const entry = state[id] as UnionMember;\\n const typeMatches = type === undefined || entry?.type === type;\\n return typeMatches ? entry : undefined;\\n }\\n}\\n","properties":[],"description":"

      Selectors for Link Registry

      \\n","rawdescription":"\\n\\nSelectors for Link Registry\\n","methods":[{"name":"query","args":[{"name":"state","type":"LinkRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"LinkRegistryQuery","typeParameters":[],"line":16,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries for a link entry\\n","description":"

      Queries for a link entry

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'LinkRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":382,"end":387,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"LinkRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":376,"end":381,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":408,"end":415,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      link query function

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LoadFromYaml","id":"class-LoadFromYaml-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote yaml file and add links

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":43,"rawdescription":"\\n\\nLoads a remote yaml file and add links\\n","jsdoctags":[{"name":{"pos":1145,"end":1148,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1139,"end":1144,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote yaml file url

      \\n"}]},"properties":[],"description":"

      Add links from a remote yaml file

      \\n","rawdescription":"\\nAdd links from a remote yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LoadFromYaml","id":"class-LoadFromYaml-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote yaml file and add resources

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":42,"rawdescription":"\\n\\nLoads a remote yaml file and add resources\\n","jsdoctags":[{"name":{"pos":1169,"end":1172,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1163,"end":1168,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote yaml file url

      \\n"}]},"properties":[],"description":"

      Add resources from a remote yaml file

      \\n","rawdescription":"\\nAdd resources from a remote yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"LoadFromYaml-1"},{"name":"LoadMarkdown","id":"class-LoadMarkdown-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote markdown file and add a resource

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":53,"rawdescription":"\\n\\nLoads a remote markdown file and add a resource\\n","jsdoctags":[{"name":{"pos":1456,"end":1458,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1450,"end":1455,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":1483,"end":1486,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1477,"end":1482,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote markdown file url

      \\n"}]},"properties":[],"description":"

      Add a markdown resource with data loaded from a remote file

      \\n","rawdescription":"\\nAdd a markdown resource with data loaded from a remote file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Navigate","id":"class-Navigate-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      navigate to a link

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"LinkId","deprecated":false,"deprecationMessage":""},{"name":"extras","type":"UrlCreationOptions","deprecated":false,"deprecationMessage":"","defaultValue":"{}"}],"line":53,"rawdescription":"\\n\\nnavigate to a link\\n","jsdoctags":[{"name":{"pos":1386,"end":1388,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"LinkId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1380,"end":1385,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      unqiue identifier of link

      \\n"},{"name":{"pos":1427,"end":1433,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"extras"},"type":"UrlCreationOptions","deprecated":false,"deprecationMessage":"","defaultValue":"{}","tagName":{"pos":1421,"end":1426,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options when building the navigation url

      \\n"}]},"properties":[],"description":"

      Navigate to an Internal or external url from Link id

      \\n","rawdescription":"\\nNavigate to an Internal or external url from Link id","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"ResourceRegistrySelectors","id":"class-ResourceRegistrySelectors-30ee3cdaa36f8226c7eb574e0036e13521cbd6aeb6308e5ace88b8f7fd329f9bf1e99352d718ddf22dd6071fcd1548ba48117f604dc8951e00c89e925255254d","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { Selector } from \'@ngxs/store\';\\nimport {\\n BuiltinResourceType,\\n getEntry,\\n ResourceEntry,\\n ResourceId,\\n ResourceRegistryModel,\\n ResourceType,\\n} from \'./resource-registry.model\';\\nimport { ResourceRegistryState } from \'./resource-registry.state\';\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.entry} */\\nexport type EntryQuery = (id: ResourceId, type: ResourceType) => T | undefined;\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.anyEntry} */\\nexport type AnyEntryQuery = (id: ResourceId) => ResourceEntry | undefined;\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.field} */\\nexport type FieldQuery = (\\n id: ResourceId,\\n type: ResourceType,\\n field: K,\\n defaultValue?: T[K]\\n) => T[K];\\n\\n/** Query function for resource data */\\nexport type DataQuery = (id: ResourceId) => T;\\n\\n/** Selectors for ResourceRegistry */\\nexport class ResourceRegistrySelectors {\\n /**\\n * Queries an entry by id and type\\n * @param state Current state\\n * @returns Entry query function\\n */\\n @Selector([ResourceRegistryState])\\n static entry(state: ResourceRegistryModel): EntryQuery {\\n return (id, type) => getEntry(state, id, type);\\n }\\n\\n /**\\n * Queries an entry by id\\n * @param state Current state\\n * @returns Any entry query function\\n */\\n @Selector([ResourceRegistryState])\\n static anyEntry(state: ResourceRegistryModel): AnyEntryQuery {\\n return (id) => getEntry(state, id);\\n }\\n\\n /**\\n * Queries a field of an entry\\n * @param state Current state\\n * @returns A field query function\\n */\\n @Selector([ResourceRegistryState])\\n static field(state: ResourceRegistryModel): FieldQuery {\\n return (id, type, field, defaultValue?) => {\\n const entry = getEntry(state, id, type);\\n return entry?.[field] ?? (defaultValue as never);\\n };\\n }\\n\\n /**\\n * Query for any text data\\n * @param state Current state\\n * @returns Text data query function\\n */\\n @Selector([ResourceRegistryState])\\n static anyText(state: ResourceRegistryModel): DataQuery {\\n return (id) => {\\n const entry = getEntry(state, id);\\n switch (entry?.type) {\\n case BuiltinResourceType.Markdown:\\n return entry.markdown;\\n\\n case BuiltinResourceType.Text:\\n return entry.text;\\n\\n default:\\n return \'\';\\n }\\n };\\n }\\n\\n /**\\n * Query for markdown data\\n * @param state Current state\\n * @returns Markdown data query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static markdown(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Markdown, \'markdown\', \'\');\\n }\\n\\n /**\\n * Query for text data\\n * @param state Current state\\n * @returns Text data query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static text(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Text, \'text\', \'\');\\n }\\n\\n /**\\n * Query for an url\\n * @param state Current state\\n * @returns Url query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static url(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Url, \'url\', \'\');\\n }\\n}\\n","properties":[],"description":"

      Selectors for ResourceRegistry

      \\n","rawdescription":"\\nSelectors for ResourceRegistry","methods":[{"name":"anyEntry","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"AnyEntryQuery","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries an entry by id\\n","description":"

      Queries an entry by id

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1315,"end":1320,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1309,"end":1314,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1341,"end":1348,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Any entry query function

      \\n"}]},{"name":"anyText","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":70,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for any text data\\n","description":"

      Query for any text data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1948,"end":1953,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1942,"end":1947,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1974,"end":1981,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Text data query function

      \\n"}]},{"name":"entry","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"EntryQuery","typeParameters":[],"line":37,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries an entry by id and type\\n","description":"

      Queries an entry by id and type

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1055,"end":1060,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1049,"end":1054,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1081,"end":1088,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Entry query function

      \\n"}]},{"name":"field","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"FieldQuery","typeParameters":[],"line":57,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries a field of an entry\\n","description":"

      Queries a field of an entry

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1578,"end":1583,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1572,"end":1577,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1604,"end":1611,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A field query function

      \\n"}]},{"name":"markdown","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":92,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for markdown data\\n","description":"

      Query for markdown data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2486,"end":2493,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Markdown data query function

      \\n"}]},{"name":"text","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":102,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for text data\\n","description":"

      Query for text data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2790,"end":2797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Text data query function

      \\n"}]},{"name":"url","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":112,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for an url\\n","description":"

      Query for an url

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":3075,"end":3082,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Url query function

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"ScopedDestructorSubject","id":"class-ScopedDestructorSubject-c4b53b823f2f6845a68f4b66881cc81070616d6b5124d0d203f80f1eeee060d84d1d05eab91b3a6e833ea4aef93cdf9d68ef0051d58b85ca5101c609dad76a05","file":"injectors/src/lib/on-destroy/destructor-subject.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ReplaySubject } from \'rxjs\';\\n\\n/** Object on which cleanup functions can be registered */\\nexport interface DestructorScope {\\n /**\\n * Register a cleanup function\\n * @param cb Cleanup callback function\\n */\\n onDestroy(cb: () => void): void;\\n}\\n\\n/**\\n * Determines whether an object is destructor scope like\\n * @param obj Value to test\\n * @returns true if the object seems to be a destructor scope, otherwise false\\n */\\nexport function isDestructorScopeLike(obj: unknown): obj is DestructorScope {\\n const isObject = typeof obj === \'object\' && obj !== null;\\n return isObject && \'onDestroy\' in obj && typeof obj.onDestroy === \'function\';\\n}\\n\\n/**\\n * A subject type that is associated with a destructor scope.\\n * When the cleanup function is run the subject emits a single\\n * undefined value and immediately completes\\n */\\nexport class ScopedDestructorSubject extends ReplaySubject {\\n /**\\n * Creates a new subject and attaches cleanup to the destructor scope\\n * @param scope Associated scope\\n */\\n constructor(scope: DestructorScope) {\\n super(1);\\n\\n scope.onDestroy(() => {\\n this.next();\\n this.complete();\\n });\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Creates a new subject and attaches cleanup to the destructor scope

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"scope","type":"DestructorScope","deprecated":false,"deprecationMessage":""}],"line":27,"rawdescription":"\\n\\nCreates a new subject and attaches cleanup to the destructor scope\\n","jsdoctags":[{"name":{"pos":985,"end":990,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"scope"},"type":"DestructorScope","deprecated":false,"deprecationMessage":"","tagName":{"pos":979,"end":984,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Associated scope

      \\n"}]},"properties":[],"description":"

      A subject type that is associated with a destructor scope.\\nWhen the cleanup function is run the subject emits a single\\nundefined value and immediately completes

      \\n","rawdescription":"\\n\\nA subject type that is associated with a destructor scope.\\nWhen the cleanup function is run the subject emits a single\\nundefined value and immediately completes\\n","methods":[],"indexSignatures":[],"extends":"ReplaySubject","inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Set","id":"class-Set-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for Set action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""},{"name":"key","type":"string","deprecated":false,"deprecationMessage":""},{"name":"value","type":"string","deprecated":false,"deprecationMessage":""}],"line":10,"rawdescription":"\\n\\nconstructor class for Set action object\\n","jsdoctags":[{"name":{"pos":310,"end":312,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":304,"end":309,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"},{"name":{"pos":364,"end":367,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"key"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":358,"end":363,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - Key to be stored in the storage identifier
      • \\n
      \\n"},{"name":{"pos":440,"end":445,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":434,"end":439,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - value to be stored with the key
      • \\n
      \\n"}]},"properties":[],"description":"

      Class Set Action for set method

      \\n","rawdescription":"\\n\\nClass Set Action for set method\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"SnapshotObserver","id":"class-SnapshotObserver-e299315c33d01b7c5b9d7d2f8238209af3dd388427c9dfe124370b0bfb7c5852050237aaa3ca958ccb01cd0160e3e0a8d823189c91a4e0415996d17a10fef041","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ErrorObserver, NextObserver } from \'rxjs\';\\n\\n/** Object indicating that no error has been emitted */\\nconst NO_ERROR_SENTINEL_OBJ = {};\\n\\n/** Observer storing the latest value from a snapshot stream */\\nexport class SnapshotObserver implements NextObserver, ErrorObserver {\\n /** The latest value */\\n private value?: T = undefined;\\n /** An error value if not equal to `NO_ERROR_SENTINEL` */\\n private errorValue: unknown = NO_ERROR_SENTINEL_OBJ;\\n\\n /**\\n * Gets the latest value or throw on errors\\n * @returns The latest value\\n * @throws If an error has been emitted\\n */\\n get(): T {\\n if (this.errorValue !== NO_ERROR_SENTINEL_OBJ) {\\n throw this.errorValue;\\n }\\n\\n return this.value as T;\\n }\\n\\n /**\\n * Handles value emits\\n * @param value The new value\\n */\\n next(value: T): void {\\n this.value = value;\\n }\\n\\n /**\\n * Handles error emits\\n * @param err The error value\\n */\\n error(err: unknown): void {\\n this.value = undefined;\\n this.errorValue = err;\\n }\\n}\\n","properties":[],"description":"

      Observer storing the latest value from a snapshot stream

      \\n","rawdescription":"\\nObserver storing the latest value from a snapshot stream","methods":[{"name":"error","args":[{"name":"err","type":"","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":38,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nHandles error emits\\n","description":"

      Handles error emits

      \\n","jsdoctags":[{"name":{"pos":895,"end":898,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"err"},"type":"","deprecated":false,"deprecationMessage":"","tagName":{"pos":889,"end":894,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The error value

      \\n"}]},{"name":"get","args":[],"optional":false,"returnType":"T","typeParameters":[],"line":18,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets the latest value or throw on errors\\n","description":"

      Gets the latest value or throw on errors

      \\n","jsdoctags":[{"tagName":{"pos":521,"end":528,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The latest value

      \\n"}]},{"name":"next","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":30,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nHandles value emits\\n","description":"

      Handles value emits

      \\n","jsdoctags":[{"name":{"pos":772,"end":777,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":766,"end":771,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The new value

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"implements":["NextObserver","ErrorObserver"]},{"name":"StorageSelectors","id":"class-StorageSelectors-0d938da881e0833812d0d5fc912c373462855e27613ce56879abba3b34f8959431587c9ddcb129155b8908fe5dfe59498c3fcf8f154c461cf4461e749b880df5","file":"state/src/storage/storage.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { Selector } from \'@ngxs/store\';\\nimport { StorageId } from \'./storage.model\';\\nimport { StorageState } from \'./storage.state\';\\n/**\\n * Storage selectors - class for retrieving storage types\\n */\\nexport class StorageSelectors {\\n /**\\n * returns the value stored in the key,value pair in the storageId given\\n * @returns (id,key) of the given storage id else undefined\\n */\\n @Selector([StorageState])\\n static get(): (id: StorageId, key: string) => string | undefined {\\n return (id, key) => StorageState.getStorage(id).getItem(key) ?? undefined;\\n }\\n /**\\n * returns the number of items in the given storage id stored\\n * @returns length of the given StorageId supplied\\n */\\n @Selector([StorageState])\\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\\n // @ts-ignore Allow selector name\\n static length(): (id: StorageId) => number | undefined {\\n return (id) => StorageState.getStorage(id).length;\\n }\\n}\\n","properties":[],"description":"

      Storage selectors - class for retrieving storage types

      \\n","rawdescription":"\\n\\nStorage selectors - class for retrieving storage types\\n","methods":[{"name":"get","args":[],"optional":false,"returnType":"string | undefined","typeParameters":[],"line":13,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nreturns the value stored in the key,value pair in the storageId given\\n","description":"

      returns the value stored in the key,value pair in the storageId given

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'StorageState\']"}],"modifierKind":[124],"jsdoctags":[{"tagName":{"pos":318,"end":325,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      (id,key) of the given storage id else undefined

      \\n"}]},{"name":"length","args":[],"optional":false,"returnType":"number | undefined","typeParameters":[],"line":23,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nreturns the number of items in the given storage id stored\\n","description":"

      returns the number of items in the given storage id stored

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'StorageState\']"}],"modifierKind":[124],"jsdoctags":[{"tagName":{"pos":636,"end":643,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      length of the given StorageId supplied

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]}],"directives":[{"name":"HoverDirective","id":"directive-HoverDirective-09dbb1791c1e8551d99aeb917f0d664e71738bebaebeed4601b7634f7980b675771162be311571667692c787d939ee9eeb40e57b4627c9cd75ebc926e849cc0d","file":"src/lib/hover/hover.directive.ts","type":"directive","description":"

      Hover overlay directive to be used across the application

      \\n","rawdescription":"\\nHover overlay directive to be used across the application","sourceCode":"import { ConnectionPositionPair, Overlay } from \'@angular/cdk/overlay\';\\nimport { TemplatePortal } from \'@angular/cdk/portal\';\\nimport { Directive, ElementRef, HostListener, inject, Input, TemplateRef, ViewContainerRef } from \'@angular/core\';\\n\\n/** Context passed to hover content templates */\\nexport interface HoverContext {\\n /** Data provided by the user for use inside the content template */\\n $implicit: T;\\n}\\n\\n/** Hover overlay directive to be used across the application */\\n@Directive({\\n selector: \'[hraHover]\',\\n standalone: true,\\n})\\nexport class HoverDirective {\\n /** Setter for the content to be displayed in the overlay */\\n @Input(\'hraHover\')\\n set content(content: TemplateRef>) {\\n this.portal = new TemplatePortal(content, this.viewContainerRef, this._data);\\n this.updateContent();\\n }\\n\\n /** Setter for the context that is to be displayed in the portal attached to the overlay */\\n @Input(\'hraHoverData\')\\n set data(data: T) {\\n this._data = { $implicit: data };\\n if (this.portal) {\\n this.portal.context = this._data;\\n this.updateContent();\\n }\\n }\\n\\n /** Reference to the element that the directive is attached to */\\n private readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /** Reference to the overlay that is created when the userhovers over the element along with its position setting */\\n readonly overlayRef = inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n });\\n\\n /** Reference view container that the directive is attached to */\\n private readonly viewContainerRef = inject(ViewContainerRef);\\n\\n /** Store the data that is passed into the data input property */\\n private _data?: HoverContext;\\n\\n /** Portal that is created to display the overlay */\\n portal?: TemplatePortal>;\\n\\n /** Function to handle the mouse over event to attach the portal and display the hover content */\\n @HostListener(\'mouseover\')\\n startHover(): void {\\n const { overlayRef, portal } = this;\\n if (!overlayRef.hasAttached() && portal) {\\n overlayRef.attach(portal);\\n }\\n }\\n\\n /** Function to handle the mouse out event to detach the portal */\\n @HostListener(\'mouseout\')\\n endHover(): void {\\n const { overlayRef } = this;\\n if (overlayRef.hasAttached()) {\\n overlayRef.detach();\\n }\\n }\\n\\n /** Function to handle the updation of overlay with up to date content when the input changes */\\n private updateContent(): void {\\n const { overlayRef, portal } = this;\\n if (overlayRef.hasAttached() && portal) {\\n overlayRef.detach();\\n overlayRef.attach(portal);\\n }\\n }\\n}\\n","selector":"[hraHover]","providers":[],"inputsClass":[{"name":"hraHover","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSetter for the content to be displayed in the overlay","description":"

      Setter for the content to be displayed in the overlay

      \\n","line":19,"type":"TemplateRef>","decorators":[]},{"name":"hraHoverData","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSetter for the context that is to be displayed in the portal attached to the overlay","description":"

      Setter for the context that is to be displayed in the portal attached to the overlay

      \\n","line":26,"type":"T","decorators":[]}],"outputsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[{"name":"mouseout","args":[],"argsDecorator":[],"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse out event to detach the portal","description":"

      Function to handle the mouse out event to detach the portal

      \\n","line":71},{"name":"mouseover","args":[],"argsDecorator":[],"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse over event to attach the portal and display the hover content","description":"

      Function to handle the mouse over event to attach the portal and display the hover content

      \\n","line":62}],"propertiesClass":[{"name":"overlayRef","defaultValue":"inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Reference to the overlay that is created when the userhovers over the element along with its position setting

      \\n","line":38,"rawdescription":"\\nReference to the overlay that is created when the userhovers over the element along with its position setting","modifierKind":[144]},{"name":"portal","deprecated":false,"deprecationMessage":"","type":"TemplatePortal>","optional":true,"description":"

      Portal that is created to display the overlay

      \\n","line":58,"rawdescription":"\\nPortal that is created to display the overlay"}],"methodsClass":[{"name":"endHover","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":71,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse out event to detach the portal","description":"

      Function to handle the mouse out event to detach the portal

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'mouseout\'"}]},{"name":"startHover","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":62,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse over event to attach the portal and display the hover content","description":"

      Function to handle the mouse over event to attach the portal and display the hover content

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'mouseover\'"}]}],"accessors":{"content":{"name":"content","setSignature":{"name":"content","type":"void","deprecated":false,"deprecationMessage":"","args":[{"name":"content","type":"TemplateRef>","deprecated":false,"deprecationMessage":""}],"returnType":"void","line":19,"rawdescription":"\\nSetter for the content to be displayed in the overlay","description":"

      Setter for the content to be displayed in the overlay

      \\n","jsdoctags":[{"name":"content","type":"TemplateRef>","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}},"data":{"name":"data","setSignature":{"name":"data","type":"void","deprecated":false,"deprecationMessage":"","args":[{"name":"data","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"void","line":26,"rawdescription":"\\nSetter for the context that is to be displayed in the portal attached to the overlay","description":"

      Setter for the context that is to be displayed in the portal attached to the overlay

      \\n","jsdoctags":[{"name":"data","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}}}},{"name":"LinkDirective","id":"directive-LinkDirective-3a72ea9951359ac8c2820ab17b233c7a92ebad446e52761c9694b431a28bc3d08c8fd1d8405a44a840bcdc6b63328cdbda54820dabf5f26d797e1be7d5cd3a23","file":"src/lib/link/link.directive.ts","type":"directive","description":"

      Link Directive for routing

      \\n","rawdescription":"\\nLink Directive for routing","sourceCode":"import { Directive, ElementRef, HostBinding, HostListener, inject, Injector, Input, OnChanges } from \'@angular/core\';\\nimport { ActivatedRoute, Params, QueryParamsHandling, UrlCreationOptions } from \'@angular/router\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { EMPTY_LINK, LinkEntry, LinkRegistryActions, LinkRegistrySelectors, LinkType } from \'@hra-ui/cdk/state\';\\nimport { createExternalUrl, createInternalUrl } from \'@hra-ui/utils\';\\n\\n/** Link Directive for routing */\\n@Directive({\\n selector: \'[hraLink]\',\\n standalone: true,\\n})\\nexport class LinkDirective implements OnChanges {\\n /** linkId with empty string as default value */\\n @Input(\'hraLink\') linkId = EMPTY_LINK;\\n\\n /** Query string parameters */\\n @Input() queryParams?: Params;\\n\\n /** How to handle existing query params */\\n @Input() queryParamsHandling?: QueryParamsHandling;\\n\\n /** Url fragment */\\n @Input() fragment?: string;\\n\\n /** Whether to preserve the existing fragment */\\n @Input() preserveFragment?: boolean;\\n\\n /** Nagivate relative to a route. Only affects internal links. */\\n @Input() relativeTo?: ActivatedRoute;\\n\\n /** href of the element */\\n @HostBinding(\'attr.href\') href?: string;\\n /** rel attribute of the element */\\n @HostBinding(\'attr.rel\') rel?: string;\\n /** target attribute of the element */\\n @HostBinding(\'attr.target\') target?: string;\\n\\n /** Reference to this component\'s injector */\\n private readonly injector = inject(Injector);\\n /** Element tag on which this directive is mounted */\\n private readonly tagName = inject>(ElementRef).nativeElement.tagName.toLowerCase();\\n /** Selector for querying the link registry state */\\n private readonly queryLink = selectQuerySnapshot(LinkRegistrySelectors.query);\\n /** Dispatch action to navigate to a url */\\n private readonly navigate = dispatch(LinkRegistryActions.Navigate);\\n\\n /** Link Entry */\\n private link?: LinkEntry;\\n\\n /** Whether the host element is an anchor */\\n private get isAnchorElement(): boolean {\\n return [\'a\', \'area\'].includes(this.tagName);\\n }\\n\\n /** Whether the host element deals with resource urls */\\n private get isResourceUrl(): boolean {\\n return [\'base\', \'link\'].includes(this.tagName);\\n }\\n\\n /** Collects query params and fragment options into a single object */\\n private get extras(): UrlCreationOptions {\\n const { link } = this;\\n return this.mergeExtras(link?.type === LinkType.Internal ? link.extras : undefined, this);\\n }\\n\\n /** Updates the current link/url based on the inputs */\\n ngOnChanges(): void {\\n this.updateLink();\\n }\\n\\n /**\\n * Triggers when a click action is performed on the element\\n * @param event type of event\\n * @returns true/false based on entry and element\\n */\\n @HostListener(\'click\', [\'$event\'])\\n onClick(event: MouseEvent): boolean {\\n const { link, linkId, isAnchorElement } = this;\\n if (!link) {\\n return true;\\n }\\n\\n if (isAnchorElement) {\\n const { button, ctrlKey, shiftKey, altKey, metaKey } = event;\\n if (link.type === LinkType.External || button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {\\n return true;\\n }\\n }\\n\\n this.navigate(linkId, this.extras);\\n return !isAnchorElement;\\n }\\n\\n /** Updates the link entry and bound attributes */\\n private updateLink(): void {\\n const link = (this.link = this.queryLink(this.linkId));\\n ({ href: this.href, rel: this.rel, target: this.target } = this.getLinkAttributes(link));\\n }\\n\\n /**\\n * Gets the new values for different attributes bound to the host element\\n * @param link Current link entry\\n * @returns New attributes values to bind on the host element\\n */\\n private getLinkAttributes(link?: LinkEntry): { href?: string; rel?: string; target?: string } {\\n const { injector, extras, isResourceUrl } = this;\\n switch (link?.type) {\\n case LinkType.Internal:\\n return { href: createInternalUrl(injector, link.commands, extras, isResourceUrl) };\\n\\n case LinkType.External:\\n return { ...link, href: createExternalUrl(link.url, extras) };\\n\\n default:\\n return {};\\n }\\n }\\n\\n /**\\n * Merges two UrlCreationOptions.\\n * Undefined values in the second set does not override values from the first set.\\n * @param opt1 First set of options\\n * @param opt2 Second set of options\\n * @returns Merged options\\n */\\n private mergeExtras(opt1: UrlCreationOptions | undefined, opt2: UrlCreationOptions): UrlCreationOptions {\\n const result = { ...opt1 };\\n const mergeKey = (key: K) => {\\n if (opt2[key] !== undefined) {\\n result[key] = opt2[key];\\n }\\n };\\n\\n mergeKey(\'queryParams\');\\n mergeKey(\'queryParamsHandling\');\\n mergeKey(\'fragment\');\\n mergeKey(\'preserveFragment\');\\n mergeKey(\'relativeTo\');\\n return result;\\n }\\n}\\n","selector":"[hraLink]","providers":[],"inputsClass":[{"name":"fragment","deprecated":false,"deprecationMessage":"","rawdescription":"\\nUrl fragment","description":"

      Url fragment

      \\n","line":23,"type":"string","decorators":[]},{"name":"hraLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nlinkId with empty string as default value","description":"

      linkId with empty string as default value

      \\n","line":14,"type":"any","decorators":[]},{"name":"preserveFragment","deprecated":false,"deprecationMessage":"","rawdescription":"\\nWhether to preserve the existing fragment","description":"

      Whether to preserve the existing fragment

      \\n","line":26,"type":"boolean","decorators":[]},{"name":"queryParams","deprecated":false,"deprecationMessage":"","rawdescription":"\\nQuery string parameters","description":"

      Query string parameters

      \\n","line":17,"type":"Params","decorators":[]},{"name":"queryParamsHandling","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHow to handle existing query params","description":"

      How to handle existing query params

      \\n","line":20,"type":"QueryParamsHandling","decorators":[]},{"name":"relativeTo","deprecated":false,"deprecationMessage":"","rawdescription":"\\nNagivate relative to a route. Only affects internal links.","description":"

      Nagivate relative to a route. Only affects internal links.

      \\n","line":29,"type":"ActivatedRoute","decorators":[]}],"outputsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[{"name":"attr.href","deprecated":false,"deprecationMessage":"","rawdescription":"\\nhref of the element","description":"

      href of the element

      \\n","line":32,"type":"string","decorators":[]},{"name":"attr.rel","deprecated":false,"deprecationMessage":"","rawdescription":"\\nrel attribute of the element","description":"

      rel attribute of the element

      \\n","line":34,"type":"string","decorators":[]},{"name":"attr.target","deprecated":false,"deprecationMessage":"","rawdescription":"\\ntarget attribute of the element","description":"

      target attribute of the element

      \\n","line":36,"type":"string","decorators":[]}],"hostListeners":[{"name":"click","args":[{"name":"event","type":"MouseEvent","deprecated":false,"deprecationMessage":""}],"argsDecorator":["$event"],"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nTriggers when a click action is performed on the element\\n","description":"

      Triggers when a click action is performed on the element

      \\n","jsdoctags":[{"pos":2659,"end":2691,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":338,"tagName":{"pos":2660,"end":2665,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      type of event

      \\n","name":{"pos":2666,"end":2671,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"event"},"isNameFirst":true,"isBracketed":false},{"pos":2691,"end":2741,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":339,"tagName":{"pos":2692,"end":2699,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true/false based on entry and element

      \\n"}],"line":77}],"propertiesClass":[{"name":"href","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      href of the element

      \\n","line":32,"rawdescription":"\\nhref of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.href\'"}]},{"name":"rel","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      rel attribute of the element

      \\n","line":34,"rawdescription":"\\nrel attribute of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.rel\'"}]},{"name":"target","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      target attribute of the element

      \\n","line":36,"rawdescription":"\\ntarget attribute of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.target\'"}]}],"methodsClass":[{"name":"onClick","args":[{"name":"event","type":"MouseEvent","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"boolean","typeParameters":[],"line":77,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nTriggers when a click action is performed on the element\\n","description":"

      Triggers when a click action is performed on the element

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'click\', [\'$event\']"}],"jsdoctags":[{"name":{"pos":2666,"end":2671,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"event"},"type":"MouseEvent","deprecated":false,"deprecationMessage":"","tagName":{"pos":2660,"end":2665,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      type of event

      \\n"},{"tagName":{"pos":2692,"end":2699,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true/false based on entry and element

      \\n"}]}],"implements":["OnChanges"]}],"components":[{"name":"DestroyHostComponent","id":"component-DestroyHostComponent-673df9acfa9566a60f8f4a880379e6b99e54ae5d5ad511c7cd7a96cae5e2bdc436037556a9ad3ca44bdc0a5f74c3a300031212bae7e0df53e349d8e34d30dd92","file":"injectors/src/lib/on-destroy/destroy-host.component.ts","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-destroy-host","styleUrls":[],"styles":[":host { display: none }"],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"el","defaultValue":"inject(ElementRef).nativeElement","deprecated":false,"deprecationMessage":"","type":"Element","optional":false,"description":"

      Reference to own dom element

      \\n","line":14,"rawdescription":"\\nReference to own dom element","modifierKind":[144]}],"methodsClass":[{"name":"create","args":[{"name":"container","type":"ViewContainerRef","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"ComponentRef","typeParameters":[],"line":22,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nCreates a new DestroyHostComponent inside the provided container.\\nThe element is inserted as the first child (index \'0\') in the container.\\n","description":"

      Creates a new DestroyHostComponent inside the provided container.\\nThe element is inserted as the first child (index '0') in the container.

      \\n","modifierKind":[124],"jsdoctags":[{"name":{"pos":661,"end":670,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"container"},"type":"ViewContainerRef","deprecated":false,"deprecationMessage":"","tagName":{"pos":655,"end":660,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      View in which to create the element

      \\n"},{"tagName":{"pos":713,"end":720,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The ComponentRef of the newly inserted element

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component used when attaching destroy lifecycle observables to a component/directive/pipe

      \\n","rawdescription":"\\n\\nComponent used when attaching destroy lifecycle observables to a component/directive/pipe\\n","type":"component","sourceCode":"import { AfterViewInit, Component, ComponentRef, ElementRef, inject, ViewContainerRef } from \'@angular/core\';\\n\\n/**\\n * Component used when attaching destroy lifecycle observables to a component/directive/pipe\\n */\\n@Component({\\n selector: \'hra-destroy-host\',\\n standalone: true,\\n template: \'\',\\n styles: [\':host { display: none }\'],\\n})\\nexport class DestroyHostComponent implements AfterViewInit {\\n /** Reference to own dom element */\\n readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /**\\n * Creates a new DestroyHostComponent inside the provided container.\\n * The element is inserted as the first child (index \'0\') in the container.\\n * @param container View in which to create the element\\n * @returns The ComponentRef of the newly inserted element\\n */\\n static create(container: ViewContainerRef): ComponentRef {\\n return container.createComponent(DestroyHostComponent, { index: 0 });\\n }\\n\\n /** Disconnects the component from the dom tree */\\n ngAfterViewInit(): void {\\n this.el.remove();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":"","stylesData":":host { display: none }\\n","implements":["AfterViewInit"]}],"modules":[{"name":"CdkStateModule","id":"module-CdkStateModule-a93bb19297573c6c6708763b071fc9fb4b27e887170144694df55a5d5749e030c9dd51938c8c23a8844e3888ac2176fede6d8f95d54f41aead08116fa6c152d4","description":"","deprecationMessage":"","deprecated":false,"file":"state/src/state.module.ts","methods":[],"sourceCode":"import { NgModule } from \'@angular/core\';\\nimport { NgxsModule } from \'@ngxs/store\';\\nimport { LinkRegistryState } from \'./link-registry\';\\nimport { ResourceRegistryState } from \'./resource-registry\';\\nimport { StorageState } from \'./storage\';\\n\\n@NgModule({\\n imports: [NgxsModule.forFeature([LinkRegistryState, ResourceRegistryState, StorageState])],\\n})\\nexport class CdkStateModule {}\\n","children":[{"type":"providers","elements":[]},{"type":"declarations","elements":[]},{"type":"imports","elements":[]},{"type":"exports","elements":[]},{"type":"bootstrap","elements":[]},{"type":"classes","elements":[]}]}],"miscellaneous":{"variables":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'LinkRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'ResourceRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'Storage\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"actionTypeRegistry","ctype":"miscellaneous","subtype":"variable","file":"state/src/actions/action-type-registry.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new Set()","rawdescription":"Registry of action types","description":"

      Registry of action types

      \\n"},{"name":"BUILTIN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.discriminatedUnion(\'type\', [MARKDOWN_ENTRY, TEXT_ENTRY, URL_ENTRY])","rawdescription":"Union of all builtin entries","description":"

      Union of all builtin entries

      \\n"},{"name":"BUILTIN_TYPE_VALUES","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"Object.values(RawBuiltinResourceType)","rawdescription":"Builtin type strings as an array","description":"

      Builtin type strings as an array

      \\n"},{"name":"BuiltinResourceType","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"RawBuiltinResourceType as BuiltinTypes","rawdescription":"Builtin resource types","description":"

      Builtin resource types

      \\n"},{"name":"CUSTOM_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({ type: CUSTOM_ENTRY_TYPE }).passthrough()","rawdescription":"Custom entry","description":"

      Custom entry

      \\n"},{"name":"CUSTOM_ENTRY_TYPE","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .refine((val) => !isBuiltinType(val), \'Invalid builtin resource format\')\\n .transform>(createCustomType)","rawdescription":"Custom entry type validator with transformation","description":"

      Custom entry type validator with transformation

      \\n"},{"name":"CUSTOM_TYPE_PREFIX","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"string","defaultValue":"\'custom:\'","rawdescription":"Prefix of all custom types","description":"

      Prefix of all custom types

      \\n"},{"name":"DESTRUCTOR_CACHE","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/on-destroy/on-destroy.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new WeakMap>()","rawdescription":"Cached destructor observables","description":"

      Cached destructor observables

      \\n"},{"name":"EMPTY_LINK","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"createLinkId(\'@@__EMPTY__\')","rawdescription":"Empty link id","description":"

      Empty link id

      \\n"},{"name":"EXTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.External),\\n url: z.string(),\\n rel: z.string().default(\'noopener\'),\\n target: z.string(),\\n })\\n .partial({ rel: true, target: true })","rawdescription":"Type for external link entry","description":"

      Type for external link entry

      \\n"},{"name":"INTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.Internal),\\n commands: z.any().array(),\\n extras: z\\n .object({\\n queryParams: z.record(z.any()).nullable(),\\n fragment: z.string(),\\n queryParamsHandling: z.enum([\'merge\', \'preserve\', \'\']).nullable(),\\n preserveFragment: z.boolean(),\\n onSameUrlNavigation: z.literal(\'reload\'),\\n skipLocationChange: z.boolean(),\\n replaceUrl: z.boolean(),\\n })\\n .partial(),\\n })\\n .partial({ extras: true })","rawdescription":"Type for internal link entry","description":"

      Type for internal link entry

      \\n"},{"name":"LINK_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(\\n z\\n .string()\\n .transform((id) => `LinkId:\'${id}\'`)\\n .brand(\'LinkId\'),\\n z.discriminatedUnion(\'type\', [EXTERNAL_LINK_SCHEMA, INTERNAL_LINK_SCHEMA])\\n)","rawdescription":"Schema for link registry","description":"

      Schema for link registry

      \\n"},{"name":"MARKDOWN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Markdown),\\n markdown: z.string(),\\n})","rawdescription":"Markdown data","description":"

      Markdown data

      \\n"},{"name":"NO_ERROR_SENTINEL_OBJ","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"object","defaultValue":"{}","rawdescription":"Object indicating that no error has been emitted","description":"

      Object indicating that no error has been emitted

      \\n"},{"name":"RESOURCE_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.union([BUILTIN_ENTRY, CUSTOM_ENTRY])","rawdescription":"Builtin or custom entries","description":"

      Builtin or custom entries

      \\n"},{"name":"RESOURCE_ID","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .transform((id) => `ResourceId:\'${id}\'`)\\n .brand(\'ResourceId\')","rawdescription":"Resource identifier validator with transformation","description":"

      Resource identifier validator with transformation

      \\n"},{"name":"RESOURCE_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(RESOURCE_ID, RESOURCE_ENTRY)","rawdescription":"State schema","description":"

      State schema

      \\n"},{"name":"TEXT_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Text),\\n text: z.string(),\\n})","rawdescription":"Text data","description":"

      Text data

      \\n"},{"name":"URL_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Url),\\n url: z.string(),\\n})","rawdescription":"External url","description":"

      External url

      \\n"}],"functions":[{"name":"Action","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new base action with a specified type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":685,"end":689,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":679,"end":684,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type

      \\n"},{"tagName":{"pos":706,"end":713,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A base action class

      \\n"}]},{"name":"ActionGroup","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory that adds a common group string to each action type

      \\n","args":[{"name":"group","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":421,"end":426,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"group"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Common action type group

      \\n"},{"tagName":{"pos":456,"end":463,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An action factory

      \\n"}]},{"name":"assertUniqueActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Asserts that an action type is unique

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":141,"end":145,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":135,"end":140,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"createActionFactory","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory function

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":""}],"returnType":"A","jsdoctags":[{"name":{"pos":500,"end":504,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":494,"end":499,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor

      \\n"},{"name":{"pos":534,"end":543,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","tagName":{"pos":528,"end":533,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Initial bound arguments

      \\n"},{"tagName":{"pos":572,"end":579,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A factory function creating a new action on each call

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>>>","jsdoctags":[{"name":{"pos":4708,"end":4712,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":4702,"end":4707,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"tagName":{"pos":4735,"end":4742,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type with a payload. The payload should be\\nspecified using the {@link payload} function

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""},{"name":"payload","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":5138,"end":5142,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":5132,"end":5137,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"name":{"pos":5171,"end":5178,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"payload"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":5165,"end":5170,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Payload type

      \\n"},{"tagName":{"pos":5032,"end":5039,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"

      const MyResourceType = createCustomType('my-type', payload<{ value: number }>());

      \\n"},{"tagName":{"pos":5196,"end":5203,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Implementation of createCustomType overloads

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createLinkId","file":"state/src/link-registry/link-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      function to createa unique link ids

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"LinkId","jsdoctags":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createResourceId","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new resource identifier

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":4258,"end":4260,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4252,"end":4257,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw identifier

      \\n"},{"tagName":{"pos":4280,"end":4287,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A resource id

      \\n"}]},{"name":"dispatch","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"A","jsdoctags":[{"name":{"pos":1721,"end":1725,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1715,"end":1720,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":1779,"end":1788,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":1773,"end":1778,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":1835,"end":1842,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatch$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.\\nEach call to the wrapper returns an observable that emits the action instance once the\\ndispatch action has completed.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":2426,"end":2430,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":2420,"end":2425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":2484,"end":2493,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2478,"end":2483,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":2540,"end":2547,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatchAction","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns passed actions unchanged

      \\n","args":[],"returnType":"A","jsdoctags":[{"tagName":{"pos":3054,"end":3061,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchAction$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns an observable that emits the passed actions when the dispatch has finished

      \\n","args":[],"returnType":"Observable
      ","jsdoctags":[{"tagName":{"pos":3418,"end":3425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchImpl","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Common dispatch functionality used to implement all dispatch functions

      \\n","args":[{"name":"actionFactory","deprecated":false,"deprecationMessage":""},{"name":"resultHandler","deprecated":false,"deprecationMessage":""}],"returnType":"R","jsdoctags":[{"name":{"pos":976,"end":989,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"actionFactory"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":970,"end":975,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Creates an action or array of actions from the user provided arguments

      \\n"},{"name":{"pos":1071,"end":1084,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"resultHandler"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1065,"end":1070,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Selects the output value from the action and the dispatch observable

      \\n"},{"tagName":{"pos":1158,"end":1165,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new dispatch function taking user arguments, dispatches actions, and returns a value

      \\n"}]},{"name":"findDestructorScope","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds the nearest destructor scope object in the current injection context

      \\n","args":[],"returnType":"DestructorScope","jsdoctags":[{"tagName":{"pos":1267,"end":1274,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The scope on which cleanup can be attached

      \\n"}]},{"name":"findStableKeyObject","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds a stable object in the current injection context to be\\nused as a key in the destructor cache

      \\n","args":[],"returnType":"object","jsdoctags":[{"tagName":{"pos":912,"end":919,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An object

      \\n"}]},{"name":"firstDefinedValue","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Get the first defined value returned by a generator

      \\n","args":[{"name":"genFn","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":441,"end":446,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"genFn"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":435,"end":440,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Generator function taking no arguments

      \\n"},{"tagName":{"pos":490,"end":497,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The first non-null value

      \\n"}]},{"name":"getEntry","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Internal helper function for getting an entry from the state

      \\n","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""},{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"type","type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"T | undefined","jsdoctags":[{"name":{"pos":5670,"end":5675,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":5664,"end":5669,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state snapshot

      \\n"},{"name":{"pos":5709,"end":5711,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":5703,"end":5708,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":5734,"end":5738,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":5728,"end":5733,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional entry type

      \\n"},{"tagName":{"pos":5763,"end":5770,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The entry object it exists and has the correct type, otherwise undefined

      \\n"}]},{"name":"identity","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Identity function returning the first argument passed

      \\n","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"injectDestroy$","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Inject an observable that emits and completes at the same time as the component, directive, pipe, or service\\nit is injected into. It can be used to control the lifetime of other observables using\\nthe takeUntil pipe, and to build other complex injection functions.

      \\n

      Caveats:

      \\n
        \\n
      • There are NO guarantees about whether the returned observable will emit and complete\\nbefore or after the regular ngOnDestroy lifecycle hook
      • \\n
      • For root and module level services the observable may never complete unless\\nthe containing module is explicitly destroyed, so don't rely on it for important operations
      • \\n
      • Components, directives, pipe, and services that manipulate the ViewContainerRef MUST\\ntake care to maintain the view controlling the lifecycle of the observable. Failure\\nto do so may result in early emit and completion of the returned observable
      • \\n
      \\n

      Based on comment on https://github.com/angular/angular/issues/10185\\nMostly https://github.com/angular/angular/issues/10185#issuecomment-1165545544 and\\nhttps://github.com/angular/angular/issues/10185#issuecomment-1199063426

      \\n","args":[],"returnType":"Observable","jsdoctags":[{"tagName":{"pos":2694,"end":2701,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that emits and completes when the component/directive/etc. is destroyed

      \\n"}]},{"name":"isBuiltinType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type string has builtin support

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":3572,"end":3576,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3566,"end":3571,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3597,"end":3604,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is one of the builtin types, otherwise false

      \\n"}]},{"name":"isCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type is a custom resource type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":3881,"end":3885,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3875,"end":3880,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3906,"end":3913,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is a custom type, otherwise false

      \\n"}]},{"name":"isDestructorScopeLike","file":"injectors/src/lib/on-destroy/destructor-subject.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether an object is destructor scope like

      \\n","args":[{"name":"obj","deprecated":false,"deprecationMessage":""}],"returnType":"DestructorScope","jsdoctags":[{"name":{"pos":328,"end":331,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"obj"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":322,"end":327,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Value to test

      \\n"},{"tagName":{"pos":350,"end":357,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true if the object seems to be a destructor scope, otherwise false

      \\n"}]},{"name":"markForCheck","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Marks a view for change detection whenever a new value is emitted

      \\n","args":[{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"MonoTypeOperatorFunction","jsdoctags":[{"name":{"pos":689,"end":696,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":683,"end":688,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options to explicitly disable marking

      \\n"},{"tagName":{"pos":739,"end":746,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A rxjs operator

      \\n"}]},{"name":"payload","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Helper function used to specify the payload format when creating custom types

      \\n","args":[],"returnType":"ResourceEntryPayload","jsdoctags":[{"tagName":{"pos":4477,"end":4484,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A custom payload type

      \\n"}]},{"name":"pipeActionInstance","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Maps all emits to an action value

      \\n","args":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":""},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":""}],"returnType":"Observable","jsdoctags":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"registerActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Registers an action type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":421,"end":425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"select$","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an observable emitting parts of the state. The observable's lifetime\\nis automatically tied to the injection context where this is called.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":1313,"end":1321,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":1307,"end":1312,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State selection function or token

      \\n"},{"name":{"pos":1366,"end":1373,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1360,"end":1365,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Additional select options

      \\n"},{"tagName":{"pos":1404,"end":1411,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable of the selected state

      \\n"}]},{"name":"selectQuerySnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that can be called with the same arguments as the query selector\\nand returns the latest value each time. Automatically marks components, directives, or pipes\\nfor change detection whenever a new value is available. Note that since typescript has yet to\\nimplement support for higher order generics there is sometimes a need to specialize the\\nreturned query function with the correct arguments and return type. This can be done as shown\\nin the examples.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"SelectQuery","jsdoctags":[{"name":{"pos":2433,"end":2441,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":2427,"end":2432,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store query selector

      \\n"},{"name":{"pos":2473,"end":2482,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2467,"end":2472,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional bound query arguments

      \\n"},{"tagName":{"pos":1631,"end":1638,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Basic usage\\nclass Component {\\n...\\n// Return type: () => string\\nreadonly markdown = querySelectSnapshot(ResourceRegistrySelectors.markdown, id);\\n// Return type: (id: ResourceId) => string\\nreadonly markdownById = querySelectSnapshot(ResourceRegistrySelectors.markdown);\\n...\\n}"},{"tagName":{"pos":1975,"end":1982,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Specialize query arguments and/or return type\\nclass Component {\\n...\\n// Return type: () => number[]\\nreadonly points = querySelectSnapshot(ResourceRegistrySelectors.field, id, type, \'points\', []);\\n// Return type: (field: string, defaultValue: string) => string\\nreadonly getStringField = querySelectSnapshot(ResourceRegistrySelectors.field, id, type);\\n}"},{"tagName":{"pos":2518,"end":2525,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function taking the same arguments as the query selector (excluding bound arguments)

      \\n"}]},{"name":"selectSnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that returns the latest snapshot value each time it is called\\nAutomatically marks components, directives, or pipes for change detection whenever\\na new value is available

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":819,"end":827,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":813,"end":818,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store data selector

      \\n"},{"tagName":{"pos":852,"end":859,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function

      \\n"}]}],"typealiases":[{"name":"AnyEntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.anyEntry}

      \\n","kind":178},{"name":"BuiltinTypes","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Maps raw builtin type strings to ResourceType

      \\n","kind":194},{"name":"CustomResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Typed custom resource entry

      \\n","kind":187},{"name":"CustomResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":" `custom:${T}`","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Custom entry types

      \\n","kind":197},{"name":"DataQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for resource data

      \\n","kind":178},{"name":"EntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.entry}

      \\n","kind":178},{"name":"ExternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for external link entry

      \\n","kind":177},{"name":"ExtractBuiltinEntryType","ctype":"miscellaneous","subtype":"typealias","rawtype":"UnionMember | type | T>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Extracts the builtin entry with type T

      \\n","kind":177},{"name":"FieldQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.field}

      \\n","kind":178},{"name":"InternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for internal link entry

      \\n","kind":177},{"name":"LinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      entry for link registry

      \\n","kind":177},{"name":"LinkId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type for unique identifier for link

      \\n","kind":177},{"name":"LinkRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for State Context of LinkRegistry

      \\n","kind":177},{"name":"LinkRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for LinkRegistry State

      \\n","kind":177},{"name":"LinkRegistryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/link-registry/link-registry.state.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for link entry optionally with type specified

      \\n","kind":178},{"name":"ResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Any resource entry

      \\n","kind":177},{"name":"ResourceEntryPayload","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Payload type used when creating custom types

      \\n","kind":187},{"name":"ResourceId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource identifier

      \\n","kind":177},{"name":"ResourceRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Context type for action handlers

      \\n","kind":177},{"name":"ResourceRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State data model

      \\n","kind":177},{"name":"ResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource type string with entry typings

      \\n","kind":187},{"name":"RestArgs","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Get remaining arguments after applying bound arguments

      \\n","kind":188},{"name":"SelectQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Function type returned by {@link selectQuerySnapshot}

      \\n","kind":178},{"name":"StateSelector","ctype":"miscellaneous","subtype":"typealias","rawtype":" | StateToken","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","description":"

      Selector type for select style functions

      \\n","kind":186},{"name":"StorageContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Helper alias for action handler's ctx argument

      \\n","kind":177},{"name":"StorageModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"Record","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type alias for the array of Storage objects

      \\n","kind":177}],"enumerations":[{"name":"LinkType","childs":[{"name":"Internal","deprecated":false,"deprecationMessage":"","value":"internal"},{"name":"External","deprecated":false,"deprecationMessage":"","value":"external"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Types for Link

      \\n","file":"state/src/link-registry/link-registry.model.ts"},{"name":"RawBuiltinResourceType","childs":[{"name":"Markdown","deprecated":false,"deprecationMessage":"","value":"markdown"},{"name":"Text","deprecated":false,"deprecationMessage":"","value":"text"},{"name":"Url","deprecated":false,"deprecationMessage":"","value":"url"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Raw builtin type strings

      \\n","file":"state/src/resource-registry/resource-registry.model.ts"},{"name":"StorageId","childs":[{"name":"Local","deprecated":false,"deprecationMessage":"","value":"local"},{"name":"Session","deprecated":false,"deprecationMessage":"","value":"session"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      StorageId - enum with values as Local, Session - identifier for storage types

      \\n","file":"state/src/storage/storage.model.ts"}],"groupedVariables":{"state/src/link-registry/link-registry.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'LinkRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/resource-registry/resource-registry.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'ResourceRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/storage/storage.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'Storage\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/actions/action-type-registry.ts":[{"name":"actionTypeRegistry","ctype":"miscellaneous","subtype":"variable","file":"state/src/actions/action-type-registry.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new Set()","rawdescription":"Registry of action types","description":"

      Registry of action types

      \\n"}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"BUILTIN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.discriminatedUnion(\'type\', [MARKDOWN_ENTRY, TEXT_ENTRY, URL_ENTRY])","rawdescription":"Union of all builtin entries","description":"

      Union of all builtin entries

      \\n"},{"name":"BUILTIN_TYPE_VALUES","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"Object.values(RawBuiltinResourceType)","rawdescription":"Builtin type strings as an array","description":"

      Builtin type strings as an array

      \\n"},{"name":"BuiltinResourceType","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"RawBuiltinResourceType as BuiltinTypes","rawdescription":"Builtin resource types","description":"

      Builtin resource types

      \\n"},{"name":"CUSTOM_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({ type: CUSTOM_ENTRY_TYPE }).passthrough()","rawdescription":"Custom entry","description":"

      Custom entry

      \\n"},{"name":"CUSTOM_ENTRY_TYPE","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .refine((val) => !isBuiltinType(val), \'Invalid builtin resource format\')\\n .transform>(createCustomType)","rawdescription":"Custom entry type validator with transformation","description":"

      Custom entry type validator with transformation

      \\n"},{"name":"CUSTOM_TYPE_PREFIX","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"string","defaultValue":"\'custom:\'","rawdescription":"Prefix of all custom types","description":"

      Prefix of all custom types

      \\n"},{"name":"MARKDOWN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Markdown),\\n markdown: z.string(),\\n})","rawdescription":"Markdown data","description":"

      Markdown data

      \\n"},{"name":"RESOURCE_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.union([BUILTIN_ENTRY, CUSTOM_ENTRY])","rawdescription":"Builtin or custom entries","description":"

      Builtin or custom entries

      \\n"},{"name":"RESOURCE_ID","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .transform((id) => `ResourceId:\'${id}\'`)\\n .brand(\'ResourceId\')","rawdescription":"Resource identifier validator with transformation","description":"

      Resource identifier validator with transformation

      \\n"},{"name":"RESOURCE_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(RESOURCE_ID, RESOURCE_ENTRY)","rawdescription":"State schema","description":"

      State schema

      \\n"},{"name":"TEXT_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Text),\\n text: z.string(),\\n})","rawdescription":"Text data","description":"

      Text data

      \\n"},{"name":"URL_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Url),\\n url: z.string(),\\n})","rawdescription":"External url","description":"

      External url

      \\n"}],"injectors/src/lib/on-destroy/on-destroy.ts":[{"name":"DESTRUCTOR_CACHE","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/on-destroy/on-destroy.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new WeakMap>()","rawdescription":"Cached destructor observables","description":"

      Cached destructor observables

      \\n"}],"state/src/link-registry/link-registry.model.ts":[{"name":"EMPTY_LINK","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"createLinkId(\'@@__EMPTY__\')","rawdescription":"Empty link id","description":"

      Empty link id

      \\n"},{"name":"EXTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.External),\\n url: z.string(),\\n rel: z.string().default(\'noopener\'),\\n target: z.string(),\\n })\\n .partial({ rel: true, target: true })","rawdescription":"Type for external link entry","description":"

      Type for external link entry

      \\n"},{"name":"INTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.Internal),\\n commands: z.any().array(),\\n extras: z\\n .object({\\n queryParams: z.record(z.any()).nullable(),\\n fragment: z.string(),\\n queryParamsHandling: z.enum([\'merge\', \'preserve\', \'\']).nullable(),\\n preserveFragment: z.boolean(),\\n onSameUrlNavigation: z.literal(\'reload\'),\\n skipLocationChange: z.boolean(),\\n replaceUrl: z.boolean(),\\n })\\n .partial(),\\n })\\n .partial({ extras: true })","rawdescription":"Type for internal link entry","description":"

      Type for internal link entry

      \\n"},{"name":"LINK_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(\\n z\\n .string()\\n .transform((id) => `LinkId:\'${id}\'`)\\n .brand(\'LinkId\'),\\n z.discriminatedUnion(\'type\', [EXTERNAL_LINK_SCHEMA, INTERNAL_LINK_SCHEMA])\\n)","rawdescription":"Schema for link registry","description":"

      Schema for link registry

      \\n"}],"injectors/src/lib/select/snapshot-observer.ts":[{"name":"NO_ERROR_SENTINEL_OBJ","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"object","defaultValue":"{}","rawdescription":"Object indicating that no error has been emitted","description":"

      Object indicating that no error has been emitted

      \\n"}]},"groupedFunctions":{"state/src/actions/actions.ts":[{"name":"Action","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new base action with a specified type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":685,"end":689,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":679,"end":684,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type

      \\n"},{"tagName":{"pos":706,"end":713,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A base action class

      \\n"}]},{"name":"ActionGroup","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory that adds a common group string to each action type

      \\n","args":[{"name":"group","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":421,"end":426,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"group"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Common action type group

      \\n"},{"tagName":{"pos":456,"end":463,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An action factory

      \\n"}]}],"state/src/actions/action-type-registry.ts":[{"name":"assertUniqueActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Asserts that an action type is unique

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":141,"end":145,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":135,"end":140,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"registerActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Registers an action type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":421,"end":425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]}],"injectors/src/lib/dispatch/dispatch.ts":[{"name":"createActionFactory","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory function

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":""}],"returnType":"A","jsdoctags":[{"name":{"pos":500,"end":504,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":494,"end":499,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor

      \\n"},{"name":{"pos":534,"end":543,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","tagName":{"pos":528,"end":533,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Initial bound arguments

      \\n"},{"tagName":{"pos":572,"end":579,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A factory function creating a new action on each call

      \\n"}]},{"name":"dispatch","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"A","jsdoctags":[{"name":{"pos":1721,"end":1725,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1715,"end":1720,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":1779,"end":1788,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":1773,"end":1778,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":1835,"end":1842,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatch$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.\\nEach call to the wrapper returns an observable that emits the action instance once the\\ndispatch action has completed.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"Observable
      ","jsdoctags":[{"name":{"pos":2426,"end":2430,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":2420,"end":2425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":2484,"end":2493,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2478,"end":2483,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":2540,"end":2547,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatchAction","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns passed actions unchanged

      \\n","args":[],"returnType":"A","jsdoctags":[{"tagName":{"pos":3054,"end":3061,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchAction$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns an observable that emits the passed actions when the dispatch has finished

      \\n","args":[],"returnType":"Observable
      ","jsdoctags":[{"tagName":{"pos":3418,"end":3425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchImpl","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Common dispatch functionality used to implement all dispatch functions

      \\n","args":[{"name":"actionFactory","deprecated":false,"deprecationMessage":""},{"name":"resultHandler","deprecated":false,"deprecationMessage":""}],"returnType":"R","jsdoctags":[{"name":{"pos":976,"end":989,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"actionFactory"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":970,"end":975,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Creates an action or array of actions from the user provided arguments

      \\n"},{"name":{"pos":1071,"end":1084,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"resultHandler"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1065,"end":1070,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Selects the output value from the action and the dispatch observable

      \\n"},{"tagName":{"pos":1158,"end":1165,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new dispatch function taking user arguments, dispatches actions, and returns a value

      \\n"}]},{"name":"identity","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Identity function returning the first argument passed

      \\n","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"pipeActionInstance","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Maps all emits to an action value

      \\n","args":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":""},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":""}],"returnType":"Observable
      ","jsdoctags":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>>>","jsdoctags":[{"name":{"pos":4708,"end":4712,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":4702,"end":4707,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"tagName":{"pos":4735,"end":4742,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type with a payload. The payload should be\\nspecified using the {@link payload} function

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""},{"name":"payload","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":5138,"end":5142,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":5132,"end":5137,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"name":{"pos":5171,"end":5178,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"payload"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":5165,"end":5170,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Payload type

      \\n"},{"tagName":{"pos":5032,"end":5039,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"

      const MyResourceType = createCustomType('my-type', payload<{ value: number }>());

      \\n"},{"tagName":{"pos":5196,"end":5203,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Implementation of createCustomType overloads

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createResourceId","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new resource identifier

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":4258,"end":4260,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4252,"end":4257,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw identifier

      \\n"},{"tagName":{"pos":4280,"end":4287,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A resource id

      \\n"}]},{"name":"getEntry","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Internal helper function for getting an entry from the state

      \\n","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""},{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"type","type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"T | undefined","jsdoctags":[{"name":{"pos":5670,"end":5675,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":5664,"end":5669,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state snapshot

      \\n"},{"name":{"pos":5709,"end":5711,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":5703,"end":5708,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":5734,"end":5738,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":5728,"end":5733,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional entry type

      \\n"},{"tagName":{"pos":5763,"end":5770,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The entry object it exists and has the correct type, otherwise undefined

      \\n"}]},{"name":"isBuiltinType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type string has builtin support

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":3572,"end":3576,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3566,"end":3571,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3597,"end":3604,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is one of the builtin types, otherwise false

      \\n"}]},{"name":"isCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type is a custom resource type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":3881,"end":3885,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3875,"end":3880,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3906,"end":3913,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is a custom type, otherwise false

      \\n"}]},{"name":"payload","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Helper function used to specify the payload format when creating custom types

      \\n","args":[],"returnType":"ResourceEntryPayload","jsdoctags":[{"tagName":{"pos":4477,"end":4484,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A custom payload type

      \\n"}]}],"state/src/link-registry/link-registry.model.ts":[{"name":"createLinkId","file":"state/src/link-registry/link-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      function to createa unique link ids

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"LinkId","jsdoctags":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"injectors/src/lib/on-destroy/on-destroy.ts":[{"name":"findDestructorScope","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds the nearest destructor scope object in the current injection context

      \\n","args":[],"returnType":"DestructorScope","jsdoctags":[{"tagName":{"pos":1267,"end":1274,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The scope on which cleanup can be attached

      \\n"}]},{"name":"findStableKeyObject","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds a stable object in the current injection context to be\\nused as a key in the destructor cache

      \\n","args":[],"returnType":"object","jsdoctags":[{"tagName":{"pos":912,"end":919,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An object

      \\n"}]},{"name":"firstDefinedValue","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Get the first defined value returned by a generator

      \\n","args":[{"name":"genFn","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":441,"end":446,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"genFn"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":435,"end":440,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Generator function taking no arguments

      \\n"},{"tagName":{"pos":490,"end":497,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The first non-null value

      \\n"}]},{"name":"injectDestroy$","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Inject an observable that emits and completes at the same time as the component, directive, pipe, or service\\nit is injected into. It can be used to control the lifetime of other observables using\\nthe takeUntil pipe, and to build other complex injection functions.

      \\n

      Caveats:

      \\n
        \\n
      • There are NO guarantees about whether the returned observable will emit and complete\\nbefore or after the regular ngOnDestroy lifecycle hook
      • \\n
      • For root and module level services the observable may never complete unless\\nthe containing module is explicitly destroyed, so don't rely on it for important operations
      • \\n
      • Components, directives, pipe, and services that manipulate the ViewContainerRef MUST\\ntake care to maintain the view controlling the lifecycle of the observable. Failure\\nto do so may result in early emit and completion of the returned observable
      • \\n
      \\n

      Based on comment on https://github.com/angular/angular/issues/10185\\nMostly https://github.com/angular/angular/issues/10185#issuecomment-1165545544 and\\nhttps://github.com/angular/angular/issues/10185#issuecomment-1199063426

      \\n","args":[],"returnType":"Observable","jsdoctags":[{"tagName":{"pos":2694,"end":2701,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that emits and completes when the component/directive/etc. is destroyed

      \\n"}]}],"injectors/src/lib/on-destroy/destructor-subject.ts":[{"name":"isDestructorScopeLike","file":"injectors/src/lib/on-destroy/destructor-subject.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether an object is destructor scope like

      \\n","args":[{"name":"obj","deprecated":false,"deprecationMessage":""}],"returnType":"DestructorScope","jsdoctags":[{"name":{"pos":328,"end":331,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"obj"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":322,"end":327,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Value to test

      \\n"},{"tagName":{"pos":350,"end":357,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true if the object seems to be a destructor scope, otherwise false

      \\n"}]}],"injectors/src/lib/select/select.ts":[{"name":"markForCheck","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Marks a view for change detection whenever a new value is emitted

      \\n","args":[{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"MonoTypeOperatorFunction","jsdoctags":[{"name":{"pos":689,"end":696,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":683,"end":688,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options to explicitly disable marking

      \\n"},{"tagName":{"pos":739,"end":746,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A rxjs operator

      \\n"}]},{"name":"select$","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an observable emitting parts of the state. The observable's lifetime\\nis automatically tied to the injection context where this is called.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":1313,"end":1321,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":1307,"end":1312,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State selection function or token

      \\n"},{"name":{"pos":1366,"end":1373,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1360,"end":1365,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Additional select options

      \\n"},{"tagName":{"pos":1404,"end":1411,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable of the selected state

      \\n"}]}],"injectors/src/lib/select/select-snapshot.ts":[{"name":"selectQuerySnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that can be called with the same arguments as the query selector\\nand returns the latest value each time. Automatically marks components, directives, or pipes\\nfor change detection whenever a new value is available. Note that since typescript has yet to\\nimplement support for higher order generics there is sometimes a need to specialize the\\nreturned query function with the correct arguments and return type. This can be done as shown\\nin the examples.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"SelectQuery","jsdoctags":[{"name":{"pos":2433,"end":2441,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":2427,"end":2432,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store query selector

      \\n"},{"name":{"pos":2473,"end":2482,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2467,"end":2472,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional bound query arguments

      \\n"},{"tagName":{"pos":1631,"end":1638,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Basic usage\\nclass Component {\\n...\\n// Return type: () => string\\nreadonly markdown = querySelectSnapshot(ResourceRegistrySelectors.markdown, id);\\n// Return type: (id: ResourceId) => string\\nreadonly markdownById = querySelectSnapshot(ResourceRegistrySelectors.markdown);\\n...\\n}"},{"tagName":{"pos":1975,"end":1982,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Specialize query arguments and/or return type\\nclass Component {\\n...\\n// Return type: () => number[]\\nreadonly points = querySelectSnapshot(ResourceRegistrySelectors.field, id, type, \'points\', []);\\n// Return type: (field: string, defaultValue: string) => string\\nreadonly getStringField = querySelectSnapshot(ResourceRegistrySelectors.field, id, type);\\n}"},{"tagName":{"pos":2518,"end":2525,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function taking the same arguments as the query selector (excluding bound arguments)

      \\n"}]},{"name":"selectSnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that returns the latest snapshot value each time it is called\\nAutomatically marks components, directives, or pipes for change detection whenever\\na new value is available

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":819,"end":827,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":813,"end":818,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store data selector

      \\n"},{"tagName":{"pos":852,"end":859,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function

      \\n"}]}]},"groupedEnumerations":{"state/src/link-registry/link-registry.model.ts":[{"name":"LinkType","childs":[{"name":"Internal","deprecated":false,"deprecationMessage":"","value":"internal"},{"name":"External","deprecated":false,"deprecationMessage":"","value":"external"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Types for Link

      \\n","file":"state/src/link-registry/link-registry.model.ts"}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"RawBuiltinResourceType","childs":[{"name":"Markdown","deprecated":false,"deprecationMessage":"","value":"markdown"},{"name":"Text","deprecated":false,"deprecationMessage":"","value":"text"},{"name":"Url","deprecated":false,"deprecationMessage":"","value":"url"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Raw builtin type strings

      \\n","file":"state/src/resource-registry/resource-registry.model.ts"}],"state/src/storage/storage.model.ts":[{"name":"StorageId","childs":[{"name":"Local","deprecated":false,"deprecationMessage":"","value":"local"},{"name":"Session","deprecated":false,"deprecationMessage":"","value":"session"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      StorageId - enum with values as Local, Session - identifier for storage types

      \\n","file":"state/src/storage/storage.model.ts"}]},"groupedTypeAliases":{"state/src/resource-registry/resource-registry.selectors.ts":[{"name":"AnyEntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.anyEntry}

      \\n","kind":178},{"name":"DataQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for resource data

      \\n","kind":178},{"name":"EntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.entry}

      \\n","kind":178},{"name":"FieldQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.field}

      \\n","kind":178}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"BuiltinTypes","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Maps raw builtin type strings to ResourceType

      \\n","kind":194},{"name":"CustomResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Typed custom resource entry

      \\n","kind":187},{"name":"CustomResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":" `custom:${T}`","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Custom entry types

      \\n","kind":197},{"name":"ExtractBuiltinEntryType","ctype":"miscellaneous","subtype":"typealias","rawtype":"UnionMember | type | T>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Extracts the builtin entry with type T

      \\n","kind":177},{"name":"ResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Any resource entry

      \\n","kind":177},{"name":"ResourceEntryPayload","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Payload type used when creating custom types

      \\n","kind":187},{"name":"ResourceId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource identifier

      \\n","kind":177},{"name":"ResourceRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Context type for action handlers

      \\n","kind":177},{"name":"ResourceRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State data model

      \\n","kind":177},{"name":"ResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource type string with entry typings

      \\n","kind":187}],"state/src/link-registry/link-registry.model.ts":[{"name":"ExternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for external link entry

      \\n","kind":177},{"name":"InternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for internal link entry

      \\n","kind":177},{"name":"LinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      entry for link registry

      \\n","kind":177},{"name":"LinkId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type for unique identifier for link

      \\n","kind":177},{"name":"LinkRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for State Context of LinkRegistry

      \\n","kind":177},{"name":"LinkRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for LinkRegistry State

      \\n","kind":177}],"state/src/link-registry/link-registry.state.ts":[{"name":"LinkRegistryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/link-registry/link-registry.state.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for link entry optionally with type specified

      \\n","kind":178}],"injectors/src/lib/select/select-snapshot.ts":[{"name":"RestArgs","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Get remaining arguments after applying bound arguments

      \\n","kind":188},{"name":"SelectQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Function type returned by {@link selectQuerySnapshot}

      \\n","kind":178}],"injectors/src/lib/select/select.ts":[{"name":"StateSelector","ctype":"miscellaneous","subtype":"typealias","rawtype":" | StateToken","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","description":"

      Selector type for select style functions

      \\n","kind":186}],"state/src/storage/storage.model.ts":[{"name":"StorageContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Helper alias for action handler's ctx argument

      \\n","kind":177},{"name":"StorageModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"Record","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type alias for the array of Storage objects

      \\n","kind":177}]}}}')},"./dist/compodoc/components-atoms/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"GradientPoint","id":"interface-GradientPoint-deca5c57881562b1c16d34b446006d52194dfce42a4093fe366ac3fcbeaf7291e08172915aac95fc2938e856084da0fe61a29b9897eb6da4ca9edd58116c7198","file":"src/lib/gradient-legend/gradient-legend.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** An interface of gradient colors along with their percentages for the gradient bar. */\\nexport interface GradientPoint {\\n /** Gradient color at a specific percentage */\\n color: string;\\n /** Percentage point along the gradient bar */\\n percentage: number;\\n}\\n\\n/** Gradient legend for biomarkers */\\n@Component({\\n selector: \'hra-gradient-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./gradient-legend.component.html\',\\n styleUrls: [\'./gradient-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class GradientLegendComponent {\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Computes the css linear-gradient function for the gradient bar */\\n get gradientCss(): string {\\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(\',\');\\n return `linear-gradient(90deg, ${stops})`;\\n }\\n}\\n","properties":[{"name":"color","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Gradient color at a specific percentage

      \\n","line":7,"rawdescription":"\\nGradient color at a specific percentage"},{"name":"percentage","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Percentage point along the gradient bar

      \\n","line":9,"rawdescription":"\\nPercentage point along the gradient bar"}],"indexSignatures":[],"kind":165,"description":"

      An interface of gradient colors along with their percentages for the gradient bar.

      \\n","rawdescription":"\\nAn interface of gradient colors along with their percentages for the gradient bar.","methods":[]},{"name":"SizeLegend","id":"interface-SizeLegend-dae8784679328cc4f52418a0ae905fed758d8fca706c3b6238631087d98a163ec72f26f1b06661d00473eefd6eafd27ab263e34a661981ea71d5a1885746f8e9","file":"src/lib/size-legend/size-legend.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Defining the input data types for the radius and label to be displayed. */\\nexport interface SizeLegend {\\n /** Label under circle */\\n label: string;\\n /** Radius for cirlce */\\n radius: number;\\n}\\n\\n/** Size legend component for the biomarkers table. */\\n@Component({\\n selector: \'hra-size-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./size-legend.component.html\',\\n styleUrls: [\'./size-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SizeLegendComponent {\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Label under circle

      \\n","line":7,"rawdescription":"\\nLabel under circle"},{"name":"radius","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Radius for cirlce

      \\n","line":9,"rawdescription":"\\nRadius for cirlce"}],"indexSignatures":[],"kind":165,"description":"

      Defining the input data types for the radius and label to be displayed.

      \\n","rawdescription":"\\nDefining the input data types for the radius and label to be displayed.","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"EmailInputComponent","id":"component-EmailInputComponent-1f7d0d808093e56fed36089f88f516d958678e7e917eb4299c6deb26edf7810680d231b1d0c349c0b380f39d8927a3738e20cd80686dd35cc343ef10c58dc481","file":"src/lib/email-input/email-input.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-email-input","styleUrls":["./email-input.component.scss"],"styles":[],"templateUrl":["./email-input.component.html"],"viewProviders":[],"inputsClass":[{"name":"placeholder","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA placeholder for the email input field. This will be disappeared when the email is typed.","description":"

      A placeholder for the email input field. This will be disappeared when the email is typed.

      \\n","line":22,"type":"string","decorators":[]}],"outputsClass":[{"name":"emailChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the new email when the input changes or undefined if the email is invalid","description":"

      Emits the new email when the input changes or undefined if the email is invalid

      \\n","line":25,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required, Validators.email],\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A control to validate the email.

      \\n","line":31,"rawdescription":"\\nA control to validate the email.","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable emitting when the component is destroyed

      \\n","line":28,"rawdescription":"\\nObservable emitting when the component is destroyed","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Email input components for contact modal.

      \\n","rawdescription":"\\n\\nEmail input components for contact modal.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { FormControl, ReactiveFormsModule, Validators } from \'@angular/forms\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { map, takeUntil } from \'rxjs\';\\n\\n/**\\n * Email input components for contact modal.\\n */\\n@Component({\\n selector: \'hra-email-input\',\\n standalone: true,\\n imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule],\\n templateUrl: \'./email-input.component.html\',\\n styleUrls: [\'./email-input.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class EmailInputComponent {\\n /** A placeholder for the email input field. This will be disappeared when the email is typed. */\\n @Input() placeholder = \'\';\\n\\n /** Emits the new email when the input changes or undefined if the email is invalid */\\n @Output() readonly emailChange = new EventEmitter();\\n\\n /** Observable emitting when the component is destroyed */\\n readonly destroy$ = injectDestroy$();\\n\\n /** A control to validate the email. */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required, Validators.email],\\n });\\n\\n /** Connects the input control to component outputs */\\n constructor() {\\n const { control, destroy$ } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? value : undefined))\\n )\\n .subscribe((value) => this.emailChange.emit(value as string | undefined));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .email-text-field {\\n width: 100%;\\n background: #ffffff;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./email-input.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Connects the input control to component outputs

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":34,"rawdescription":"\\nConnects the input control to component outputs"},"templateData":"\\n Email \\n \\n\\n \\n Please enter a valid email address\\n \\n Email is required! \\n\\n"},{"name":"EmptyBiomarkerComponent","id":"component-EmptyBiomarkerComponent-37024d95c11a561444e101c6aa7bc4ff857513ca38fac3e421501e21ab27f43cf3f33da15755e5ac3a40b963a23bdf6efe3e86834cd7971258fea52168aa9ad5","file":"src/lib/empty-biomarker/empty-biomarker.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-empty-biomarker","styleUrls":["./empty-biomarker.component.scss"],"styles":[],"templateUrl":["./empty-biomarker.component.html"],"viewProviders":[],"inputsClass":[{"name":"collaborateText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput buttonon text of empty biomarker component.\\n","description":"

      Input buttonon text of empty biomarker component.

      \\n","line":23,"type":"string","decorators":[]},{"name":"message","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput message markdown of empty biomarker component.\\n","description":"

      Input message markdown of empty biomarker component.

      \\n","line":28,"type":"string","decorators":[]}],"outputsClass":[{"name":"collaborateClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAn event emitter that emits the user button click event\\n","description":"

      An event emitter that emits the user button click event

      \\n","line":33,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for any empty biomaker cell\\n to inform about the empty data and has\\n button to navigate to HRA Team.

      \\n","rawdescription":"\\n\\n Component for any empty biomaker cell\\n to inform about the empty data and has\\n button to navigate to HRA Team.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n * Component for any empty biomaker cell\\n * to inform about the empty data and has\\n * button to navigate to HRA Team.\\n */\\n@Component({\\n selector: \'hra-empty-biomarker\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MarkdownModule],\\n templateUrl: \'./empty-biomarker.component.html\',\\n styleUrls: [\'./empty-biomarker.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class EmptyBiomarkerComponent {\\n /**\\n * Input buttonon text of empty biomarker component.\\n */\\n @Input() collaborateText = \'\';\\n\\n /**\\n * Input message markdown of empty biomarker component.\\n */\\n @Input() message = \'\';\\n\\n /**\\n * An event emitter that emits the user button click event\\n */\\n @Output() readonly collaborateClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n padding: 2.625rem 2rem 2.625rem 2rem;\\n\\n .message {\\n color: #243142;\\n }\\n\\n .collaborate-button {\\n margin-top: 2rem;\\n font-weight: 700;\\n color: #fff;\\n width: 100%;\\n max-width: 17.25rem;\\n height: 3rem;\\n }\\n}\\n","styleUrl":"./empty-biomarker.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"GradientLegendComponent","id":"component-GradientLegendComponent-deca5c57881562b1c16d34b446006d52194dfce42a4093fe366ac3fcbeaf7291e08172915aac95fc2938e856084da0fe61a29b9897eb6da4ca9edd58116c7198","file":"src/lib/gradient-legend/gradient-legend.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-gradient-legend","styleUrls":["./gradient-legend.component.scss"],"styles":[],"templateUrl":["./gradient-legend.component.html"],"viewProviders":[],"inputsClass":[{"name":"gradient","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nGradient colors along with their stop points","description":"

      Gradient colors along with their stop points

      \\n","line":23,"type":"GradientPoint[]","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Gradient legend for biomarkers

      \\n","rawdescription":"\\nGradient legend for biomarkers","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** An interface of gradient colors along with their percentages for the gradient bar. */\\nexport interface GradientPoint {\\n /** Gradient color at a specific percentage */\\n color: string;\\n /** Percentage point along the gradient bar */\\n percentage: number;\\n}\\n\\n/** Gradient legend for biomarkers */\\n@Component({\\n selector: \'hra-gradient-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./gradient-legend.component.html\',\\n styleUrls: [\'./gradient-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class GradientLegendComponent {\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Computes the css linear-gradient function for the gradient bar */\\n get gradientCss(): string {\\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(\',\');\\n return `linear-gradient(90deg, ${stops})`;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .gradient-bar {\\n height: 1.5rem;\\n width: 100%;\\n }\\n\\n .legend {\\n display: flex;\\n\\n .filler {\\n flex-grow: 1;\\n }\\n }\\n}\\n","styleUrl":"./gradient-legend.component.scss"}],"stylesData":"","accessors":{"gradientCss":{"name":"gradientCss","getSignature":{"name":"gradientCss","type":"string","returnType":"string","line":26,"rawdescription":"\\nComputes the css linear-gradient function for the gradient bar","description":"

      Computes the css linear-gradient function for the gradient bar

      \\n"}}},"templateData":"
      \\n
      \\n
      0.0
      \\n
      \\n
      1.0
      \\n
      \\n"},{"name":"LabelBoxComponent","id":"component-LabelBoxComponent-ef78615c37f1899e7f105d2e14f13a219f8472171bf04099642de0ee701b87eafba4f218cf04d7ba1c2e552e28262d1b32ae397ca7eab7043ad462a5f76a960d","file":"src/lib/label-box/label-box.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-label-box","styleUrls":["./label-box.component.scss"],"styles":[],"templateUrl":["./label-box.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Label box component for reuse accross the page. The content with "end" selector will be added to the end of the label box

      \\n","rawdescription":"\\nLabel box component for reuse accross the page. The content with \\"end\\" selector will be added to the end of the label box","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Label box component for reuse accross the page. The content with \\"end\\" selector will be added to the end of the label box */\\n@Component({\\n selector: \'hra-label-box\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./label-box.component.html\',\\n styleUrls: [\'./label-box.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LabelBoxComponent {}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n align-items: center;\\n padding: 0.75rem 2rem;\\n background: #f8f9fa;\\n\\n .filler {\\n flex-grow: 1;\\n }\\n}\\n","styleUrl":"./label-box.component.scss"}],"stylesData":"","templateData":"\\n\\n
      \\n\\n\\n"},{"name":"RequiredInputComponent","id":"component-RequiredInputComponent-6a768e79d86219e624a199447195426647b4cde0beb840ecbc68113987b52c6d0be44d19e13b91a4c8d351b9ad503e8a328db1c7626d4ea76b7cc8338bef3247","file":"src/lib/required-input/required-input.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-required-input","styleUrls":["./required-input.component.scss"],"styles":[],"templateUrl":["./required-input.component.html"],"viewProviders":[],"inputsClass":[{"name":"label","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nThe label to display for the text field.\\n","description":"

      The label to display for the text field.

      \\n","line":25,"type":"string","decorators":[]}],"outputsClass":[{"name":"inputChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAn event emitter that emits the input value when it changes.\\n","description":"

      An event emitter that emits the input value when it changes.

      \\n","line":30,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: Validators.required,\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Form control for input to set some input validation.

      \\n","line":40,"rawdescription":"\\n\\nForm control for input to set some input validation.\\n","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Destroy observable used to control the lifetime of other observables.

      \\n","line":35,"rawdescription":"\\n\\nDestroy observable used to control the lifetime of other observables.\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A reusable text field component that can be used to input text.\\nThis input field component also had required validation check.

      \\n","rawdescription":"\\n\\nA reusable text field component that can be used to input text.\\nThis input field component also had required validation check.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\nimport { FormControl, ReactiveFormsModule, Validators } from \'@angular/forms\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { map, takeUntil } from \'rxjs\';\\n\\n/**\\n * A reusable text field component that can be used to input text.\\n * This input field component also had required validation check.\\n */\\n@Component({\\n selector: \'hra-required-input\',\\n standalone: true,\\n imports: [CommonModule, MatFormFieldModule, MatInputModule, ReactiveFormsModule],\\n templateUrl: \'./required-input.component.html\',\\n styleUrls: [\'./required-input.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class RequiredInputComponent {\\n /**\\n * The label to display for the text field.\\n */\\n @Input() label = \'\';\\n\\n /**\\n * An event emitter that emits the input value when it changes.\\n */\\n @Output() readonly inputChange = new EventEmitter();\\n\\n /**\\n * Destroy observable used to control the lifetime of other observables.\\n */\\n readonly destroy$ = injectDestroy$();\\n\\n /**\\n * Form control for input to set some input validation.\\n */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: Validators.required,\\n });\\n\\n /**\\n * Creates an instance of required input component\\n * and it connect the form control value changes to check for validation\\n * before output emmiter is triggered\\n */\\n constructor() {\\n const { control, destroy$, inputChange } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? (value as string) : undefined))\\n )\\n .subscribe(inputChange);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .form-field {\\n width: 100%;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./required-input.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Creates an instance of required input component\\nand it connect the form control value changes to check for validation\\nbefore output emmiter is triggered

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":43,"rawdescription":"\\n\\nCreates an instance of required input component\\nand it connect the form control value changes to check for validation\\nbefore output emmiter is triggered\\n"},"templateData":"\\n {{ label }} \\n \\n {{ label }} is required!\\n\\n"},{"name":"RequiredTextboxComponent","id":"component-RequiredTextboxComponent-ad002581cf0f7ae0707bd500566ee127dc19a3403138f98034117f59231d3c30eaf53896f1e1b5850df7a95498bb9dd632f29b200e38de676c48c0d61c350ad7","file":"src/lib/required-textbox/required-textbox.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-required-textbox","styleUrls":["./required-textbox.component.scss"],"styles":[],"templateUrl":["./required-textbox.component.html"],"viewProviders":[],"inputsClass":[{"name":"label","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA label for the textarea field","description":"

      A label for the textarea field

      \\n","line":25,"type":"string","decorators":[]},{"name":"placeholder","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA placeholder for the message textarea field","description":"

      A placeholder for the message textarea field

      \\n","line":22,"type":"string","decorators":[]}],"outputsClass":[{"name":"messageChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the new message when the input changes or undefined if the message is invalid","description":"

      Emits the new message when the input changes or undefined if the message is invalid

      \\n","line":28,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required],\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A control to validate if the message field is empty

      \\n","line":34,"rawdescription":"\\nA control to validate if the message field is empty","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable emitting when the component is destroyed

      \\n","line":31,"rawdescription":"\\nObservable emitting when the component is destroyed","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The required textbox component displays a message box for users to add a message

      \\n","rawdescription":"\\n\\nThe required textbox component displays a message box for users to add a message\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { FormControl, Validators, ReactiveFormsModule } from \'@angular/forms\';\\nimport { map, takeUntil } from \'rxjs\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\n\\n/**\\n * The required textbox component displays a message box for users to add a message\\n */\\n@Component({\\n selector: \'hra-required-textbox\',\\n standalone: true,\\n imports: [CommonModule, MatInputModule, MatFormFieldModule, ReactiveFormsModule],\\n templateUrl: \'./required-textbox.component.html\',\\n styleUrls: [\'./required-textbox.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class RequiredTextboxComponent {\\n /** A placeholder for the message textarea field */\\n @Input() placeholder = \'\';\\n\\n /** A label for the textarea field */\\n @Input() label = \'\';\\n\\n /** Emits the new message when the input changes or undefined if the message is invalid */\\n @Output() readonly messageChange = new EventEmitter();\\n\\n /** Observable emitting when the component is destroyed */\\n readonly destroy$ = injectDestroy$();\\n\\n /** A control to validate if the message field is empty */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required],\\n });\\n\\n /** Connects the input control to component outputs */\\n constructor() {\\n const { control, destroy$ } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? value : undefined))\\n )\\n .subscribe((value) => this.messageChange.emit(value as string | undefined));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .message-field {\\n width: 100%;\\n background: #ffffff;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./required-textbox.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Connects the input control to component outputs

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":37,"rawdescription":"\\nConnects the input control to component outputs"},"templateData":"\\n {{ label }} \\n \\n {{ label }} is required! \\n\\n"},{"name":"SizeLegendComponent","id":"component-SizeLegendComponent-dae8784679328cc4f52418a0ae905fed758d8fca706c3b6238631087d98a163ec72f26f1b06661d00473eefd6eafd27ab263e34a661981ea71d5a1885746f8e9","file":"src/lib/size-legend/size-legend.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-size-legend","styleUrls":["./size-legend.component.scss"],"styles":[],"templateUrl":["./size-legend.component.html"],"viewProviders":[],"inputsClass":[{"name":"sizes","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":23,"type":"SizeLegend[]","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Size legend component for the biomarkers table.

      \\n","rawdescription":"\\nSize legend component for the biomarkers table.","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Defining the input data types for the radius and label to be displayed. */\\nexport interface SizeLegend {\\n /** Label under circle */\\n label: string;\\n /** Radius for cirlce */\\n radius: number;\\n}\\n\\n/** Size legend component for the biomarkers table. */\\n@Component({\\n selector: \'hra-size-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./size-legend.component.html\',\\n styleUrls: [\'./size-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SizeLegendComponent {\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n flex-direction: row;\\n column-gap: 2rem;\\n\\n .item {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n line-height: 0.5rem;\\n\\n .circle {\\n height: var(--size);\\n width: var(--size);\\n border-radius: 50%;\\n border: 0.125rem solid #75838f;\\n }\\n\\n .label {\\n margin-top: 0.5rem;\\n }\\n\\n .filler {\\n flex-grow: 1;\\n }\\n }\\n}\\n","styleUrl":"./size-legend.component.scss"}],"stylesData":"","templateData":"
      \\n
      \\n
      \\n
      \\n
      {{ text.label }}
      \\n
      \\n"},{"name":"TooltipComponent","id":"component-TooltipComponent-35a19c31cdbb6f67cbbe51d580825640d777ebbf9ef5a43ffc434e7c6af568cda589a5102fcf51027aafecb8ac12123b9ce1a5d04d81c51fa5198963c1c082f1","file":"src/lib/tooltip/tooltip.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-ui-tooltip","styleUrls":["./tooltip.component.scss"],"styles":[],"templateUrl":["./tooltip.component.html"],"viewProviders":[],"inputsClass":[{"name":"text","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nText to display\\n","description":"

      Text to display

      \\n","line":19,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Tooltips for illustrations

      \\n","rawdescription":"\\n\\nTooltips for illustrations\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n * Tooltips for illustrations\\n */\\n@Component({\\n selector: \'hra-ui-tooltip\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./tooltip.component.html\',\\n styleUrls: [\'./tooltip.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TooltipComponent {\\n /**\\n * Text to display\\n */\\n @Input() text = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n .tooltip {\\n display: flex;\\n flex-direction: column;\\n background: white;\\n box-shadow: 1px 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n border-radius: 0.5rem;\\n padding: 1rem;\\n }\\n}\\n","styleUrl":"./tooltip.component.scss"}],"stylesData":"","templateData":"
      {{ text }}
      \\n"}],"modules":[],"miscellaneous":[]}')},"./dist/compodoc/components-behavioral/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerDetailsComponent","id":"component-BiomarkerDetailsComponent-8503d16c5553b5f0a72af9f73fda65990c63701d395abaebc447ce8e23bfa0f8e1e9b5cfc7d39d56b098786ae61ba690c54868785f87565fe0461babf1c87d1d","file":"src/lib/biomarker-details/biomarker-details.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-biomarker-details","styleUrls":["./biomarker-details.component.scss"],"styles":[],"templateUrl":["./biomarker-details.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"collaborateText","defaultValue":"\'Collaborate with the HRA Team\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      button text of empty biomarker component.

      \\n","line":101,"rawdescription":"\\n\\nbutton text of empty biomarker component.\\n","modifierKind":[144]},{"name":"gradientHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Gradient Legend

      \\n","line":56,"rawdescription":"\\nInfo to be shown on the tooltip for Gradient Legend","modifierKind":[144]},{"name":"gradients","defaultValue":"selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Gradient colors along with their stop points

      \\n","line":65,"rawdescription":"\\nGradient colors along with their stop points","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":78,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"isTableFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Indicates if the table is fully shown, defaults to false

      \\n","line":62,"rawdescription":"\\nIndicates if the table is fully shown, defaults to false"},{"name":"message","defaultValue":"`We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      message markdown of empty biomarker component.

      \\n","line":106,"rawdescription":"\\n\\nmessage markdown of empty biomarker component.\\n","modifierKind":[144]},{"name":"sizeHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Size Legend

      \\n","line":59,"rawdescription":"\\nInfo to be shown on the tooltip for Size Legend","modifierKind":[144]},{"name":"sizes","defaultValue":"selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":70,"rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","modifierKind":[144]},{"name":"source","defaultValue":"selectSnapshot(SourceRefsSelectors.sourceReferences)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      List of sources with titles and links displayed to the user

      \\n","line":73,"rawdescription":"\\nList of sources with titles and links displayed to the user","modifierKind":[144]},{"name":"tabs","defaultValue":"selectSnapshot(CellSummarySelectors.aggregates)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Table tabs

      \\n","line":53,"rawdescription":"\\nTable tabs","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":83,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]}],"methodsClass":[{"name":"toggleFullscreen","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":115,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function that toggles isTableFullScreen and\\ncalls the setScreenMode function.\\n","description":"

      A function that toggles isTableFullScreen and\\ncalls the setScreenMode function.

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The component displays the biomarker details which includes the details, gradient legends, size legends and source lists

      \\n","rawdescription":"\\nThe component displays the biomarker details which includes the details, gradient legends, size legends and source lists","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTabsModule } from \'@angular/material/tabs\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { dispatch, selectQuerySnapshot, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { ActiveFtuSelectors, ScreenModeAction, TissueLibrarySelectors } from \'@hra-ui/state\';\\nimport {\\n EmptyBiomarkerComponent,\\n GradientLegendComponent,\\n GradientPoint,\\n LabelBoxComponent,\\n SizeLegend,\\n SizeLegendComponent,\\n} from \'@hra-ui/components/atoms\';\\nimport { BiomarkerTableDataCardComponent, SourceListComponent } from \'@hra-ui/components/molecules\';\\nimport { BiomarkerTableComponent, TissueInfo } from \'@hra-ui/components/organisms\';\\nimport { CellSummarySelectors, ResourceIds as Ids, ResourceTypes as RTypes, SourceRefsSelectors } from \'@hra-ui/state\';\\n\\n/**\\n * PlaceHolder for Empty Tissue Info\\n */\\nconst EMPTY_TISSUE_INFO: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n};\\n\\n/** The component displays the biomarker details which includes the details, gradient legends, size legends and source lists*/\\n@Component({\\n selector: \'ftu-biomarker-details\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatIconModule,\\n MatTabsModule,\\n\\n BiomarkerTableComponent,\\n BiomarkerTableDataCardComponent,\\n GradientLegendComponent,\\n HoverDirective,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n SourceListComponent,\\n EmptyBiomarkerComponent,\\n ],\\n templateUrl: \'./biomarker-details.component.html\',\\n styleUrls: [\'./biomarker-details.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerDetailsComponent {\\n /** Table tabs */\\n readonly tabs = selectSnapshot(CellSummarySelectors.aggregates);\\n\\n /** Info to be shown on the tooltip for Gradient Legend */\\n readonly gradientHoverInfo = selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo);\\n\\n /** Info to be shown on the tooltip for Size Legend */\\n readonly sizeHoverInfo = selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo);\\n\\n /** Indicates if the table is fully shown, defaults to false*/\\n isTableFullScreen = false;\\n\\n /** Gradient colors along with their stop points */\\n readonly gradients = selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >;\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n readonly sizes = selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, []);\\n\\n /** List of sources with titles and links displayed to the user */\\n readonly source = selectSnapshot(SourceRefsSelectors.sourceReferences);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueInfo(): TissueInfo {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n if (iri === undefined) {\\n return EMPTY_TISSUE_INFO;\\n }\\n const { id, label } = tissues[iri];\\n return { id, label };\\n }\\n\\n /**\\n * button text of empty biomarker component.\\n */\\n readonly collaborateText = \'Collaborate with the HRA Team\';\\n\\n /**\\n * message markdown of empty biomarker component.\\n */\\n readonly message = `We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`;\\n\\n /** A dispatcher function to set the screen mode */\\n private readonly setScreenMode = dispatch(ScreenModeAction.Set);\\n\\n /** A function that toggles isTableFullScreen and\\n * calls the setScreenMode function.\\n */\\n toggleFullscreen(): void {\\n this.isTableFullScreen = !this.isTableFullScreen;\\n this.setScreenMode(this.isTableFullScreen);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 21.5rem 21.5rem auto;\\n grid-template-rows: 3.5rem 19.5rem 3rem 5rem auto;\\n grid-template-areas:\\n \'table-header table-header table-header\'\\n \'table table table\'\\n \'gradient-legend-header size-legend-header .\'\\n \'gradient-legend size-legend .\'\\n \'source-list source-list source-list\';\\n\\n .table-header {\\n grid-area: table-header;\\n border-bottom: 0.063rem solid #d3d3d3;\\n width: 43rem;\\n height: 3.5rem;\\n }\\n\\n .table {\\n grid-area: table;\\n max-width: 100%;\\n overflow: auto;\\n\\n ::ng-deep .table-tab-header {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n border-left: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n\\n &:last-child {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n &.mdc-tab-indicator--active {\\n background-color: #f8f9fa;\\n }\\n }\\n }\\n\\n .legend-header {\\n color: vars.$dark-primary-text;\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend-header;\\n }\\n\\n &.size {\\n grid-area: size-legend-header;\\n }\\n\\n .icon {\\n margin-left: 0.6rem;\\n }\\n }\\n\\n .legend {\\n padding: 1rem 2rem;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend;\\n\\n .content {\\n width: 10rem;\\n }\\n }\\n\\n &.size {\\n grid-area: size-legend;\\n }\\n }\\n\\n .source-list {\\n grid-area: source-list;\\n\\n .content {\\n width: min-content;\\n }\\n }\\n}\\n\\n::ng-deep .biomarker-details.info-tooltip {\\n display: flex;\\n padding: 1rem;\\n border: 1px solid #a8a3a3;\\n border-radius: 0.5rem;\\n box-shadow: 1px 2px 16px 2px #00000029;\\n background-color: vars.$primary-contrast-rgb;\\n max-width: 21rem;\\n font-size: small;\\n}\\n","styleUrl":"./biomarker-details.component.scss"}],"stylesData":"","accessors":{"tissueInfo":{"name":"tissueInfo","getSignature":{"name":"tissueInfo","type":"","returnType":"TissueInfo","line":88,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"\\n Cell Types by Gene Biomarkers\\n \\n {{ isTableFullScreen ? \'close_fullscreen\' : \'open_in_full\' }}\\n \\n\\n\\n\\n \\n \\n \\n \\n\\n\\n\\n Biomarker Expression Mean in FTU\\n info_outlined\\n\\n
      \\n \\n
      \\n\\n\\n Percentage of Cells in FTU\\n info_outlined\\n\\n
      \\n \\n
      \\n\\n
      \\n \\n
      \\n\\n\\n
      \\n {{ tooltip }}\\n
      \\n
      \\n"},{"name":"BiomarkerDetailsWcComponent","id":"component-BiomarkerDetailsWcComponent-23b281ecdbeccbab1f36b78fe9188e1016a565a0a462d735ad19f143e753278b009fd29b85a043d3e29f7d0f0e9b0529f3a5b724b0d8f08ca17a3d467c0be29f","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-wc-biomarker-details","styleUrls":["./biomarker-details-wc.component.scss"],"styles":[],"templateUrl":["./biomarker-details-wc.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"collaborateText","defaultValue":"\'Collaborate with the HRA Team\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      button text of empty biomarker component.

      \\n","line":143,"rawdescription":"\\n\\nbutton text of empty biomarker component.\\n","modifierKind":[144]},{"name":"currentUrl","defaultValue":"selectSnapshot(IllustratorSelectors.url)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current illustration url

      \\n","line":69,"rawdescription":"\\n\\nCurrent illustration url\\n","modifierKind":[144]},{"name":"gradientHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Gradient Legend

      \\n","line":109,"rawdescription":"\\nInfo to be shown on the tooltip for Gradient Legend","modifierKind":[144]},{"name":"gradients","defaultValue":"selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Gradient colors along with their stop points

      \\n","line":118,"rawdescription":"\\nGradient colors along with their stop points","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":79,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"isTableFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Indicates if the table is fully shown, defaults to false

      \\n","line":115,"rawdescription":"\\nIndicates if the table is fully shown, defaults to false"},{"name":"mapping","defaultValue":"selectSnapshot(IllustratorSelectors.mapping)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current mapping file

      \\n","line":74,"rawdescription":"\\n\\nCurrent mapping file\\n","modifierKind":[144]},{"name":"message","defaultValue":"`We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      message markdown of empty biomarker component.

      \\n","line":148,"rawdescription":"\\n\\nmessage markdown of empty biomarker component.\\n","modifierKind":[144]},{"name":"sizeHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Size Legend

      \\n","line":112,"rawdescription":"\\nInfo to be shown on the tooltip for Size Legend","modifierKind":[144]},{"name":"sizes","defaultValue":"selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":123,"rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","modifierKind":[144]},{"name":"source","defaultValue":"selectSnapshot(SourceRefsSelectors.sourceReferences)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      List of sources with titles and links displayed to the user

      \\n","line":126,"rawdescription":"\\nList of sources with titles and links displayed to the user","modifierKind":[144]},{"name":"tabs","defaultValue":"selectSnapshot(CellSummarySelectors.aggregates)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Table tabs

      \\n","line":106,"rawdescription":"\\nTable tabs","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":84,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]},{"name":"updateNodeOnClicked","defaultValue":"dispatch(IllustratorActions.SetClicked)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node click

      \\n","line":103,"rawdescription":"\\n\\nUpdates the active node on node click\\n","modifierKind":[144]},{"name":"updateNodeOnHover","defaultValue":"dispatch(IllustratorActions.SetHover)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node hover

      \\n","line":98,"rawdescription":"\\n\\nUpdates the active node on node hover\\n","modifierKind":[144]}],"methodsClass":[{"name":"toggleFullscreen","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":157,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function that toggles isTableFullScreen and\\ncalls the setScreenMode function.\\n","description":"

      A function that toggles isTableFullScreen and\\ncalls the setScreenMode function.

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Biomarker Table Details Web component

      \\n","rawdescription":"\\nComponent for Biomarker Table Details Web component","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTabsModule } from \'@angular/material/tabs\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { selectSnapshot, selectQuerySnapshot, dispatch } from \'@hra-ui/cdk/injectors\';\\nimport {\\n GradientLegendComponent,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n EmptyBiomarkerComponent,\\n GradientPoint,\\n SizeLegend,\\n} from \'@hra-ui/components/atoms\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n InteractiveSvgComponent,\\n SourceListComponent,\\n} from \'@hra-ui/components/molecules\';\\nimport { TissueInfo, BiomarkerTableComponent } from \'@hra-ui/components/organisms\';\\nimport {\\n ActiveFtuSelectors,\\n TissueLibrarySelectors,\\n ScreenModeAction,\\n IllustratorActions,\\n IllustratorSelectors,\\n CellSummarySelectors,\\n ResourceIds as Ids,\\n ResourceTypes as RTypes,\\n SourceRefsSelectors,\\n} from \'@hra-ui/state\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * PlaceHolder for Empty Tissue Info\\n */\\nconst EMPTY_TISSUE_INFO: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n};\\n\\n/** Component for Biomarker Table Details Web component */\\n@Component({\\n selector: \'ftu-wc-biomarker-details\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatIconModule,\\n MatTabsModule,\\n\\n BiomarkerTableComponent,\\n BiomarkerTableDataCardComponent,\\n GradientLegendComponent,\\n HoverDirective,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n SourceListComponent,\\n EmptyBiomarkerComponent,\\n InteractiveSvgComponent,\\n ],\\n templateUrl: \'./biomarker-details-wc.component.html\',\\n styleUrls: [\'./biomarker-details-wc.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerDetailsWcComponent {\\n /**\\n * Current illustration url\\n */\\n readonly currentUrl = selectSnapshot(IllustratorSelectors.url);\\n\\n /**\\n * Current mapping file\\n */\\n readonly mapping = selectSnapshot(IllustratorSelectors.mapping);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueTitle(): string {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n return iri ? tissues[iri].label : \'\';\\n }\\n\\n /**\\n * Updates the active node on node hover\\n */\\n readonly updateNodeOnHover = dispatch(IllustratorActions.SetHover);\\n\\n /**\\n * Updates the active node on node click\\n */\\n readonly updateNodeOnClicked = dispatch(IllustratorActions.SetClicked);\\n\\n /** Table tabs */\\n readonly tabs = selectSnapshot(CellSummarySelectors.aggregates);\\n\\n /** Info to be shown on the tooltip for Gradient Legend */\\n readonly gradientHoverInfo = selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo);\\n\\n /** Info to be shown on the tooltip for Size Legend */\\n readonly sizeHoverInfo = selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo);\\n\\n /** Indicates if the table is fully shown, defaults to false*/\\n isTableFullScreen = false;\\n\\n /** Gradient colors along with their stop points */\\n readonly gradients = selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >;\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n readonly sizes = selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, []);\\n\\n /** List of sources with titles and links displayed to the user */\\n readonly source = selectSnapshot(SourceRefsSelectors.sourceReferences);\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueInfo(): TissueInfo {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n if (iri === undefined) {\\n return EMPTY_TISSUE_INFO;\\n }\\n const { id, label } = tissues[iri];\\n return { id, label };\\n }\\n\\n /**\\n * button text of empty biomarker component.\\n */\\n readonly collaborateText = \'Collaborate with the HRA Team\';\\n\\n /**\\n * message markdown of empty biomarker component.\\n */\\n readonly message = `We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`;\\n\\n /** A dispatcher function to set the screen mode */\\n private readonly setScreenMode = dispatch(ScreenModeAction.Set);\\n\\n /** A function that toggles isTableFullScreen and\\n * calls the setScreenMode function.\\n */\\n toggleFullscreen(): void {\\n this.isTableFullScreen = !this.isTableFullScreen;\\n this.setScreenMode(this.isTableFullScreen);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n border: 0.063rem solid #d3d3d3;\\n\\n ::ng-deep .extraTab {\\n border: 0.063rem solid #d3d3d3;\\n border-top: 0;\\n }\\n\\n .table-header {\\n grid-area: table-header;\\n border: 0.063rem solid #d3d3d3;\\n width: 43rem;\\n height: 3.5rem;\\n }\\n\\n .table {\\n grid-area: table;\\n max-width: 100%;\\n overflow: auto;\\n border: 0.063rem solid #d3d3d3;\\n\\n ::ng-deep .table-tab-header {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n border-left: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n\\n &:last-child {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n &.mdc-tab-indicator--active {\\n background-color: #f8f9fa;\\n }\\n }\\n }\\n\\n hra-biomarker-table {\\n overflow-y: auto;\\n overflow-x: auto;\\n }\\n\\n .legends {\\n display: inline-flex;\\n width: 100%;\\n .legends-right {\\n width: 50%;\\n }\\n .legends-left {\\n width: 50%;\\n }\\n }\\n\\n .legend-header {\\n color: vars.$dark-primary-text;\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend-header;\\n }\\n\\n &.size {\\n grid-area: size-legend-header;\\n }\\n\\n .icon {\\n margin-left: 0.6rem;\\n }\\n }\\n\\n .legend {\\n padding: 1rem 2rem;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend;\\n\\n .content {\\n width: 10rem;\\n }\\n }\\n\\n &.size {\\n grid-area: size-legend;\\n }\\n }\\n\\n .source-list {\\n grid-area: source-list;\\n\\n .content {\\n width: min-content;\\n }\\n }\\n}\\n\\n::ng-deep .biomarker-details.info-tooltip {\\n display: flex;\\n padding: 1rem;\\n border: 1px solid #a8a3a3;\\n border-radius: 0.5rem;\\n box-shadow: 1px 2px 16px 2px #00000029;\\n background-color: vars.$primary-contrast-rgb;\\n max-width: 21rem;\\n font-size: small;\\n}\\n","styleUrl":"./biomarker-details-wc.component.scss"}],"stylesData":"","accessors":{"tissueTitle":{"name":"tissueTitle","getSignature":{"name":"tissueTitle","type":"string","returnType":"string","line":89,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}},"tissueInfo":{"name":"tissueInfo","getSignature":{"name":"tissueInfo","type":"","returnType":"TissueInfo","line":130,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"\\n {{ tissueTitle }}: FTU Illustration\\n \\n {{ isTableFullScreen ? \'close_fullscreen\' : \'open_in_full\' }}\\n \\n\\n\\n\\n \\n \\n \\n \\n \\n \\n\\n
      \\n
      \\n \\n Biomarker Expression Mean in FTU\\n info_outlined\\n \\n
      \\n \\n
      \\n
      \\n\\n
      \\n \\n Percentage of Cells in FTU\\n info_outlined\\n \\n
      \\n \\n
      \\n
      \\n
      \\n \\n
      \\n \\n
      \\n \\n
      \\n\\n \\n
      \\n {{ tooltip }}\\n
      \\n
      \\n
      \\n
      \\n"},{"name":"ContactBehaviorComponent","id":"component-ContactBehaviorComponent-b9d5e223798d92be933b5dbadc75b1d6c247f7b00beb75f933bb07b0a4949d22458ee53931ca654d0b255f40508dbf23ef4e516e2f80368415a86fdfe44d60b6","file":"src/lib/contact-behavior/contact-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-contact-behavior","styleUrls":["./contact-behavior.component.scss"],"styles":[],"templateUrl":["./contact-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"description","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ContactAcknowledgement)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Information modal message to the user

      \\n","line":29,"rawdescription":"\\nInformation modal message to the user","modifierKind":[144]},{"name":"postMessageTemplate","deprecated":false,"deprecationMessage":"","type":"TemplateRef","optional":false,"description":"

      A template to post a message

      \\n","line":20,"rawdescription":"\\nA template to post a message","decorators":[{"name":"ViewChild","stringifiedArguments":"\'postMessage\'"}],"modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":23,"rawdescription":"\\nInput for product logo URL to displayed on the left side.","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":26,"rawdescription":"\\nInput for product title to displayed on the left side.","modifierKind":[144]},{"name":"sendMessage","defaultValue":"dispatch(ContactActions.SendMessage)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A dispatcher function to send message entered by user

      \\n","line":32,"rawdescription":"\\nA dispatcher function to send message entered by user","modifierKind":[144]}],"methodsClass":[{"name":"close","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":51,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which closes the \'Contact us\' dialog and the acknowledgement dialog.","description":"

      A function which closes the 'Contact us' dialog and the acknowledgement dialog.

      \\n"},{"name":"submit","args":[{"name":"message","type":"ContactData","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":44,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box.","description":"

      A function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box.

      \\n","jsdoctags":[{"name":"message","type":"ContactData","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A Component for contact behavior which sends the message entered by the user and shows an acknowledgement

      \\n","rawdescription":"\\nA Component for contact behavior which sends the message entered by the user and shows an acknowledgement","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ViewChild } from \'@angular/core\';\\nimport { MatDialog, MatDialogModule, MatDialogRef } from \'@angular/material/dialog\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { ContactData, ContactModalComponent, InfoModalComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceIds as Ids, ContactActions } from \'@hra-ui/state\';\\n\\n/** A Component for contact behavior which sends the message entered by the user and shows an acknowledgement */\\n@Component({\\n selector: \'ftu-contact-behavior\',\\n standalone: true,\\n imports: [CommonModule, MatDialogModule, ContactModalComponent, InfoModalComponent],\\n templateUrl: \'./contact-behavior.component.html\',\\n styleUrls: [\'./contact-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactBehaviorComponent {\\n /** A template to post a message */\\n @ViewChild(\'postMessage\') readonly postMessageTemplate!: TemplateRef;\\n\\n /** Input for product logo URL to displayed on the left side. */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /** Input for product title to displayed on the left side. */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /** Information modal message to the user */\\n readonly description = selectQuerySnapshot(RR.anyText, Ids.ContactAcknowledgement);\\n\\n /** A dispatcher function to send message entered by user */\\n readonly sendMessage = dispatch(ContactActions.SendMessage);\\n\\n /** A dialog box which shows user an acknowledgement after clicking on submit */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A mat form field dialog which accepts the email, subject, and message of user and validates it */\\n private readonly selfRef = inject(MatDialogRef, { optional: true });\\n\\n /** Dialog box which references the acknowledgement dialog box */\\n private postRef?: MatDialogRef;\\n\\n /** A function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box. */\\n submit(message: ContactData): void {\\n this.sendMessage(message);\\n this.selfRef?.close();\\n this.postRef = this.dialog.open(this.postMessageTemplate);\\n }\\n\\n /** A function which closes the \'Contact us\' dialog and the acknowledgement dialog. */\\n close(): void {\\n this.postRef?.close();\\n this.selfRef?.close();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .contact-modal {\\n width: 41rem;\\n height: 40rem;\\n }\\n\\n .info-modal {\\n width: 35rem;\\n height: 11.8rem;\\n }\\n\\n @media screen and (max-height: 328px) {\\n .contact-modal {\\n height: calc(100vh - 2rem);\\n }\\n }\\n}\\n","styleUrl":"./contact-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n\\n\\n \\n \\n\\n"},{"name":"FooterBehaviorComponent","id":"component-FooterBehaviorComponent-d9ecf51e28e6cdbe2f77b2f819a2e3df3acd0382e946f213975e78af53f6c11b1a7a013fefb862cfa9449b9973d2ea3497fa9687d6c04eb492751c2a83c17410","file":"src/lib/footer-behavior/footer-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-footer-behavior","styleUrls":["./footer-behavior.component.scss"],"styles":[],"templateUrl":["./footer-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"download","defaultValue":"dispatch(DownloadActions.Download)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A dispatcher function to download file in specified format

      \\n","line":39,"rawdescription":"\\nA dispatcher function to download file in specified format","modifierKind":[144]},{"name":"downloadFormats","defaultValue":"selectSnapshot(DownloadSelectors.formats)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects a snapshot of the current value of the available download formats

      \\n","line":27,"rawdescription":"\\nSelects a snapshot of the current value of the available download formats","modifierKind":[144]},{"name":"embed","defaultValue":"LinkIds.Embed","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Embed link routing after clicking on Embed

      \\n","line":36,"rawdescription":"\\nEmbed link routing after clicking on Embed","modifierKind":[144]},{"name":"hraPortal","defaultValue":"LinkIds.Portal","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Hra portal link routing after clicking on HRA Portal

      \\n","line":30,"rawdescription":"\\nHra portal link routing after clicking on HRA Portal","modifierKind":[144]},{"name":"illustrationMetadata","defaultValue":"LinkIds.Illustration","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Metadata page link routing after clicking on Illustration

      \\n","line":33,"rawdescription":"\\nMetadata page link routing after clicking on Illustration","modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":21,"rawdescription":"\\nInput for product logo URL to displayed on the left side.","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":24,"rawdescription":"\\nInput for product title to displayed on the left side.","modifierKind":[144]},{"name":"size","defaultValue":"selectSnapshot(ScreenModeSelectors.size)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects the current value of the available ScreenMode Size

      \\n","line":41,"rawdescription":"\\nSelects the current value of the available ScreenMode Size","modifierKind":[144]}],"methodsClass":[{"name":"contact","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which opens the contact modal dialog box","description":"

      A function which opens the contact modal dialog box

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component for footer behavior which provides functionality for various buttons in footer

      \\n","rawdescription":"\\nA component for footer behavior which provides functionality for various buttons in footer","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { MatDialog, MatDialogConfig, MatDialogModule } from \'@angular/material/dialog\';\\nimport { dispatch, selectQuerySnapshot, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { FooterComponent } from \'@hra-ui/components/molecules\';\\nimport { DownloadActions, DownloadSelectors, ResourceIds as Ids, LinkIds, ScreenModeSelectors } from \'@hra-ui/state\';\\nimport { ContactBehaviorComponent } from \'../contact-behavior/contact-behavior.component\';\\n\\n/** A component for footer behavior which provides functionality for various buttons in footer */\\n@Component({\\n selector: \'ftu-footer-behavior\',\\n standalone: true,\\n imports: [CommonModule, MatDialogModule, FooterComponent, ContactBehaviorComponent],\\n templateUrl: \'./footer-behavior.component.html\',\\n styleUrls: [\'./footer-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterBehaviorComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /** Input for product title to displayed on the left side. */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /** Selects a snapshot of the current value of the available download formats */\\n readonly downloadFormats = selectSnapshot(DownloadSelectors.formats);\\n\\n /** Hra portal link routing after clicking on HRA Portal */\\n readonly hraPortal = LinkIds.Portal;\\n\\n /** Metadata page link routing after clicking on Illustration */\\n readonly illustrationMetadata = LinkIds.Illustration;\\n\\n /** Embed link routing after clicking on Embed */\\n readonly embed = LinkIds.Embed;\\n\\n /** A dispatcher function to download file in specified format */\\n readonly download = dispatch(DownloadActions.Download);\\n /** Selects the current value of the available ScreenMode Size */\\n readonly size = selectSnapshot(ScreenModeSelectors.size);\\n\\n /** A dialog box which shows contact modal after clicking on contact */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A function which opens the contact modal dialog box */\\n contact(): void {\\n const dialogConfig = new MatDialogConfig();\\n dialogConfig.disableClose = true;\\n this.dialog.open(ContactBehaviorComponent, dialogConfig);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./footer-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"HeaderBehaviorComponent","id":"component-HeaderBehaviorComponent-a76f74e70c7aacab4debd2492e1302dc534513cd4598dce499fc0d4f09bf0a16fc333bcb4bb100ffc9dbcb5427533473060400e0ae5eb7051dac7768474ae300","file":"src/lib/header-behavior/header-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-header-behavior","styleUrls":["./header-behavior.component.scss"],"styles":[],"templateUrl":["./header-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"aboutLink","defaultValue":"LinkIds.About","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for about link for user click action.

      \\n","line":41,"rawdescription":"\\n\\nInput for about link for user click action.\\n","modifierKind":[144]},{"name":"appTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.AppTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for app title to show on the left side.

      \\n","line":31,"rawdescription":"\\n\\nInput for app title to show on the left side.\\n","modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":21,"rawdescription":"\\n\\nInput for product logo URL to displayed on the left side.\\n","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":26,"rawdescription":"\\n\\nInput for product title to displayed on the left side.\\n","modifierKind":[144]},{"name":"productTitleLink","defaultValue":"LinkIds.ProductTitle","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title link for user click action

      \\n","line":36,"rawdescription":"\\n\\nInput for product title link for user click action\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Header Behavior

      \\n","rawdescription":"\\nComponent for Header Behavior","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { HeaderComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceIds as Ids, LinkIds } from \'@hra-ui/state\';\\n\\n/** Component for Header Behavior */\\n@Component({\\n selector: \'ftu-header-behavior\',\\n standalone: true,\\n imports: [CommonModule, HeaderComponent],\\n templateUrl: \'./header-behavior.component.html\',\\n styleUrls: [\'./header-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HeaderBehaviorComponent {\\n /**\\n * Input for product logo URL to displayed on the left side.\\n */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /**\\n * Input for product title to displayed on the left side.\\n */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /**\\n * Input for app title to show on the left side.\\n */\\n readonly appTitle = selectQuerySnapshot(RR.anyText, Ids.AppTitle);\\n\\n /**\\n * Input for product title link for user click action\\n */\\n readonly productTitleLink = LinkIds.ProductTitle;\\n\\n /**\\n * Input for about link for user click action.\\n */\\n readonly aboutLink = LinkIds.About;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./header-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"HraLandingPageIntroWcBehaviourComponent","id":"component-HraLandingPageIntroWcBehaviourComponent-b8c2509d12b92bff8ab139855b712563f2a92e8aa91e8ecc05714063b91b1765ade0e9c6e691367a2eaa4724d94d6dfe4ade28c89da03cfcf6eae21630452b23","file":"src/lib/hra-landing-page-intro-wc-behaviour/hra-landing-page-intro-wc-behaviour.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-wc-intro","styleUrls":["./hra-landing-page-intro-wc-behaviour.component.scss"],"styles":[],"templateUrl":["./hra-landing-page-intro-wc-behaviour.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"landingPageIntroDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro description

      \\n","line":21,"rawdescription":"\\nselect snapshot for landing page intro description","modifierKind":[144]},{"name":"landingPageIntroPartners","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":25,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroReadMore","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageIntroReadMore)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":23,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for Landing Page title

      \\n","line":19,"rawdescription":"\\nselect snapshot for Landing Page title","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro Behaviour: Web component

      \\n","rawdescription":"\\nComponent for LandingPage Intro Behaviour: Web component","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { HraLandingPageIntroWcComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceRegistrySelectors as RRS } from \'@hra-ui/cdk/state\';\\nimport { selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceIds as RIds } from \'@hra-ui/state\';\\n\\n/** Component for LandingPage Intro Behaviour: Web component */\\n@Component({\\n selector: \'ftu-wc-intro\',\\n standalone: true,\\n imports: [CommonModule, HraLandingPageIntroWcComponent],\\n templateUrl: \'./hra-landing-page-intro-wc-behaviour.component.html\',\\n styleUrls: [\'./hra-landing-page-intro-wc-behaviour.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HraLandingPageIntroWcBehaviourComponent {\\n /** select snapshot for Landing Page title */\\n readonly landingPageIntroTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle);\\n /** select snapshot for landing page intro description */\\n readonly landingPageIntroDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroReadMore = selectQuerySnapshot(RRS.markdown, RIds.LandingPageIntroReadMore);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroPartners = selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners);\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .intro {\\n display: inline-grid;\\n border: 1px solid #e2e7e9;\\n padding: 24px 32px 24px 32px;\\n width: 71rem;\\n }\\n}\\n","styleUrl":"./hra-landing-page-intro-wc-behaviour.component.scss"}],"stylesData":"","templateData":"\\n"},{"name":"LandingPageContentComponent","id":"component-LandingPageContentComponent-d72615e2863b7f2f08c767452a75c71c9e079687610cd3e50b54f72f11546184f7ad55c5304741d79adb9bb9ea161cdac4253ae6fb1cbbf15040f2814110616a","file":"src/lib/landing-page-content/landing-page-content.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-landing-page-content","styleUrls":["./landing-page-content.component.scss"],"styles":[],"templateUrl":["./landing-page-content.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"intersectableEls","deprecated":false,"deprecationMessage":"","type":"QueryList","optional":false,"description":"

      array of element refs for intersectables

      \\n","line":34,"rawdescription":"\\narray of element refs for intersectables","decorators":[{"name":"ViewChildren","stringifiedArguments":"\'intersectable\', {read: ElementRef}"}],"modifierKind":[144]},{"name":"landingPageDepthDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDepthDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth description

      \\n","line":57,"rawdescription":"\\nselect snapshot for landing page depth description","modifierKind":[144]},{"name":"landingPageDepthImg","defaultValue":"selectQuerySnapshot(RRS.url, RIds.LandingPageDepthImg)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth img

      \\n","line":61,"rawdescription":"\\nselect snapshot for landing page depth img","modifierKind":[144]},{"name":"landingPageDepthMoreText","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthMoreText)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot forlanding page depth more text

      \\n","line":59,"rawdescription":"\\nselect snapshot forlanding page depth more text","modifierKind":[144]},{"name":"landingPageDepthTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth title

      \\n","line":55,"rawdescription":"\\nselect snapshot for landing page depth title","modifierKind":[144]},{"name":"landingPageIntroDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro description

      \\n","line":40,"rawdescription":"\\nselect snapshot for landing page intro description","modifierKind":[144]},{"name":"landingPageIntroImg","defaultValue":"selectQuerySnapshot(RRS.url, RIds.LandingPageIntroImg)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro img

      \\n","line":47,"rawdescription":"\\nselect snapshot for landing page intro img","modifierKind":[144]},{"name":"landingPageIntroMoreText","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageIntroMoreText)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro more text

      \\n","line":45,"rawdescription":"\\nselect snapshot for landing page intro more text","modifierKind":[144]},{"name":"landingPageIntroPartners","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":42,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for Landing Page title

      \\n","line":37,"rawdescription":"\\nselect snapshot for Landing Page title","modifierKind":[144]},{"name":"LinkIds","defaultValue":"LinkIds","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Expose links for use it template

      \\n","line":64,"rawdescription":"\\nExpose links for use it template","modifierKind":[144]},{"name":"metrics","defaultValue":"selectQuerySnapshot(RRS.field, RIds.Metrics, RTypes.Metrics, \'metrics\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics

      \\n","line":49,"rawdescription":"\\nselect snapshot for metrics","modifierKind":[144]},{"name":"metricsLogo","defaultValue":"selectQuerySnapshot(RRS.url, RIds.MetricsLogo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics logo

      \\n","line":53,"rawdescription":"\\nselect snapshot for metrics logo","modifierKind":[144]},{"name":"metricsTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.MetricsTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics title

      \\n","line":51,"rawdescription":"\\nselect snapshot for metrics title","modifierKind":[144]}],"methodsClass":[{"name":"handleIntersection","args":[{"name":"entries","type":"IntersectionObserverEntry[]","deprecated":false,"deprecationMessage":""},{"name":"observer","type":"IntersectionObserver","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":82,"deprecated":false,"deprecationMessage":"","rawdescription":"\\ncallback function for intersection observer","description":"

      callback function for intersection observer

      \\n","jsdoctags":[{"name":"entries","type":"IntersectionObserverEntry[]","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"observer","type":"IntersectionObserver","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPageContent Behavior

      \\n","rawdescription":"\\nComponent for LandingPageContent Behavior","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport {\\n AfterViewInit,\\n ChangeDetectionStrategy,\\n Component,\\n ElementRef,\\n inject,\\n QueryList,\\n Renderer2,\\n ViewChildren,\\n} from \'@angular/core\';\\nimport { injectDestroy$, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RRS } from \'@hra-ui/cdk/state\';\\nimport {\\n LandingPageInDepthComponent,\\n LandingPageIntroComponent,\\n MetricItem,\\n MetricsComponent,\\n} from \'@hra-ui/components/molecules\';\\nimport { LinkIds, ResourceIds as RIds, ResourceTypes as RTypes } from \'@hra-ui/state\';\\n\\n/** Component for LandingPageContent Behavior */\\n@Component({\\n selector: \'ftu-landing-page-content\',\\n standalone: true,\\n imports: [CommonModule, LandingPageIntroComponent, MetricsComponent, LandingPageInDepthComponent],\\n templateUrl: \'./landing-page-content.component.html\',\\n styleUrls: [\'./landing-page-content.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageContentComponent implements AfterViewInit {\\n /** array of element refs for intersectables */\\n @ViewChildren(\'intersectable\', { read: ElementRef })\\n readonly intersectableEls!: QueryList;\\n\\n /** select snapshot for Landing Page title */\\n readonly landingPageIntroTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle);\\n\\n /** select snapshot for landing page intro description */\\n readonly landingPageIntroDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroPartners = selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners);\\n\\n /** select snapshot for landing page intro more text */\\n readonly landingPageIntroMoreText = selectQuerySnapshot(RRS.anyText, RIds.LandingPageIntroMoreText);\\n /** select snapshot for landing page intro img */\\n readonly landingPageIntroImg = selectQuerySnapshot(RRS.url, RIds.LandingPageIntroImg);\\n /** select snapshot for metrics */\\n readonly metrics = selectQuerySnapshot(RRS.field, RIds.Metrics, RTypes.Metrics, \'metrics\' as const, []);\\n /** select snapshot for metrics title */\\n readonly metricsTitle = selectQuerySnapshot(RRS.anyText, RIds.MetricsTitle);\\n /** select snapshot for metrics logo */\\n readonly metricsLogo = selectQuerySnapshot(RRS.url, RIds.MetricsLogo);\\n /** select snapshot for landing page depth title */\\n readonly landingPageDepthTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthTitle);\\n /** select snapshot for landing page depth description */\\n readonly landingPageDepthDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDepthDescription);\\n /** select snapshot forlanding page depth more text */\\n readonly landingPageDepthMoreText = selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthMoreText);\\n /** select snapshot for landing page depth img */\\n readonly landingPageDepthImg = selectQuerySnapshot(RRS.url, RIds.LandingPageDepthImg);\\n\\n /** Expose links for use it template */\\n readonly LinkIds = LinkIds;\\n\\n /** Renderer to add class for animation */\\n private readonly renderer = inject(Renderer2);\\n /** destroys observer */\\n private readonly destroy$ = injectDestroy$();\\n\\n /** creates an observer after view init */\\n ngAfterViewInit(): void {\\n const observer = new IntersectionObserver(this.handleIntersection.bind(this), {\\n threshold: 0.18,\\n });\\n\\n this.intersectableEls.forEach((el) => observer.observe(el.nativeElement));\\n this.destroy$.subscribe(() => observer.disconnect());\\n }\\n\\n /** callback function for intersection observer */\\n handleIntersection(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void {\\n for (const { isIntersecting, target } of entries) {\\n if (isIntersecting) {\\n this.renderer.addClass(target, \'visible\');\\n observer.unobserve(target);\\n }\\n }\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n overflow-x: hidden;\\n\\n .intro {\\n margin: 3.5rem 2rem;\\n }\\n\\n .metrics {\\n opacity: 0;\\n\\n &.visible {\\n animation: fadeIn 2s ease-in forwards;\\n }\\n }\\n\\n .in-depth {\\n opacity: 0;\\n\\n &.visible {\\n overflow: hidden;\\n animation: slideIn 2s ease-in-out forwards;\\n }\\n }\\n}\\n\\n@keyframes fadeIn {\\n 0% {\\n opacity: 0;\\n }\\n\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n@keyframes slideIn {\\n 0% {\\n transform: translateX(200%);\\n opacity: 1;\\n }\\n\\n 100% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n}\\n","styleUrl":"./landing-page-content.component.scss"}],"stylesData":"","implements":["AfterViewInit"],"templateData":"\\n\\n\\n\\n\\n\\n"},{"name":"MedicalIllustrationBehaviorComponent","id":"component-MedicalIllustrationBehaviorComponent-6fea78f0a6011315eef3ff0e9cf3f451130b68d93388f1b8ff7f362f6c7f2ec8bbad2f6518d0329f94a749b1e02a1018129acf2b8340f015397957c3e0fd985d","file":"src/lib/medical-illustration-behavior/medical-illustration-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-medical-illustration-behavior","styleUrls":["./medical-illustration-behavior.component.scss"],"styles":[],"templateUrl":["./medical-illustration-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"currentUrl","defaultValue":"selectSnapshot(IllustratorSelectors.url)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current illustration url

      \\n","line":23,"rawdescription":"\\n\\nCurrent illustration url\\n","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":33,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"mapping","defaultValue":"selectSnapshot(IllustratorSelectors.mapping)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current mapping file

      \\n","line":28,"rawdescription":"\\n\\nCurrent mapping file\\n","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":38,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]},{"name":"updateNodeOnClicked","defaultValue":"dispatch(IllustratorActions.SetClicked)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node click

      \\n","line":57,"rawdescription":"\\n\\nUpdates the active node on node click\\n","modifierKind":[144]},{"name":"updateNodeOnHover","defaultValue":"dispatch(IllustratorActions.SetHover)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node hover

      \\n","line":52,"rawdescription":"\\n\\nUpdates the active node on node hover\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Behavior component for medical illustration component

      \\n","rawdescription":"\\n\\nBehavior component for medical illustration component\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { dispatch, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\nimport { InteractiveSvgComponent } from \'@hra-ui/components/molecules\';\\nimport { ActiveFtuSelectors, IllustratorActions, IllustratorSelectors, TissueLibrarySelectors } from \'@hra-ui/state\';\\n\\n/**\\n * Behavior component for medical illustration component\\n */\\n@Component({\\n selector: \'ftu-medical-illustration-behavior\',\\n standalone: true,\\n imports: [CommonModule, InteractiveSvgComponent, LabelBoxComponent],\\n templateUrl: \'./medical-illustration-behavior.component.html\',\\n styleUrls: [\'./medical-illustration-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MedicalIllustrationBehaviorComponent {\\n /**\\n * Current illustration url\\n */\\n readonly currentUrl = selectSnapshot(IllustratorSelectors.url);\\n\\n /**\\n * Current mapping file\\n */\\n readonly mapping = selectSnapshot(IllustratorSelectors.mapping);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueTitle(): string {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n return iri ? tissues[iri].label : \'\';\\n }\\n\\n /**\\n * Updates the active node on node hover\\n */\\n readonly updateNodeOnHover = dispatch(IllustratorActions.SetHover);\\n\\n /**\\n * Updates the active node on node click\\n */\\n readonly updateNodeOnClicked = dispatch(IllustratorActions.SetClicked);\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n hra-label-box {\\n border-bottom: 0.063rem solid #d3d3d3;\\n width: 100%;\\n height: 3.5rem;\\n }\\n}\\n","styleUrl":"./medical-illustration-behavior.component.scss"}],"stylesData":"","accessors":{"tissueTitle":{"name":"tissueTitle","getSignature":{"name":"tissueTitle","type":"string","returnType":"string","line":43,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"{{ tissueTitle }}\\n\\n\\n"},{"name":"ScreenNoticeBehaviorComponent","id":"component-ScreenNoticeBehaviorComponent-de4fc156bf7f658d9ca0a8d114626d829387a03f3b206cb5439f1ad22b9e157cbc51e850b06eb8f0b9dd48a75acb723b42c7fd79d0c50694757e9d23cac9f416","file":"src/lib/screen-notice-behavior/screen-notice-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-ui-screen-notice-behavior","styleUrls":["./screen-notice-behavior.component.scss"],"styles":[],"templateUrl":["./screen-notice-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"content","defaultValue":"selectQuerySnapshot(RR.anyText, ResourceIds.ScreenSizeNoticeContent)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Content of screen notice behavior component

      \\n","line":21,"rawdescription":"\\nContent of screen notice behavior component","modifierKind":[144]},{"name":"portal","defaultValue":"LinkIds.Portal","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Hra portal link routing after clicking on HRA Portal

      \\n","line":24,"rawdescription":"\\nHra portal link routing after clicking on HRA Portal","modifierKind":[144]}],"methodsClass":[{"name":"close","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":33,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which closes the screen size notice dialog box","description":"

      A function which closes the screen size notice dialog box

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component for screen size notice behavior which provides the content to be displayed and provides functionality\\nfor the buttons on the notice modal

      \\n","rawdescription":"\\nA component for screen size notice behavior which provides the content to be displayed and provides functionality\\nfor the buttons on the notice modal","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR, StorageActions, StorageId } from \'@hra-ui/cdk/state\';\\nimport { ResourceIds, LinkIds } from \'@hra-ui/state\';\\nimport { ScreenSizeNoticeComponent } from \'@hra-ui/components/molecules\';\\nimport { MatDialogRef } from \'@angular/material/dialog\';\\n\\n/** A component for screen size notice behavior which provides the content to be displayed and provides functionality\\n * for the buttons on the notice modal */\\n@Component({\\n selector: \'ftu-ui-screen-notice-behavior\',\\n standalone: true,\\n imports: [CommonModule, ScreenSizeNoticeComponent],\\n templateUrl: \'./screen-notice-behavior.component.html\',\\n styleUrls: [\'./screen-notice-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ScreenNoticeBehaviorComponent {\\n /** Content of screen notice behavior component*/\\n readonly content = selectQuerySnapshot(RR.anyText, ResourceIds.ScreenSizeNoticeContent);\\n\\n /** Hra portal link routing after clicking on HRA Portal*/\\n readonly portal = LinkIds.Portal;\\n\\n /** Reference for the screen size notice dialog box*/\\n private readonly ref = inject(MatDialogRef, { optional: true });\\n\\n /** A dispatcher function that sets the Local Storage as \'shown\'*/\\n private readonly setScreenNoticeShown = dispatch(StorageActions.Set, StorageId.Local, \'screen-size-notice\', \'shown\');\\n\\n /** A function which closes the screen size notice dialog box*/\\n close(): void {\\n this.setScreenNoticeShown();\\n this.ref?.close();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./screen-notice-behavior.component.scss"}],"stylesData":"","templateData":" \\n"},{"name":"TissueLibraryBehaviorComponent","id":"component-TissueLibraryBehaviorComponent-1565978e9f70870b546b49f929236ee86c2eb9cc241e10b805863df59e4d66dca72495ffa8c27a7f282e396acc84f78b6724255570a4eab733a3af995543b47a","file":"src/lib/tissue-library-behavior/tissue-library-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-tissue-library-behavior","styleUrls":["./tissue-library-behavior.component.scss"],"styles":[],"templateUrl":["./tissue-library-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"list","deprecated":false,"deprecationMessage":"","type":"TissueTreeListComponent","optional":true,"description":"

      Reference to the TissueTreeListComponent.

      \\n","line":25,"rawdescription":"\\n\\nReference to the TissueTreeListComponent.\\n","decorators":[{"name":"ViewChild","stringifiedArguments":"\'list\', {static: true}"}],"modifierKind":[144]},{"name":"selected","deprecated":false,"deprecationMessage":"","type":"Tissue","optional":true,"description":"

      Selected of tissue library behavior component

      \\n","line":34,"rawdescription":"\\n\\nSelected of tissue library behavior component\\n"},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for tissues data

      \\n","line":30,"rawdescription":"\\n\\nInput for tissues data\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Tissue Library Behavior

      \\n","rawdescription":"\\n\\nComponent for Tissue Library Behavior\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, ViewChild } from \'@angular/core\';\\nimport { select$, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { TissueTreeListComponent } from \'@hra-ui/components/molecules\';\\nimport { Tissue } from \'@hra-ui/services\';\\nimport { ActiveFtuSelectors, TissueLibrarySelectors } from \'@hra-ui/state\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * Component for Tissue Library Behavior\\n */\\n@Component({\\n selector: \'ftu-tissue-library-behavior\',\\n standalone: true,\\n imports: [CommonModule, LabelBoxComponent, TissueTreeListComponent],\\n templateUrl: \'./tissue-library-behavior.component.html\',\\n styleUrls: [\'./tissue-library-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueLibraryBehaviorComponent {\\n /**\\n * Reference to the TissueTreeListComponent.\\n */\\n @ViewChild(\'list\', { static: true })\\n readonly list?: TissueTreeListComponent;\\n\\n /**\\n * Input for tissues data\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n /**\\n * Selected of tissue library behavior component\\n */\\n selected?: Tissue;\\n\\n /**\\n * Sets the TissueItem instance as undefined if\\n * the url is undefined\\n */\\n constructor() {\\n /** Get iris from the observable else reset selection if\\n * iri is undefined\\n */\\n select$(ActiveFtuSelectors.iri).subscribe((iri) => {\\n this.selected = iri && this.tissues()[iri];\\n if (iri === undefined) {\\n this.list?.resetSelection();\\n }\\n });\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .label {\\n border-bottom: 1px solid #e2e7e9;\\n width: 100%;\\n height: 3.5rem;\\n }\\n}\\n","styleUrl":"./tissue-library-behavior.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Sets the TissueItem instance as undefined if\\nthe url is undefined

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":34,"rawdescription":"\\n\\nSets the TissueItem instance as undefined if\\nthe url is undefined\\n"},"templateData":"FTU Library\\n \\n"}],"modules":[],"miscellaneous":{"variables":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details/biomarker-details.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"},{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}],"functions":[],"typealiases":[],"enumerations":[],"groupedVariables":{"src/lib/biomarker-details/biomarker-details.component.ts":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details/biomarker-details.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}],"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{}}}')},"./dist/compodoc/components-molecules/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"ContactData","id":"interface-ContactData-309310b2740da63be5ea5aaa894ef73ced8bed2a86b50643af4dd031551d6cdb7b26ece6b3328d0e31c21e46f940bd8b901f5665c241ca2a4cb38f39631bd8a3","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmailInputComponent, RequiredInputComponent, RequiredTextboxComponent } from \'@hra-ui/components/atoms\';\\nimport { produce } from \'immer\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n An interface representing contact data information which will be emitted if all the fields are in correct format.\\n */\\nexport interface ContactData {\\n /** The email address of the person submitting the form. */\\n email: string;\\n /** The subject line of the message being sent. */\\n subject: string;\\n /** The body of the message being sent. */\\n message: string;\\n}\\n\\n/** Initial empty contact data */\\nconst EMPTY_CONTACT_DATA: Partial = {\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n};\\n\\n/**\\n * Contact modal component.\\n */\\n@Component({\\n selector: \'hra-contact-modal\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatIconModule,\\n EmailInputComponent,\\n MarkdownModule,\\n RequiredTextboxComponent,\\n RequiredInputComponent,\\n ],\\n templateUrl: \'./contact-modal.component.html\',\\n styleUrls: [\'./contact-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactModalComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Emits when the submit button is clicked and all the values are appropriate. */\\n @Output() readonly submitClick = new EventEmitter();\\n\\n /** Emits when the cancel button or close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n\\n /** A function to disable the submit button. If all the values are in approproiate format, then it will be enabled. */\\n get disableSubmit(): boolean {\\n return Object.values(this.contactData).some((value) => value === undefined);\\n }\\n\\n /** Asigns the undefined initially to all the input fields. */\\n contactData = EMPTY_CONTACT_DATA;\\n\\n /** Updates the contact data object with a new value for a given key. */\\n updateData(key: K, value?: ContactData[K]): void {\\n this.contactData = produce(this.contactData, (draft) => {\\n draft[key] = value;\\n });\\n }\\n\\n /** It emits the updated value of contact data */\\n submit(): void {\\n this.submitClick.emit(this.contactData as ContactData);\\n }\\n}\\n","properties":[{"name":"email","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The email address of the person submitting the form.

      \\n","line":14,"rawdescription":"\\nThe email address of the person submitting the form."},{"name":"message","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The body of the message being sent.

      \\n","line":18,"rawdescription":"\\nThe body of the message being sent."},{"name":"subject","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The subject line of the message being sent.

      \\n","line":16,"rawdescription":"\\nThe subject line of the message being sent."}],"indexSignatures":[],"kind":165,"description":"

      An interface representing contact data information which will be emitted if all the fields are in correct format.

      \\n","rawdescription":"\\n\\nAn interface representing contact data information which will be emitted if all the fields are in correct format.\\n","methods":[]},{"name":"DataItem","id":"interface-DataItem-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      A string property that represents the label

      \\n","line":8,"rawdescription":"\\nA string property that represents the label"},{"name":"value","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      A string property that represents the value

      \\n","line":10,"rawdescription":"\\nA string property that represents the value"}],"indexSignatures":[],"kind":165,"description":"

      An item which defines a string label and a string value

      \\n","rawdescription":"\\nAn item which defines a string label and a string value","methods":[]},{"name":"DataNode","id":"interface-DataNode-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","properties":[{"name":"children","deprecated":false,"deprecationMessage":"","type":"K[]","optional":true,"description":"

      Nested nodes

      \\n","line":29,"rawdescription":"\\nNested nodes"},{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      Id to pass as a query parameter on navigation

      \\n","line":25,"rawdescription":"\\nId to pass as a query parameter on navigation"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      User readable label

      \\n","line":23,"rawdescription":"\\nUser readable label"},{"name":"link","deprecated":false,"deprecationMessage":"","type":"LinkId","optional":true,"description":"

      Link to navigate to on node click

      \\n","line":27,"rawdescription":"\\nLink to navigate to on node click"}],"indexSignatures":[],"kind":165,"description":"

      Base node type

      \\n","rawdescription":"\\nBase node type","methods":[]},{"name":"DownloadFormat","id":"interface-DownloadFormat-45c5a61fc5d68c201808fb76ff867f9a7cf8e42e6ef95ae08b440dbd37ce63eb4c77c3da0597ef90973854d65522a3ba496eeb5eccbe75750c1fd2f5abf52e6b","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { MatListModule } from \'@angular/material/list\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * Base type for different download format options.\\n */\\nexport interface DownloadFormat {\\n /**\\n * User readable format label\\n */\\n label: string;\\n}\\n\\n/**\\n * Positioning value for the download list popup\\n */\\nconst DOWNLOADS_LIST_POSITION: ConnectedPosition[] = [\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n];\\n\\n/**\\n * Component for footer that displays its content at the bottom of the page with different action buttons.\\n */\\n@Component({\\n selector: \'hra-footer\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, OverlayModule, MatListModule, LinkDirective],\\n templateUrl: \'./footer.component.html\',\\n styleUrls: [\'./footer.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterComponent {\\n /** Host binding of footer component */\\n @HostBinding(\'class\')\\n @Input()\\n size: \'small\' | \'large\' = \'large\';\\n\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Input for HRA Portal link */\\n @Input() hraPortal = EMPTY_LINK;\\n\\n /** Input for Illustration metadata page link in HRA Portal */\\n @Input() illustrationMetadata = EMPTY_LINK;\\n\\n /** Input for embed link in HRA Portal */\\n @Input() embed = EMPTY_LINK;\\n\\n /** Different download formats options displayed to the user */\\n @Input() downloadFormats: T[] = [];\\n\\n /** Emits the selected download format */\\n @Output() readonly download = new EventEmitter();\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly contactClick = new EventEmitter();\\n\\n /** Download list popup overlay positioning */\\n readonly DOWNLOADS_LIST_POSITION = DOWNLOADS_LIST_POSITION;\\n\\n /** Gets whether the footer required is small */\\n get isSmall(): boolean {\\n return this.size === \'small\';\\n }\\n\\n /** Whether the download list panel is open */\\n downloadListOpen = false;\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      User readable format label

      \\n","line":17,"rawdescription":"\\n\\nUser readable format label\\n"}],"indexSignatures":[],"kind":165,"description":"

      Base type for different download format options.

      \\n","rawdescription":"\\n\\nBase type for different download format options.\\n","methods":[]},{"name":"InternalNode","id":"interface-InternalNode-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","properties":[{"name":"data","deprecated":false,"deprecationMessage":"","type":"T","optional":false,"description":"

      Associated user node data

      \\n","line":43,"rawdescription":"\\nAssociated user node data"},{"name":"expandable","deprecated":false,"deprecationMessage":"","type":"boolean","optional":false,"description":"

      Whether the node can be expanded to display child nodes

      \\n","line":39,"rawdescription":"\\nWhether the node can be expanded to display child nodes"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Displayed label

      \\n","line":37,"rawdescription":"\\nDisplayed label"},{"name":"level","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Depth of node in the tree

      \\n","line":41,"rawdescription":"\\nDepth of node in the tree"}],"indexSignatures":[],"kind":165,"description":"

      Internal interface for flat tissue data hierarchy

      \\n","rawdescription":"\\n\\nInternal interface for flat tissue data hierarchy\\n","methods":[]},{"name":"MetricItem","id":"interface-MetricItem-e52c0a1cdf090042d1924c4907a4034774cbb442217faca9ec5035e76d2796116cf55644ecf49ae040fdea1168f9c5d99f6ce15b2079f70de3d853fece481b30","file":"src/lib/metrics/metrics.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n An interface representing a single metric with an icon, value and description.\\n */\\nexport interface MetricItem {\\n /** Represents the icon associated with the metric. */\\n icon: string;\\n /** Describes the numberical value of the metric. */\\n value: string;\\n /** Describes the type of metric. */\\n description: string;\\n}\\n/**\\n * Describes the metrics for the HuBMAP project.\\n */\\n@Component({\\n selector: \'hra-metrics\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./metrics.component.html\',\\n styleUrls: [\'./metrics.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MetricsComponent {\\n /** Main title of metrics component. */\\n @Input() title = \'\';\\n\\n /** Logo of metrics component. */\\n @Input() logo = \'\';\\n\\n /** List of metrics that will be shown to the user. */\\n @Input() metrics: MetricItem[] = [];\\n}\\n","properties":[{"name":"description","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Describes the type of metric.

      \\n","line":13,"rawdescription":"\\nDescribes the type of metric."},{"name":"icon","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Represents the icon associated with the metric.

      \\n","line":9,"rawdescription":"\\nRepresents the icon associated with the metric."},{"name":"value","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Describes the numberical value of the metric.

      \\n","line":11,"rawdescription":"\\nDescribes the numberical value of the metric."}],"indexSignatures":[],"kind":165,"description":"

      An interface representing a single metric with an icon, value and description.

      \\n","rawdescription":"\\n\\nAn interface representing a single metric with an icon, value and description.\\n","methods":[]},{"name":"NodeMapEntry","id":"interface-NodeMapEntry-985e710eb317dd3ff5ea26a7d11e504b64a31e68fa3680b8455ed3925acd6cb8cc0fbc37282dd5fa62df18c6514780783a2cf000f5bfeadbefaa7232ebdef28a","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.nodeHoverData$.next(undefined));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","properties":[{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node id in svg

      \\n","line":69,"rawdescription":"\\nNode id in svg"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node label

      \\n","line":67,"rawdescription":"\\nNode label"},{"name":"ontologyId","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Ontology id of cell type

      \\n","line":71,"rawdescription":"\\nOntology id of cell type"}],"indexSignatures":[],"kind":165,"description":"

      Interface for node entries

      \\n","rawdescription":"\\nInterface for node entries","methods":[]},{"name":"NodeTooltipData","id":"interface-NodeTooltipData-985e710eb317dd3ff5ea26a7d11e504b64a31e68fa3680b8455ed3925acd6cb8cc0fbc37282dd5fa62df18c6514780783a2cf000f5bfeadbefaa7232ebdef28a","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.nodeHoverData$.next(undefined));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","properties":[{"name":"node","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node name

      \\n","line":59,"rawdescription":"\\nNode name"},{"name":"origin","deprecated":false,"deprecationMessage":"","type":"literal type","optional":false,"description":"

      Center point of hovered node in screen coordinates

      \\n","line":61,"rawdescription":"\\nCenter point of hovered node in screen coordinates"}],"indexSignatures":[],"kind":165,"description":"

      Node tooltip data

      \\n","rawdescription":"\\nNode tooltip data","methods":[]},{"name":"SectionItem","id":"interface-SectionItem-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","properties":[{"name":"data","deprecated":false,"deprecationMessage":"","type":"DataItem","optional":false,"description":"

      A DateItem property that represents a section and its data

      \\n","line":18,"rawdescription":"\\nA DateItem property that represents a section and its data"},{"name":"isLastItem","deprecated":false,"deprecationMessage":"","type":"boolean","optional":false,"description":"

      A boolean property that represents the last item of a section

      \\n","line":20,"rawdescription":"\\nA boolean property that represents the last item of a section"},{"name":"section","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      A number property that represents the section number

      \\n","line":16,"rawdescription":"\\nA number property that represents the section number"}],"indexSignatures":[],"kind":165,"description":"

      An item which represents a section with a data item and an indicator for the last item in the section

      \\n","rawdescription":"\\nAn item which represents a section with a data item and an indicator for the last item in the section","methods":[]},{"name":"SourceListItem","id":"interface-SourceListItem-3e55f2d90acdd1770d63ee01d7cb04bfb862e234a989f6253c27f416e0d0d33c9fd51a594ccdd21bb13acf50a7076f9a951f5f110e2d6c319be91dfc009e7d61","file":"src/lib/source-list/source-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/** SourceListItem interface contains title and link to the dataset for the SourceList*/\\nexport interface SourceListItem {\\n /** Title of the dataset in the SourceList */\\n title: string;\\n\\n /** Label of the dataset in the SourceList */\\n label: string;\\n\\n /** Link to the dataset in the SourceList */\\n link: string;\\n}\\n\\n/** This component shows list of sources with title and links to the datasets */\\n@Component({\\n selector: \'hra-source-list\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule, MatIconModule, LabelBoxComponent],\\n templateUrl: \'./source-list.component.html\',\\n styleUrls: [\'./source-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SourceListComponent {\\n /** List of sources with titles and links displayed to the user */\\n @Input() sources: SourceListItem[] = [];\\n /**\\n * Show table of source list component which toggles to true or false\\n * based on click\\n */\\n showTable = true;\\n\\n /**\\n * It changes the value of showTable to false if value it true\\n * and vice versa\\n */\\n toggleTable(): void {\\n this.showTable = !this.showTable;\\n }\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Label of the dataset in the SourceList

      \\n","line":13,"rawdescription":"\\nLabel of the dataset in the SourceList"},{"name":"link","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Link to the dataset in the SourceList

      \\n","line":16,"rawdescription":"\\nLink to the dataset in the SourceList"},{"name":"title","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Title of the dataset in the SourceList

      \\n","line":10,"rawdescription":"\\nTitle of the dataset in the SourceList"}],"indexSignatures":[],"kind":165,"description":"

      SourceListItem interface contains title and link to the dataset for the SourceList

      \\n","rawdescription":"\\nSourceListItem interface contains title and link to the dataset for the SourceList","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerTableDataCardComponent","id":"component-BiomarkerTableDataCardComponent-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table-data-card","styleUrls":["./biomarker-table-data-card.component.scss"],"styles":[],"templateUrl":["./biomarker-table-data-card.component.html"],"viewProviders":[],"inputsClass":[{"name":"data","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nNested list of DataItems for each section which is displayed to the user","description":"

      Nested list of DataItems for each section which is displayed to the user

      \\n","line":34,"type":"DataItem[][]","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"sectionItems","defaultValue":"[]","deprecated":false,"deprecationMessage":"","type":"SectionItem[]","optional":false,"description":"

      Converted nested array of DataItem into Flat array of SectionItem

      \\n","line":37,"rawdescription":"\\nConverted nested array of DataItem into Flat array of SectionItem"}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      This component displays a table with sections, where each section contains a list of items with a label and a value.

      \\n","rawdescription":"\\nThis component displays a table with sections, where each section contains a list of items with a label and a value.","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: flex;\\n padding: 1rem 1.5rem;\\n border-radius: 0.5rem;\\n box-shadow: 0.063rem 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n background-color: vars.$primary-contrast-rgb;\\n\\n .mat-mdc-cell {\\n padding: 0.25rem 0rem;\\n }\\n\\n .mat-mdc-row {\\n height: fit-content;\\n }\\n\\n .no-border {\\n border: none;\\n }\\n\\n .label {\\n color: #243142;\\n padding-right: 3rem;\\n }\\n\\n .value {\\n color: #4c5a69;\\n }\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n}\\n","styleUrl":"./biomarker-table-data-card.component.scss"}],"stylesData":"","implements":["OnChanges"],"templateData":"
      No data
      \\n 0\\" [dataSource]=\\"sectionItems\\">\\n \\n\\n \x3c!-- Label Column --\x3e\\n \\n \\n \\n \\n\\n \x3c!-- Value Column --\x3e\\n \\n \\n \\n \\n\\n \\n
      \\n Biomarker Table Data Card\\n
      Item Label\\n {{ element.data.label }}\\n Item Value\\n {{ element.data.value }}\\n
      \\n"},{"name":"BiomarkerTableDataIconComponent","id":"component-BiomarkerTableDataIconComponent-0fab04062dee70e0c4d57bfdc6f056400c9b82591b050c6912b9e59a896e1a5535f884a104c1d3f95c19721a049ca51f5b2a953512dc1d6a501c29d5399a063c","file":"src/lib/biomarker-table-data-icon/biomarker-table-data-icon.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table-data-icon","styleUrls":["./biomarker-table-data-icon.component.scss"],"styles":[],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[{"name":"color","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRepresents the color of the icon","description":"

      Represents the color of the icon

      \\n","line":17,"type":"string","decorators":[]},{"name":"size","defaultValue":"0","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRepresents the size of the icon","description":"

      Represents the size of the icon

      \\n","line":20,"type":"number","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Describes the data icon for the table

      \\n","rawdescription":"\\n\\nDescribes the data icon for the table\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, HostBinding, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n * Describes the data icon for the table\\n */\\n@Component({\\n selector: \'hra-biomarker-table-data-icon\',\\n standalone: true,\\n imports: [CommonModule],\\n template: \'\',\\n styleUrls: [\'./biomarker-table-data-icon.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataIconComponent {\\n /** Represents the color of the icon */\\n @HostBinding(\'style.background-color\') @Input() color = \'\';\\n\\n /** Represents the size of the icon */\\n @HostBinding(\'style.--radius.rem\') @Input() size = 0;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n border-radius: 50%;\\n --radius: 0.625rem;\\n width: var(--radius);\\n height: var(--radius);\\n}\\n","styleUrl":"./biomarker-table-data-icon.component.scss"}],"stylesData":""},{"name":"ContactModalComponent","id":"component-ContactModalComponent-309310b2740da63be5ea5aaa894ef73ced8bed2a86b50643af4dd031551d6cdb7b26ece6b3328d0e31c21e46f940bd8b901f5665c241ca2a4cb38f39631bd8a3","file":"src/lib/contact-modal/contact-modal.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-contact-modal","styleUrls":["./contact-modal.component.scss"],"styles":[],"templateUrl":["./contact-modal.component.html"],"viewProviders":[],"inputsClass":[{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product logo URL to displayed on the left side.","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":49,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product title to displayed on the left side.","description":"

      Input for product title to displayed on the left side.

      \\n","line":52,"type":"string","decorators":[]}],"outputsClass":[{"name":"closeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the cancel button or close icon is clicked","description":"

      Emits when the cancel button or close icon is clicked

      \\n","line":58,"type":"EventEmitter"},{"name":"submitClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the submit button is clicked and all the values are appropriate.","description":"

      Emits when the submit button is clicked and all the values are appropriate.

      \\n","line":55,"type":"EventEmitter"}],"propertiesClass":[{"name":"contactData","defaultValue":"EMPTY_CONTACT_DATA","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Asigns the undefined initially to all the input fields.

      \\n","line":66,"rawdescription":"\\nAsigns the undefined initially to all the input fields."}],"methodsClass":[{"name":"submit","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":76,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nIt emits the updated value of contact data","description":"

      It emits the updated value of contact data

      \\n"},{"name":"updateData","args":[{"name":"key","type":"K","deprecated":false,"deprecationMessage":""},{"name":"value","type":"","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":["K"],"line":69,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nUpdates the contact data object with a new value for a given key.","description":"

      Updates the contact data object with a new value for a given key.

      \\n","jsdoctags":[{"name":"key","type":"K","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"value","type":"","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Contact modal component.

      \\n","rawdescription":"\\n\\nContact modal component.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmailInputComponent, RequiredInputComponent, RequiredTextboxComponent } from \'@hra-ui/components/atoms\';\\nimport { produce } from \'immer\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n An interface representing contact data information which will be emitted if all the fields are in correct format.\\n */\\nexport interface ContactData {\\n /** The email address of the person submitting the form. */\\n email: string;\\n /** The subject line of the message being sent. */\\n subject: string;\\n /** The body of the message being sent. */\\n message: string;\\n}\\n\\n/** Initial empty contact data */\\nconst EMPTY_CONTACT_DATA: Partial = {\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n};\\n\\n/**\\n * Contact modal component.\\n */\\n@Component({\\n selector: \'hra-contact-modal\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatIconModule,\\n EmailInputComponent,\\n MarkdownModule,\\n RequiredTextboxComponent,\\n RequiredInputComponent,\\n ],\\n templateUrl: \'./contact-modal.component.html\',\\n styleUrls: [\'./contact-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactModalComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Emits when the submit button is clicked and all the values are appropriate. */\\n @Output() readonly submitClick = new EventEmitter();\\n\\n /** Emits when the cancel button or close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n\\n /** A function to disable the submit button. If all the values are in approproiate format, then it will be enabled. */\\n get disableSubmit(): boolean {\\n return Object.values(this.contactData).some((value) => value === undefined);\\n }\\n\\n /** Asigns the undefined initially to all the input fields. */\\n contactData = EMPTY_CONTACT_DATA;\\n\\n /** Updates the contact data object with a new value for a given key. */\\n updateData(key: K, value?: ContactData[K]): void {\\n this.contactData = produce(this.contactData, (draft) => {\\n draft[key] = value;\\n });\\n }\\n\\n /** It emits the updated value of contact data */\\n submit(): void {\\n this.submitClick.emit(this.contactData as ContactData);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n position: relative;\\n padding-top: 2rem;\\n margin-right: 1.5rem;\\n margin-left: 1.5rem;\\n\\n .product-logo {\\n display: flex;\\n align-items: center;\\n\\n .product-logo-image {\\n margin-right: 1rem;\\n }\\n\\n .product-title {\\n color: #990000;\\n margin: 0;\\n font-weight: 600;\\n }\\n }\\n\\n .close {\\n position: absolute;\\n top: 1.5rem;\\n right: 0rem;\\n }\\n\\n .submit {\\n margin-right: 1.5rem;\\n }\\n\\n .submit,\\n .cancel {\\n width: 7.5rem;\\n }\\n\\n .email {\\n margin-top: 1.25rem;\\n }\\n\\n .message-field {\\n margin-top: 1rem;\\n }\\n\\n .subject-field {\\n margin-top: 1rem;\\n }\\n\\n .desc {\\n margin-top: 1.5rem;\\n }\\n}\\n","styleUrl":"./contact-modal.component.scss"}],"stylesData":"","accessors":{"disableSubmit":{"name":"disableSubmit","getSignature":{"name":"disableSubmit","type":"boolean","returnType":"boolean","line":61,"rawdescription":"\\nA function to disable the submit button. If all the values are in approproiate format, then it will be enabled.","description":"

      A function to disable the submit button. If all the values are in approproiate format, then it will be enabled.

      \\n"}}},"templateData":"\\n \\"Prodoct\\n

      {{ productTitle }}

      \\n
      \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n"},{"name":"FooterComponent","id":"component-FooterComponent-45c5a61fc5d68c201808fb76ff867f9a7cf8e42e6ef95ae08b440dbd37ce63eb4c77c3da0597ef90973854d65522a3ba496eeb5eccbe75750c1fd2f5abf52e6b","file":"src/lib/footer/footer.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-footer","styleUrls":["./footer.component.scss"],"styles":[],"templateUrl":["./footer.component.html"],"viewProviders":[],"inputsClass":[{"name":"downloadFormats","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDifferent download formats options displayed to the user","description":"

      Different download formats options displayed to the user

      \\n","line":74,"type":"T[]","decorators":[]},{"name":"embed","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for embed link in HRA Portal","description":"

      Input for embed link in HRA Portal

      \\n","line":71,"type":"any","decorators":[]},{"name":"hraPortal","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for HRA Portal link","description":"

      Input for HRA Portal link

      \\n","line":65,"type":"any","decorators":[]},{"name":"illustrationMetadata","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for Illustration metadata page link in HRA Portal","description":"

      Input for Illustration metadata page link in HRA Portal

      \\n","line":68,"type":"any","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product logo URL to displayed on the left side.","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":59,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product title to displayed on the left side.","description":"

      Input for product title to displayed on the left side.

      \\n","line":62,"type":"string","decorators":[]},{"name":"size","defaultValue":"\'large\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHost binding of footer component","description":"

      Host binding of footer component

      \\n","line":56,"type":"\\"small\\" | \\"large\\"","decorators":[]}],"outputsClass":[{"name":"contactClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the contact button is clicked","description":"

      Emits when the contact button is clicked

      \\n","line":80,"type":"EventEmitter"},{"name":"download","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the selected download format","description":"

      Emits the selected download format

      \\n","line":77,"type":"EventEmitter"}],"propertiesClass":[{"name":"downloadListOpen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Whether the download list panel is open

      \\n","line":91,"rawdescription":"\\nWhether the download list panel is open"},{"name":"DOWNLOADS_LIST_POSITION","defaultValue":"DOWNLOADS_LIST_POSITION","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Download list popup overlay positioning

      \\n","line":83,"rawdescription":"\\nDownload list popup overlay positioning","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for footer that displays its content at the bottom of the page with different action buttons.

      \\n","rawdescription":"\\n\\nComponent for footer that displays its content at the bottom of the page with different action buttons.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { MatListModule } from \'@angular/material/list\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * Base type for different download format options.\\n */\\nexport interface DownloadFormat {\\n /**\\n * User readable format label\\n */\\n label: string;\\n}\\n\\n/**\\n * Positioning value for the download list popup\\n */\\nconst DOWNLOADS_LIST_POSITION: ConnectedPosition[] = [\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n];\\n\\n/**\\n * Component for footer that displays its content at the bottom of the page with different action buttons.\\n */\\n@Component({\\n selector: \'hra-footer\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, OverlayModule, MatListModule, LinkDirective],\\n templateUrl: \'./footer.component.html\',\\n styleUrls: [\'./footer.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterComponent {\\n /** Host binding of footer component */\\n @HostBinding(\'class\')\\n @Input()\\n size: \'small\' | \'large\' = \'large\';\\n\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Input for HRA Portal link */\\n @Input() hraPortal = EMPTY_LINK;\\n\\n /** Input for Illustration metadata page link in HRA Portal */\\n @Input() illustrationMetadata = EMPTY_LINK;\\n\\n /** Input for embed link in HRA Portal */\\n @Input() embed = EMPTY_LINK;\\n\\n /** Different download formats options displayed to the user */\\n @Input() downloadFormats: T[] = [];\\n\\n /** Emits the selected download format */\\n @Output() readonly download = new EventEmitter();\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly contactClick = new EventEmitter();\\n\\n /** Download list popup overlay positioning */\\n readonly DOWNLOADS_LIST_POSITION = DOWNLOADS_LIST_POSITION;\\n\\n /** Gets whether the footer required is small */\\n get isSmall(): boolean {\\n return this.size === \'small\';\\n }\\n\\n /** Whether the download list panel is open */\\n downloadListOpen = false;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n padding: 1rem 2rem;\\n border-top: 0.063rem solid #e2e7e9;\\n align-items: center;\\n background-color: #f8f9fa;\\n gap: 1rem;\\n\\n --palette-primary-500: #abcdef;\\n\\n .controls {\\n display: flex;\\n justify-content: flex-end;\\n }\\n .filler {\\n flex-grow: 1;\\n }\\n\\n .product-title {\\n color: #990000;\\n margin-right: 0rem;\\n }\\n\\n a {\\n cursor: pointer;\\n display: flex;\\n }\\n\\n .product-logo-image {\\n height: 1.2rem;\\n margin-right: 1rem;\\n }\\n\\n button {\\n justify-content: center;\\n align-items: center;\\n min-width: 9rem;\\n min-height: 3rem;\\n gap: 0.5rem;\\n\\n --palette-primary-100-rgb: #4c5a69;\\n --palette-primary-500-rgb: #243142;\\n\\n &.mat-accent {\\n &:active {\\n --palette-primary-700-rgb: #4c5a69;\\n }\\n .mat-icon {\\n z-index: 1;\\n }\\n }\\n }\\n}\\n\\n::ng-deep {\\n .download-options-panel {\\n box-shadow: 0.1rem 0.1rem 0.4rem 0.2rem #dad7d7;\\n background-color: #ffffff;\\n }\\n}\\n","styleUrl":"./footer.component.scss"}],"stylesData":"","accessors":{"isSmall":{"name":"isSmall","getSignature":{"name":"isSmall","type":"boolean","returnType":"boolean","line":86,"rawdescription":"\\nGets whether the footer required is small","description":"

      Gets whether the footer required is small

      \\n"}}},"templateData":"\\n
      \\n\\n\\n\\n\\n download\\n Download\\n\\n\\n\\n\\n
      \\n\\n\\n\\n\\n\\n\\n \\n \\n {{ format.label }}\\n \\n \\n\\n"},{"name":"FullscreenContainerComponent","id":"component-FullscreenContainerComponent-78edc2b37cbc90a17be0fcca4ed7291593d5f3d12c4ea823de3f9510c13bad4492bc5cd65823726fc7e333c874880c17093ff9d20096fd92e20137c8cc4f75af","file":"src/lib/fullscreen/fullscreen-container.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-fullscreen-container","styleUrls":[],"styles":["\\n :host {\\n display: block;\\n position: relative;\\n }\\n "],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[{"name":"fullscreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA boolean input property that controls the fullscreen mode","description":"

      A boolean input property that controls the fullscreen mode

      \\n","line":38,"type":"boolean","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"content","deprecated":false,"deprecationMessage":"","type":"QueryList","optional":true,"description":"

      A property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component's content area

      \\n","line":35,"rawdescription":"\\nA property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component\'s content area","decorators":[{"name":"ContentChildren","stringifiedArguments":"FullscreenContentComponent"}],"modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component that wraps any child components of type FullscreenContentComponent and\\nsets their isFullScreen property to true or false based on its own fullscreen input property

      \\n","rawdescription":"\\nA component that wraps any child components of type FullscreenContentComponent and\\nsets their isFullScreen property to true or false based on its own fullscreen input property\\n","type":"component","sourceCode":"import {\\n AfterContentInit,\\n ChangeDetectionStrategy,\\n Component,\\n ContentChildren,\\n Input,\\n OnChanges,\\n QueryList,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { FullscreenContentComponent } from \'./fullscreen-content.component\';\\n\\n/** A component that wraps any child components of type FullscreenContentComponent and\\n * sets their isFullScreen property to true or false based on its own fullscreen input property\\n */\\n@Component({\\n selector: \'hra-fullscreen-container\',\\n standalone: true,\\n imports: [CommonModule, FullscreenContentComponent],\\n template: \'\',\\n styles: [\\n `\\n :host {\\n display: block;\\n position: relative;\\n }\\n `,\\n ],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FullscreenContainerComponent implements AfterContentInit, OnChanges {\\n /** A property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component\'s content area */\\n @ContentChildren(FullscreenContentComponent)\\n readonly content?: QueryList;\\n\\n /** A boolean input property that controls the fullscreen mode */\\n @Input() fullscreen = false;\\n\\n /** It calls the updateFullscreenMode method to set the isFullScreen property of the child\\n * FullscreenContentComponent instances based on the value of the fullscreen input property\\n */\\n ngAfterContentInit(): void {\\n this.updateFullscreenMode();\\n }\\n\\n /** It checks if the fullscreen input property has changed, and calls the updateFullscreenMode method if it has */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'fullscreen\' in changes) {\\n this.updateFullscreenMode();\\n }\\n }\\n\\n /** A private method that sets the isFullScreen property of each child FullscreenContentComponent based on the value of the fullscreen */\\n private updateFullscreenMode(): void {\\n this.content?.forEach((content) => {\\n content.isFullScreen = this.fullscreen;\\n });\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":"","stylesData":"\\n :host {\\n display: block;\\n position: relative;\\n }\\n \\n","implements":["AfterContentInit","OnChanges"]},{"name":"FullscreenContentComponent","id":"component-FullscreenContentComponent-6710fc01baaf0574ecee8c1610a0f285865856eb963b364d086ef5d9528a4680bd78469b881201a033e582734f9ab5cabb16aeef9e5e00bd2679e67b73a067d9","file":"src/lib/fullscreen/fullscreen-content.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-fullscreen-content","styleUrls":["./fullscreen-content.component.scss"],"styles":[],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"isFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":15,"rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","decorators":[{"name":"HostBinding","stringifiedArguments":"\'class.fullscreen-on\'"}]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[{"name":"class.fullscreen-on","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":15,"type":"boolean","decorators":[]}],"hostListeners":[],"description":"

      A component that displays its content in fullscreen mode when its isFullScreen property is set to true

      \\n","rawdescription":"\\nA component that displays its content in fullscreen mode when its isFullScreen property is set to true","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, HostBinding } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** A component that displays its content in fullscreen mode when its isFullScreen property is set to true */\\n@Component({\\n selector: \'hra-fullscreen-content\',\\n standalone: true,\\n imports: [CommonModule],\\n template: \'\',\\n styleUrls: [\'./fullscreen-content.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FullscreenContentComponent {\\n /** This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true */\\n @HostBinding(\'class.fullscreen-on\') isFullScreen = false;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n overflow-y: scroll;\\n\\n &.fullscreen-on {\\n position: absolute;\\n inset: 0;\\n z-index: 100;\\n }\\n}\\n","styleUrl":"./fullscreen-content.component.scss"}],"stylesData":""},{"name":"HeaderComponent","id":"component-HeaderComponent-81f5689eacf69c8f1658a62e299bcad0df485f2cc8e6664f3f16cfa7d30400e53a54549f6aa8125abb2fc207fb428887c0a19dde695063a2d92611d78d9c6956","file":"src/lib/header/header.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-header","styleUrls":["./header.component.scss"],"styles":[],"templateUrl":["./header.component.html"],"viewProviders":[],"inputsClass":[{"name":"aboutLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for about link","description":"

      Input for about link

      \\n","line":40,"type":"any","decorators":[]},{"name":"appTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for app title to show on the left side.\\n","description":"

      Input for app title to show on the left side.

      \\n","line":34,"type":"string","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for product logo URL to displayed on the left side.\\n","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":24,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for product title to displayed on the left side.\\n","description":"

      Input for product title to displayed on the left side.

      \\n","line":29,"type":"string","decorators":[]},{"name":"productTitleLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for Product Title link","description":"

      Input for Product Title link

      \\n","line":37,"type":"any","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Header component, displays on top of every page.

      \\n","rawdescription":"\\n\\nHeader component, displays on top of every page.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk\';\\n\\n/**\\n * Header component, displays on top of every page.\\n */\\n@Component({\\n selector: \'hra-header\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MatRippleModule, LinkDirective],\\n templateUrl: \'./header.component.html\',\\n styleUrls: [\'./header.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HeaderComponent {\\n /**\\n * Input for product logo URL to displayed on the left side.\\n */\\n @Input() productLogoUrl = \'\';\\n\\n /**\\n * Input for product title to displayed on the left side.\\n */\\n @Input() productTitle = \'\';\\n\\n /**\\n * Input for app title to show on the left side.\\n */\\n @Input() appTitle = \'\';\\n\\n /** Input for Product Title link */\\n @Input() productTitleLink = EMPTY_LINK;\\n\\n /** Input for about link */\\n @Input() aboutLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: flex;\\n align-items: center;\\n height: 5rem;\\n padding: 0 2rem 0 1rem;\\n\\n @include utils.define-flex-filler();\\n\\n h1 {\\n // Reset margins for h1 elements\\n margin: 0;\\n }\\n\\n .product {\\n display: flex;\\n align-items: center;\\n text-decoration: none;\\n // Style the ripple animation\\n padding: 0 1rem;\\n border-radius: 0.25rem;\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\\n .text {\\n margin-left: 1rem;\\n font-weight: 600;\\n color: vars.$accent-rgb;\\n }\\n }\\n\\n .app {\\n margin-left: 0.5rem;\\n }\\n\\n .about {\\n width: 9rem;\\n height: 3rem;\\n\\n .icon {\\n width: 1.5rem;\\n height: 1.5rem;\\n font-size: 1.5rem;\\n }\\n }\\n\\n @media (max-width: 30rem) {\\n height: 4.5rem;\\n\\n .product .text,\\n .about .text {\\n @include utils.sr-only();\\n }\\n\\n .product {\\n height: 2.5rem;\\n padding: 0 0.25rem;\\n\\n .logo {\\n width: 1.5rem;\\n height: 1.5rem;\\n }\\n }\\n\\n .app {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n }\\n\\n .about {\\n min-width: 2.5rem;\\n width: 2.5rem;\\n height: 2.5rem;\\n padding: 0;\\n\\n .icon {\\n margin: 0;\\n }\\n }\\n }\\n\\n @media (max-width: 20rem) {\\n padding: 0;\\n }\\n}\\n","styleUrl":"./header.component.scss"}],"stylesData":"","templateData":"\\n \\n

      {{ productTitle }}

      \\n
      \\n

      {{ appTitle }}

      \\n\\n
      \\n\\n\\n info_outlined\\n About\\n\\n"},{"name":"HraLandingPageIntroWcComponent","id":"component-HraLandingPageIntroWcComponent-57ba89b5fa60bec2ad59de1cc52e4d3002935eab8da7f77895b1d7b507237df7df5d8fa2fec4dd3ba498b8d06fc5f70758beb2ba67ccbb24f2819798948e81d4","file":"src/lib/hra-landing-page-intro-wc/hra-landing-page-intro-wc.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-ui-hra-landing-page-intro-wc","styleUrls":["./hra-landing-page-intro-wc.component.scss"],"styles":[],"templateUrl":["./hra-landing-page-intro-wc.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for FTU Explorer","description":"

      Description for FTU Explorer

      \\n","line":19,"type":"string","decorators":[]},{"name":"partners","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThank you message to partners","description":"

      Thank you message to partners

      \\n","line":22,"type":"string","decorators":[]},{"name":"readMore","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro Image file url","description":"

      Intro Image file url

      \\n","line":25,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro title for FTU Explorer","description":"

      Intro title for FTU Explorer

      \\n","line":16,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro - Web coomponent

      \\n","rawdescription":"\\nComponent for LandingPage Intro - Web coomponent","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Component for LandingPage Intro - Web coomponent */\\n@Component({\\n selector: \'hra-ui-hra-landing-page-intro-wc\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule],\\n templateUrl: \'./hra-landing-page-intro-wc.component.html\',\\n styleUrls: [\'./hra-landing-page-intro-wc.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HraLandingPageIntroWcComponent {\\n /** Intro title for FTU Explorer */\\n @Input() title = \'\';\\n\\n /** Description for FTU Explorer */\\n @Input() description = \'\';\\n\\n /** Thank you message to partners */\\n @Input() partners = \'\';\\n\\n /** Intro Image file url */\\n @Input() readMore = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n gap: 8px;\\n padding: 24px, 32px, 24px, 32px;\\n .title {\\n font-size: 20px;\\n font-family: Inter;\\n font-weight: 400;\\n line-height: 24px;\\n letter-spacing: 0em;\\n text-align: left;\\n }\\n\\n .description .partners .readMore {\\n font-family: Inter;\\n font-size: 16px;\\n font-weight: 400;\\n line-height: 24px;\\n letter-spacing: 0em;\\n text-align: left;\\n }\\n}\\n::ng-deep p {\\n margin: 0;\\n}\\n\\n::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n}\\n","styleUrl":"./hra-landing-page-intro-wc.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n\\n\\n\\n\\n\\n"},{"name":"InfoModalComponent","id":"component-InfoModalComponent-56dc03e6960f4005149bab8dbf6a5b713061505964f6b3cc7d33868ed7f83aff7dbf222ccf66999864c6313f218c20f849715b3ebcc4d2ea44285c6e07811662","file":"src/lib/info-modal/info-modal.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-info-modal","styleUrls":["./info-modal.component.scss"],"styles":[],"templateUrl":["./info-modal.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInformation modal message to the user","description":"

      Information modal message to the user

      \\n","line":24,"type":"string","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nProduct logo shown to the user","description":"

      Product logo shown to the user

      \\n","line":21,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nProduct title shown to the user","description":"

      Product title shown to the user

      \\n","line":18,"type":"string","decorators":[]}],"outputsClass":[{"name":"closeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the close icon is clicked","description":"

      Emits when the close icon is clicked

      \\n","line":27,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays an information modal to the user with the product title and logo and description

      \\n","rawdescription":"\\nDisplays an information modal to the user with the product title and logo and description","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Displays an information modal to the user with the product title and logo and description */\\n@Component({\\n selector: \'hra-info-modal\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MarkdownModule],\\n templateUrl: \'./info-modal.component.html\',\\n styleUrls: [\'./info-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class InfoModalComponent {\\n /** Product title shown to the user */\\n @Input() productTitle = \'\';\\n\\n /** Product logo shown to the user */\\n @Input() productLogoUrl = \'\';\\n\\n /** Information modal message to the user */\\n @Input() description = \'\';\\n\\n /** Emits when the close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n position: relative;\\n padding: 2rem 2rem 1.25rem 2rem;\\n\\n .close {\\n position: absolute;\\n top: 1.5rem;\\n right: 1.5rem;\\n }\\n\\n .title {\\n display: flex;\\n align-items: center;\\n\\n .product-logo-image {\\n height: 2.75rem;\\n margin-right: 1rem;\\n }\\n\\n .product-title {\\n margin: 0;\\n color: #990000;\\n }\\n }\\n\\n .description {\\n display: block;\\n margin-top: 1rem;\\n }\\n}\\n","styleUrl":"./info-modal.component.scss"}],"stylesData":"","templateData":"\\n \\"Prodoct\\n

      {{ productTitle }}

      \\n
      \\n\\n\\n\\n\\n"},{"name":"InteractiveSvgComponent","id":"component-InteractiveSvgComponent-985e710eb317dd3ff5ea26a7d11e504b64a31e68fa3680b8455ed3925acd6cb8cc0fbc37282dd5fa62df18c6514780783a2cf000f5bfeadbefaa7232ebdef28a","file":"src/lib/interactive-svg/interactive-svg.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":["ViewEncapsulation.ShadowDom"],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-interactive-svg","styleUrls":["./interactive-svg.component.scss"],"styles":[],"templateUrl":["./interactive-svg.component.html"],"viewProviders":[],"inputsClass":[{"name":"highlightId","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHighlighted ontology id","description":"

      Highlighted ontology id

      \\n","line":94,"type":"string","decorators":[]},{"name":"mapping","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nMapping info","description":"

      Mapping info

      \\n","line":91,"type":"T[]","decorators":[]},{"name":"url","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSVG url","description":"

      SVG url

      \\n","line":88,"type":"string","decorators":[]}],"outputsClass":[{"name":"nodeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits node id when clicked","description":"

      Emits node id when clicked

      \\n","line":100,"type":"EventEmitter"},{"name":"nodeHover","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits node id when hovered","description":"

      Emits node id when hovered

      \\n","line":97,"type":"EventEmitter"}],"propertiesClass":[{"name":"NEVER_EVAL_SCRIPTS","defaultValue":"SVGScriptEvalMode.NEVER","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      SVG script eval mode

      \\n","line":103,"rawdescription":"\\nSVG script eval mode","modifierKind":[144]},{"name":"nodeHoverData$","defaultValue":"new BehaviorSubject(undefined)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable of node hover data or undefined when there is no active hover

      \\n","line":109,"rawdescription":"\\nObservable of node hover data or undefined when there is no active hover","modifierKind":[144]},{"name":"nodeHoverDelayedData$","defaultValue":"this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)))","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable of node hover with a timer

      \\n","line":112,"rawdescription":"\\nObservable of node hover with a timer","modifierKind":[144]},{"name":"TOOLTIP_POSITIONS","defaultValue":"TOOLTIP_POSITIONS","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Tooltip position settings

      \\n","line":106,"rawdescription":"\\nTooltip position settings","modifierKind":[144]}],"methodsClass":[{"name":"formatNodeName","args":[{"name":"name","type":"string","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"string","typeParameters":[],"line":196,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nRemoves underscores from id\\n","description":"

      Removes underscores from id

      \\n","jsdoctags":[{"name":{"pos":4993,"end":4997,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"name"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4987,"end":4992,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Node name

      \\n"},{"tagName":{"pos":5014,"end":5021,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      node name without underscores

      \\n"}]},{"name":"setSvgElement","args":[{"name":"el","type":"SVGElement","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":181,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nSets SVG element\\n","description":"

      Sets SVG element

      \\n","jsdoctags":[{"name":{"pos":4595,"end":4597,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"el"},"type":"SVGElement","deprecated":false,"deprecationMessage":"","tagName":{"pos":4589,"end":4594,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      SVG element

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Interactive SVG component

      \\n","rawdescription":"\\n\\nInteractive SVG component\\n","type":"component","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.nodeHoverData$.next(undefined));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":".svg {\\n max-height: calc(100vh - 14rem);\\n overflow-y: auto;\\n}\\nsvg {\\n max-height: calc(100vh - 10rem);\\n width: 100%;\\n}\\n\\n[id^=\'Crosswalk\'] {\\n :is(path, polygon, polyline) {\\n fill: transparent;\\n stroke: transparent;\\n }\\n\\n .hover-active & g:hover > :is(path, polygon, polyline),\\n .hover-active & g > g:hover > :is(path, polygon, polyline),\\n .click-active {\\n fill: hsl(0deg 100% 50%);\\n mix-blend-mode: saturation;\\n }\\n}\\n","styleUrl":"./interactive-svg.component.scss"}],"stylesData":"","implements":["OnChanges","OnDestroy"],"templateData":"\\n\\n\\n \\n \\n \\n\\n"},{"name":"LandingPageInDepthComponent","id":"component-LandingPageInDepthComponent-266cc77d12f81268af62a259a42675f25c0be65e3cab6881ce7afcd3dbaa4ab87e767f669fc822ea592327de677787a00c9eb4a5b9b1171d78fe6aefc8cc439b","file":"src/lib/landing-page-in-depth/landing-page-in-depth.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-landing-page-in-depth","styleUrls":["./landing-page-in-depth.component.scss"],"styles":[],"templateUrl":["./landing-page-in-depth.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage description shown to the user","description":"

      Image description shown to the user

      \\n","line":24,"type":"string","decorators":[]},{"name":"img","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage shown to the user","description":"

      Image shown to the user

      \\n","line":27,"type":"string","decorators":[]},{"name":"moreLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLink to navigate to on more button click","description":"

      Link to navigate to on more button click

      \\n","line":33,"type":"any","decorators":[]},{"name":"moreText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nText for more button","description":"

      Text for more button

      \\n","line":30,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage title shown to the user","description":"

      Image title shown to the user

      \\n","line":21,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays the image and also corresponding title and text along with a button to read more

      \\n","rawdescription":"\\n\\nDisplays the image and also corresponding title and text along with a button to read more\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n * Displays the image and also corresponding title and text along with a button to read more\\n */\\n@Component({\\n selector: \'hra-landing-page-in-depth\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule, MatButtonModule, MatIconModule, LinkDirective],\\n templateUrl: \'./landing-page-in-depth.component.html\',\\n styleUrls: [\'./landing-page-in-depth.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageInDepthComponent {\\n /** Image title shown to the user */\\n @Input() title = \'\';\\n\\n /** Image description shown to the user */\\n @Input() description = \'\';\\n\\n /** Image shown to the user */\\n @Input() img = \'\';\\n\\n /** Text for more button */\\n @Input() moreText = \'\';\\n\\n /** Link to navigate to on more button click */\\n @Input() moreLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 2fr 3fr;\\n grid-template-rows: auto auto 1fr;\\n column-gap: 2rem;\\n row-gap: 2rem;\\n padding: 3.5rem 2rem;\\n\\n .image {\\n grid-column: 1;\\n grid-row: 1 / span 3;\\n width: 100%;\\n height: auto;\\n align-self: center;\\n border-radius: 1rem;\\n box-shadow: 0.06rem 0.13rem 1rem 0.13rem #00000029;\\n }\\n\\n .title {\\n font-size: 2rem;\\n line-height: 2.5rem;\\n margin: 0;\\n }\\n\\n .description {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n\\n ::ng-deep p {\\n margin: 0;\\n }\\n\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n }\\n\\n .more-button {\\n width: fit-content;\\n height: 3rem;\\n }\\n}\\n","styleUrl":"./landing-page-in-depth.component.scss"}],"stylesData":"","templateData":"\\"\\"\\n

      {{ title }}

      \\n\\n\\n"},{"name":"LandingPageIntroComponent","id":"component-LandingPageIntroComponent-8e48a2ad3d32eea60c9dee7976b3dbc195b3a8107a3c174ac68b4696362903f19522bad089b509daae23505334aa5361945e7a8124fd32f17a6834c349c87aed","file":"src/lib/landing-page-intro/landing-page-intro.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-landing-page-intro","styleUrls":["./landing-page-intro.component.scss"],"styles":[],"templateUrl":["./landing-page-intro.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for FTU Explorer","description":"

      Description for FTU Explorer

      \\n","line":22,"type":"string","decorators":[]},{"name":"img","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro Image file url","description":"

      Intro Image file url

      \\n","line":28,"type":"string","decorators":[]},{"name":"moreLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLink to navigate to on more button click","description":"

      Link to navigate to on more button click

      \\n","line":34,"type":"any","decorators":[]},{"name":"moreText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nText for more button","description":"

      Text for more button

      \\n","line":31,"type":"string","decorators":[]},{"name":"partners","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThank you message to partners","description":"

      Thank you message to partners

      \\n","line":25,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro title for FTU Explorer","description":"

      Intro title for FTU Explorer

      \\n","line":19,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro

      \\n","rawdescription":"\\nComponent for LandingPage Intro","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Component for LandingPage Intro */\\n@Component({\\n selector: \'hra-landing-page-intro\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MarkdownModule, LinkDirective],\\n templateUrl: \'./landing-page-intro.component.html\',\\n styleUrls: [\'./landing-page-intro.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageIntroComponent {\\n /** Intro title for FTU Explorer */\\n @Input() title = \'\';\\n\\n /** Description for FTU Explorer */\\n @Input() description = \'\';\\n\\n /** Thank you message to partners */\\n @Input() partners = \'\';\\n\\n /** Intro Image file url */\\n @Input() img = \'\';\\n\\n /** Text for more button */\\n @Input() moreText = \'\';\\n\\n /** Link to navigate to on more button click */\\n @Input() moreLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 3fr 2fr;\\n grid-template-rows: auto auto 3rem 1fr;\\n align-items: start;\\n column-gap: 2rem;\\n row-gap: 2rem;\\n\\n .title {\\n font-size: 3rem;\\n line-height: 4rem;\\n margin: 0;\\n }\\n\\n .more-button {\\n width: fit-content;\\n height: 3rem;\\n }\\n\\n .image {\\n grid-column: 2;\\n grid-row: 1 / span 4;\\n place-self: center;\\n width: 100%;\\n height: auto;\\n }\\n\\n .description,\\n .partners {\\n ::ng-deep p {\\n margin: 0;\\n }\\n\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n }\\n}\\n","styleUrl":"./landing-page-intro.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n\\n\\n\\n\\n\\"alt\\"\\n"},{"name":"MetricsComponent","id":"component-MetricsComponent-e52c0a1cdf090042d1924c4907a4034774cbb442217faca9ec5035e76d2796116cf55644ecf49ae040fdea1168f9c5d99f6ce15b2079f70de3d853fece481b30","file":"src/lib/metrics/metrics.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-metrics","styleUrls":["./metrics.component.scss"],"styles":[],"templateUrl":["./metrics.component.html"],"viewProviders":[],"inputsClass":[{"name":"logo","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLogo of metrics component.","description":"

      Logo of metrics component.

      \\n","line":31,"type":"string","decorators":[]},{"name":"metrics","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nList of metrics that will be shown to the user.","description":"

      List of metrics that will be shown to the user.

      \\n","line":34,"type":"MetricItem[]","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nMain title of metrics component.","description":"

      Main title of metrics component.

      \\n","line":28,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Describes the metrics for the HuBMAP project.

      \\n","rawdescription":"\\n\\nDescribes the metrics for the HuBMAP project.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n An interface representing a single metric with an icon, value and description.\\n */\\nexport interface MetricItem {\\n /** Represents the icon associated with the metric. */\\n icon: string;\\n /** Describes the numberical value of the metric. */\\n value: string;\\n /** Describes the type of metric. */\\n description: string;\\n}\\n/**\\n * Describes the metrics for the HuBMAP project.\\n */\\n@Component({\\n selector: \'hra-metrics\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./metrics.component.html\',\\n styleUrls: [\'./metrics.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MetricsComponent {\\n /** Main title of metrics component. */\\n @Input() title = \'\';\\n\\n /** Logo of metrics component. */\\n @Input() logo = \'\';\\n\\n /** List of metrics that will be shown to the user. */\\n @Input() metrics: MetricItem[] = [];\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n padding: 2rem 0 0 0;\\n background: #f8f9fa;\\n gap: 0.5rem;\\n\\n .logo {\\n height: 2.75rem;\\n }\\n\\n .header-title {\\n font-size: 2rem;\\n line-height: 2.5rem;\\n }\\n\\n .metrics {\\n display: flex;\\n flex-direction: row;\\n overflow-x: auto;\\n max-width: 100%;\\n gap: 2rem;\\n padding: 2rem 1.75rem;\\n\\n .metric {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n min-width: 14.25rem;\\n height: 14.75rem;\\n padding-top: 2rem;\\n padding-bottom: 2rem;\\n\\n .logo {\\n margin-bottom: 2rem;\\n }\\n\\n .value {\\n font-size: 3rem;\\n line-height: 4rem;\\n margin-bottom: 0.25rem;\\n }\\n\\n .description {\\n font-size: 1rem;\\n text-align: center;\\n }\\n }\\n }\\n}\\n","styleUrl":"./metrics.component.scss"}],"stylesData":"","templateData":"\\"\\"\\n{{ title }}\\n\\n
      \\n
      \\n \\"\\"\\n {{ item.value }} \\n {{ item.description }} \\n
      \\n
      \\n"},{"name":"ScreenSizeNoticeComponent","id":"component-ScreenSizeNoticeComponent-6b641a220201d969fb228ecf72f5e7a8fc87da742b8a53350bc9c27cea9c54a6493313826b99ec8c34dfd7004772a27748e45af5b0c9ead80bdf168a781117f8","file":"src/lib/screen-size-notice/screen-size-notice.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-screen-size-notice","styleUrls":["./screen-size-notice.component.scss"],"styles":[],"templateUrl":["./screen-size-notice.component.html"],"viewProviders":[],"inputsClass":[{"name":"content","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for passing screen size notice content\\n","description":"

      Input for passing screen size notice content

      \\n","line":23,"type":"string","decorators":[]},{"name":"portal","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput of screen size notice component\\n","description":"

      Input of screen size notice component

      \\n","line":28,"type":"any","decorators":[]}],"outputsClass":[{"name":"proceedClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the proceed button is clicked","description":"

      Emits when the proceed button is clicked

      \\n","line":31,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The screen size notice component displays a notice for the users specifying the required screen size

      \\n","rawdescription":"\\n\\nThe screen size notice component displays a notice for the users specifying the required screen size\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\n\\n/**\\n * The screen size notice component displays a notice for the users specifying the required screen size\\n */\\n@Component({\\n selector: \'hra-screen-size-notice\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule, MatButtonModule, MatIconModule, LinkDirective],\\n templateUrl: \'./screen-size-notice.component.html\',\\n styleUrls: [\'./screen-size-notice.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ScreenSizeNoticeComponent {\\n /**\\n * Input for passing screen size notice content\\n */\\n @Input() content = \'\';\\n\\n /**\\n * Input of screen size notice component\\n */\\n @Input() portal = EMPTY_LINK;\\n\\n /** Emits when the proceed button is clicked */\\n @Output() readonly proceedClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: none;\\n position: relative;\\n border-radius: 0.5rem;\\n padding: 1.5rem;\\n flex-direction: column;\\n\\n .header-close {\\n position: absolute;\\n top: 0.625rem;\\n right: 1rem;\\n }\\n\\n h3 {\\n margin: 0 0 1rem 0;\\n font-weight: 700;\\n }\\n\\n .btn-stroked {\\n font-weight: 700;\\n margin-bottom: 1rem;\\n margin-top: 1rem;\\n padding: 0.75rem 0;\\n letter-spacing: 0.5px;\\n }\\n\\n .btn-flat {\\n font-weight: 700;\\n font-size: 16px;\\n padding: 0.75rem 0;\\n letter-spacing: 0.5px;\\n color: white;\\n }\\n\\n .content {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n letter-spacing: 0.5px;\\n }\\n\\n @media (max-width: 480px) {\\n display: flex;\\n }\\n}\\n","styleUrl":"./screen-size-notice.component.scss"}],"stylesData":"","templateData":"

      Screen Size Notice

      \\n\\n\\n\\n Human Reference Atlas Portal \\n"},{"name":"SourceListComponent","id":"component-SourceListComponent-3e55f2d90acdd1770d63ee01d7cb04bfb862e234a989f6253c27f416e0d0d33c9fd51a594ccdd21bb13acf50a7076f9a951f5f110e2d6c319be91dfc009e7d61","file":"src/lib/source-list/source-list.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-source-list","styleUrls":["./source-list.component.scss"],"styles":[],"templateUrl":["./source-list.component.html"],"viewProviders":[],"inputsClass":[{"name":"sources","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nList of sources with titles and links displayed to the user","description":"

      List of sources with titles and links displayed to the user

      \\n","line":30,"type":"SourceListItem[]","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"showTable","defaultValue":"true","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Show table of source list component which toggles to true or false\\nbased on click

      \\n","line":35,"rawdescription":"\\n\\nShow table of source list component which toggles to true or false\\nbased on click\\n"}],"methodsClass":[{"name":"toggleTable","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":41,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nIt changes the value of showTable to false if value it true\\nand vice versa\\n","description":"

      It changes the value of showTable to false if value it true\\nand vice versa

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      This component shows list of sources with title and links to the datasets

      \\n","rawdescription":"\\nThis component shows list of sources with title and links to the datasets","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/** SourceListItem interface contains title and link to the dataset for the SourceList*/\\nexport interface SourceListItem {\\n /** Title of the dataset in the SourceList */\\n title: string;\\n\\n /** Label of the dataset in the SourceList */\\n label: string;\\n\\n /** Link to the dataset in the SourceList */\\n link: string;\\n}\\n\\n/** This component shows list of sources with title and links to the datasets */\\n@Component({\\n selector: \'hra-source-list\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule, MatIconModule, LabelBoxComponent],\\n templateUrl: \'./source-list.component.html\',\\n styleUrls: [\'./source-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SourceListComponent {\\n /** List of sources with titles and links displayed to the user */\\n @Input() sources: SourceListItem[] = [];\\n /**\\n * Show table of source list component which toggles to true or false\\n * based on click\\n */\\n showTable = true;\\n\\n /**\\n * It changes the value of showTable to false if value it true\\n * and vice versa\\n */\\n toggleTable(): void {\\n this.showTable = !this.showTable;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n\\n @include utils.define-flex-filler();\\n\\n h1 {\\n margin: 0;\\n }\\n\\n .mat-mdc-cell {\\n vertical-align: top;\\n border: none;\\n padding: 0.25rem 0.875rem;\\n font-size: 1rem;\\n }\\n\\n .filler {\\n width: 30rem;\\n }\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n\\n .table-content {\\n height: calc(100vh - 25rem);\\n overflow: auto;\\n }\\n\\n .toggle {\\n margin-bottom: 1rem;\\n display: flex;\\n align-items: center;\\n width: 43rem;\\n height: 3.5rem;\\n grid-area: source-list-header;\\n color: var(--dark-primary-text);\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n .mat-icon {\\n margin-left: 32rem;\\n }\\n }\\n\\n .hidden {\\n display: none;\\n }\\n}\\n","styleUrl":"./source-list.component.scss"}],"stylesData":"","templateData":"\\n Source Data\\n \\n {{ showTable ? \'keyboard_arrow_down\' : \'keyboard_arrow_up\' }}\\n \\n\\n\\n
      \\n \\n \\n\\n \x3c!-- Position Column --\x3e\\n \\n \\n \\n \\n\\n \x3c!-- Data Column --\x3e\\n \\n \\n \\n \\n\\n \\n
      \\n Source List Table with Title and Links\\n
      Item Number{{ i + 1 }}.Title and Link\\n {{ element.title }}\\n
      \\n {{ element.label }}\\n
      \\n
      \\n"},{"name":"TissueTreeListComponent","id":"component-TissueTreeListComponent-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-tissue-tree-list","styleUrls":["./tissue-tree-list.component.scss"],"styles":[],"templateUrl":["./tissue-tree-list.component.html"],"viewProviders":[],"inputsClass":[{"name":"nodes","defaultValue":"{} as Record","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput of tissue tree list component\\n","description":"

      Input of tissue tree list component

      \\n","line":69,"type":"Record","decorators":[]},{"name":"selected","defaultValue":"undefined","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nNode selected, to view the data associated with it\\n","description":"

      Node selected, to view the data associated with it

      \\n","line":74,"type":"T","decorators":[]}],"outputsClass":[{"name":"selectedChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nOutput of tissue tree list component\\n","description":"

      Output of tissue tree list component

      \\n","line":79,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n )","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      tree controller, used to control the nodes in the tree

      \\n","line":84,"rawdescription":"\\n\\ntree controller, used to control the nodes in the tree\\n","modifierKind":[144]},{"name":"dataSource","defaultValue":"new MatTreeFlatDataSource(this.control, this.flattener)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Data source of tissue tree list component, defines the data in mat-tree

      \\n","line":107,"rawdescription":"\\n\\nData source of tissue tree list component, defines the data in mat-tree\\n","modifierKind":[144]},{"name":"flattener","defaultValue":"new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n )","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Flattener of tissue tree list component, returns flat-data structure

      \\n","line":92,"rawdescription":"\\n\\nFlattener of tissue tree list component, returns flat-data structure\\n","modifierKind":[144]}],"methodsClass":[{"name":"hasChild","args":[{"name":"_","type":"number","deprecated":false,"deprecationMessage":""},{"name":"node","type":"InternalNode","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"boolean","typeParameters":[],"line":128,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ncheck if the current node has children\\n","description":"

      check if the current node has children

      \\n","jsdoctags":[{"name":"_","type":"number","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":3422,"end":3426,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"node"},"type":"InternalNode","deprecated":false,"deprecationMessage":"","tagName":{"pos":3416,"end":3421,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      current selected node

      \\n"},{"tagName":{"pos":3455,"end":3462,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      boolean, which means if node has children

      \\n"}]},{"name":"resetSelection","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":146,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nResets selection and collapes all nodes of the tree.\\n","description":"

      Resets selection and collapes all nodes of the tree.

      \\n"},{"name":"selectNode","args":[{"name":"node","type":"T","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":136,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nIt selects the node, which is clicked.\\n","description":"

      It selects the node, which is clicked.

      \\n","jsdoctags":[{"name":{"pos":3665,"end":3669,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"node"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":3659,"end":3664,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Tissue Tree Item, which is clicked

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Tabular View for hubMap tissue side-bar

      \\n","rawdescription":"\\n\\nTabular View for hubMap tissue side-bar\\n","type":"component","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n\\n .row {\\n min-height: 2rem;\\n &.child {\\n padding: 5px 0 5px 64px;\\n }\\n &.selected {\\n background-color: vars.$accent-lighter-rgb;\\n }\\n\\n .toggle {\\n width: 2rem;\\n height: 2rem;\\n padding: 0.25rem;\\n }\\n\\n .label-container {\\n display: flex;\\n align-items: center;\\n height: 2rem;\\n padding: 0 1rem;\\n border-radius: 0.25rem;\\n\\n .link {\\n cursor: pointer;\\n text-decoration: none;\\n color: rgba(vars.$dark-primary-text);\\n }\\n }\\n\\n &.selected .label-container .link {\\n color: vars.$accent-rgb;\\n }\\n }\\n}\\n","styleUrl":"./tissue-tree-list.component.scss"}],"stylesData":"","implements":["OnChanges"],"templateData":"\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n\\n\\n\\n
      \\n \\n {{ label }}\\n \\n \\n {{ label }}\\n \\n
      \\n
      \\n"},{"name":"TitleCardComponent","id":"component-TitleCardComponent-dda33e0370aff82797f5b3494c98b25f59e8b87daefd03e828cec8116928222c19885f73255625acfce7c66d590784fd1ad8faa664dac65130f8119fc2670670","file":"src/lib/title-card/title-card.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-title-card","styleUrls":["./title-card.component.scss"],"styles":[],"templateUrl":["./title-card.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for the title card shown to the user","description":"

      Description for the title card shown to the user

      \\n","line":19,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTitle for the title card shown to the user","description":"

      Title for the title card shown to the user

      \\n","line":16,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays title card to the user with title and description

      \\n","rawdescription":"\\nDisplays title card to the user with title and description","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Displays title card to the user with title and description */\\n@Component({\\n selector: \'hra-title-card\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule],\\n templateUrl: \'./title-card.component.html\',\\n styleUrls: [\'./title-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TitleCardComponent {\\n /** Title for the title card shown to the user*/\\n @Input() title = \'\';\\n\\n /** Description for the title card shown to the user*/\\n @Input() description = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n","styleUrl":"./title-card.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n"}],"modules":[],"miscellaneous":{"variables":[{"name":"DOWNLOADS_LIST_POSITION","ctype":"miscellaneous","subtype":"variable","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n]","rawdescription":"Positioning value for the download list popup","description":"

      Positioning value for the download list popup

      \\n"},{"name":"EMPTY_CONTACT_DATA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"Partial","defaultValue":"{\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n}","rawdescription":"Initial empty contact data","description":"

      Initial empty contact data

      \\n"},{"name":"HOVER_DELAY","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"number","defaultValue":"200","rawdescription":"Delay before tooltip becomes visible","description":"

      Delay before tooltip becomes visible

      \\n"},{"name":"TOOLTIP_POSITIONS","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n]","rawdescription":"Tooltip position settings","description":"

      Tooltip position settings

      \\n"}],"functions":[],"typealiases":[],"enumerations":[],"groupedVariables":{"src/lib/footer/footer.component.ts":[{"name":"DOWNLOADS_LIST_POSITION","ctype":"miscellaneous","subtype":"variable","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n]","rawdescription":"Positioning value for the download list popup","description":"

      Positioning value for the download list popup

      \\n"}],"src/lib/contact-modal/contact-modal.component.ts":[{"name":"EMPTY_CONTACT_DATA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"Partial","defaultValue":"{\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n}","rawdescription":"Initial empty contact data","description":"

      Initial empty contact data

      \\n"}],"src/lib/interactive-svg/interactive-svg.component.ts":[{"name":"HOVER_DELAY","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"number","defaultValue":"200","rawdescription":"Delay before tooltip becomes visible","description":"

      Delay before tooltip becomes visible

      \\n"},{"name":"TOOLTIP_POSITIONS","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n]","rawdescription":"Tooltip position settings","description":"

      Tooltip position settings

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{}}}')},"./dist/compodoc/components-organisms/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"DataCell","id":"interface-DataCell-8184af54c2f6160c9b2d42822572e9b264f75fd4f946f4d5820f757cd703d36c9aad63db881dac21526dcf80389e4cc8938378e742a088b11fc047da063a9bbb","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","properties":[{"name":"color","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Represents the color of the icon

      \\n","line":22,"rawdescription":"\\nRepresents the color of the icon"},{"name":"data","deprecated":false,"deprecationMessage":"","type":"literal type","optional":false,"description":"

      Represents the data for the data card

      \\n","line":26,"rawdescription":"\\nRepresents the data for the data card"},{"name":"size","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Represents the size of the icon

      \\n","line":24,"rawdescription":"\\nRepresents the size of the icon"}],"indexSignatures":[],"kind":165,"description":"

      An interface representing a single cell of the table.

      \\n","rawdescription":"\\n\\nAn interface representing a single cell of the table.\\n","methods":[]},{"name":"TissueInfo","id":"interface-TissueInfo-8184af54c2f6160c9b2d42822572e9b264f75fd4f946f4d5820f757cd703d36c9aad63db881dac21526dcf80389e4cc8938378e742a088b11fc047da063a9bbb","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","properties":[{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      ID of the Tissue

      \\n","line":40,"rawdescription":"\\nID of the Tissue"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Name of the Tissue

      \\n","line":42,"rawdescription":"\\nName of the Tissue"}],"indexSignatures":[],"kind":165,"description":"

      Details of the Tissue

      \\n","rawdescription":"\\n\\nDetails of the Tissue\\n","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerTableComponent","id":"component-BiomarkerTableComponent-8184af54c2f6160c9b2d42822572e9b264f75fd4f946f4d5820f757cd703d36c9aad63db881dac21526dcf80389e4cc8938378e742a088b11fc047da063a9bbb","file":"src/lib/biomarker-table/biomarker-table.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table","styleUrls":["./biomarker-table.component.scss"],"styles":[],"templateUrl":["./biomarker-table.component.html"],"viewProviders":[],"inputsClass":[{"name":"columns","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nColumns for the table","description":"

      Columns for the table

      \\n","line":73,"type":"string[]","decorators":[]},{"name":"data","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRows of the table","description":"

      Rows of the table

      \\n","line":76,"type":"DataRow[]","decorators":[]},{"name":"gradient","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nGradient colors along with their stop points","description":"

      Gradient colors along with their stop points

      \\n","line":79,"type":"GradientPoint[]","decorators":[]},{"name":"sizes","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":82,"type":"SizeLegend[]","decorators":[]},{"name":"tissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n }","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput: TissueInfo carrying the details of the tissue open\\n","description":"

      Input: TissueInfo carrying the details of the tissue open

      \\n","line":67,"type":"TissueInfo","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"dataSource","defaultValue":"new MatTableDataSource>([])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Source for the table

      \\n","line":90,"rawdescription":"\\nSource for the table","modifierKind":[144]}],"methodsClass":[{"name":"getColor","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"string","typeParameters":[],"line":162,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nCalculates the color of this value on this gradient\\n","description":"

      Calculates the color of this value on this gradient

      \\n","jsdoctags":[{"name":{"pos":4681,"end":4686,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":4675,"end":4680,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":4693,"end":4700,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getHoverData","args":[{"type":"[number, DataRow]","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"[][]","typeParameters":[],"line":189,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nrocesses the object for hover data for Table Cell\\n","description":"

      rocesses the object for hover data for Table Cell

      \\n","jsdoctags":[{"type":"[number, DataRow]","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":5415,"end":5422,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getMinMaxColor","args":[{"name":"meanExpression","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"literal type","typeParameters":[],"line":130,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets Min and Max color grade based on the meanExpression value\\n","description":"

      Gets Min and Max color grade based on the meanExpression value

      \\n","jsdoctags":[{"name":{"pos":3448,"end":3462,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"meanExpression"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3442,"end":3447,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3469,"end":3476,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getMinMaxSize","args":[{"name":"percentage","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"literal type","typeParameters":[],"line":148,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets Min and Max size grade based on the Percentage value\\n","description":"

      Gets Min and Max size grade based on the Percentage value

      \\n","jsdoctags":[{"name":{"pos":4102,"end":4112,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"percentage"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":4096,"end":4101,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":4119,"end":4126,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getSize","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"number","typeParameters":[],"line":178,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ngets Size of the Cell based on the percentage value\\n","description":"

      gets Size of the Cell based on the percentage value

      \\n","jsdoctags":[{"name":{"pos":5084,"end":5089,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":5078,"end":5083,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":5096,"end":5103,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"hex2rgb","args":[{"name":"hex","type":"string","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"RGBTriplet","typeParameters":[],"line":118,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nConverts HexCode to RGB\\n","description":"

      Converts HexCode to RGB

      \\n","jsdoctags":[{"name":{"pos":3139,"end":3142,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"hex"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3133,"end":3138,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3149,"end":3156,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"lerp","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""},{"name":"min","type":"number","deprecated":false,"deprecationMessage":""},{"name":"max","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"number","typeParameters":[],"line":109,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nLerp function to give value beween min and max value based on the given value\\n\\n","description":"

      Lerp function to give value beween min and max value based on the given value

      \\n","jsdoctags":[{"name":{"pos":2927,"end":2932,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":2921,"end":2926,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"name":{"pos":2945,"end":2948,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"min"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":2939,"end":2944,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"name":{"pos":2961,"end":2964,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"max"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":2955,"end":2960,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":2971,"end":2978,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Cell types table, describing the types and quanitites of cells for a specific organ

      \\n","rawdescription":"\\nCell types table, describing the types and quanitites of cells for a specific organ","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n max-height: 16.5rem;\\n max-width: 43rem;\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n\\n .table {\\n margin-left: -1px;\\n .emptyFiller {\\n padding: 1.3rem;\\n }\\n }\\n .table th {\\n background-color: #fff7f8;\\n color: #59264d;\\n text-align: right;\\n }\\n\\n .table td {\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-left: 0.063rem solid #d3d3d3;\\n }\\n\\n .table tr:first-child td {\\n border-top: 0rem solid #d3d3d3;\\n }\\n\\n tr > td:first-child {\\n text-align: left;\\n padding: 0 2rem;\\n }\\n\\n tr > th:first-child {\\n text-align: left;\\n padding: 0 2rem;\\n }\\n\\n tr > td:last-of-type {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n tr > th:last-of-type {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n .type {\\n height: 3rem;\\n max-width: 26rem;\\n min-width: 17rem;\\n border-radius: 0rem;\\n white-space: nowrap;\\n }\\n\\n .count {\\n text-align: right;\\n height: 3rem;\\n min-width: 6.5rem;\\n }\\n\\n .icon-header {\\n max-width: 5rem;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n }\\n\\n .icon-cell {\\n max-width: 5rem;\\n min-height: 3rem;\\n\\n .icon {\\n margin: auto;\\n }\\n }\\n}\\n\\n::ng-deep .mat-mdc-tab-header {\\n margin-left: -1px !important;\\n}\\n\\n::ng-deep .biomarker-table-hover.full-column-name {\\n display: flex;\\n padding: 1rem 1.5rem;\\n border-radius: 0.5rem;\\n box-shadow: 0.063rem 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n background-color: vars.$primary-contrast-rgb;\\n overflow: auto;\\n max-width: fit-content;\\n}\\n","styleUrl":"./biomarker-table.component.scss"}],"stylesData":"","implements":["OnChanges"],"accessors":{"columnsWithTypeAndCount":{"name":"columnsWithTypeAndCount","getSignature":{"name":"columnsWithTypeAndCount","type":"[]","returnType":"string[]","line":85,"rawdescription":"\\nGetter method to provide the definations of the columns","description":"

      Getter method to provide the definations of the columns

      \\n"}}},"templateData":"\\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n
      \\n Cell type table by Biomarker\\n
      Cell Type\\n {{ element[0] }}\\n Cell Count\\n {{ element[1] !== undefined ? (element[1] | number) : \'no data\' }}\\n \\n {{ column }}\\n \\n \\n \\n\\n \\n
      \\n
      \\n
      \\n\\n\\n
      \\n {{ columnName }}\\n
      \\n
      \\n\\n\\n \\n\\n"}],"modules":[],"miscellaneous":{"variables":[],"functions":[],"typealiases":[{"name":"DataRow","ctype":"miscellaneous","subtype":"typealias","rawtype":"[string, , ...[]]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      Describes the composition of a single row in the table

      \\n","kind":183},{"name":"RGBTriplet","ctype":"miscellaneous","subtype":"typealias","rawtype":"[number, number, number]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      RGBTriblet of type RGB to store color

      \\n","kind":183}],"enumerations":[],"groupedVariables":{},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{"src/lib/biomarker-table/biomarker-table.component.ts":[{"name":"DataRow","ctype":"miscellaneous","subtype":"typealias","rawtype":"[string, , ...[]]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      Describes the composition of a single row in the table

      \\n","kind":183},{"name":"RGBTriplet","ctype":"miscellaneous","subtype":"typealias","rawtype":"[number, number, number]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      RGBTriblet of type RGB to store color

      \\n","kind":183}]}}}')},"./dist/compodoc/shared-theming/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[],"injectables":[{"name":"ThemingState","id":"injectable-ThemingState-bc96eb085e9f41108d0a07c93ef58359e93bf96384f9b49b4e90d3f6f570a75ca04b1bd6fce0878c0c58715039571f02f400086da7f63acae3a2987851ae31fa","file":"src/lib/state/theming.state.ts","properties":[],"methods":[{"name":"load","args":[{"name":"ctx","type":"ThemingContext","deprecated":false,"deprecationMessage":""},{"type":"Load","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable<>","typeParameters":[],"line":44,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAction for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.\\n","description":"

      Action for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Load"}],"jsdoctags":[{"name":{"pos":1096,"end":1099,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ThemingContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1090,"end":1095,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State Context

      \\n"},{"type":"Load","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":1173,"end":1180,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      asyncronous data from the url

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State for keeping track of theming applied

      \\n","rawdescription":"\\n\\nState for keeping track of theming applied\\n","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { MaterialCssVariables, MaterialCssVarsService } from \'angular-material-css-vars\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable, tap } from \'rxjs\';\\nimport { Load } from \'./theming.actions\';\\nimport { ThemingContext, ThemingModel, THEMING_FILE_SCHEMA } from \'./theming.model\';\\n\\n/**\\n * State for keeping track of theming applied\\n */\\n@State({\\n /**\\n * name of the state\\n */\\n name: \'theming\',\\n /**\\n * state variables default value\\n */\\n defaults: {},\\n})\\n/**\\n * Theming state class\\n */\\n@Injectable()\\nexport class ThemingState {\\n /**\\n * http service for link loading\\n */\\n private readonly http = inject(HttpClient);\\n /**\\n * Material-vars service for setting theming variables\\n */\\n private readonly materialVars = inject(MaterialCssVarsService);\\n\\n /**\\n * Action for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.\\n * @param ctx State Context\\n * @param action Action with url(yaml url) to load\\n * @returns asyncronous data from the url\\n */\\n @Action(Load)\\n load(ctx: ThemingContext, { url }: Load): Observable {\\n return this.http.get(url, { responseType: \'text\' }).pipe(\\n map((data) => load(data, { filename: url })),\\n map((data) => THEMING_FILE_SCHEMA.parse(data)),\\n tap((data) => ctx.setState(data)),\\n tap((data) => this.setVariables(data))\\n );\\n }\\n\\n /**\\n * Set values to the material-css-vars pallete keys\\n * @param data key-value pairs set in state\\n */\\n private setVariables(data: ThemingModel): void {\\n for (const [key, value] of Object.entries(data)) {\\n this.materialVars.setVariable(key as MaterialCssVariables, value);\\n }\\n }\\n}\\n","type":"injectable"}],"guards":[],"interceptors":[],"classes":[{"name":"Load","id":"class-Load-469f09c45915febbba378ba114f9cebc6d6342ca6e618a54edaa277bdc8b3fbbce18cea9b8c908ad8794b8a3f9a2fac6a9e21ab80e6e979fda2c08bca4eb995b","file":"src/lib/state/theming.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"export class Load {\\n /**\\n * static type for the action\\n */\\n static readonly type = \'[Theming] Load Theming File\';\\n /**\\n * Initialising type for the action\\n */\\n readonly type = Load.type;\\n\\n /**\\n * It takes URL of the yaml file, and loads it.\\n * @param url URL of the yaml file, containing theming color key-value pairs\\n */\\n constructor(readonly url: string) {}\\n}\\n","constructorObj":{"name":"constructor","description":"

      It takes URL of the yaml file, and loads it.

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":12,"rawdescription":"\\n\\nIt takes URL of the yaml file, and loads it.\\n","jsdoctags":[{"name":{"pos":354,"end":357,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":348,"end":353,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      URL of the yaml file, containing theming color key-value pairs

      \\n"}]},"properties":[{"name":"type","defaultValue":"\'[Theming] Load Theming File\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      static type for the action

      \\n","line":8,"rawdescription":"\\n\\nstatic type for the action\\n","modifierKind":[124,144]},{"name":"type","defaultValue":"Load.type","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Initialising type for the action

      \\n","line":12,"rawdescription":"\\n\\nInitialising type for the action\\n","modifierKind":[144]}],"description":"

      Load Action, which is triggered to load yaml file, to get theming pallete

      \\n","rawdescription":"\\n\\nLoad Action, which is triggered to load yaml file, to get theming pallete\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]}],"directives":[],"components":[],"modules":[{"name":"ThemingModule","id":"module-ThemingModule-a5ac292a1d8f0af8ae5b93edb01358072adb02eaa2e0139627ccb0f40b61d38613bc286464b0e4b2577330616277bc72746d8169acd7a4f527abd04f0e0fe000","description":"

      Configures global theming

      \\n","deprecationMessage":"","deprecated":false,"file":"src/lib/theming.module.ts","methods":[],"sourceCode":"import { NgModule } from \'@angular/core\';\\nimport { NgxsModule } from \'@ngxs/store\';\\nimport { MaterialCssVarsModule } from \'angular-material-css-vars\';\\nimport { ThemingState } from \'./state/theming.state\';\\n\\n/** Configures global theming */\\n@NgModule({\\n imports: [MaterialCssVarsModule.forRoot({}), NgxsModule.forFeature([ThemingState])],\\n})\\nexport class ThemingModule {}\\n","children":[{"type":"providers","elements":[]},{"type":"declarations","elements":[]},{"type":"imports","elements":[]},{"type":"exports","elements":[]},{"type":"bootstrap","elements":[]},{"type":"classes","elements":[]}]}],"miscellaneous":{"variables":[{"name":"placeholder","ctype":"miscellaneous","subtype":"variable","file":"src/index.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"undefined","rawdescription":"Placeholder to make build and tests pass until any actual library code is created","description":"

      Placeholder to make build and tests pass until any actual library code is created

      \\n"},{"name":"THEMING_FILE_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(z.nativeEnum(MaterialCssVariables), z.string())","rawdescription":"Theming mdoel schema, having records with key as material-css-vars pallete keys and string values","description":"

      Theming mdoel schema, having records with key as material-css-vars pallete keys and string values

      \\n"}],"functions":[],"typealiases":[{"name":"ThemingContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State context for theming, with reference of model

      \\n","kind":177},{"name":"ThemingModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for theming

      \\n","kind":177}],"enumerations":[],"groupedVariables":{"src/index.ts":[{"name":"placeholder","ctype":"miscellaneous","subtype":"variable","file":"src/index.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"undefined","rawdescription":"Placeholder to make build and tests pass until any actual library code is created","description":"

      Placeholder to make build and tests pass until any actual library code is created

      \\n"}],"src/lib/state/theming.model.ts":[{"name":"THEMING_FILE_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(z.nativeEnum(MaterialCssVariables), z.string())","rawdescription":"Theming mdoel schema, having records with key as material-css-vars pallete keys and string values","description":"

      Theming mdoel schema, having records with key as material-css-vars pallete keys and string values

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{"src/lib/state/theming.model.ts":[{"name":"ThemingContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State context for theming, with reference of model

      \\n","kind":177},{"name":"ThemingModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for theming

      \\n","kind":177}]}}}')}},__webpack_require__=>{var __webpack_exec__=moduleId=>__webpack_require__(__webpack_require__.s=moduleId);__webpack_require__.O(0,[666],(()=>(__webpack_exec__("./storybook-config-entry.js"),__webpack_exec__("./.storybook/styles.scss?ngGlobalStyle"))));__webpack_require__.O()}]); \ No newline at end of file diff --git a/storybook/components-atoms/main.a347215b.iframe.bundle.js b/storybook/components-atoms/main.a347215b.iframe.bundle.js new file mode 100644 index 000000000..4a89f3691 --- /dev/null +++ b/storybook/components-atoms/main.a347215b.iframe.bundle.js @@ -0,0 +1 @@ +(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[179],{"./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$":(module,__unused_webpack_exports,__webpack_require__)=>{var map={"./cdk/documentation.json":"./dist/compodoc/cdk/documentation.json","./components-atoms/documentation.json":"./dist/compodoc/components-atoms/documentation.json","./components-behavioral/documentation.json":"./dist/compodoc/components-behavioral/documentation.json","./components-molecules/documentation.json":"./dist/compodoc/components-molecules/documentation.json","./components-organisms/documentation.json":"./dist/compodoc/components-organisms/documentation.json","./shared-theming/documentation.json":"./dist/compodoc/shared-theming/documentation.json"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$"},"./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$":(module,__unused_webpack_exports,__webpack_require__)=>{var map={"./src/lib/email-input/email-input.component.stories":["./libs/components/atoms/src/lib/email-input/email-input.component.stories.ts",582,933,942],"./src/lib/email-input/email-input.component.stories.ts":["./libs/components/atoms/src/lib/email-input/email-input.component.stories.ts",582,933,942],"./src/lib/empty-biomarker/empty-biomarker.stories":["./libs/components/atoms/src/lib/empty-biomarker/empty-biomarker.stories.ts",582,849,798],"./src/lib/empty-biomarker/empty-biomarker.stories.ts":["./libs/components/atoms/src/lib/empty-biomarker/empty-biomarker.stories.ts",582,849,798],"./src/lib/gradient-legend/gradient-legend.component.stories":["./libs/components/atoms/src/lib/gradient-legend/gradient-legend.component.stories.ts",983],"./src/lib/gradient-legend/gradient-legend.component.stories.ts":["./libs/components/atoms/src/lib/gradient-legend/gradient-legend.component.stories.ts",983],"./src/lib/label-box/label-box.component.stories":["./libs/components/atoms/src/lib/label-box/label-box.component.stories.ts",582,242],"./src/lib/label-box/label-box.component.stories.ts":["./libs/components/atoms/src/lib/label-box/label-box.component.stories.ts",582,242],"./src/lib/required-input/required-input.component.stories":["./libs/components/atoms/src/lib/required-input/required-input.component.stories.ts",582,933,661],"./src/lib/required-input/required-input.component.stories.ts":["./libs/components/atoms/src/lib/required-input/required-input.component.stories.ts",582,933,661],"./src/lib/required-textbox/required-textbox.component.stories":["./libs/components/atoms/src/lib/required-textbox/required-textbox.component.stories.ts",582,933,446],"./src/lib/required-textbox/required-textbox.component.stories.ts":["./libs/components/atoms/src/lib/required-textbox/required-textbox.component.stories.ts",582,933,446],"./src/lib/size-legend/size-legend.component.stories":["./libs/components/atoms/src/lib/size-legend/size-legend.component.stories.ts",236],"./src/lib/size-legend/size-legend.component.stories.ts":["./libs/components/atoms/src/lib/size-legend/size-legend.component.stories.ts",236]};function webpackAsyncContext(req){if(!__webpack_require__.o(map,req))return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}));var ids=map[req],id=ids[0];return Promise.all(ids.slice(1).map(__webpack_require__.e)).then((()=>__webpack_require__(id)))}webpackAsyncContext.keys=()=>Object.keys(map),webpackAsyncContext.id="./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$",module.exports=webpackAsyncContext},"./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$":module=>{function webpackEmptyAsyncContext(req){return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}))}webpackEmptyAsyncContext.keys=()=>[],webpackEmptyAsyncContext.resolve=webpackEmptyAsyncContext,webpackEmptyAsyncContext.id="./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$",module.exports=webpackEmptyAsyncContext},"./.storybook/styles.scss?ngGlobalStyle":()=>{},"./libs/components/atoms/.storybook/preview.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{argTypesEnhancers:()=>argTypesEnhancers,decorators:()=>decorators,parameters:()=>parameters});var http=__webpack_require__("./node_modules/@angular/common/fesm2020/http.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),animations=__webpack_require__("./node_modules/@angular/platform-browser/fesm2020/animations.mjs"),ngxs_logger_plugin=__webpack_require__("./node_modules/@ngxs/logger-plugin/fesm2015/ngxs-logger-plugin.js"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),angular=__webpack_require__("./node_modules/@storybook/addon-docs/angular/index.js"),dist=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),ngx_markdown=__webpack_require__("./node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs"),tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),angular_material_css_vars=__webpack_require__("./node_modules/angular-material-css-vars/fesm2020/angular-material-css-vars.mjs"),js_yaml=__webpack_require__("./node_modules/js-yaml/dist/js-yaml.mjs"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js");class Load{constructor(url){this.url=url,this.type=Load.type}}Load.type="[Theming] Load Theming File";var lib=__webpack_require__("./node_modules/zod/lib/index.mjs");const THEMING_FILE_SCHEMA=lib.z.record(lib.z.nativeEnum(angular_material_css_vars.Rm),lib.z.string());let ThemingState=class ThemingState{constructor(){this.http=(0,core.inject)(http.eN),this.materialVars=(0,core.inject)(angular_material_css_vars.jO)}load(ctx,{url}){return this.http.get(url,{responseType:"text"}).pipe((0,map.U)((data=>(0,js_yaml.zD)(data,{filename:url}))),(0,map.U)((data=>THEMING_FILE_SCHEMA.parse(data))),(0,tap.b)((data=>ctx.setState(data))),(0,tap.b)((data=>this.setVariables(data))))}setVariables(data){for(const[key,value]of Object.entries(data))this.materialVars.setVariable(key,value)}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(Load),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,Load]),(0,tslib_es6.w6)("design:returntype",Observable.y)],ThemingState.prototype,"load",null),ThemingState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"theming",defaults:{}}),(0,core.Injectable)()],ThemingState);let ThemingModule=class ThemingModule{};function parseDefaultValue(type){const{defaultValue,type:typeDef}=type;if(void 0===defaultValue||"string"!=typeof defaultValue||"string"===typeDef?.name)return defaultValue;switch(typeDef?.name){case"array":case"boolean":case"number":case"object":try{return new Function("return "+defaultValue)()}catch(_error){return}case"enum":return typeDef.value.includes(defaultValue)?defaultValue:void 0;default:return}}ThemingModule=(0,tslib_es6.gn)([(0,core.NgModule)({imports:[angular_material_css_vars.Pe.forRoot({}),ngxs_store.$l.forFeature([ThemingState])]})],ThemingModule);const parameters={actions:{argTypesRegex:"^on[A-Z].*"},controls:{matchers:{color:/(background|color)$/i,date:/Date$/}},docs:{inlineStories:!0}},argTypesEnhancers=[function fixArgTypes(){return context=>{const argTypes={...context.argTypes},exclude=[...context.parameters.controls?.exclude??[]];for(const[key,type]of Object.entries(argTypes))switch(type.table.category){case"inputs":const defaultValue=parseDefaultValue(type);defaultValue!==type.defaultValue&&(argTypes[key]={...type,defaultValue});break;case"outputs":argTypes[key]={...type,defaultValue:void 0};break;default:exclude.push(key)}return context.parameters.controls={...context.parameters.controls,exclude},argTypes}}()],decorators=[(0,dist.applicationConfig)({providers:[(0,core.importProvidersFrom)(animations.BrowserAnimationsModule,http.JF,ngxs_store.$l.forRoot([],{developmentMode:!0}),ngxs_logger_plugin.xz.forRoot(),ngx_markdown.JP.forRoot({loader:http.eN}),ThemingModule)]}),(0,dist.componentWrapperDecorator)((story=>`\n
      ${story}
      \n
      \n `)),function addState(){return(fn,ctx)=>{const config=ctx.parameters.state;return config?(0,dist.applicationConfig)({providers:[(0,core.importProvidersFrom)(ngxs_store.$l.forFeature(config.states)),{provide:core.APP_INITIALIZER,multi:!0,useFactory:store=>()=>{const{actions}=config;return actions&&actions.length>0?store.dispatch(actions):void 0},deps:[ngxs_store.yh]}]})(fn,ctx):fn(ctx)}}()];!function setDocs(library){const docs=__webpack_require__("./dist/compodoc sync recursive ^\\.\\/.*\\/documentation\\.json$")(`./${library}/documentation.json`);(0,angular.P)(docs)}("components-atoms")},"./storybook-config-entry.js":(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{"use strict";var dist=__webpack_require__("./node_modules/@storybook/global/dist/index.mjs"),external_STORYBOOK_MODULE_PREVIEW_API_=__webpack_require__("@storybook/preview-api");const external_STORYBOOK_MODULE_CHANNEL_POSTMESSAGE_namespaceObject=__STORYBOOK_MODULE_CHANNEL_POSTMESSAGE__,external_STORYBOOK_MODULE_CHANNEL_WEBSOCKET_namespaceObject=__STORYBOOK_MODULE_CHANNEL_WEBSOCKET__;var asyncToGenerator=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js");const pipeline=x=>x(),importers=[function(){var _ref=(0,asyncToGenerator.Z)((function*(path){if(!/^\.[\\/](?:libs\/components\/atoms(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.mdx)$/.exec(path))return;const pathRemainder=path.substring(24);return __webpack_require__("./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$")("./"+pathRemainder)}));return function(_x){return _ref.apply(this,arguments)}}(),function(){var _ref2=(0,asyncToGenerator.Z)((function*(path){if(!/^\.[\\/](?:libs\/components\/atoms(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.(js|jsx|ts|tsx))$/.exec(path))return;const pathRemainder=path.substring(24);return __webpack_require__("./libs/components/atoms lazy recursive ^\\.\\/.*$ include: (?:\\/libs\\/components\\/atoms(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$")("./"+pathRemainder)}));return function(_x2){return _ref2.apply(this,arguments)}}()];function _importFn(){return(_importFn=(0,asyncToGenerator.Z)((function*(path){for(let i=0;iimporters[i](path)));if(moduleExports)return moduleExports}}))).apply(this,arguments)}const{SERVER_CHANNEL_URL}=dist.global,channel=(0,external_STORYBOOK_MODULE_CHANNEL_POSTMESSAGE_namespaceObject.createChannel)({page:"preview"});if(external_STORYBOOK_MODULE_PREVIEW_API_.addons.setChannel(channel),SERVER_CHANNEL_URL){const serverChannel=(0,external_STORYBOOK_MODULE_CHANNEL_WEBSOCKET_namespaceObject.createChannel)({url:SERVER_CHANNEL_URL});external_STORYBOOK_MODULE_PREVIEW_API_.addons.setServerChannel(serverChannel),window.__STORYBOOK_SERVER_CHANNEL__=serverChannel}const preview=new external_STORYBOOK_MODULE_PREVIEW_API_.PreviewWeb;window.__STORYBOOK_PREVIEW__=preview,window.__STORYBOOK_STORY_STORE__=preview.storyStore,window.__STORYBOOK_ADDONS_CHANNEL__=channel,window.__STORYBOOK_CLIENT_API__=new external_STORYBOOK_MODULE_PREVIEW_API_.ClientApi({storyStore:preview.storyStore}),preview.initialize({importFn:function importFn(_x3){return _importFn.apply(this,arguments)},getProjectAnnotations:()=>(0,external_STORYBOOK_MODULE_PREVIEW_API_.composeConfigs)([__webpack_require__("./node_modules/@storybook/angular/dist/client/docs/config.js"),__webpack_require__("./node_modules/@storybook/angular/dist/client/config.js"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/docs/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/actions/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/backgrounds/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/measure/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/outline/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/highlight/preview.mjs"),__webpack_require__("./libs/components/atoms/.storybook/preview.ts")])})},"./node_modules/@storybook/addon-docs/dist sync recursive":module=>{function webpackEmptyContext(req){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id="./node_modules/@storybook/addon-docs/dist sync recursive",module.exports=webpackEmptyContext},"@storybook/channels":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CHANNELS__},"@storybook/client-logger":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CLIENT_LOGGER__},"@storybook/core-client":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CORE_CLIENT__},"@storybook/core-events":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CORE_EVENTS__},"@storybook/preview-api":module=>{"use strict";module.exports=__STORYBOOK_MODULE_PREVIEW_API__},"./dist/compodoc/cdk/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"ActionConstructor","id":"interface-ActionConstructor-79d65b59eb27f474fc1f2fbef720f134360ce0d1017b538dfe48bd3ca60c6a0472d1789cdc31f57a5190150ce49b1ca0d304e9e44f722b1c4c992c619605ba68","file":"state/src/actions/actions.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { registerActionType } from \'./action-type-registry\';\\n\\n/** Base action type */\\nexport interface Action {\\n /** Action type */\\n readonly type: string;\\n}\\n\\n/** Base action constructor */\\nexport interface ActionConstructor {\\n /** Action type */\\n readonly type: string;\\n\\n /** Create a new action */\\n new (): Action;\\n}\\n\\n/**\\n * Creates an action factory that adds a common group string to each action type\\n * @param group Common action type group\\n * @returns An action factory\\n */\\nexport function ActionGroup(group: string): (type: string) => ActionConstructor {\\n return (type) => Action(`[${group}] ${type}`);\\n}\\n\\n/**\\n * Creates a new base action with a specified type\\n * @param type Action type\\n * @returns A base action class\\n */\\nexport function Action(type: string): ActionConstructor {\\n registerActionType(type);\\n return class BaseAction {\\n static readonly type = type;\\n readonly type = type;\\n };\\n}\\n","properties":[{"name":"type","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Action type

      \\n","line":12,"rawdescription":"\\nAction type","modifierKind":[144]}],"indexSignatures":[],"kind":174,"description":"

      Base action constructor

      \\n","rawdescription":"\\nBase action constructor","methods":[]},{"name":"DestructorScope","id":"interface-DestructorScope-c4b53b823f2f6845a68f4b66881cc81070616d6b5124d0d203f80f1eeee060d84d1d05eab91b3a6e833ea4aef93cdf9d68ef0051d58b85ca5101c609dad76a05","file":"injectors/src/lib/on-destroy/destructor-subject.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ReplaySubject } from \'rxjs\';\\n\\n/** Object on which cleanup functions can be registered */\\nexport interface DestructorScope {\\n /**\\n * Register a cleanup function\\n * @param cb Cleanup callback function\\n */\\n onDestroy(cb: () => void): void;\\n}\\n\\n/**\\n * Determines whether an object is destructor scope like\\n * @param obj Value to test\\n * @returns true if the object seems to be a destructor scope, otherwise false\\n */\\nexport function isDestructorScopeLike(obj: unknown): obj is DestructorScope {\\n const isObject = typeof obj === \'object\' && obj !== null;\\n return isObject && \'onDestroy\' in obj && typeof obj.onDestroy === \'function\';\\n}\\n\\n/**\\n * A subject type that is associated with a destructor scope.\\n * When the cleanup function is run the subject emits a single\\n * undefined value and immediately completes\\n */\\nexport class ScopedDestructorSubject extends ReplaySubject {\\n /**\\n * Creates a new subject and attaches cleanup to the destructor scope\\n * @param scope Associated scope\\n */\\n constructor(scope: DestructorScope) {\\n super(1);\\n\\n scope.onDestroy(() => {\\n this.next();\\n this.complete();\\n });\\n }\\n}\\n","properties":[],"indexSignatures":[],"kind":167,"description":"

      Object on which cleanup functions can be registered

      \\n","rawdescription":"\\nObject on which cleanup functions can be registered","methods":[{"name":"onDestroy","args":[{"name":"cb","type":"function","deprecated":false,"deprecationMessage":"","function":[]}],"optional":false,"returnType":"void","typeParameters":[],"line":9,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nRegister a cleanup function\\n","description":"

      Register a cleanup function

      \\n","jsdoctags":[{"name":{"pos":184,"end":186,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"cb"},"type":"function","deprecated":false,"deprecationMessage":"","function":[],"tagName":{"pos":178,"end":183,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Cleanup callback function

      \\n"}]}]},{"name":"HoverContext","id":"interface-HoverContext-09dbb1791c1e8551d99aeb917f0d664e71738bebaebeed4601b7634f7980b675771162be311571667692c787d939ee9eeb40e57b4627c9cd75ebc926e849cc0d","file":"src/lib/hover/hover.directive.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectionPositionPair, Overlay } from \'@angular/cdk/overlay\';\\nimport { TemplatePortal } from \'@angular/cdk/portal\';\\nimport { Directive, ElementRef, HostListener, inject, Input, TemplateRef, ViewContainerRef } from \'@angular/core\';\\n\\n/** Context passed to hover content templates */\\nexport interface HoverContext {\\n /** Data provided by the user for use inside the content template */\\n $implicit: T;\\n}\\n\\n/** Hover overlay directive to be used across the application */\\n@Directive({\\n selector: \'[hraHover]\',\\n standalone: true,\\n})\\nexport class HoverDirective {\\n /** Setter for the content to be displayed in the overlay */\\n @Input(\'hraHover\')\\n set content(content: TemplateRef>) {\\n this.portal = new TemplatePortal(content, this.viewContainerRef, this._data);\\n this.updateContent();\\n }\\n\\n /** Setter for the context that is to be displayed in the portal attached to the overlay */\\n @Input(\'hraHoverData\')\\n set data(data: T) {\\n this._data = { $implicit: data };\\n if (this.portal) {\\n this.portal.context = this._data;\\n this.updateContent();\\n }\\n }\\n\\n /** Reference to the element that the directive is attached to */\\n private readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /** Reference to the overlay that is created when the userhovers over the element along with its position setting */\\n readonly overlayRef = inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n });\\n\\n /** Reference view container that the directive is attached to */\\n private readonly viewContainerRef = inject(ViewContainerRef);\\n\\n /** Store the data that is passed into the data input property */\\n private _data?: HoverContext;\\n\\n /** Portal that is created to display the overlay */\\n portal?: TemplatePortal>;\\n\\n /** Function to handle the mouse over event to attach the portal and display the hover content */\\n @HostListener(\'mouseover\')\\n startHover(): void {\\n const { overlayRef, portal } = this;\\n if (!overlayRef.hasAttached() && portal) {\\n overlayRef.attach(portal);\\n }\\n }\\n\\n /** Function to handle the mouse out event to detach the portal */\\n @HostListener(\'mouseout\')\\n endHover(): void {\\n const { overlayRef } = this;\\n if (overlayRef.hasAttached()) {\\n overlayRef.detach();\\n }\\n }\\n\\n /** Function to handle the updation of overlay with up to date content when the input changes */\\n private updateContent(): void {\\n const { overlayRef, portal } = this;\\n if (overlayRef.hasAttached() && portal) {\\n overlayRef.detach();\\n overlayRef.attach(portal);\\n }\\n }\\n}\\n","properties":[{"name":"$implicit","deprecated":false,"deprecationMessage":"","type":"T","optional":false,"description":"

      Data provided by the user for use inside the content template

      \\n","line":8,"rawdescription":"\\nData provided by the user for use inside the content template"}],"indexSignatures":[],"kind":165,"description":"

      Context passed to hover content templates

      \\n","rawdescription":"\\nContext passed to hover content templates","methods":[]},{"name":"SelectOptions","id":"interface-SelectOptions-2a1e9b4935fb82769eb1dadf40ec0992c0e3f24e9bc0b33376fb53e5f271e89e87100bf0c22b87ea85ce9dd36fbdd2e6fb22f6978dc61aff4d02559ba5c9c8f0","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectorRef, inject } from \'@angular/core\';\\nimport { Any } from \'@hra-ui/utils/types\';\\nimport { StateToken, Store } from \'@ngxs/store\';\\nimport { MonoTypeOperatorFunction, Observable, takeUntil, tap } from \'rxjs\';\\nimport { injectDestroy$ } from \'../on-destroy/on-destroy\';\\n\\n/** Selector type for select style functions */\\nexport type StateSelector = ((...args: Any[]) => T) | StateToken;\\n\\n/** `select$` configuration options */\\nexport interface SelectOptions {\\n /** Whether to mark the containing view for change detection on emits. Defaults to true. */\\n notifyOnChange?: boolean;\\n}\\n\\n/**\\n * Marks a view for change detection whenever a new value is emitted\\n * @param options Options to explicitly disable marking\\n * @returns A rxjs operator\\n */\\nfunction markForCheck(options?: SelectOptions): MonoTypeOperatorFunction {\\n const notifyOnChange = options?.notifyOnChange ?? true;\\n const cdr = inject(ChangeDetectorRef, { optional: true });\\n if (notifyOnChange && cdr) {\\n const markFn = () => cdr.markForCheck();\\n return tap({ next: markFn, error: markFn, complete: markFn });\\n }\\n\\n return (source) => source;\\n}\\n\\n/**\\n * Creates an observable emitting parts of the state. The observable\'s lifetime\\n * is automatically tied to the injection context where this is called.\\n * @param selector State selection function or token\\n * @param options Additional select options\\n * @returns An observable of the selected state\\n */\\nexport function select$(selector: StateSelector, options?: SelectOptions): Observable {\\n return inject(Store)\\n .select(selector as StateToken)\\n .pipe(takeUntil(injectDestroy$()), markForCheck(options));\\n}\\n","properties":[{"name":"notifyOnChange","deprecated":false,"deprecationMessage":"","type":"boolean","optional":true,"description":"

      Whether to mark the containing view for change detection on emits. Defaults to true.

      \\n","line":13,"rawdescription":"\\nWhether to mark the containing view for change detection on emits. Defaults to true."}],"indexSignatures":[],"kind":165,"description":"

      select$ configuration options

      \\n","rawdescription":"\\n`select$` configuration options","methods":[]}],"injectables":[{"name":"LinkRegistryState","id":"injectable-LinkRegistryState-b37e5428b2389fadb722624de33c6e4366fe24d94941b86e08c58ba2167a6e863002542c94b564c5ac03cba9122d8a463f2c34e1d925aed7babf8aa973f35fbb","file":"state/src/link-registry/link-registry.state.ts","properties":[],"methods":[{"name":"addMany","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddMany","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":57,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd multiple entries\\n","description":"

      Add multiple entries

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddMany"}],"jsdoctags":[{"name":{"pos":1614,"end":1617,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1608,"end":1613,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddMany","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addOne","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Add","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd a single entry\\n","description":"

      Add a single entry

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Add"}],"jsdoctags":[{"name":{"pos":1359,"end":1362,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1353,"end":1358,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Add","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addYaml","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":""},{"name":"filename","type":"string","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":[],"line":68,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nParse and add entries from yaml\\n","description":"

      Parse and add entries from yaml

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddFromYaml"}],"jsdoctags":[{"name":{"pos":1858,"end":1861,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1852,"end":1857,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":1933,"end":1941,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"filename"},"type":"string","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1927,"end":1932,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional url/filename from which the data was loaded (for improved error messages)

      \\n"}]},{"name":"loadYaml","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":81,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nLoad and add entries from an external yaml file\\n","description":"

      Load and add entries from an external yaml file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadFromYaml"}],"jsdoctags":[{"name":{"pos":2358,"end":2361,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2352,"end":2357,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2435,"end":2442,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entries has been added

      \\n"}]},{"name":"navigate","args":[{"name":"ctx","type":"LinkRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Navigate","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Promise","typeParameters":[],"line":94,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nNavigate to Internal or External urls from id\\n","description":"

      Navigate to Internal or External urls from id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Navigate"}],"modifierKind":[131],"jsdoctags":[{"name":{"pos":2826,"end":2829,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"LinkRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2820,"end":2825,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Navigate","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2898,"end":2905,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A promise

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State for keeping track of links globally

      \\n","rawdescription":"\\nState for keeping track of links globally","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable, NgZone } from \'@angular/core\';\\nimport { Router, UrlCreationOptions } from \'@angular/router\';\\nimport { createExternalUrl } from \'@hra-ui/utils\';\\nimport { UnionMember } from \'@hra-ui/utils/types\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable } from \'rxjs\';\\nimport { Add, AddFromYaml, AddMany, LoadFromYaml, Navigate } from \'./link-registry.actions\';\\nimport {\\n ExternalLinkEntry,\\n InternalLinkEntry,\\n LinkEntry,\\n LinkId,\\n LinkRegistryContext,\\n LinkRegistryModel,\\n LinkType,\\n LINK_REGISTRY_SCHEMA,\\n} from \'./link-registry.model\';\\n\\n/** Query function for link entry optionally with type specified */\\nexport type LinkRegistryQuery = (\\n id: LinkId,\\n type?: T\\n) => UnionMember | undefined;\\n\\n/** State for keeping track of links globally */\\n@State({\\n name: \'linkRegistry\',\\n defaults: {},\\n})\\n@Injectable()\\nexport class LinkRegistryState {\\n /** Http service for link loading */\\n private readonly http = inject(HttpClient);\\n /** Injects angular router */\\n private readonly router = inject(Router, { optional: true });\\n /** Injects ngZone for routing */\\n private readonly zone = inject(NgZone);\\n\\n /**\\n * Add a single entry\\n * @param ctx State context\\n * @param action Action with id and entry to add\\n */\\n @Action(Add)\\n addOne(ctx: LinkRegistryContext, { id, entry }: Add): void {\\n this.addMany(ctx, new AddMany({ [id]: entry }));\\n }\\n\\n /**\\n * Add multiple entries\\n * @param ctx State context\\n * @param action Action with entries to add\\n */\\n @Action(AddMany)\\n addMany(ctx: LinkRegistryContext, { entries }: AddMany): void {\\n ctx.patchState(entries);\\n }\\n\\n /**\\n * Parse and add entries from yaml\\n * @param ctx State context\\n * @param action Action with raw yaml data\\n * @param filename Optional url/filename from which the data was loaded (for improved error messages)\\n */\\n @Action(AddFromYaml)\\n addYaml(ctx: LinkRegistryContext, { yaml }: AddFromYaml, filename?: string): void {\\n const data = load(yaml, { filename });\\n const entries = LINK_REGISTRY_SCHEMA.parse(data);\\n this.addMany(ctx, new AddMany(entries));\\n }\\n\\n /**\\n * Load and add entries from an external yaml file\\n * @param ctx State context\\n * @param action Action with the external file url\\n * @returns An observable that completes when the entries has been added\\n */\\n @Action(LoadFromYaml)\\n loadYaml(ctx: LinkRegistryContext, { url }: LoadFromYaml): Observable {\\n return this.http\\n .get(url, { responseType: \'text\' })\\n .pipe(map((data) => this.addYaml(ctx, new AddFromYaml(data), url)));\\n }\\n\\n /**\\n * Navigate to Internal or External urls from id\\n * @param ctx State context\\n * @param param1 Navigate action with link id\\n * @returns A promise\\n */\\n @Action(Navigate)\\n async navigate(ctx: LinkRegistryContext, { id, extras }: Navigate): Promise {\\n const entry = ctx.getState()[id];\\n switch (entry?.type) {\\n case LinkType.Internal:\\n await this.navigateToInternal(entry, extras);\\n break;\\n\\n case LinkType.External:\\n this.navigateToExternal(entry, extras);\\n break;\\n\\n default:\\n throw new Error(`Cannot navigate to non-existing link \'${id}\'`);\\n }\\n }\\n\\n /**\\n * Method to navigate to an internal link using Angular router\\n * @param entry Internal Link Entry with commands and extras\\n */\\n private async navigateToInternal(entry: InternalLinkEntry, extras: UrlCreationOptions): Promise {\\n await this.zone.run(() => this.router?.navigate(entry.commands, { ...entry.extras, ...extras }));\\n }\\n\\n /**\\n * Method to navigate to an external link using window\\n * @param entry External link entry with url, target, and rel\\n */\\n private navigateToExternal(entry: ExternalLinkEntry, extras: UrlCreationOptions): void {\\n const url = createExternalUrl(entry.url, extras);\\n window.open(url, entry.target, entry.rel);\\n }\\n}\\n","type":"injectable"},{"name":"ResourceRegistryState","id":"injectable-ResourceRegistryState-ee091eca7099a68b29fcf8b081af0f6e4eec5cfb7b538ee0423d54f17301e5430869290d05c8adab76fffaddd9c6c3cfff4569f15b2e831e632827f4347dee77","file":"state/src/resource-registry/resource-registry.state.ts","properties":[],"methods":[{"name":"addMany","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddMany","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":40,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd multiple entries\\n","description":"

      Add multiple entries

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddMany"}],"jsdoctags":[{"name":{"pos":1038,"end":1041,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1032,"end":1037,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddMany","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addOne","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"Add","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":30,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdd a single entry\\n","description":"

      Add a single entry

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Add"}],"jsdoctags":[{"name":{"pos":779,"end":782,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":773,"end":778,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"Add","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"addYaml","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":""},{"name":"filename","type":"string","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":[],"line":51,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nParse and add entries from yaml\\n","description":"

      Parse and add entries from yaml

      \\n","decorators":[{"name":"Action","stringifiedArguments":"AddFromYaml"}],"jsdoctags":[{"name":{"pos":1286,"end":1289,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1280,"end":1285,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"AddFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":1361,"end":1369,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"filename"},"type":"string","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1355,"end":1360,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional url/filename from which the data was loaded (for improved error messages)

      \\n"}]},{"name":"loadMarkdown","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadMarkdown","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":77,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAdds a markdown entry with content loaded from an external file\\n","description":"

      Adds a markdown entry with content loaded from an external file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadMarkdown"}],"jsdoctags":[{"name":{"pos":2284,"end":2287,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":2278,"end":2283,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadMarkdown","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2375,"end":2382,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entry has been added

      \\n"}]},{"name":"loadYaml","args":[{"name":"ctx","type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":""},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable","typeParameters":[],"line":64,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nLoad and add entries from an external yaml file\\n","description":"

      Load and add entries from an external yaml file

      \\n","decorators":[{"name":"Action","stringifiedArguments":"LoadFromYaml"}],"jsdoctags":[{"name":{"pos":1794,"end":1797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ResourceRegistryContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1788,"end":1793,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State context

      \\n"},{"type":"LoadFromYaml","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":1871,"end":1878,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that completes when the entries has been added

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State keeping track of global resources

      \\n","rawdescription":"\\nState keeping track of global resources","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable } from \'rxjs\';\\nimport { Add, AddFromYaml, AddMany, LoadFromYaml, LoadMarkdown } from \'./resource-registry.actions\';\\nimport {\\n BuiltinResourceType,\\n ResourceRegistryContext,\\n ResourceRegistryModel,\\n RESOURCE_REGISTRY_SCHEMA,\\n} from \'./resource-registry.model\';\\n\\n/** State keeping track of global resources */\\n@State({\\n name: \'resourceRegistry\',\\n defaults: {},\\n})\\n@Injectable()\\nexport class ResourceRegistryState {\\n /** Http service for resource loading */\\n private readonly http = inject(HttpClient);\\n\\n /**\\n * Add a single entry\\n * @param ctx State context\\n * @param action Action with id and entry to add\\n */\\n @Action(Add)\\n addOne(ctx: ResourceRegistryContext, { id, entry }: Add): void {\\n this.addMany(ctx, new AddMany({ [id]: entry }));\\n }\\n\\n /**\\n * Add multiple entries\\n * @param ctx State context\\n * @param action Action with entries to add\\n */\\n @Action(AddMany)\\n addMany(ctx: ResourceRegistryContext, { entries }: AddMany): void {\\n ctx.patchState(entries);\\n }\\n\\n /**\\n * Parse and add entries from yaml\\n * @param ctx State context\\n * @param action Action with raw yaml data\\n * @param filename Optional url/filename from which the data was loaded (for improved error messages)\\n */\\n @Action(AddFromYaml)\\n addYaml(ctx: ResourceRegistryContext, { yaml }: AddFromYaml, filename?: string): void {\\n const data = load(yaml, { filename });\\n const entries = RESOURCE_REGISTRY_SCHEMA.parse(data);\\n this.addMany(ctx, new AddMany(entries));\\n }\\n\\n /**\\n * Load and add entries from an external yaml file\\n * @param ctx State context\\n * @param action Action with the external file url\\n * @returns An observable that completes when the entries has been added\\n */\\n @Action(LoadFromYaml)\\n loadYaml(ctx: ResourceRegistryContext, { url }: LoadFromYaml): Observable {\\n return this.http\\n .get(url, { responseType: \'text\' })\\n .pipe(map((data) => this.addYaml(ctx, new AddFromYaml(data), url)));\\n }\\n\\n /**\\n * Adds a markdown entry with content loaded from an external file\\n * @param ctx State context\\n * @param action Action with id and url to the external markdown\\n * @returns An observable that completes when the entry has been added\\n */\\n @Action(LoadMarkdown)\\n loadMarkdown(ctx: ResourceRegistryContext, { id, url }: LoadMarkdown): Observable {\\n return this.http.get(url, { responseType: \'text\' }).pipe(\\n map((markdown) => new Add(id, { type: BuiltinResourceType.Markdown, markdown })),\\n map((action) => this.addOne(ctx, action))\\n );\\n }\\n}\\n","type":"injectable"},{"name":"StorageState","id":"injectable-StorageState-72ac0507a219407170a641eb4ddefe5f02c0732d08adcd982880a7dd4d0f18ca6dcce1c0b1395a82191bcf464db28277c68d3df9b3f5ac52620adc50aabfd494","file":"state/src/storage/storage.state.ts","properties":[],"methods":[{"name":"clear","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Clear","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":65,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nclears the values of the specified storage id\\n","description":"

      clears the values of the specified storage id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Clear"}],"jsdoctags":[{"name":{"pos":1825,"end":1828,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1819,"end":1824,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Clear","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"delete","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Delete","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":55,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ndeletes the value pointed by key in the list of values stored in the specified storage id\\n","description":"

      deletes the value pointed by key in the list of values stored in the specified storage id

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Delete"}],"jsdoctags":[{"name":{"pos":1441,"end":1444,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1435,"end":1440,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Delete","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"getStorage","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Storage","typeParameters":[],"line":27,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nStorageState class to manage storage objects\\n","description":"

      StorageState class to manage storage objects

      \\n","modifierKind":[124],"jsdoctags":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":627,"end":634,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"
        \\n
      • Storage objects - session and local
      • \\n
      \\n"}]},{"name":"set","args":[{"name":"ctx","type":"StorageContext","deprecated":false,"deprecationMessage":""},{"type":"Set","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":45,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nsets the key,value pair in the given storageId\\n","description":"

      sets the key,value pair in the given storageId

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Set"}],"jsdoctags":[{"name":{"pos":1010,"end":1013,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"StorageContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1004,"end":1009,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • StorageContext object
      • \\n
      \\n"},{"type":"Set","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","description":"

      State holding Storage types

      \\n","rawdescription":"\\n\\nState holding Storage types\\n","sourceCode":"import { produce } from \'immer\';\\nimport { StorageContext } from \'./storage.model\';\\nimport { Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { StorageId, StorageModel } from \'./storage.model\';\\nimport { Set, Delete, Clear } from \'./storage.actions\';\\n/**\\n * State holding Storage types\\n */\\n@State({\\n name: \'storage\',\\n defaults: {\\n [StorageId.Local]: 0,\\n [StorageId.Session]: 0,\\n },\\n})\\n@Injectable()\\n/**\\n * class for managing storage state\\n */\\nexport class StorageState {\\n /**\\n * StorageState class to manage storage objects\\n * @param id-Storage Identifier\\n * @returns - Storage objects - session and local\\n */\\n static getStorage(id: StorageId): Storage {\\n switch (id) {\\n case StorageId.Local:\\n return localStorage;\\n\\n case StorageId.Session:\\n return sessionStorage;\\n\\n default:\\n throw new Error(`No such storage \'${id}\'`);\\n }\\n }\\n /**\\n * sets the key,value pair in the given storageId\\n * @param ctx - StorageContext object\\n * @param param1- {id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Set)\\n set(ctx: StorageContext, { id, key, value }: Set): void {\\n StorageState.getStorage(id).setItem(key, value);\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * deletes the value pointed by key in the list of values stored in the specified storage id\\n * @param ctx - StorageContext object\\n * @param param1- id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Delete)\\n delete(ctx: StorageContext, { id, key }: Delete): void {\\n StorageState.getStorage(id).removeItem(key);\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * clears the values of the specified storage id\\n * @param ctx - StorageContext object\\n * @param param1 - id: StorageId ,key:string ,value:string} of type Set to set key,value pair for the given id\\n */\\n @Action(Clear)\\n clear(ctx: StorageContext, { id }: Clear): void {\\n StorageState.getStorage(id).clear();\\n this.increaseChangeCount(ctx, id);\\n }\\n /**\\n * increases count after each operation is performed on the specified storage id\\n * @param ctx - StorageContext obje\\n * @param id - StorageId - Storage identifier for which the change count has to be updated\\n */\\n private increaseChangeCount(ctx: StorageContext, id: StorageId): void {\\n ctx.setState(\\n produce((draft) => {\\n draft[id] += 1;\\n })\\n );\\n }\\n}\\n","type":"injectable"}],"guards":[],"interceptors":[],"classes":[{"name":"Add","id":"class-Add-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite a single link

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"LinkId","deprecated":false,"deprecationMessage":""},{"name":"entry","type":"LinkEntry","deprecated":false,"deprecationMessage":""}],"line":9,"rawdescription":"\\n\\nAdd or overwrite a single link\\n","jsdoctags":[{"name":{"pos":356,"end":358,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"LinkId","deprecated":false,"deprecationMessage":"","tagName":{"pos":350,"end":355,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      link identifier

      \\n"},{"name":{"pos":387,"end":392,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entry"},"type":"LinkEntry","deprecated":false,"deprecationMessage":"","tagName":{"pos":381,"end":386,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      link entry

      \\n"}]},"properties":[],"description":"

      Add a single link

      \\n","rawdescription":"\\nAdd a single link","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Add","id":"class-Add-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite a single resource

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"entry","type":"ResourceEntry","deprecated":false,"deprecationMessage":""}],"line":8,"rawdescription":"\\n\\nAdd or overwrite a single resource\\n","jsdoctags":[{"name":{"pos":326,"end":328,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":320,"end":325,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource identifier

      \\n"},{"name":{"pos":361,"end":366,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entry"},"type":"ResourceEntry","deprecated":false,"deprecationMessage":"","tagName":{"pos":355,"end":360,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource entry

      \\n"}]},"properties":[],"description":"

      Add a single resource

      \\n","rawdescription":"\\nAdd a single resource","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"Add-1"},{"name":"AddFromYaml","id":"class-AddFromYaml-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add links from unparsed yaml

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"yaml","type":"string","deprecated":false,"deprecationMessage":""}],"line":32,"rawdescription":"\\n\\nAdd links from unparsed yaml\\n","jsdoctags":[{"name":{"pos":892,"end":896,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"yaml"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":886,"end":891,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Unparsed yaml data

      \\n"}]},"properties":[],"description":"

      Add entries from yaml file

      \\n","rawdescription":"\\nAdd entries from yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"AddFromYaml","id":"class-AddFromYaml-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add resources from unparsed yaml

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"yaml","type":"string","deprecated":false,"deprecationMessage":""}],"line":31,"rawdescription":"\\n\\nAdd resources from unparsed yaml\\n","jsdoctags":[{"name":{"pos":908,"end":912,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"yaml"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":902,"end":907,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Unparsed yaml data

      \\n"}]},"properties":[],"description":"

      Add resources from raw yaml data

      \\n","rawdescription":"\\nAdd resources from raw yaml data","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"AddFromYaml-1"},{"name":"AddMany","id":"class-AddMany-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite multiple links

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"entries","type":"Partial>","deprecated":false,"deprecationMessage":""}],"line":21,"rawdescription":"\\n\\nAdd or overwrite multiple links\\n","jsdoctags":[{"name":{"pos":633,"end":640,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entries"},"type":"Partial>","deprecated":false,"deprecationMessage":"","tagName":{"pos":627,"end":632,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      New links

      \\n"}]},"properties":[],"description":"

      Add multiple links at once

      \\n","rawdescription":"\\nAdd multiple links at once","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"AddMany","id":"class-AddMany-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Add or overwrite multiple resources

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"entries","type":"Partial>","deprecated":false,"deprecationMessage":""}],"line":20,"rawdescription":"\\n\\nAdd or overwrite multiple resources\\n","jsdoctags":[{"name":{"pos":627,"end":634,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"entries"},"type":"Partial>","deprecated":false,"deprecationMessage":"","tagName":{"pos":621,"end":626,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      New resources

      \\n"}]},"properties":[],"description":"

      Add multiple resources at once

      \\n","rawdescription":"\\nAdd multiple resources at once","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"AddMany-1"},{"name":"Clear","id":"class-Clear-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for clear action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""}],"line":37,"rawdescription":"\\n\\nconstructor class for clear action object\\n","jsdoctags":[{"name":{"pos":1146,"end":1148,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1140,"end":1145,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"}]},"properties":[],"description":"

      Clear the values stored in the specified StorageId

      \\n","rawdescription":"\\n\\nClear the values stored in the specified StorageId\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Delete","id":"class-Delete-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for Delete action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""},{"name":"key","type":"string","deprecated":false,"deprecationMessage":""}],"line":24,"rawdescription":"\\n\\nconstructor class for Delete action object\\n","jsdoctags":[{"name":{"pos":769,"end":771,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":763,"end":768,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"},{"name":{"pos":823,"end":826,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"key"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":817,"end":822,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - Key to be stored in the storage identifier
      • \\n
      \\n"}]},"properties":[],"description":"

      Class Delete Action for delete method

      \\n","rawdescription":"\\n\\n Class Delete Action for delete method\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LinkRegistrySelectors","id":"class-LinkRegistrySelectors-06d9e020c846f4521dcfb2095cd0e77e9f6aa4c734e6cd2f8081eef02dec593dc6ad455cf1a4d65585ecec0f48fb03db1829258cbc3db21e3c7603e10eb90644","file":"state/src/link-registry/link-registry.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UnionMember } from \'@hra-ui/utils/types\';\\nimport { Selector } from \'@ngxs/store\';\\nimport { LinkEntry, LinkId, LinkRegistryModel, LinkType } from \'./link-registry.model\';\\nimport { LinkRegistryQuery, LinkRegistryState } from \'./link-registry.state\';\\n\\n/**\\n * Selectors for Link Registry\\n */\\nexport class LinkRegistrySelectors {\\n /**\\n * Queries for a link entry\\n * @param state Current state\\n * @returns link query function\\n */\\n @Selector([LinkRegistryState])\\n static query(state: LinkRegistryModel): LinkRegistryQuery {\\n return (id, type) => this.getEntry(state, id, type);\\n }\\n\\n /**\\n * Gets a link entry by id and optionally type\\n * @param state link registry state\\n * @param id Entry id\\n * @param type Optional entry type\\n * @returns The entry if found, undefined otherwise\\n */\\n private static getEntry(\\n state: LinkRegistryModel,\\n id: LinkId,\\n type?: T\\n ): UnionMember | undefined {\\n const entry = state[id] as UnionMember;\\n const typeMatches = type === undefined || entry?.type === type;\\n return typeMatches ? entry : undefined;\\n }\\n}\\n","properties":[],"description":"

      Selectors for Link Registry

      \\n","rawdescription":"\\n\\nSelectors for Link Registry\\n","methods":[{"name":"query","args":[{"name":"state","type":"LinkRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"LinkRegistryQuery","typeParameters":[],"line":16,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries for a link entry\\n","description":"

      Queries for a link entry

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'LinkRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":382,"end":387,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"LinkRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":376,"end":381,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":408,"end":415,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      link query function

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LoadFromYaml","id":"class-LoadFromYaml-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote yaml file and add links

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":43,"rawdescription":"\\n\\nLoads a remote yaml file and add links\\n","jsdoctags":[{"name":{"pos":1145,"end":1148,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1139,"end":1144,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote yaml file url

      \\n"}]},"properties":[],"description":"

      Add links from a remote yaml file

      \\n","rawdescription":"\\nAdd links from a remote yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"LoadFromYaml","id":"class-LoadFromYaml-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c-1","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote yaml file and add resources

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":42,"rawdescription":"\\n\\nLoads a remote yaml file and add resources\\n","jsdoctags":[{"name":{"pos":1169,"end":1172,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1163,"end":1168,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote yaml file url

      \\n"}]},"properties":[],"description":"

      Add resources from a remote yaml file

      \\n","rawdescription":"\\nAdd resources from a remote yaml file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"isDuplicate":true,"duplicateId":1,"duplicateName":"LoadFromYaml-1"},{"name":"LoadMarkdown","id":"class-LoadMarkdown-61aead3798856298b447f99ca03606a2a2d8d56ee3f496c5b87f3d3f63353ae681b92695370bd0d6228b5baf070b9c7e72f1decbe41c0fb4ef6e71fc441c807c","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { ResourceEntry, ResourceId } from \'./resource-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'ResourceRegistry\');\\n\\n/** Add a single resource */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single resource\\n * @param id Resource identifier\\n * @param entry Resource entry\\n */\\n constructor(readonly id: ResourceId, readonly entry: ResourceEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple resources at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple resources\\n * @param entries New resources\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add resources from raw yaml data */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add resources from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add resources from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add resources\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n\\n/** Add a markdown resource with data loaded from a remote file */\\nexport class LoadMarkdown extends Action(\'Load Markdown\') {\\n /**\\n * Loads a remote markdown file and add a resource\\n * @param id Resource id\\n * @param url Remote markdown file url\\n */\\n constructor(readonly id: ResourceId, readonly url: string) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Loads a remote markdown file and add a resource

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":53,"rawdescription":"\\n\\nLoads a remote markdown file and add a resource\\n","jsdoctags":[{"name":{"pos":1456,"end":1458,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1450,"end":1455,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":1483,"end":1486,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":1477,"end":1482,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Remote markdown file url

      \\n"}]},"properties":[],"description":"

      Add a markdown resource with data loaded from a remote file

      \\n","rawdescription":"\\nAdd a markdown resource with data loaded from a remote file","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Navigate","id":"class-Navigate-a88ac09a4c4d4396193ff1cc301dd02821aadc734d1f1fb6171368181244b64a8df3c4c16295034b76c3ecf3d2b04d34b369c6f49a9b5ee1d4b8f7a13f019acc","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { UrlCreationOptions } from \'@angular/router\';\\nimport { ActionGroup } from \'../actions/actions\';\\nimport { LinkEntry, LinkId } from \'./link-registry.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'LinkRegistry\');\\n\\n/** Add a single link */\\nexport class Add extends Action(\'Add\') {\\n /**\\n * Add or overwrite a single link\\n * @param id link identifier\\n * @param entry link entry\\n */\\n constructor(readonly id: LinkId, readonly entry: LinkEntry) {\\n super();\\n }\\n}\\n\\n/** Add multiple links at once */\\nexport class AddMany extends Action(\'Add Many\') {\\n /**\\n * Add or overwrite multiple links\\n * @param entries New links\\n */\\n constructor(readonly entries: Partial>) {\\n super();\\n }\\n}\\n\\n/** Add entries from yaml file */\\nexport class AddFromYaml extends Action(\'Add from Yaml\') {\\n /**\\n * Add links from unparsed yaml\\n * @param yaml Unparsed yaml data\\n */\\n constructor(readonly yaml: string) {\\n super();\\n }\\n}\\n\\n/** Add links from a remote yaml file */\\nexport class LoadFromYaml extends Action(\'Load from Yaml\') {\\n /**\\n * Loads a remote yaml file and add links\\n * @param url Remote yaml file url\\n */\\n constructor(readonly url: string) {\\n super();\\n }\\n}\\n/** Navigate to an Internal or external url from Link id */\\nexport class Navigate extends Action(\'Navigate\') {\\n /**\\n * navigate to a link\\n * @param id unqiue identifier of link\\n * @param extras Options when building the navigation url\\n */\\n constructor(readonly id: LinkId, readonly extras: UrlCreationOptions = {}) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      navigate to a link

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"LinkId","deprecated":false,"deprecationMessage":""},{"name":"extras","type":"UrlCreationOptions","deprecated":false,"deprecationMessage":"","defaultValue":"{}"}],"line":53,"rawdescription":"\\n\\nnavigate to a link\\n","jsdoctags":[{"name":{"pos":1386,"end":1388,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"LinkId","deprecated":false,"deprecationMessage":"","tagName":{"pos":1380,"end":1385,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      unqiue identifier of link

      \\n"},{"name":{"pos":1427,"end":1433,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"extras"},"type":"UrlCreationOptions","deprecated":false,"deprecationMessage":"","defaultValue":"{}","tagName":{"pos":1421,"end":1426,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options when building the navigation url

      \\n"}]},"properties":[],"description":"

      Navigate to an Internal or external url from Link id

      \\n","rawdescription":"\\nNavigate to an Internal or external url from Link id","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"ResourceRegistrySelectors","id":"class-ResourceRegistrySelectors-30ee3cdaa36f8226c7eb574e0036e13521cbd6aeb6308e5ace88b8f7fd329f9bf1e99352d718ddf22dd6071fcd1548ba48117f604dc8951e00c89e925255254d","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { Selector } from \'@ngxs/store\';\\nimport {\\n BuiltinResourceType,\\n getEntry,\\n ResourceEntry,\\n ResourceId,\\n ResourceRegistryModel,\\n ResourceType,\\n} from \'./resource-registry.model\';\\nimport { ResourceRegistryState } from \'./resource-registry.state\';\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.entry} */\\nexport type EntryQuery = (id: ResourceId, type: ResourceType) => T | undefined;\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.anyEntry} */\\nexport type AnyEntryQuery = (id: ResourceId) => ResourceEntry | undefined;\\n\\n/** Query function returned by {@link ResourceRegistrySelectors.field} */\\nexport type FieldQuery = (\\n id: ResourceId,\\n type: ResourceType,\\n field: K,\\n defaultValue?: T[K]\\n) => T[K];\\n\\n/** Query function for resource data */\\nexport type DataQuery = (id: ResourceId) => T;\\n\\n/** Selectors for ResourceRegistry */\\nexport class ResourceRegistrySelectors {\\n /**\\n * Queries an entry by id and type\\n * @param state Current state\\n * @returns Entry query function\\n */\\n @Selector([ResourceRegistryState])\\n static entry(state: ResourceRegistryModel): EntryQuery {\\n return (id, type) => getEntry(state, id, type);\\n }\\n\\n /**\\n * Queries an entry by id\\n * @param state Current state\\n * @returns Any entry query function\\n */\\n @Selector([ResourceRegistryState])\\n static anyEntry(state: ResourceRegistryModel): AnyEntryQuery {\\n return (id) => getEntry(state, id);\\n }\\n\\n /**\\n * Queries a field of an entry\\n * @param state Current state\\n * @returns A field query function\\n */\\n @Selector([ResourceRegistryState])\\n static field(state: ResourceRegistryModel): FieldQuery {\\n return (id, type, field, defaultValue?) => {\\n const entry = getEntry(state, id, type);\\n return entry?.[field] ?? (defaultValue as never);\\n };\\n }\\n\\n /**\\n * Query for any text data\\n * @param state Current state\\n * @returns Text data query function\\n */\\n @Selector([ResourceRegistryState])\\n static anyText(state: ResourceRegistryModel): DataQuery {\\n return (id) => {\\n const entry = getEntry(state, id);\\n switch (entry?.type) {\\n case BuiltinResourceType.Markdown:\\n return entry.markdown;\\n\\n case BuiltinResourceType.Text:\\n return entry.text;\\n\\n default:\\n return \'\';\\n }\\n };\\n }\\n\\n /**\\n * Query for markdown data\\n * @param state Current state\\n * @returns Markdown data query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static markdown(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Markdown, \'markdown\', \'\');\\n }\\n\\n /**\\n * Query for text data\\n * @param state Current state\\n * @returns Text data query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static text(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Text, \'text\', \'\');\\n }\\n\\n /**\\n * Query for an url\\n * @param state Current state\\n * @returns Url query function\\n */\\n @Selector([ResourceRegistrySelectors.field])\\n static url(getField: FieldQuery): DataQuery {\\n return (id) => getField(id, BuiltinResourceType.Url, \'url\', \'\');\\n }\\n}\\n","properties":[],"description":"

      Selectors for ResourceRegistry

      \\n","rawdescription":"\\nSelectors for ResourceRegistry","methods":[{"name":"anyEntry","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"AnyEntryQuery","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries an entry by id\\n","description":"

      Queries an entry by id

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1315,"end":1320,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1309,"end":1314,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1341,"end":1348,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Any entry query function

      \\n"}]},{"name":"anyText","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":70,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for any text data\\n","description":"

      Query for any text data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1948,"end":1953,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1942,"end":1947,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1974,"end":1981,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Text data query function

      \\n"}]},{"name":"entry","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"EntryQuery","typeParameters":[],"line":37,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries an entry by id and type\\n","description":"

      Queries an entry by id and type

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1055,"end":1060,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1049,"end":1054,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1081,"end":1088,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Entry query function

      \\n"}]},{"name":"field","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"FieldQuery","typeParameters":[],"line":57,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQueries a field of an entry\\n","description":"

      Queries a field of an entry

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'ResourceRegistryState\']"}],"modifierKind":[124],"jsdoctags":[{"name":{"pos":1578,"end":1583,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":1572,"end":1577,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state

      \\n"},{"tagName":{"pos":1604,"end":1611,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A field query function

      \\n"}]},{"name":"markdown","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":92,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for markdown data\\n","description":"

      Query for markdown data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2486,"end":2493,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Markdown data query function

      \\n"}]},{"name":"text","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":102,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for text data\\n","description":"

      Query for text data

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":2790,"end":2797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Text data query function

      \\n"}]},{"name":"url","args":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"DataQuery","typeParameters":[],"line":112,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nQuery for an url\\n","description":"

      Query for an url

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'undefined\']"}],"modifierKind":[124],"jsdoctags":[{"name":"getField","type":"FieldQuery","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":3075,"end":3082,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      Url query function

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"ScopedDestructorSubject","id":"class-ScopedDestructorSubject-c4b53b823f2f6845a68f4b66881cc81070616d6b5124d0d203f80f1eeee060d84d1d05eab91b3a6e833ea4aef93cdf9d68ef0051d58b85ca5101c609dad76a05","file":"injectors/src/lib/on-destroy/destructor-subject.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ReplaySubject } from \'rxjs\';\\n\\n/** Object on which cleanup functions can be registered */\\nexport interface DestructorScope {\\n /**\\n * Register a cleanup function\\n * @param cb Cleanup callback function\\n */\\n onDestroy(cb: () => void): void;\\n}\\n\\n/**\\n * Determines whether an object is destructor scope like\\n * @param obj Value to test\\n * @returns true if the object seems to be a destructor scope, otherwise false\\n */\\nexport function isDestructorScopeLike(obj: unknown): obj is DestructorScope {\\n const isObject = typeof obj === \'object\' && obj !== null;\\n return isObject && \'onDestroy\' in obj && typeof obj.onDestroy === \'function\';\\n}\\n\\n/**\\n * A subject type that is associated with a destructor scope.\\n * When the cleanup function is run the subject emits a single\\n * undefined value and immediately completes\\n */\\nexport class ScopedDestructorSubject extends ReplaySubject {\\n /**\\n * Creates a new subject and attaches cleanup to the destructor scope\\n * @param scope Associated scope\\n */\\n constructor(scope: DestructorScope) {\\n super(1);\\n\\n scope.onDestroy(() => {\\n this.next();\\n this.complete();\\n });\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      Creates a new subject and attaches cleanup to the destructor scope

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"scope","type":"DestructorScope","deprecated":false,"deprecationMessage":""}],"line":27,"rawdescription":"\\n\\nCreates a new subject and attaches cleanup to the destructor scope\\n","jsdoctags":[{"name":{"pos":985,"end":990,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"scope"},"type":"DestructorScope","deprecated":false,"deprecationMessage":"","tagName":{"pos":979,"end":984,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Associated scope

      \\n"}]},"properties":[],"description":"

      A subject type that is associated with a destructor scope.\\nWhen the cleanup function is run the subject emits a single\\nundefined value and immediately completes

      \\n","rawdescription":"\\n\\nA subject type that is associated with a destructor scope.\\nWhen the cleanup function is run the subject emits a single\\nundefined value and immediately completes\\n","methods":[],"indexSignatures":[],"extends":"ReplaySubject","inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"Set","id":"class-Set-bf7759a40e4d0e8e6314490589639d3b7dd6bdcc54fb05fadb475414c800a55e8d35049821318bb00cd59d904882087867195819aead7c752730abddf2833ce1","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ActionGroup } from \'../actions/actions\';\\nimport { StorageId } from \'./storage.model\';\\n\\n/** Base action factory */\\nconst Action = ActionGroup(\'Storage\');\\n\\n/**\\n * Class Set Action for set method\\n */\\nexport class Set extends Action(\'Set\') {\\n /**\\n * constructor class for Set action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n * @param value - type: string - value to be stored with the key\\n */\\n constructor(readonly id: StorageId, readonly key: string, readonly value: string) {\\n super();\\n }\\n}\\n/**\\n * Class Delete Action for delete method\\n */\\nexport class Delete extends Action(\'Delete\') {\\n /**\\n * constructor class for Delete action object\\n * @param id - type: StorageId - Storage identifier\\n * @param key - type: string - Key to be stored in the storage identifier\\n */\\n constructor(readonly id: StorageId, readonly key: string) {\\n super();\\n }\\n}\\n/**\\n * Clear the values stored in the specified StorageId\\n */\\nexport class Clear extends Action(\'Clear\') {\\n /**\\n * constructor class for clear action object\\n * @param id - type: StorageId - Storage identifier\\n */\\n constructor(readonly id: StorageId) {\\n super();\\n }\\n}\\n","constructorObj":{"name":"constructor","description":"

      constructor class for Set action object

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"id","type":"StorageId","deprecated":false,"deprecationMessage":""},{"name":"key","type":"string","deprecated":false,"deprecationMessage":""},{"name":"value","type":"string","deprecated":false,"deprecationMessage":""}],"line":10,"rawdescription":"\\n\\nconstructor class for Set action object\\n","jsdoctags":[{"name":{"pos":310,"end":312,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"StorageId","deprecated":false,"deprecationMessage":"","tagName":{"pos":304,"end":309,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: StorageId - Storage identifier
      • \\n
      \\n"},{"name":{"pos":364,"end":367,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"key"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":358,"end":363,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - Key to be stored in the storage identifier
      • \\n
      \\n"},{"name":{"pos":440,"end":445,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":434,"end":439,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"
        \\n
      • type: string - value to be stored with the key
      • \\n
      \\n"}]},"properties":[],"description":"

      Class Set Action for set method

      \\n","rawdescription":"\\n\\nClass Set Action for set method\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]},{"name":"SnapshotObserver","id":"class-SnapshotObserver-e299315c33d01b7c5b9d7d2f8238209af3dd388427c9dfe124370b0bfb7c5852050237aaa3ca958ccb01cd0160e3e0a8d823189c91a4e0415996d17a10fef041","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { ErrorObserver, NextObserver } from \'rxjs\';\\n\\n/** Object indicating that no error has been emitted */\\nconst NO_ERROR_SENTINEL_OBJ = {};\\n\\n/** Observer storing the latest value from a snapshot stream */\\nexport class SnapshotObserver implements NextObserver, ErrorObserver {\\n /** The latest value */\\n private value?: T = undefined;\\n /** An error value if not equal to `NO_ERROR_SENTINEL` */\\n private errorValue: unknown = NO_ERROR_SENTINEL_OBJ;\\n\\n /**\\n * Gets the latest value or throw on errors\\n * @returns The latest value\\n * @throws If an error has been emitted\\n */\\n get(): T {\\n if (this.errorValue !== NO_ERROR_SENTINEL_OBJ) {\\n throw this.errorValue;\\n }\\n\\n return this.value as T;\\n }\\n\\n /**\\n * Handles value emits\\n * @param value The new value\\n */\\n next(value: T): void {\\n this.value = value;\\n }\\n\\n /**\\n * Handles error emits\\n * @param err The error value\\n */\\n error(err: unknown): void {\\n this.value = undefined;\\n this.errorValue = err;\\n }\\n}\\n","properties":[],"description":"

      Observer storing the latest value from a snapshot stream

      \\n","rawdescription":"\\nObserver storing the latest value from a snapshot stream","methods":[{"name":"error","args":[{"name":"err","type":"","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":38,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nHandles error emits\\n","description":"

      Handles error emits

      \\n","jsdoctags":[{"name":{"pos":895,"end":898,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"err"},"type":"","deprecated":false,"deprecationMessage":"","tagName":{"pos":889,"end":894,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The error value

      \\n"}]},{"name":"get","args":[],"optional":false,"returnType":"T","typeParameters":[],"line":18,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets the latest value or throw on errors\\n","description":"

      Gets the latest value or throw on errors

      \\n","jsdoctags":[{"tagName":{"pos":521,"end":528,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The latest value

      \\n"}]},{"name":"next","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":30,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nHandles value emits\\n","description":"

      Handles value emits

      \\n","jsdoctags":[{"name":{"pos":772,"end":777,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":766,"end":771,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The new value

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[],"implements":["NextObserver","ErrorObserver"]},{"name":"StorageSelectors","id":"class-StorageSelectors-0d938da881e0833812d0d5fc912c373462855e27613ce56879abba3b34f8959431587c9ddcb129155b8908fe5dfe59498c3fcf8f154c461cf4461e749b880df5","file":"state/src/storage/storage.selectors.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"import { Selector } from \'@ngxs/store\';\\nimport { StorageId } from \'./storage.model\';\\nimport { StorageState } from \'./storage.state\';\\n/**\\n * Storage selectors - class for retrieving storage types\\n */\\nexport class StorageSelectors {\\n /**\\n * returns the value stored in the key,value pair in the storageId given\\n * @returns (id,key) of the given storage id else undefined\\n */\\n @Selector([StorageState])\\n static get(): (id: StorageId, key: string) => string | undefined {\\n return (id, key) => StorageState.getStorage(id).getItem(key) ?? undefined;\\n }\\n /**\\n * returns the number of items in the given storage id stored\\n * @returns length of the given StorageId supplied\\n */\\n @Selector([StorageState])\\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\\n // @ts-ignore Allow selector name\\n static length(): (id: StorageId) => number | undefined {\\n return (id) => StorageState.getStorage(id).length;\\n }\\n}\\n","properties":[],"description":"

      Storage selectors - class for retrieving storage types

      \\n","rawdescription":"\\n\\nStorage selectors - class for retrieving storage types\\n","methods":[{"name":"get","args":[],"optional":false,"returnType":"string | undefined","typeParameters":[],"line":13,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nreturns the value stored in the key,value pair in the storageId given\\n","description":"

      returns the value stored in the key,value pair in the storageId given

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'StorageState\']"}],"modifierKind":[124],"jsdoctags":[{"tagName":{"pos":318,"end":325,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      (id,key) of the given storage id else undefined

      \\n"}]},{"name":"length","args":[],"optional":false,"returnType":"number | undefined","typeParameters":[],"line":23,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nreturns the number of items in the given storage id stored\\n","description":"

      returns the number of items in the given storage id stored

      \\n","decorators":[{"name":"Selector","stringifiedArguments":"[\'StorageState\']"}],"modifierKind":[124],"jsdoctags":[{"tagName":{"pos":636,"end":643,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      length of the given StorageId supplied

      \\n"}]}],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]}],"directives":[{"name":"HoverDirective","id":"directive-HoverDirective-09dbb1791c1e8551d99aeb917f0d664e71738bebaebeed4601b7634f7980b675771162be311571667692c787d939ee9eeb40e57b4627c9cd75ebc926e849cc0d","file":"src/lib/hover/hover.directive.ts","type":"directive","description":"

      Hover overlay directive to be used across the application

      \\n","rawdescription":"\\nHover overlay directive to be used across the application","sourceCode":"import { ConnectionPositionPair, Overlay } from \'@angular/cdk/overlay\';\\nimport { TemplatePortal } from \'@angular/cdk/portal\';\\nimport { Directive, ElementRef, HostListener, inject, Input, TemplateRef, ViewContainerRef } from \'@angular/core\';\\n\\n/** Context passed to hover content templates */\\nexport interface HoverContext {\\n /** Data provided by the user for use inside the content template */\\n $implicit: T;\\n}\\n\\n/** Hover overlay directive to be used across the application */\\n@Directive({\\n selector: \'[hraHover]\',\\n standalone: true,\\n})\\nexport class HoverDirective {\\n /** Setter for the content to be displayed in the overlay */\\n @Input(\'hraHover\')\\n set content(content: TemplateRef>) {\\n this.portal = new TemplatePortal(content, this.viewContainerRef, this._data);\\n this.updateContent();\\n }\\n\\n /** Setter for the context that is to be displayed in the portal attached to the overlay */\\n @Input(\'hraHoverData\')\\n set data(data: T) {\\n this._data = { $implicit: data };\\n if (this.portal) {\\n this.portal.context = this._data;\\n this.updateContent();\\n }\\n }\\n\\n /** Reference to the element that the directive is attached to */\\n private readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /** Reference to the overlay that is created when the userhovers over the element along with its position setting */\\n readonly overlayRef = inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n });\\n\\n /** Reference view container that the directive is attached to */\\n private readonly viewContainerRef = inject(ViewContainerRef);\\n\\n /** Store the data that is passed into the data input property */\\n private _data?: HoverContext;\\n\\n /** Portal that is created to display the overlay */\\n portal?: TemplatePortal>;\\n\\n /** Function to handle the mouse over event to attach the portal and display the hover content */\\n @HostListener(\'mouseover\')\\n startHover(): void {\\n const { overlayRef, portal } = this;\\n if (!overlayRef.hasAttached() && portal) {\\n overlayRef.attach(portal);\\n }\\n }\\n\\n /** Function to handle the mouse out event to detach the portal */\\n @HostListener(\'mouseout\')\\n endHover(): void {\\n const { overlayRef } = this;\\n if (overlayRef.hasAttached()) {\\n overlayRef.detach();\\n }\\n }\\n\\n /** Function to handle the updation of overlay with up to date content when the input changes */\\n private updateContent(): void {\\n const { overlayRef, portal } = this;\\n if (overlayRef.hasAttached() && portal) {\\n overlayRef.detach();\\n overlayRef.attach(portal);\\n }\\n }\\n}\\n","selector":"[hraHover]","providers":[],"inputsClass":[{"name":"hraHover","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSetter for the content to be displayed in the overlay","description":"

      Setter for the content to be displayed in the overlay

      \\n","line":19,"type":"TemplateRef>","decorators":[]},{"name":"hraHoverData","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSetter for the context that is to be displayed in the portal attached to the overlay","description":"

      Setter for the context that is to be displayed in the portal attached to the overlay

      \\n","line":26,"type":"T","decorators":[]}],"outputsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[{"name":"mouseout","args":[],"argsDecorator":[],"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse out event to detach the portal","description":"

      Function to handle the mouse out event to detach the portal

      \\n","line":71},{"name":"mouseover","args":[],"argsDecorator":[],"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse over event to attach the portal and display the hover content","description":"

      Function to handle the mouse over event to attach the portal and display the hover content

      \\n","line":62}],"propertiesClass":[{"name":"overlayRef","defaultValue":"inject(Overlay).create({\\n positionStrategy: inject(Overlay)\\n .position()\\n .flexibleConnectedTo(this.el)\\n .withPositions([\\n new ConnectionPositionPair({ originX: \'end\', originY: \'bottom\' }, { overlayX: \'end\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'top\' }, { overlayX: \'start\', overlayY: \'bottom\' }),\\n new ConnectionPositionPair({ originX: \'start\', originY: \'bottom\' }, { overlayX: \'start\', overlayY: \'top\' }),\\n new ConnectionPositionPair({ originX: \'end\', originY: \'top\' }, { overlayX: \'end\', overlayY: \'bottom\' }),\\n ])\\n .withPush(true),\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Reference to the overlay that is created when the userhovers over the element along with its position setting

      \\n","line":38,"rawdescription":"\\nReference to the overlay that is created when the userhovers over the element along with its position setting","modifierKind":[144]},{"name":"portal","deprecated":false,"deprecationMessage":"","type":"TemplatePortal>","optional":true,"description":"

      Portal that is created to display the overlay

      \\n","line":58,"rawdescription":"\\nPortal that is created to display the overlay"}],"methodsClass":[{"name":"endHover","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":71,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse out event to detach the portal","description":"

      Function to handle the mouse out event to detach the portal

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'mouseout\'"}]},{"name":"startHover","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":62,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nFunction to handle the mouse over event to attach the portal and display the hover content","description":"

      Function to handle the mouse over event to attach the portal and display the hover content

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'mouseover\'"}]}],"accessors":{"content":{"name":"content","setSignature":{"name":"content","type":"void","deprecated":false,"deprecationMessage":"","args":[{"name":"content","type":"TemplateRef>","deprecated":false,"deprecationMessage":""}],"returnType":"void","line":19,"rawdescription":"\\nSetter for the content to be displayed in the overlay","description":"

      Setter for the content to be displayed in the overlay

      \\n","jsdoctags":[{"name":"content","type":"TemplateRef>","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}},"data":{"name":"data","setSignature":{"name":"data","type":"void","deprecated":false,"deprecationMessage":"","args":[{"name":"data","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"void","line":26,"rawdescription":"\\nSetter for the context that is to be displayed in the portal attached to the overlay","description":"

      Setter for the context that is to be displayed in the portal attached to the overlay

      \\n","jsdoctags":[{"name":"data","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}}}},{"name":"LinkDirective","id":"directive-LinkDirective-3a72ea9951359ac8c2820ab17b233c7a92ebad446e52761c9694b431a28bc3d08c8fd1d8405a44a840bcdc6b63328cdbda54820dabf5f26d797e1be7d5cd3a23","file":"src/lib/link/link.directive.ts","type":"directive","description":"

      Link Directive for routing

      \\n","rawdescription":"\\nLink Directive for routing","sourceCode":"import { Directive, ElementRef, HostBinding, HostListener, inject, Injector, Input, OnChanges } from \'@angular/core\';\\nimport { ActivatedRoute, Params, QueryParamsHandling, UrlCreationOptions } from \'@angular/router\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { EMPTY_LINK, LinkEntry, LinkRegistryActions, LinkRegistrySelectors, LinkType } from \'@hra-ui/cdk/state\';\\nimport { createExternalUrl, createInternalUrl } from \'@hra-ui/utils\';\\n\\n/** Link Directive for routing */\\n@Directive({\\n selector: \'[hraLink]\',\\n standalone: true,\\n})\\nexport class LinkDirective implements OnChanges {\\n /** linkId with empty string as default value */\\n @Input(\'hraLink\') linkId = EMPTY_LINK;\\n\\n /** Query string parameters */\\n @Input() queryParams?: Params;\\n\\n /** How to handle existing query params */\\n @Input() queryParamsHandling?: QueryParamsHandling;\\n\\n /** Url fragment */\\n @Input() fragment?: string;\\n\\n /** Whether to preserve the existing fragment */\\n @Input() preserveFragment?: boolean;\\n\\n /** Nagivate relative to a route. Only affects internal links. */\\n @Input() relativeTo?: ActivatedRoute;\\n\\n /** href of the element */\\n @HostBinding(\'attr.href\') href?: string;\\n /** rel attribute of the element */\\n @HostBinding(\'attr.rel\') rel?: string;\\n /** target attribute of the element */\\n @HostBinding(\'attr.target\') target?: string;\\n\\n /** Reference to this component\'s injector */\\n private readonly injector = inject(Injector);\\n /** Element tag on which this directive is mounted */\\n private readonly tagName = inject>(ElementRef).nativeElement.tagName.toLowerCase();\\n /** Selector for querying the link registry state */\\n private readonly queryLink = selectQuerySnapshot(LinkRegistrySelectors.query);\\n /** Dispatch action to navigate to a url */\\n private readonly navigate = dispatch(LinkRegistryActions.Navigate);\\n\\n /** Link Entry */\\n private link?: LinkEntry;\\n\\n /** Whether the host element is an anchor */\\n private get isAnchorElement(): boolean {\\n return [\'a\', \'area\'].includes(this.tagName);\\n }\\n\\n /** Whether the host element deals with resource urls */\\n private get isResourceUrl(): boolean {\\n return [\'base\', \'link\'].includes(this.tagName);\\n }\\n\\n /** Collects query params and fragment options into a single object */\\n private get extras(): UrlCreationOptions {\\n const { link } = this;\\n return this.mergeExtras(link?.type === LinkType.Internal ? link.extras : undefined, this);\\n }\\n\\n /** Updates the current link/url based on the inputs */\\n ngOnChanges(): void {\\n this.updateLink();\\n }\\n\\n /**\\n * Triggers when a click action is performed on the element\\n * @param event type of event\\n * @returns true/false based on entry and element\\n */\\n @HostListener(\'click\', [\'$event\'])\\n onClick(event: MouseEvent): boolean {\\n const { link, linkId, isAnchorElement } = this;\\n if (!link) {\\n return true;\\n }\\n\\n if (isAnchorElement) {\\n const { button, ctrlKey, shiftKey, altKey, metaKey } = event;\\n if (link.type === LinkType.External || button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {\\n return true;\\n }\\n }\\n\\n this.navigate(linkId, this.extras);\\n return !isAnchorElement;\\n }\\n\\n /** Updates the link entry and bound attributes */\\n private updateLink(): void {\\n const link = (this.link = this.queryLink(this.linkId));\\n ({ href: this.href, rel: this.rel, target: this.target } = this.getLinkAttributes(link));\\n }\\n\\n /**\\n * Gets the new values for different attributes bound to the host element\\n * @param link Current link entry\\n * @returns New attributes values to bind on the host element\\n */\\n private getLinkAttributes(link?: LinkEntry): { href?: string; rel?: string; target?: string } {\\n const { injector, extras, isResourceUrl } = this;\\n switch (link?.type) {\\n case LinkType.Internal:\\n return { href: createInternalUrl(injector, link.commands, extras, isResourceUrl) };\\n\\n case LinkType.External:\\n return { ...link, href: createExternalUrl(link.url, extras) };\\n\\n default:\\n return {};\\n }\\n }\\n\\n /**\\n * Merges two UrlCreationOptions.\\n * Undefined values in the second set does not override values from the first set.\\n * @param opt1 First set of options\\n * @param opt2 Second set of options\\n * @returns Merged options\\n */\\n private mergeExtras(opt1: UrlCreationOptions | undefined, opt2: UrlCreationOptions): UrlCreationOptions {\\n const result = { ...opt1 };\\n const mergeKey = (key: K) => {\\n if (opt2[key] !== undefined) {\\n result[key] = opt2[key];\\n }\\n };\\n\\n mergeKey(\'queryParams\');\\n mergeKey(\'queryParamsHandling\');\\n mergeKey(\'fragment\');\\n mergeKey(\'preserveFragment\');\\n mergeKey(\'relativeTo\');\\n return result;\\n }\\n}\\n","selector":"[hraLink]","providers":[],"inputsClass":[{"name":"fragment","deprecated":false,"deprecationMessage":"","rawdescription":"\\nUrl fragment","description":"

      Url fragment

      \\n","line":23,"type":"string","decorators":[]},{"name":"hraLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nlinkId with empty string as default value","description":"

      linkId with empty string as default value

      \\n","line":14,"type":"any","decorators":[]},{"name":"preserveFragment","deprecated":false,"deprecationMessage":"","rawdescription":"\\nWhether to preserve the existing fragment","description":"

      Whether to preserve the existing fragment

      \\n","line":26,"type":"boolean","decorators":[]},{"name":"queryParams","deprecated":false,"deprecationMessage":"","rawdescription":"\\nQuery string parameters","description":"

      Query string parameters

      \\n","line":17,"type":"Params","decorators":[]},{"name":"queryParamsHandling","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHow to handle existing query params","description":"

      How to handle existing query params

      \\n","line":20,"type":"QueryParamsHandling","decorators":[]},{"name":"relativeTo","deprecated":false,"deprecationMessage":"","rawdescription":"\\nNagivate relative to a route. Only affects internal links.","description":"

      Nagivate relative to a route. Only affects internal links.

      \\n","line":29,"type":"ActivatedRoute","decorators":[]}],"outputsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[{"name":"attr.href","deprecated":false,"deprecationMessage":"","rawdescription":"\\nhref of the element","description":"

      href of the element

      \\n","line":32,"type":"string","decorators":[]},{"name":"attr.rel","deprecated":false,"deprecationMessage":"","rawdescription":"\\nrel attribute of the element","description":"

      rel attribute of the element

      \\n","line":34,"type":"string","decorators":[]},{"name":"attr.target","deprecated":false,"deprecationMessage":"","rawdescription":"\\ntarget attribute of the element","description":"

      target attribute of the element

      \\n","line":36,"type":"string","decorators":[]}],"hostListeners":[{"name":"click","args":[{"name":"event","type":"MouseEvent","deprecated":false,"deprecationMessage":""}],"argsDecorator":["$event"],"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nTriggers when a click action is performed on the element\\n","description":"

      Triggers when a click action is performed on the element

      \\n","jsdoctags":[{"pos":2659,"end":2691,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":338,"tagName":{"pos":2660,"end":2665,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      type of event

      \\n","name":{"pos":2666,"end":2671,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"event"},"isNameFirst":true,"isBracketed":false},{"pos":2691,"end":2741,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":339,"tagName":{"pos":2692,"end":2699,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true/false based on entry and element

      \\n"}],"line":77}],"propertiesClass":[{"name":"href","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      href of the element

      \\n","line":32,"rawdescription":"\\nhref of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.href\'"}]},{"name":"rel","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      rel attribute of the element

      \\n","line":34,"rawdescription":"\\nrel attribute of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.rel\'"}]},{"name":"target","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      target attribute of the element

      \\n","line":36,"rawdescription":"\\ntarget attribute of the element","decorators":[{"name":"HostBinding","stringifiedArguments":"\'attr.target\'"}]}],"methodsClass":[{"name":"onClick","args":[{"name":"event","type":"MouseEvent","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"boolean","typeParameters":[],"line":77,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nTriggers when a click action is performed on the element\\n","description":"

      Triggers when a click action is performed on the element

      \\n","decorators":[{"name":"HostListener","stringifiedArguments":"\'click\', [\'$event\']"}],"jsdoctags":[{"name":{"pos":2666,"end":2671,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"event"},"type":"MouseEvent","deprecated":false,"deprecationMessage":"","tagName":{"pos":2660,"end":2665,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      type of event

      \\n"},{"tagName":{"pos":2692,"end":2699,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true/false based on entry and element

      \\n"}]}],"implements":["OnChanges"]}],"components":[{"name":"DestroyHostComponent","id":"component-DestroyHostComponent-673df9acfa9566a60f8f4a880379e6b99e54ae5d5ad511c7cd7a96cae5e2bdc436037556a9ad3ca44bdc0a5f74c3a300031212bae7e0df53e349d8e34d30dd92","file":"injectors/src/lib/on-destroy/destroy-host.component.ts","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-destroy-host","styleUrls":[],"styles":[":host { display: none }"],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"el","defaultValue":"inject(ElementRef).nativeElement","deprecated":false,"deprecationMessage":"","type":"Element","optional":false,"description":"

      Reference to own dom element

      \\n","line":14,"rawdescription":"\\nReference to own dom element","modifierKind":[144]}],"methodsClass":[{"name":"create","args":[{"name":"container","type":"ViewContainerRef","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"ComponentRef","typeParameters":[],"line":22,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nCreates a new DestroyHostComponent inside the provided container.\\nThe element is inserted as the first child (index \'0\') in the container.\\n","description":"

      Creates a new DestroyHostComponent inside the provided container.\\nThe element is inserted as the first child (index '0') in the container.

      \\n","modifierKind":[124],"jsdoctags":[{"name":{"pos":661,"end":670,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"container"},"type":"ViewContainerRef","deprecated":false,"deprecationMessage":"","tagName":{"pos":655,"end":660,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      View in which to create the element

      \\n"},{"tagName":{"pos":713,"end":720,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The ComponentRef of the newly inserted element

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component used when attaching destroy lifecycle observables to a component/directive/pipe

      \\n","rawdescription":"\\n\\nComponent used when attaching destroy lifecycle observables to a component/directive/pipe\\n","type":"component","sourceCode":"import { AfterViewInit, Component, ComponentRef, ElementRef, inject, ViewContainerRef } from \'@angular/core\';\\n\\n/**\\n * Component used when attaching destroy lifecycle observables to a component/directive/pipe\\n */\\n@Component({\\n selector: \'hra-destroy-host\',\\n standalone: true,\\n template: \'\',\\n styles: [\':host { display: none }\'],\\n})\\nexport class DestroyHostComponent implements AfterViewInit {\\n /** Reference to own dom element */\\n readonly el: Element = inject(ElementRef).nativeElement;\\n\\n /**\\n * Creates a new DestroyHostComponent inside the provided container.\\n * The element is inserted as the first child (index \'0\') in the container.\\n * @param container View in which to create the element\\n * @returns The ComponentRef of the newly inserted element\\n */\\n static create(container: ViewContainerRef): ComponentRef {\\n return container.createComponent(DestroyHostComponent, { index: 0 });\\n }\\n\\n /** Disconnects the component from the dom tree */\\n ngAfterViewInit(): void {\\n this.el.remove();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":"","stylesData":":host { display: none }\\n","implements":["AfterViewInit"]}],"modules":[{"name":"CdkStateModule","id":"module-CdkStateModule-a93bb19297573c6c6708763b071fc9fb4b27e887170144694df55a5d5749e030c9dd51938c8c23a8844e3888ac2176fede6d8f95d54f41aead08116fa6c152d4","description":"","deprecationMessage":"","deprecated":false,"file":"state/src/state.module.ts","methods":[],"sourceCode":"import { NgModule } from \'@angular/core\';\\nimport { NgxsModule } from \'@ngxs/store\';\\nimport { LinkRegistryState } from \'./link-registry\';\\nimport { ResourceRegistryState } from \'./resource-registry\';\\nimport { StorageState } from \'./storage\';\\n\\n@NgModule({\\n imports: [NgxsModule.forFeature([LinkRegistryState, ResourceRegistryState, StorageState])],\\n})\\nexport class CdkStateModule {}\\n","children":[{"type":"providers","elements":[]},{"type":"declarations","elements":[]},{"type":"imports","elements":[]},{"type":"exports","elements":[]},{"type":"bootstrap","elements":[]},{"type":"classes","elements":[]}]}],"miscellaneous":{"variables":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'LinkRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'ResourceRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'Storage\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"},{"name":"actionTypeRegistry","ctype":"miscellaneous","subtype":"variable","file":"state/src/actions/action-type-registry.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new Set()","rawdescription":"Registry of action types","description":"

      Registry of action types

      \\n"},{"name":"BUILTIN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.discriminatedUnion(\'type\', [MARKDOWN_ENTRY, TEXT_ENTRY, URL_ENTRY])","rawdescription":"Union of all builtin entries","description":"

      Union of all builtin entries

      \\n"},{"name":"BUILTIN_TYPE_VALUES","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"Object.values(RawBuiltinResourceType)","rawdescription":"Builtin type strings as an array","description":"

      Builtin type strings as an array

      \\n"},{"name":"BuiltinResourceType","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"RawBuiltinResourceType as BuiltinTypes","rawdescription":"Builtin resource types","description":"

      Builtin resource types

      \\n"},{"name":"CUSTOM_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({ type: CUSTOM_ENTRY_TYPE }).passthrough()","rawdescription":"Custom entry","description":"

      Custom entry

      \\n"},{"name":"CUSTOM_ENTRY_TYPE","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .refine((val) => !isBuiltinType(val), \'Invalid builtin resource format\')\\n .transform>(createCustomType)","rawdescription":"Custom entry type validator with transformation","description":"

      Custom entry type validator with transformation

      \\n"},{"name":"CUSTOM_TYPE_PREFIX","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"string","defaultValue":"\'custom:\'","rawdescription":"Prefix of all custom types","description":"

      Prefix of all custom types

      \\n"},{"name":"DESTRUCTOR_CACHE","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/on-destroy/on-destroy.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new WeakMap>()","rawdescription":"Cached destructor observables","description":"

      Cached destructor observables

      \\n"},{"name":"EMPTY_LINK","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"createLinkId(\'@@__EMPTY__\')","rawdescription":"Empty link id","description":"

      Empty link id

      \\n"},{"name":"EXTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.External),\\n url: z.string(),\\n rel: z.string().default(\'noopener\'),\\n target: z.string(),\\n })\\n .partial({ rel: true, target: true })","rawdescription":"Type for external link entry","description":"

      Type for external link entry

      \\n"},{"name":"INTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.Internal),\\n commands: z.any().array(),\\n extras: z\\n .object({\\n queryParams: z.record(z.any()).nullable(),\\n fragment: z.string(),\\n queryParamsHandling: z.enum([\'merge\', \'preserve\', \'\']).nullable(),\\n preserveFragment: z.boolean(),\\n onSameUrlNavigation: z.literal(\'reload\'),\\n skipLocationChange: z.boolean(),\\n replaceUrl: z.boolean(),\\n })\\n .partial(),\\n })\\n .partial({ extras: true })","rawdescription":"Type for internal link entry","description":"

      Type for internal link entry

      \\n"},{"name":"LINK_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(\\n z\\n .string()\\n .transform((id) => `LinkId:\'${id}\'`)\\n .brand(\'LinkId\'),\\n z.discriminatedUnion(\'type\', [EXTERNAL_LINK_SCHEMA, INTERNAL_LINK_SCHEMA])\\n)","rawdescription":"Schema for link registry","description":"

      Schema for link registry

      \\n"},{"name":"MARKDOWN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Markdown),\\n markdown: z.string(),\\n})","rawdescription":"Markdown data","description":"

      Markdown data

      \\n"},{"name":"NO_ERROR_SENTINEL_OBJ","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"object","defaultValue":"{}","rawdescription":"Object indicating that no error has been emitted","description":"

      Object indicating that no error has been emitted

      \\n"},{"name":"RESOURCE_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.union([BUILTIN_ENTRY, CUSTOM_ENTRY])","rawdescription":"Builtin or custom entries","description":"

      Builtin or custom entries

      \\n"},{"name":"RESOURCE_ID","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .transform((id) => `ResourceId:\'${id}\'`)\\n .brand(\'ResourceId\')","rawdescription":"Resource identifier validator with transformation","description":"

      Resource identifier validator with transformation

      \\n"},{"name":"RESOURCE_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(RESOURCE_ID, RESOURCE_ENTRY)","rawdescription":"State schema","description":"

      State schema

      \\n"},{"name":"TEXT_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Text),\\n text: z.string(),\\n})","rawdescription":"Text data","description":"

      Text data

      \\n"},{"name":"URL_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Url),\\n url: z.string(),\\n})","rawdescription":"External url","description":"

      External url

      \\n"}],"functions":[{"name":"Action","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new base action with a specified type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":685,"end":689,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":679,"end":684,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type

      \\n"},{"tagName":{"pos":706,"end":713,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A base action class

      \\n"}]},{"name":"ActionGroup","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory that adds a common group string to each action type

      \\n","args":[{"name":"group","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":421,"end":426,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"group"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Common action type group

      \\n"},{"tagName":{"pos":456,"end":463,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An action factory

      \\n"}]},{"name":"assertUniqueActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Asserts that an action type is unique

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":141,"end":145,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":135,"end":140,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"createActionFactory","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory function

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":""}],"returnType":"A","jsdoctags":[{"name":{"pos":500,"end":504,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":494,"end":499,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor

      \\n"},{"name":{"pos":534,"end":543,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","tagName":{"pos":528,"end":533,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Initial bound arguments

      \\n"},{"tagName":{"pos":572,"end":579,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A factory function creating a new action on each call

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>>>","jsdoctags":[{"name":{"pos":4708,"end":4712,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":4702,"end":4707,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"tagName":{"pos":4735,"end":4742,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type with a payload. The payload should be\\nspecified using the {@link payload} function

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""},{"name":"payload","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":5138,"end":5142,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":5132,"end":5137,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"name":{"pos":5171,"end":5178,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"payload"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":5165,"end":5170,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Payload type

      \\n"},{"tagName":{"pos":5032,"end":5039,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"

      const MyResourceType = createCustomType('my-type', payload<{ value: number }>());

      \\n"},{"tagName":{"pos":5196,"end":5203,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Implementation of createCustomType overloads

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createLinkId","file":"state/src/link-registry/link-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      function to createa unique link ids

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"LinkId","jsdoctags":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createResourceId","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new resource identifier

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":4258,"end":4260,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4252,"end":4257,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw identifier

      \\n"},{"tagName":{"pos":4280,"end":4287,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A resource id

      \\n"}]},{"name":"dispatch","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"A","jsdoctags":[{"name":{"pos":1721,"end":1725,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1715,"end":1720,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":1779,"end":1788,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":1773,"end":1778,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":1835,"end":1842,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatch$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.\\nEach call to the wrapper returns an observable that emits the action instance once the\\ndispatch action has completed.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":2426,"end":2430,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":2420,"end":2425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":2484,"end":2493,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2478,"end":2483,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":2540,"end":2547,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatchAction","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns passed actions unchanged

      \\n","args":[],"returnType":"A","jsdoctags":[{"tagName":{"pos":3054,"end":3061,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchAction$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns an observable that emits the passed actions when the dispatch has finished

      \\n","args":[],"returnType":"Observable
      ","jsdoctags":[{"tagName":{"pos":3418,"end":3425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchImpl","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Common dispatch functionality used to implement all dispatch functions

      \\n","args":[{"name":"actionFactory","deprecated":false,"deprecationMessage":""},{"name":"resultHandler","deprecated":false,"deprecationMessage":""}],"returnType":"R","jsdoctags":[{"name":{"pos":976,"end":989,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"actionFactory"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":970,"end":975,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Creates an action or array of actions from the user provided arguments

      \\n"},{"name":{"pos":1071,"end":1084,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"resultHandler"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1065,"end":1070,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Selects the output value from the action and the dispatch observable

      \\n"},{"tagName":{"pos":1158,"end":1165,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new dispatch function taking user arguments, dispatches actions, and returns a value

      \\n"}]},{"name":"findDestructorScope","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds the nearest destructor scope object in the current injection context

      \\n","args":[],"returnType":"DestructorScope","jsdoctags":[{"tagName":{"pos":1267,"end":1274,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The scope on which cleanup can be attached

      \\n"}]},{"name":"findStableKeyObject","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds a stable object in the current injection context to be\\nused as a key in the destructor cache

      \\n","args":[],"returnType":"object","jsdoctags":[{"tagName":{"pos":912,"end":919,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An object

      \\n"}]},{"name":"firstDefinedValue","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Get the first defined value returned by a generator

      \\n","args":[{"name":"genFn","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":441,"end":446,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"genFn"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":435,"end":440,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Generator function taking no arguments

      \\n"},{"tagName":{"pos":490,"end":497,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The first non-null value

      \\n"}]},{"name":"getEntry","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Internal helper function for getting an entry from the state

      \\n","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""},{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"type","type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"T | undefined","jsdoctags":[{"name":{"pos":5670,"end":5675,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":5664,"end":5669,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state snapshot

      \\n"},{"name":{"pos":5709,"end":5711,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":5703,"end":5708,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":5734,"end":5738,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":5728,"end":5733,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional entry type

      \\n"},{"tagName":{"pos":5763,"end":5770,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The entry object it exists and has the correct type, otherwise undefined

      \\n"}]},{"name":"identity","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Identity function returning the first argument passed

      \\n","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"injectDestroy$","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Inject an observable that emits and completes at the same time as the component, directive, pipe, or service\\nit is injected into. It can be used to control the lifetime of other observables using\\nthe takeUntil pipe, and to build other complex injection functions.

      \\n

      Caveats:

      \\n
        \\n
      • There are NO guarantees about whether the returned observable will emit and complete\\nbefore or after the regular ngOnDestroy lifecycle hook
      • \\n
      • For root and module level services the observable may never complete unless\\nthe containing module is explicitly destroyed, so don't rely on it for important operations
      • \\n
      • Components, directives, pipe, and services that manipulate the ViewContainerRef MUST\\ntake care to maintain the view controlling the lifecycle of the observable. Failure\\nto do so may result in early emit and completion of the returned observable
      • \\n
      \\n

      Based on comment on https://github.com/angular/angular/issues/10185\\nMostly https://github.com/angular/angular/issues/10185#issuecomment-1165545544 and\\nhttps://github.com/angular/angular/issues/10185#issuecomment-1199063426

      \\n","args":[],"returnType":"Observable","jsdoctags":[{"tagName":{"pos":2694,"end":2701,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that emits and completes when the component/directive/etc. is destroyed

      \\n"}]},{"name":"isBuiltinType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type string has builtin support

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":3572,"end":3576,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3566,"end":3571,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3597,"end":3604,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is one of the builtin types, otherwise false

      \\n"}]},{"name":"isCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type is a custom resource type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":3881,"end":3885,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3875,"end":3880,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3906,"end":3913,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is a custom type, otherwise false

      \\n"}]},{"name":"isDestructorScopeLike","file":"injectors/src/lib/on-destroy/destructor-subject.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether an object is destructor scope like

      \\n","args":[{"name":"obj","deprecated":false,"deprecationMessage":""}],"returnType":"DestructorScope","jsdoctags":[{"name":{"pos":328,"end":331,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"obj"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":322,"end":327,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Value to test

      \\n"},{"tagName":{"pos":350,"end":357,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true if the object seems to be a destructor scope, otherwise false

      \\n"}]},{"name":"markForCheck","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Marks a view for change detection whenever a new value is emitted

      \\n","args":[{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"MonoTypeOperatorFunction","jsdoctags":[{"name":{"pos":689,"end":696,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":683,"end":688,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options to explicitly disable marking

      \\n"},{"tagName":{"pos":739,"end":746,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A rxjs operator

      \\n"}]},{"name":"payload","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Helper function used to specify the payload format when creating custom types

      \\n","args":[],"returnType":"ResourceEntryPayload","jsdoctags":[{"tagName":{"pos":4477,"end":4484,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A custom payload type

      \\n"}]},{"name":"pipeActionInstance","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Maps all emits to an action value

      \\n","args":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":""},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":""}],"returnType":"Observable","jsdoctags":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"registerActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Registers an action type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":421,"end":425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"select$","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an observable emitting parts of the state. The observable's lifetime\\nis automatically tied to the injection context where this is called.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":1313,"end":1321,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":1307,"end":1312,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State selection function or token

      \\n"},{"name":{"pos":1366,"end":1373,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1360,"end":1365,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Additional select options

      \\n"},{"tagName":{"pos":1404,"end":1411,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable of the selected state

      \\n"}]},{"name":"selectQuerySnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that can be called with the same arguments as the query selector\\nand returns the latest value each time. Automatically marks components, directives, or pipes\\nfor change detection whenever a new value is available. Note that since typescript has yet to\\nimplement support for higher order generics there is sometimes a need to specialize the\\nreturned query function with the correct arguments and return type. This can be done as shown\\nin the examples.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"SelectQuery","jsdoctags":[{"name":{"pos":2433,"end":2441,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":2427,"end":2432,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store query selector

      \\n"},{"name":{"pos":2473,"end":2482,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2467,"end":2472,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional bound query arguments

      \\n"},{"tagName":{"pos":1631,"end":1638,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Basic usage\\nclass Component {\\n...\\n// Return type: () => string\\nreadonly markdown = querySelectSnapshot(ResourceRegistrySelectors.markdown, id);\\n// Return type: (id: ResourceId) => string\\nreadonly markdownById = querySelectSnapshot(ResourceRegistrySelectors.markdown);\\n...\\n}"},{"tagName":{"pos":1975,"end":1982,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Specialize query arguments and/or return type\\nclass Component {\\n...\\n// Return type: () => number[]\\nreadonly points = querySelectSnapshot(ResourceRegistrySelectors.field, id, type, \'points\', []);\\n// Return type: (field: string, defaultValue: string) => string\\nreadonly getStringField = querySelectSnapshot(ResourceRegistrySelectors.field, id, type);\\n}"},{"tagName":{"pos":2518,"end":2525,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function taking the same arguments as the query selector (excluding bound arguments)

      \\n"}]},{"name":"selectSnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that returns the latest snapshot value each time it is called\\nAutomatically marks components, directives, or pipes for change detection whenever\\na new value is available

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":819,"end":827,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":813,"end":818,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store data selector

      \\n"},{"tagName":{"pos":852,"end":859,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function

      \\n"}]}],"typealiases":[{"name":"AnyEntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.anyEntry}

      \\n","kind":178},{"name":"BuiltinTypes","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Maps raw builtin type strings to ResourceType

      \\n","kind":194},{"name":"CustomResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Typed custom resource entry

      \\n","kind":187},{"name":"CustomResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":" `custom:${T}`","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Custom entry types

      \\n","kind":197},{"name":"DataQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for resource data

      \\n","kind":178},{"name":"EntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.entry}

      \\n","kind":178},{"name":"ExternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for external link entry

      \\n","kind":177},{"name":"ExtractBuiltinEntryType","ctype":"miscellaneous","subtype":"typealias","rawtype":"UnionMember | type | T>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Extracts the builtin entry with type T

      \\n","kind":177},{"name":"FieldQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.field}

      \\n","kind":178},{"name":"InternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for internal link entry

      \\n","kind":177},{"name":"LinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      entry for link registry

      \\n","kind":177},{"name":"LinkId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type for unique identifier for link

      \\n","kind":177},{"name":"LinkRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for State Context of LinkRegistry

      \\n","kind":177},{"name":"LinkRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for LinkRegistry State

      \\n","kind":177},{"name":"LinkRegistryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/link-registry/link-registry.state.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for link entry optionally with type specified

      \\n","kind":178},{"name":"ResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Any resource entry

      \\n","kind":177},{"name":"ResourceEntryPayload","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Payload type used when creating custom types

      \\n","kind":187},{"name":"ResourceId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource identifier

      \\n","kind":177},{"name":"ResourceRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Context type for action handlers

      \\n","kind":177},{"name":"ResourceRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State data model

      \\n","kind":177},{"name":"ResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource type string with entry typings

      \\n","kind":187},{"name":"RestArgs","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Get remaining arguments after applying bound arguments

      \\n","kind":188},{"name":"SelectQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Function type returned by {@link selectQuerySnapshot}

      \\n","kind":178},{"name":"StateSelector","ctype":"miscellaneous","subtype":"typealias","rawtype":" | StateToken","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","description":"

      Selector type for select style functions

      \\n","kind":186},{"name":"StorageContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Helper alias for action handler's ctx argument

      \\n","kind":177},{"name":"StorageModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"Record","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type alias for the array of Storage objects

      \\n","kind":177}],"enumerations":[{"name":"LinkType","childs":[{"name":"Internal","deprecated":false,"deprecationMessage":"","value":"internal"},{"name":"External","deprecated":false,"deprecationMessage":"","value":"external"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Types for Link

      \\n","file":"state/src/link-registry/link-registry.model.ts"},{"name":"RawBuiltinResourceType","childs":[{"name":"Markdown","deprecated":false,"deprecationMessage":"","value":"markdown"},{"name":"Text","deprecated":false,"deprecationMessage":"","value":"text"},{"name":"Url","deprecated":false,"deprecationMessage":"","value":"url"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Raw builtin type strings

      \\n","file":"state/src/resource-registry/resource-registry.model.ts"},{"name":"StorageId","childs":[{"name":"Local","deprecated":false,"deprecationMessage":"","value":"local"},{"name":"Session","deprecated":false,"deprecationMessage":"","value":"session"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      StorageId - enum with values as Local, Session - identifier for storage types

      \\n","file":"state/src/storage/storage.model.ts"}],"groupedVariables":{"state/src/link-registry/link-registry.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'LinkRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/resource-registry/resource-registry.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'ResourceRegistry\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/storage/storage.actions.ts":[{"name":"Action","ctype":"miscellaneous","subtype":"variable","file":"state/src/storage/storage.actions.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"ActionGroup(\'Storage\')","rawdescription":"Base action factory","description":"

      Base action factory

      \\n"}],"state/src/actions/action-type-registry.ts":[{"name":"actionTypeRegistry","ctype":"miscellaneous","subtype":"variable","file":"state/src/actions/action-type-registry.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new Set()","rawdescription":"Registry of action types","description":"

      Registry of action types

      \\n"}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"BUILTIN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.discriminatedUnion(\'type\', [MARKDOWN_ENTRY, TEXT_ENTRY, URL_ENTRY])","rawdescription":"Union of all builtin entries","description":"

      Union of all builtin entries

      \\n"},{"name":"BUILTIN_TYPE_VALUES","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"Object.values(RawBuiltinResourceType)","rawdescription":"Builtin type strings as an array","description":"

      Builtin type strings as an array

      \\n"},{"name":"BuiltinResourceType","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"RawBuiltinResourceType as BuiltinTypes","rawdescription":"Builtin resource types","description":"

      Builtin resource types

      \\n"},{"name":"CUSTOM_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({ type: CUSTOM_ENTRY_TYPE }).passthrough()","rawdescription":"Custom entry","description":"

      Custom entry

      \\n"},{"name":"CUSTOM_ENTRY_TYPE","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .refine((val) => !isBuiltinType(val), \'Invalid builtin resource format\')\\n .transform>(createCustomType)","rawdescription":"Custom entry type validator with transformation","description":"

      Custom entry type validator with transformation

      \\n"},{"name":"CUSTOM_TYPE_PREFIX","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"string","defaultValue":"\'custom:\'","rawdescription":"Prefix of all custom types","description":"

      Prefix of all custom types

      \\n"},{"name":"MARKDOWN_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Markdown),\\n markdown: z.string(),\\n})","rawdescription":"Markdown data","description":"

      Markdown data

      \\n"},{"name":"RESOURCE_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.union([BUILTIN_ENTRY, CUSTOM_ENTRY])","rawdescription":"Builtin or custom entries","description":"

      Builtin or custom entries

      \\n"},{"name":"RESOURCE_ID","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .string()\\n .transform((id) => `ResourceId:\'${id}\'`)\\n .brand(\'ResourceId\')","rawdescription":"Resource identifier validator with transformation","description":"

      Resource identifier validator with transformation

      \\n"},{"name":"RESOURCE_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(RESOURCE_ID, RESOURCE_ENTRY)","rawdescription":"State schema","description":"

      State schema

      \\n"},{"name":"TEXT_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Text),\\n text: z.string(),\\n})","rawdescription":"Text data","description":"

      Text data

      \\n"},{"name":"URL_ENTRY","ctype":"miscellaneous","subtype":"variable","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.object({\\n type: z.literal(RawBuiltinResourceType.Url),\\n url: z.string(),\\n})","rawdescription":"External url","description":"

      External url

      \\n"}],"injectors/src/lib/on-destroy/on-destroy.ts":[{"name":"DESTRUCTOR_CACHE","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/on-destroy/on-destroy.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"new WeakMap>()","rawdescription":"Cached destructor observables","description":"

      Cached destructor observables

      \\n"}],"state/src/link-registry/link-registry.model.ts":[{"name":"EMPTY_LINK","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"createLinkId(\'@@__EMPTY__\')","rawdescription":"Empty link id","description":"

      Empty link id

      \\n"},{"name":"EXTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.External),\\n url: z.string(),\\n rel: z.string().default(\'noopener\'),\\n target: z.string(),\\n })\\n .partial({ rel: true, target: true })","rawdescription":"Type for external link entry","description":"

      Type for external link entry

      \\n"},{"name":"INTERNAL_LINK_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z\\n .object({\\n type: z.literal(LinkType.Internal),\\n commands: z.any().array(),\\n extras: z\\n .object({\\n queryParams: z.record(z.any()).nullable(),\\n fragment: z.string(),\\n queryParamsHandling: z.enum([\'merge\', \'preserve\', \'\']).nullable(),\\n preserveFragment: z.boolean(),\\n onSameUrlNavigation: z.literal(\'reload\'),\\n skipLocationChange: z.boolean(),\\n replaceUrl: z.boolean(),\\n })\\n .partial(),\\n })\\n .partial({ extras: true })","rawdescription":"Type for internal link entry","description":"

      Type for internal link entry

      \\n"},{"name":"LINK_REGISTRY_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(\\n z\\n .string()\\n .transform((id) => `LinkId:\'${id}\'`)\\n .brand(\'LinkId\'),\\n z.discriminatedUnion(\'type\', [EXTERNAL_LINK_SCHEMA, INTERNAL_LINK_SCHEMA])\\n)","rawdescription":"Schema for link registry","description":"

      Schema for link registry

      \\n"}],"injectors/src/lib/select/snapshot-observer.ts":[{"name":"NO_ERROR_SENTINEL_OBJ","ctype":"miscellaneous","subtype":"variable","file":"injectors/src/lib/select/snapshot-observer.ts","deprecated":false,"deprecationMessage":"","type":"object","defaultValue":"{}","rawdescription":"Object indicating that no error has been emitted","description":"

      Object indicating that no error has been emitted

      \\n"}]},"groupedFunctions":{"state/src/actions/actions.ts":[{"name":"Action","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new base action with a specified type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":685,"end":689,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":679,"end":684,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type

      \\n"},{"tagName":{"pos":706,"end":713,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A base action class

      \\n"}]},{"name":"ActionGroup","file":"state/src/actions/actions.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory that adds a common group string to each action type

      \\n","args":[{"name":"group","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ActionConstructor","jsdoctags":[{"name":{"pos":421,"end":426,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"group"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Common action type group

      \\n"},{"tagName":{"pos":456,"end":463,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An action factory

      \\n"}]}],"state/src/actions/action-type-registry.ts":[{"name":"assertUniqueActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Asserts that an action type is unique

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":141,"end":145,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":135,"end":140,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]},{"name":"registerActionType","file":"state/src/actions/action-type-registry.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Registers an action type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"void","jsdoctags":[{"name":{"pos":421,"end":425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":415,"end":420,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action type string

      \\n"}]}],"injectors/src/lib/dispatch/dispatch.ts":[{"name":"createActionFactory","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an action factory function

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":""}],"returnType":"A","jsdoctags":[{"name":{"pos":500,"end":504,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":494,"end":499,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor

      \\n"},{"name":{"pos":534,"end":543,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","tagName":{"pos":528,"end":533,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Initial bound arguments

      \\n"},{"tagName":{"pos":572,"end":579,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A factory function creating a new action on each call

      \\n"}]},{"name":"dispatch","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"A","jsdoctags":[{"name":{"pos":1721,"end":1725,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1715,"end":1720,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":1779,"end":1788,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":1773,"end":1778,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":1835,"end":1842,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatch$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Wraps an action constructor with automatic dispatching on each call to the function.\\nEach call to the wrapper returns an observable that emits the action instance once the\\ndispatch action has completed.

      \\n","args":[{"name":"type","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"Observable
      ","jsdoctags":[{"name":{"pos":2426,"end":2430,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":2420,"end":2425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Action constructor to create new instances

      \\n"},{"name":{"pos":2484,"end":2493,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2478,"end":2483,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Bound arguments to the action constructor

      \\n"},{"tagName":{"pos":2540,"end":2547,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches an action on the store each time it is called

      \\n"}]},{"name":"dispatchAction","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns passed actions unchanged

      \\n","args":[],"returnType":"A","jsdoctags":[{"tagName":{"pos":3054,"end":3061,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchAction$","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a callback that can dispatch any action or array of actions.\\nEach call returns an observable that emits the passed actions when the dispatch has finished

      \\n","args":[],"returnType":"Observable
      ","jsdoctags":[{"tagName":{"pos":3418,"end":3425,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A function that dispatches actions on the store each time it is called

      \\n"}]},{"name":"dispatchImpl","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Common dispatch functionality used to implement all dispatch functions

      \\n","args":[{"name":"actionFactory","deprecated":false,"deprecationMessage":""},{"name":"resultHandler","deprecated":false,"deprecationMessage":""}],"returnType":"R","jsdoctags":[{"name":{"pos":976,"end":989,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"actionFactory"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":970,"end":975,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Creates an action or array of actions from the user provided arguments

      \\n"},{"name":{"pos":1071,"end":1084,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"resultHandler"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":1065,"end":1070,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Selects the output value from the action and the dispatch observable

      \\n"},{"tagName":{"pos":1158,"end":1165,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new dispatch function taking user arguments, dispatches actions, and returns a value

      \\n"}]},{"name":"identity","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Identity function returning the first argument passed

      \\n","args":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":"value","type":"T","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"pipeActionInstance","file":"injectors/src/lib/dispatch/dispatch.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Maps all emits to an action value

      \\n","args":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":""},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":""}],"returnType":"Observable
      ","jsdoctags":[{"name":"action","type":"A","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"obs$","type":"Observable","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>>>","jsdoctags":[{"name":{"pos":4708,"end":4712,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":4702,"end":4707,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"tagName":{"pos":4735,"end":4742,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a custom resource type with a payload. The payload should be\\nspecified using the {@link payload} function

      \\n","args":[{"name":"type","type":"T","deprecated":false,"deprecationMessage":""},{"name":"payload","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":5138,"end":5142,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":5132,"end":5137,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw resource type

      \\n"},{"name":{"pos":5171,"end":5178,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"payload"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":5165,"end":5170,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Payload type

      \\n"},{"tagName":{"pos":5032,"end":5039,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"

      const MyResourceType = createCustomType('my-type', payload<{ value: number }>());

      \\n"},{"tagName":{"pos":5196,"end":5203,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A new resource type

      \\n"}]},{"name":"createCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Implementation of createCustomType overloads

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]},{"name":"createResourceId","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates a new resource identifier

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":4258,"end":4260,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4252,"end":4257,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Raw identifier

      \\n"},{"tagName":{"pos":4280,"end":4287,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A resource id

      \\n"}]},{"name":"getEntry","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Internal helper function for getting an entry from the state

      \\n","args":[{"name":"state","type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":""},{"name":"id","type":"ResourceId","deprecated":false,"deprecationMessage":""},{"name":"type","type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"T | undefined","jsdoctags":[{"name":{"pos":5670,"end":5675,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"state"},"type":"ResourceRegistryModel","deprecated":false,"deprecationMessage":"","tagName":{"pos":5664,"end":5669,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Current state snapshot

      \\n"},{"name":{"pos":5709,"end":5711,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"id"},"type":"ResourceId","deprecated":false,"deprecationMessage":"","tagName":{"pos":5703,"end":5708,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Resource id

      \\n"},{"name":{"pos":5734,"end":5738,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"ResourceType","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":5728,"end":5733,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional entry type

      \\n"},{"tagName":{"pos":5763,"end":5770,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The entry object it exists and has the correct type, otherwise undefined

      \\n"}]},{"name":"isBuiltinType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type string has builtin support

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"jsdoctags":[{"name":{"pos":3572,"end":3576,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3566,"end":3571,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3597,"end":3604,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is one of the builtin types, otherwise false

      \\n"}]},{"name":"isCustomType","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether a type is a custom resource type

      \\n","args":[{"name":"type","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"ResourceType>","jsdoctags":[{"name":{"pos":3881,"end":3885,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"originalKeywordKind":151,"escapedText":"type"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3875,"end":3880,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      The type string

      \\n"},{"tagName":{"pos":3906,"end":3913,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      True if type is a custom type, otherwise false

      \\n"}]},{"name":"payload","file":"state/src/resource-registry/resource-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Helper function used to specify the payload format when creating custom types

      \\n","args":[],"returnType":"ResourceEntryPayload","jsdoctags":[{"tagName":{"pos":4477,"end":4484,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A custom payload type

      \\n"}]}],"state/src/link-registry/link-registry.model.ts":[{"name":"createLinkId","file":"state/src/link-registry/link-registry.model.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      function to createa unique link ids

      \\n","args":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":""}],"returnType":"LinkId","jsdoctags":[{"name":"id","type":"string","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"injectors/src/lib/on-destroy/on-destroy.ts":[{"name":"findDestructorScope","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds the nearest destructor scope object in the current injection context

      \\n","args":[],"returnType":"DestructorScope","jsdoctags":[{"tagName":{"pos":1267,"end":1274,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The scope on which cleanup can be attached

      \\n"}]},{"name":"findStableKeyObject","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Finds a stable object in the current injection context to be\\nused as a key in the destructor cache

      \\n","args":[],"returnType":"object","jsdoctags":[{"tagName":{"pos":912,"end":919,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An object

      \\n"}]},{"name":"firstDefinedValue","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Get the first defined value returned by a generator

      \\n","args":[{"name":"genFn","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":441,"end":446,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"genFn"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":435,"end":440,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Generator function taking no arguments

      \\n"},{"tagName":{"pos":490,"end":497,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      The first non-null value

      \\n"}]},{"name":"injectDestroy$","file":"injectors/src/lib/on-destroy/on-destroy.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Inject an observable that emits and completes at the same time as the component, directive, pipe, or service\\nit is injected into. It can be used to control the lifetime of other observables using\\nthe takeUntil pipe, and to build other complex injection functions.

      \\n

      Caveats:

      \\n
        \\n
      • There are NO guarantees about whether the returned observable will emit and complete\\nbefore or after the regular ngOnDestroy lifecycle hook
      • \\n
      • For root and module level services the observable may never complete unless\\nthe containing module is explicitly destroyed, so don't rely on it for important operations
      • \\n
      • Components, directives, pipe, and services that manipulate the ViewContainerRef MUST\\ntake care to maintain the view controlling the lifecycle of the observable. Failure\\nto do so may result in early emit and completion of the returned observable
      • \\n
      \\n

      Based on comment on https://github.com/angular/angular/issues/10185\\nMostly https://github.com/angular/angular/issues/10185#issuecomment-1165545544 and\\nhttps://github.com/angular/angular/issues/10185#issuecomment-1199063426

      \\n","args":[],"returnType":"Observable","jsdoctags":[{"tagName":{"pos":2694,"end":2701,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable that emits and completes when the component/directive/etc. is destroyed

      \\n"}]}],"injectors/src/lib/on-destroy/destructor-subject.ts":[{"name":"isDestructorScopeLike","file":"injectors/src/lib/on-destroy/destructor-subject.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Determines whether an object is destructor scope like

      \\n","args":[{"name":"obj","deprecated":false,"deprecationMessage":""}],"returnType":"DestructorScope","jsdoctags":[{"name":{"pos":328,"end":331,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"obj"},"deprecated":false,"deprecationMessage":"","tagName":{"pos":322,"end":327,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Value to test

      \\n"},{"tagName":{"pos":350,"end":357,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      true if the object seems to be a destructor scope, otherwise false

      \\n"}]}],"injectors/src/lib/select/select.ts":[{"name":"markForCheck","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Marks a view for change detection whenever a new value is emitted

      \\n","args":[{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"MonoTypeOperatorFunction","jsdoctags":[{"name":{"pos":689,"end":696,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":683,"end":688,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Options to explicitly disable marking

      \\n"},{"tagName":{"pos":739,"end":746,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A rxjs operator

      \\n"}]},{"name":"select$","file":"injectors/src/lib/select/select.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Creates an observable emitting parts of the state. The observable's lifetime\\nis automatically tied to the injection context where this is called.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"options","type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true}],"returnType":"Observable","jsdoctags":[{"name":{"pos":1313,"end":1321,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":1307,"end":1312,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State selection function or token

      \\n"},{"name":{"pos":1366,"end":1373,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"options"},"type":"SelectOptions","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"pos":1360,"end":1365,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Additional select options

      \\n"},{"tagName":{"pos":1404,"end":1411,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      An observable of the selected state

      \\n"}]}],"injectors/src/lib/select/select-snapshot.ts":[{"name":"selectQuerySnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that can be called with the same arguments as the query selector\\nand returns the latest value each time. Automatically marks components, directives, or pipes\\nfor change detection whenever a new value is available. Note that since typescript has yet to\\nimplement support for higher order generics there is sometimes a need to specialize the\\nreturned query function with the correct arguments and return type. This can be done as shown\\nin the examples.

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""},{"name":"boundArgs","type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true}],"returnType":"SelectQuery","jsdoctags":[{"name":{"pos":2433,"end":2441,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":2427,"end":2432,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store query selector

      \\n"},{"name":{"pos":2473,"end":2482,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"boundArgs"},"type":"BoundArgs","deprecated":false,"deprecationMessage":"","dotDotDotToken":true,"tagName":{"pos":2467,"end":2472,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Optional bound query arguments

      \\n"},{"tagName":{"pos":1631,"end":1638,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Basic usage\\nclass Component {\\n...\\n// Return type: () => string\\nreadonly markdown = querySelectSnapshot(ResourceRegistrySelectors.markdown, id);\\n// Return type: (id: ResourceId) => string\\nreadonly markdownById = querySelectSnapshot(ResourceRegistrySelectors.markdown);\\n...\\n}"},{"tagName":{"pos":1975,"end":1982,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"example"},"comment":"Specialize query arguments and/or return type\\nclass Component {\\n...\\n// Return type: () => number[]\\nreadonly points = querySelectSnapshot(ResourceRegistrySelectors.field, id, type, \'points\', []);\\n// Return type: (field: string, defaultValue: string) => string\\nreadonly getStringField = querySelectSnapshot(ResourceRegistrySelectors.field, id, type);\\n}"},{"tagName":{"pos":2518,"end":2525,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function taking the same arguments as the query selector (excluding bound arguments)

      \\n"}]},{"name":"selectSnapshot","file":"injectors/src/lib/select/select-snapshot.ts","ctype":"miscellaneous","subtype":"function","deprecated":false,"deprecationMessage":"","description":"

      Injects a function that returns the latest snapshot value each time it is called\\nAutomatically marks components, directives, or pipes for change detection whenever\\na new value is available

      \\n","args":[{"name":"selector","type":"StateSelector","deprecated":false,"deprecationMessage":""}],"returnType":"T","jsdoctags":[{"name":{"pos":819,"end":827,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"selector"},"type":"StateSelector","deprecated":false,"deprecationMessage":"","tagName":{"pos":813,"end":818,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Store data selector

      \\n"},{"tagName":{"pos":852,"end":859,"flags":4194304,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      A snapshot function

      \\n"}]}]},"groupedEnumerations":{"state/src/link-registry/link-registry.model.ts":[{"name":"LinkType","childs":[{"name":"Internal","deprecated":false,"deprecationMessage":"","value":"internal"},{"name":"External","deprecated":false,"deprecationMessage":"","value":"external"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Types for Link

      \\n","file":"state/src/link-registry/link-registry.model.ts"}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"RawBuiltinResourceType","childs":[{"name":"Markdown","deprecated":false,"deprecationMessage":"","value":"markdown"},{"name":"Text","deprecated":false,"deprecationMessage":"","value":"text"},{"name":"Url","deprecated":false,"deprecationMessage":"","value":"url"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      Raw builtin type strings

      \\n","file":"state/src/resource-registry/resource-registry.model.ts"}],"state/src/storage/storage.model.ts":[{"name":"StorageId","childs":[{"name":"Local","deprecated":false,"deprecationMessage":"","value":"local"},{"name":"Session","deprecated":false,"deprecationMessage":"","value":"session"}],"ctype":"miscellaneous","subtype":"enum","deprecated":false,"deprecationMessage":"","description":"

      StorageId - enum with values as Local, Session - identifier for storage types

      \\n","file":"state/src/storage/storage.model.ts"}]},"groupedTypeAliases":{"state/src/resource-registry/resource-registry.selectors.ts":[{"name":"AnyEntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.anyEntry}

      \\n","kind":178},{"name":"DataQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for resource data

      \\n","kind":178},{"name":"EntryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.entry}

      \\n","kind":178},{"name":"FieldQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/resource-registry/resource-registry.selectors.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function returned by {@link ResourceRegistrySelectors.field}

      \\n","kind":178}],"state/src/resource-registry/resource-registry.model.ts":[{"name":"BuiltinTypes","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Maps raw builtin type strings to ResourceType

      \\n","kind":194},{"name":"CustomResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Typed custom resource entry

      \\n","kind":187},{"name":"CustomResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":" `custom:${T}`","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Custom entry types

      \\n","kind":197},{"name":"ExtractBuiltinEntryType","ctype":"miscellaneous","subtype":"typealias","rawtype":"UnionMember | type | T>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Extracts the builtin entry with type T

      \\n","kind":177},{"name":"ResourceEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Any resource entry

      \\n","kind":177},{"name":"ResourceEntryPayload","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Payload type used when creating custom types

      \\n","kind":187},{"name":"ResourceId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource identifier

      \\n","kind":177},{"name":"ResourceRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Context type for action handlers

      \\n","kind":177},{"name":"ResourceRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State data model

      \\n","kind":177},{"name":"ResourceType","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"state/src/resource-registry/resource-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Resource type string with entry typings

      \\n","kind":187}],"state/src/link-registry/link-registry.model.ts":[{"name":"ExternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for external link entry

      \\n","kind":177},{"name":"InternalLinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for internal link entry

      \\n","kind":177},{"name":"LinkEntry","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      entry for link registry

      \\n","kind":177},{"name":"LinkId","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type for unique identifier for link

      \\n","kind":177},{"name":"LinkRegistryContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      type for State Context of LinkRegistry

      \\n","kind":177},{"name":"LinkRegistryModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"state/src/link-registry/link-registry.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for LinkRegistry State

      \\n","kind":177}],"state/src/link-registry/link-registry.state.ts":[{"name":"LinkRegistryQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"state/src/link-registry/link-registry.state.ts","deprecated":false,"deprecationMessage":"","description":"

      Query function for link entry optionally with type specified

      \\n","kind":178}],"injectors/src/lib/select/select-snapshot.ts":[{"name":"RestArgs","ctype":"miscellaneous","subtype":"typealias","rawtype":"","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Get remaining arguments after applying bound arguments

      \\n","kind":188},{"name":"SelectQuery","ctype":"miscellaneous","subtype":"typealias","rawtype":"function","file":"injectors/src/lib/select/select-snapshot.ts","deprecated":false,"deprecationMessage":"","description":"

      Function type returned by {@link selectQuerySnapshot}

      \\n","kind":178}],"injectors/src/lib/select/select.ts":[{"name":"StateSelector","ctype":"miscellaneous","subtype":"typealias","rawtype":" | StateToken","file":"injectors/src/lib/select/select.ts","deprecated":false,"deprecationMessage":"","description":"

      Selector type for select style functions

      \\n","kind":186}],"state/src/storage/storage.model.ts":[{"name":"StorageContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Helper alias for action handler's ctx argument

      \\n","kind":177},{"name":"StorageModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"Record","file":"state/src/storage/storage.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Type alias for the array of Storage objects

      \\n","kind":177}]}}}')},"./dist/compodoc/components-atoms/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"GradientPoint","id":"interface-GradientPoint-deca5c57881562b1c16d34b446006d52194dfce42a4093fe366ac3fcbeaf7291e08172915aac95fc2938e856084da0fe61a29b9897eb6da4ca9edd58116c7198","file":"src/lib/gradient-legend/gradient-legend.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** An interface of gradient colors along with their percentages for the gradient bar. */\\nexport interface GradientPoint {\\n /** Gradient color at a specific percentage */\\n color: string;\\n /** Percentage point along the gradient bar */\\n percentage: number;\\n}\\n\\n/** Gradient legend for biomarkers */\\n@Component({\\n selector: \'hra-gradient-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./gradient-legend.component.html\',\\n styleUrls: [\'./gradient-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class GradientLegendComponent {\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Computes the css linear-gradient function for the gradient bar */\\n get gradientCss(): string {\\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(\',\');\\n return `linear-gradient(90deg, ${stops})`;\\n }\\n}\\n","properties":[{"name":"color","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Gradient color at a specific percentage

      \\n","line":7,"rawdescription":"\\nGradient color at a specific percentage"},{"name":"percentage","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Percentage point along the gradient bar

      \\n","line":9,"rawdescription":"\\nPercentage point along the gradient bar"}],"indexSignatures":[],"kind":165,"description":"

      An interface of gradient colors along with their percentages for the gradient bar.

      \\n","rawdescription":"\\nAn interface of gradient colors along with their percentages for the gradient bar.","methods":[]},{"name":"SizeLegend","id":"interface-SizeLegend-dae8784679328cc4f52418a0ae905fed758d8fca706c3b6238631087d98a163ec72f26f1b06661d00473eefd6eafd27ab263e34a661981ea71d5a1885746f8e9","file":"src/lib/size-legend/size-legend.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Defining the input data types for the radius and label to be displayed. */\\nexport interface SizeLegend {\\n /** Label under circle */\\n label: string;\\n /** Radius for cirlce */\\n radius: number;\\n}\\n\\n/** Size legend component for the biomarkers table. */\\n@Component({\\n selector: \'hra-size-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./size-legend.component.html\',\\n styleUrls: [\'./size-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SizeLegendComponent {\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Label under circle

      \\n","line":7,"rawdescription":"\\nLabel under circle"},{"name":"radius","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Radius for cirlce

      \\n","line":9,"rawdescription":"\\nRadius for cirlce"}],"indexSignatures":[],"kind":165,"description":"

      Defining the input data types for the radius and label to be displayed.

      \\n","rawdescription":"\\nDefining the input data types for the radius and label to be displayed.","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"EmailInputComponent","id":"component-EmailInputComponent-1f7d0d808093e56fed36089f88f516d958678e7e917eb4299c6deb26edf7810680d231b1d0c349c0b380f39d8927a3738e20cd80686dd35cc343ef10c58dc481","file":"src/lib/email-input/email-input.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-email-input","styleUrls":["./email-input.component.scss"],"styles":[],"templateUrl":["./email-input.component.html"],"viewProviders":[],"inputsClass":[{"name":"placeholder","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA placeholder for the email input field. This will be disappeared when the email is typed.","description":"

      A placeholder for the email input field. This will be disappeared when the email is typed.

      \\n","line":22,"type":"string","decorators":[]}],"outputsClass":[{"name":"emailChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the new email when the input changes or undefined if the email is invalid","description":"

      Emits the new email when the input changes or undefined if the email is invalid

      \\n","line":25,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required, Validators.email],\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A control to validate the email.

      \\n","line":31,"rawdescription":"\\nA control to validate the email.","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable emitting when the component is destroyed

      \\n","line":28,"rawdescription":"\\nObservable emitting when the component is destroyed","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Email input components for contact modal.

      \\n","rawdescription":"\\n\\nEmail input components for contact modal.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { FormControl, ReactiveFormsModule, Validators } from \'@angular/forms\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { map, takeUntil } from \'rxjs\';\\n\\n/**\\n * Email input components for contact modal.\\n */\\n@Component({\\n selector: \'hra-email-input\',\\n standalone: true,\\n imports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule],\\n templateUrl: \'./email-input.component.html\',\\n styleUrls: [\'./email-input.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class EmailInputComponent {\\n /** A placeholder for the email input field. This will be disappeared when the email is typed. */\\n @Input() placeholder = \'\';\\n\\n /** Emits the new email when the input changes or undefined if the email is invalid */\\n @Output() readonly emailChange = new EventEmitter();\\n\\n /** Observable emitting when the component is destroyed */\\n readonly destroy$ = injectDestroy$();\\n\\n /** A control to validate the email. */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required, Validators.email],\\n });\\n\\n /** Connects the input control to component outputs */\\n constructor() {\\n const { control, destroy$ } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? value : undefined))\\n )\\n .subscribe((value) => this.emailChange.emit(value as string | undefined));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .email-text-field {\\n width: 100%;\\n background: #ffffff;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./email-input.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Connects the input control to component outputs

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":34,"rawdescription":"\\nConnects the input control to component outputs"},"templateData":"\\n Email \\n \\n\\n \\n Please enter a valid email address\\n \\n Email is required! \\n\\n"},{"name":"EmptyBiomarkerComponent","id":"component-EmptyBiomarkerComponent-37024d95c11a561444e101c6aa7bc4ff857513ca38fac3e421501e21ab27f43cf3f33da15755e5ac3a40b963a23bdf6efe3e86834cd7971258fea52168aa9ad5","file":"src/lib/empty-biomarker/empty-biomarker.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-empty-biomarker","styleUrls":["./empty-biomarker.component.scss"],"styles":[],"templateUrl":["./empty-biomarker.component.html"],"viewProviders":[],"inputsClass":[{"name":"collaborateText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput buttonon text of empty biomarker component.\\n","description":"

      Input buttonon text of empty biomarker component.

      \\n","line":23,"type":"string","decorators":[]},{"name":"message","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput message markdown of empty biomarker component.\\n","description":"

      Input message markdown of empty biomarker component.

      \\n","line":28,"type":"string","decorators":[]}],"outputsClass":[{"name":"collaborateClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAn event emitter that emits the user button click event\\n","description":"

      An event emitter that emits the user button click event

      \\n","line":33,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for any empty biomaker cell\\n to inform about the empty data and has\\n button to navigate to HRA Team.

      \\n","rawdescription":"\\n\\n Component for any empty biomaker cell\\n to inform about the empty data and has\\n button to navigate to HRA Team.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n * Component for any empty biomaker cell\\n * to inform about the empty data and has\\n * button to navigate to HRA Team.\\n */\\n@Component({\\n selector: \'hra-empty-biomarker\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MarkdownModule],\\n templateUrl: \'./empty-biomarker.component.html\',\\n styleUrls: [\'./empty-biomarker.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class EmptyBiomarkerComponent {\\n /**\\n * Input buttonon text of empty biomarker component.\\n */\\n @Input() collaborateText = \'\';\\n\\n /**\\n * Input message markdown of empty biomarker component.\\n */\\n @Input() message = \'\';\\n\\n /**\\n * An event emitter that emits the user button click event\\n */\\n @Output() readonly collaborateClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n padding: 2.625rem 2rem 2.625rem 2rem;\\n\\n .message {\\n color: #243142;\\n }\\n\\n .collaborate-button {\\n margin-top: 2rem;\\n font-weight: 700;\\n color: #fff;\\n width: 100%;\\n max-width: 20rem;\\n height: 3rem;\\n }\\n}\\n","styleUrl":"./empty-biomarker.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"GradientLegendComponent","id":"component-GradientLegendComponent-deca5c57881562b1c16d34b446006d52194dfce42a4093fe366ac3fcbeaf7291e08172915aac95fc2938e856084da0fe61a29b9897eb6da4ca9edd58116c7198","file":"src/lib/gradient-legend/gradient-legend.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-gradient-legend","styleUrls":["./gradient-legend.component.scss"],"styles":[],"templateUrl":["./gradient-legend.component.html"],"viewProviders":[],"inputsClass":[{"name":"gradient","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nGradient colors along with their stop points","description":"

      Gradient colors along with their stop points

      \\n","line":23,"type":"GradientPoint[]","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Gradient legend for biomarkers

      \\n","rawdescription":"\\nGradient legend for biomarkers","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** An interface of gradient colors along with their percentages for the gradient bar. */\\nexport interface GradientPoint {\\n /** Gradient color at a specific percentage */\\n color: string;\\n /** Percentage point along the gradient bar */\\n percentage: number;\\n}\\n\\n/** Gradient legend for biomarkers */\\n@Component({\\n selector: \'hra-gradient-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./gradient-legend.component.html\',\\n styleUrls: [\'./gradient-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class GradientLegendComponent {\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Computes the css linear-gradient function for the gradient bar */\\n get gradientCss(): string {\\n const stops = this.gradient.map(({ color, percentage }) => `${color} ${percentage}%`).join(\',\');\\n return `linear-gradient(90deg, ${stops})`;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .gradient-bar {\\n height: 1.5rem;\\n width: 100%;\\n }\\n\\n .legend {\\n display: flex;\\n\\n .filler {\\n flex-grow: 1;\\n }\\n }\\n}\\n","styleUrl":"./gradient-legend.component.scss"}],"stylesData":"","accessors":{"gradientCss":{"name":"gradientCss","getSignature":{"name":"gradientCss","type":"string","returnType":"string","line":26,"rawdescription":"\\nComputes the css linear-gradient function for the gradient bar","description":"

      Computes the css linear-gradient function for the gradient bar

      \\n"}}},"templateData":"
      \\n
      \\n
      0.0
      \\n
      \\n
      1.0
      \\n
      \\n"},{"name":"LabelBoxComponent","id":"component-LabelBoxComponent-ef78615c37f1899e7f105d2e14f13a219f8472171bf04099642de0ee701b87eafba4f218cf04d7ba1c2e552e28262d1b32ae397ca7eab7043ad462a5f76a960d","file":"src/lib/label-box/label-box.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-label-box","styleUrls":["./label-box.component.scss"],"styles":[],"templateUrl":["./label-box.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Label box component for reuse accross the page. The content with "end" selector will be added to the end of the label box

      \\n","rawdescription":"\\nLabel box component for reuse accross the page. The content with \\"end\\" selector will be added to the end of the label box","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Label box component for reuse accross the page. The content with \\"end\\" selector will be added to the end of the label box */\\n@Component({\\n selector: \'hra-label-box\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./label-box.component.html\',\\n styleUrls: [\'./label-box.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LabelBoxComponent {}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n align-items: center;\\n padding: 0.75rem 2rem;\\n background: #f8f9fa;\\n font-family: \'Inter\';\\n\\n .filler {\\n flex-grow: 1;\\n }\\n}\\n","styleUrl":"./label-box.component.scss"}],"stylesData":"","templateData":"\\n\\n
      \\n\\n\\n"},{"name":"RequiredInputComponent","id":"component-RequiredInputComponent-6a768e79d86219e624a199447195426647b4cde0beb840ecbc68113987b52c6d0be44d19e13b91a4c8d351b9ad503e8a328db1c7626d4ea76b7cc8338bef3247","file":"src/lib/required-input/required-input.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-required-input","styleUrls":["./required-input.component.scss"],"styles":[],"templateUrl":["./required-input.component.html"],"viewProviders":[],"inputsClass":[{"name":"label","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nThe label to display for the text field.\\n","description":"

      The label to display for the text field.

      \\n","line":25,"type":"string","decorators":[]}],"outputsClass":[{"name":"inputChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAn event emitter that emits the input value when it changes.\\n","description":"

      An event emitter that emits the input value when it changes.

      \\n","line":30,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: Validators.required,\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Form control for input to set some input validation.

      \\n","line":40,"rawdescription":"\\n\\nForm control for input to set some input validation.\\n","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Destroy observable used to control the lifetime of other observables.

      \\n","line":35,"rawdescription":"\\n\\nDestroy observable used to control the lifetime of other observables.\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A reusable text field component that can be used to input text.\\nThis input field component also had required validation check.

      \\n","rawdescription":"\\n\\nA reusable text field component that can be used to input text.\\nThis input field component also had required validation check.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\nimport { FormControl, ReactiveFormsModule, Validators } from \'@angular/forms\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { map, takeUntil } from \'rxjs\';\\n\\n/**\\n * A reusable text field component that can be used to input text.\\n * This input field component also had required validation check.\\n */\\n@Component({\\n selector: \'hra-required-input\',\\n standalone: true,\\n imports: [CommonModule, MatFormFieldModule, MatInputModule, ReactiveFormsModule],\\n templateUrl: \'./required-input.component.html\',\\n styleUrls: [\'./required-input.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class RequiredInputComponent {\\n /**\\n * The label to display for the text field.\\n */\\n @Input() label = \'\';\\n\\n /**\\n * An event emitter that emits the input value when it changes.\\n */\\n @Output() readonly inputChange = new EventEmitter();\\n\\n /**\\n * Destroy observable used to control the lifetime of other observables.\\n */\\n readonly destroy$ = injectDestroy$();\\n\\n /**\\n * Form control for input to set some input validation.\\n */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: Validators.required,\\n });\\n\\n /**\\n * Creates an instance of required input component\\n * and it connect the form control value changes to check for validation\\n * before output emmiter is triggered\\n */\\n constructor() {\\n const { control, destroy$, inputChange } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? (value as string) : undefined))\\n )\\n .subscribe(inputChange);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .form-field {\\n width: 100%;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./required-input.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Creates an instance of required input component\\nand it connect the form control value changes to check for validation\\nbefore output emmiter is triggered

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":43,"rawdescription":"\\n\\nCreates an instance of required input component\\nand it connect the form control value changes to check for validation\\nbefore output emmiter is triggered\\n"},"templateData":"\\n {{ label }} \\n \\n {{ label }} is required!\\n\\n"},{"name":"RequiredTextboxComponent","id":"component-RequiredTextboxComponent-ad002581cf0f7ae0707bd500566ee127dc19a3403138f98034117f59231d3c30eaf53896f1e1b5850df7a95498bb9dd632f29b200e38de676c48c0d61c350ad7","file":"src/lib/required-textbox/required-textbox.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-required-textbox","styleUrls":["./required-textbox.component.scss"],"styles":[],"templateUrl":["./required-textbox.component.html"],"viewProviders":[],"inputsClass":[{"name":"label","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA label for the textarea field","description":"

      A label for the textarea field

      \\n","line":25,"type":"string","decorators":[]},{"name":"placeholder","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA placeholder for the message textarea field","description":"

      A placeholder for the message textarea field

      \\n","line":22,"type":"string","decorators":[]}],"outputsClass":[{"name":"messageChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the new message when the input changes or undefined if the message is invalid","description":"

      Emits the new message when the input changes or undefined if the message is invalid

      \\n","line":28,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required],\\n })","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A control to validate if the message field is empty

      \\n","line":34,"rawdescription":"\\nA control to validate if the message field is empty","modifierKind":[144]},{"name":"destroy$","defaultValue":"injectDestroy$()","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable emitting when the component is destroyed

      \\n","line":31,"rawdescription":"\\nObservable emitting when the component is destroyed","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The required textbox component displays a message box for users to add a message

      \\n","rawdescription":"\\n\\nThe required textbox component displays a message box for users to add a message\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { injectDestroy$ } from \'@hra-ui/cdk/injectors\';\\nimport { FormControl, Validators, ReactiveFormsModule } from \'@angular/forms\';\\nimport { map, takeUntil } from \'rxjs\';\\nimport { MatFormFieldModule } from \'@angular/material/form-field\';\\nimport { MatInputModule } from \'@angular/material/input\';\\n\\n/**\\n * The required textbox component displays a message box for users to add a message\\n */\\n@Component({\\n selector: \'hra-required-textbox\',\\n standalone: true,\\n imports: [CommonModule, MatInputModule, MatFormFieldModule, ReactiveFormsModule],\\n templateUrl: \'./required-textbox.component.html\',\\n styleUrls: [\'./required-textbox.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class RequiredTextboxComponent {\\n /** A placeholder for the message textarea field */\\n @Input() placeholder = \'\';\\n\\n /** A label for the textarea field */\\n @Input() label = \'\';\\n\\n /** Emits the new message when the input changes or undefined if the message is invalid */\\n @Output() readonly messageChange = new EventEmitter();\\n\\n /** Observable emitting when the component is destroyed */\\n readonly destroy$ = injectDestroy$();\\n\\n /** A control to validate if the message field is empty */\\n readonly control = new FormControl(\'\', {\\n updateOn: \'blur\',\\n validators: [Validators.required],\\n });\\n\\n /** Connects the input control to component outputs */\\n constructor() {\\n const { control, destroy$ } = this;\\n control.valueChanges\\n .pipe(\\n takeUntil(destroy$),\\n map((value) => (control.valid ? value : undefined))\\n )\\n .subscribe((value) => this.messageChange.emit(value as string | undefined));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .message-field {\\n width: 100%;\\n background: #ffffff;\\n }\\n\\n ::ng-deep .mat-mdc-form-field-required-marker {\\n color: #dc231e;\\n }\\n}\\n","styleUrl":"./required-textbox.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Connects the input control to component outputs

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":37,"rawdescription":"\\nConnects the input control to component outputs"},"templateData":"\\n {{ label }} \\n \\n {{ label }} is required! \\n\\n"},{"name":"SizeLegendComponent","id":"component-SizeLegendComponent-dae8784679328cc4f52418a0ae905fed758d8fca706c3b6238631087d98a163ec72f26f1b06661d00473eefd6eafd27ab263e34a661981ea71d5a1885746f8e9","file":"src/lib/size-legend/size-legend.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-size-legend","styleUrls":["./size-legend.component.scss"],"styles":[],"templateUrl":["./size-legend.component.html"],"viewProviders":[],"inputsClass":[{"name":"sizes","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":23,"type":"SizeLegend[]","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Size legend component for the biomarkers table.

      \\n","rawdescription":"\\nSize legend component for the biomarkers table.","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/** Defining the input data types for the radius and label to be displayed. */\\nexport interface SizeLegend {\\n /** Label under circle */\\n label: string;\\n /** Radius for cirlce */\\n radius: number;\\n}\\n\\n/** Size legend component for the biomarkers table. */\\n@Component({\\n selector: \'hra-size-legend\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./size-legend.component.html\',\\n styleUrls: [\'./size-legend.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SizeLegendComponent {\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n flex-direction: row;\\n column-gap: 2rem;\\n\\n .item {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n line-height: 0.5rem;\\n\\n .circle {\\n height: var(--size);\\n width: var(--size);\\n border-radius: 50%;\\n border: 0.125rem solid #75838f;\\n }\\n\\n .label {\\n margin-top: 0.5rem;\\n }\\n\\n .filler {\\n flex-grow: 1;\\n }\\n }\\n}\\n","styleUrl":"./size-legend.component.scss"}],"stylesData":"","templateData":"
      \\n
      \\n
      \\n
      \\n
      {{ text.label }}
      \\n
      \\n"},{"name":"TooltipComponent","id":"component-TooltipComponent-35a19c31cdbb6f67cbbe51d580825640d777ebbf9ef5a43ffc434e7c6af568cda589a5102fcf51027aafecb8ac12123b9ce1a5d04d81c51fa5198963c1c082f1","file":"src/lib/tooltip/tooltip.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-ui-tooltip","styleUrls":["./tooltip.component.scss"],"styles":[],"templateUrl":["./tooltip.component.html"],"viewProviders":[],"inputsClass":[{"name":"text","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nText to display\\n","description":"

      Text to display

      \\n","line":19,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Tooltips for illustrations

      \\n","rawdescription":"\\n\\nTooltips for illustrations\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n * Tooltips for illustrations\\n */\\n@Component({\\n selector: \'hra-ui-tooltip\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./tooltip.component.html\',\\n styleUrls: [\'./tooltip.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TooltipComponent {\\n /**\\n * Text to display\\n */\\n @Input() text = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n .tooltip {\\n display: flex;\\n flex-direction: column;\\n background: white;\\n box-shadow: 1px 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n border-radius: 0.5rem;\\n padding: 1rem;\\n }\\n}\\n","styleUrl":"./tooltip.component.scss"}],"stylesData":"","templateData":"
      {{ text }}
      \\n"}],"modules":[],"miscellaneous":[]}')},"./dist/compodoc/components-behavioral/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerDetailsComponent","id":"component-BiomarkerDetailsComponent-77362795c55e59d8109b5a13e3d57e4774ce01b5484ac21237c42d2857f2de4ecd80ec15ae66e99983246bdc3de1df675717253be566d7ba0efe1495a48c9f3c","file":"src/lib/biomarker-details/biomarker-details.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-biomarker-details","styleUrls":["./biomarker-details.component.scss"],"styles":[],"templateUrl":["./biomarker-details.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"collaborateText","defaultValue":"\'Collaborate with the HRA Team\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      button text of empty biomarker component.

      \\n","line":106,"rawdescription":"\\n\\nbutton text of empty biomarker component.\\n","modifierKind":[144]},{"name":"gradientHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Gradient Legend

      \\n","line":58,"rawdescription":"\\nInfo to be shown on the tooltip for Gradient Legend","modifierKind":[144]},{"name":"gradients","defaultValue":"selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Gradient colors along with their stop points

      \\n","line":67,"rawdescription":"\\nGradient colors along with their stop points","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":80,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"isTableFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Indicates if the table is fully shown, defaults to false

      \\n","line":64,"rawdescription":"\\nIndicates if the table is fully shown, defaults to false"},{"name":"message","defaultValue":"`We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      message markdown of empty biomarker component.

      \\n","line":111,"rawdescription":"\\n\\nmessage markdown of empty biomarker component.\\n","modifierKind":[144]},{"name":"selectedOnHovered","defaultValue":"selectSnapshot(IllustratorSelectors.selectedOnHovered)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects the cells hovered currently to highlight in table

      \\n","line":88,"rawdescription":"\\nSelects the cells hovered currently to highlight in table","modifierKind":[144]},{"name":"sizeHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Size Legend

      \\n","line":61,"rawdescription":"\\nInfo to be shown on the tooltip for Size Legend","modifierKind":[144]},{"name":"sizes","defaultValue":"selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":72,"rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","modifierKind":[144]},{"name":"source","defaultValue":"selectSnapshot(SourceRefsSelectors.sourceReferences)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      List of sources with titles and links displayed to the user

      \\n","line":75,"rawdescription":"\\nList of sources with titles and links displayed to the user","modifierKind":[144]},{"name":"tabs","defaultValue":"selectSnapshot(CellSummarySelectors.aggregates)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Table tabs

      \\n","line":55,"rawdescription":"\\nTable tabs","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":85,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]}],"methodsClass":[{"name":"collaborate","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":129,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which opens the contact modal dialog box","description":"

      A function which opens the contact modal dialog box

      \\n"},{"name":"toggleFullscreen","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":123,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function that toggles isTableFullScreen and\\ncalls the setScreenMode function.\\n","description":"

      A function that toggles isTableFullScreen and\\ncalls the setScreenMode function.

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The component displays the biomarker details which includes the details, gradient legends, size legends and source lists

      \\n","rawdescription":"\\nThe component displays the biomarker details which includes the details, gradient legends, size legends and source lists","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTabsModule } from \'@angular/material/tabs\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { dispatch, selectQuerySnapshot, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { ActiveFtuSelectors, IllustratorSelectors, ScreenModeAction, TissueLibrarySelectors } from \'@hra-ui/state\';\\nimport {\\n EmptyBiomarkerComponent,\\n GradientLegendComponent,\\n GradientPoint,\\n LabelBoxComponent,\\n SizeLegend,\\n SizeLegendComponent,\\n} from \'@hra-ui/components/atoms\';\\nimport { BiomarkerTableDataCardComponent, SourceListComponent } from \'@hra-ui/components/molecules\';\\nimport { BiomarkerTableComponent, TissueInfo } from \'@hra-ui/components/organisms\';\\nimport { CellSummarySelectors, ResourceIds as Ids, ResourceTypes as RTypes, SourceRefsSelectors } from \'@hra-ui/state\';\\nimport { MatDialog, MatDialogConfig, MatDialogModule } from \'@angular/material/dialog\';\\nimport { ContactBehaviorComponent } from \'../contact-behavior/contact-behavior.component\';\\n\\n/**\\n * PlaceHolder for Empty Tissue Info\\n */\\nconst EMPTY_TISSUE_INFO: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n};\\n\\n/** The component displays the biomarker details which includes the details, gradient legends, size legends and source lists*/\\n@Component({\\n selector: \'ftu-biomarker-details\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatIconModule,\\n MatTabsModule,\\n MatDialogModule,\\n BiomarkerTableComponent,\\n BiomarkerTableDataCardComponent,\\n GradientLegendComponent,\\n HoverDirective,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n SourceListComponent,\\n EmptyBiomarkerComponent,\\n ],\\n templateUrl: \'./biomarker-details.component.html\',\\n styleUrls: [\'./biomarker-details.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerDetailsComponent {\\n /** Table tabs */\\n readonly tabs = selectSnapshot(CellSummarySelectors.aggregates);\\n\\n /** Info to be shown on the tooltip for Gradient Legend */\\n readonly gradientHoverInfo = selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo);\\n\\n /** Info to be shown on the tooltip for Size Legend */\\n readonly sizeHoverInfo = selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo);\\n\\n /** Indicates if the table is fully shown, defaults to false*/\\n isTableFullScreen = false;\\n\\n /** Gradient colors along with their stop points */\\n readonly gradients = selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >;\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n readonly sizes = selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, []);\\n\\n /** List of sources with titles and links displayed to the user */\\n readonly source = selectSnapshot(SourceRefsSelectors.sourceReferences);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /** Selects the cells hovered currently to highlight in table */\\n readonly selectedOnHovered = selectSnapshot(IllustratorSelectors.selectedOnHovered);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueInfo(): TissueInfo {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n if (iri === undefined) {\\n return EMPTY_TISSUE_INFO;\\n }\\n const { id, label } = tissues[iri];\\n return { id, label };\\n }\\n\\n /**\\n * button text of empty biomarker component.\\n */\\n readonly collaborateText = \'Collaborate with the HRA Team\';\\n\\n /**\\n * message markdown of empty biomarker component.\\n */\\n readonly message = `We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`;\\n\\n /** A dispatcher function to set the screen mode */\\n private readonly setScreenMode = dispatch(ScreenModeAction.Set);\\n\\n /** A dialog box which shows contact modal after clicking on contact */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A function that toggles isTableFullScreen and\\n * calls the setScreenMode function.\\n */\\n toggleFullscreen(): void {\\n this.isTableFullScreen = !this.isTableFullScreen;\\n this.setScreenMode(this.isTableFullScreen);\\n }\\n\\n /** A function which opens the contact modal dialog box */\\n collaborate(): void {\\n const dialogConfig = new MatDialogConfig();\\n dialogConfig.disableClose = true;\\n this.dialog.open(ContactBehaviorComponent, dialogConfig);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 1fr 1fr auto;\\n grid-template-rows: 3.5rem minmax(5rem, 2fr) 3rem 5rem minmax(5rem, 1fr);\\n grid-template-areas:\\n \'table-header table-header table-header\'\\n \'table table table\'\\n \'gradient-legend-header size-legend-header .\'\\n \'gradient-legend size-legend .\'\\n \'source-list source-list source-list\';\\n overflow-y: auto;\\n\\n .table-header {\\n grid-area: table-header;\\n border-bottom: 0.063rem solid #d3d3d3;\\n height: 3.5rem;\\n }\\n\\n .table {\\n grid-area: table;\\n max-width: 100%;\\n overflow: auto;\\n border-bottom: 0.063rem solid #d3d3d3;\\n\\n ::ng-deep .table-tab-header {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n border-left: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n background-color: white;\\n\\n &:last-child {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n &.mdc-tab-indicator--active {\\n background-color: #f8f9fa;\\n }\\n\\n &:hover {\\n background-color: #f8f9fa;\\n }\\n }\\n }\\n\\n .legend-header {\\n color: vars.$dark-primary-text;\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend-header;\\n }\\n\\n &.size {\\n grid-area: size-legend-header;\\n }\\n\\n .icon {\\n margin-left: 0.6rem;\\n width: unset;\\n }\\n }\\n\\n .legend {\\n padding: 1rem 2rem;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend;\\n\\n .content {\\n width: 10rem;\\n }\\n }\\n\\n &.size {\\n grid-area: size-legend;\\n }\\n }\\n\\n .source-list {\\n grid-area: source-list;\\n }\\n\\n .cursor {\\n cursor: default;\\n }\\n}\\n\\n::ng-deep .biomarker-details.info-tooltip {\\n display: flex;\\n padding: 1rem;\\n border: 1px solid #a8a3a3;\\n border-radius: 0.5rem;\\n box-shadow: 1px 2px 16px 2px #00000029;\\n background-color: vars.$primary-contrast-rgb;\\n max-width: 21rem;\\n font-size: small;\\n font-family: Inter;\\n}\\n","styleUrl":"./biomarker-details.component.scss"}],"stylesData":"","accessors":{"tissueInfo":{"name":"tissueInfo","getSignature":{"name":"tissueInfo","type":"","returnType":"TissueInfo","line":93,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"\\n Cell Types by Gene Biomarkers\\n \\n {{ isTableFullScreen ? \'close_fullscreen\' : \'open_in_full\' }}\\n \\n\\n\\n\\n \\n \\n \\n \\n\\n\\n\\n Biomarker Expression Mean in FTU\\n info_outlined\\n\\n
      \\n \\n
      \\n\\n\\n Percentage of Cells in FTU\\n info_outlined\\n\\n
      \\n \\n
      \\n\\n
      \\n \\n
      \\n\\n\\n
      \\n {{ tooltip }}\\n
      \\n
      \\n"},{"name":"BiomarkerDetailsWcComponent","id":"component-BiomarkerDetailsWcComponent-2a35b01614cd4a83a9546a33b9e03200b2f96e7d06e07e8803741ed0f77a8815075e35be5e35822c9fb46279ff45ee49dbbfc6fc96f328f11a42b7f9898a30ef","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-wc-biomarker-details","styleUrls":["./biomarker-details-wc.component.scss"],"styles":[],"templateUrl":["./biomarker-details-wc.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"collaborateText","defaultValue":"\'Collaborate with the HRA Team\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      button text of empty biomarker component.

      \\n","line":145,"rawdescription":"\\n\\nbutton text of empty biomarker component.\\n","modifierKind":[144]},{"name":"currentUrl","defaultValue":"selectSnapshot(IllustratorSelectors.url)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current illustration url

      \\n","line":71,"rawdescription":"\\n\\nCurrent illustration url\\n","modifierKind":[144]},{"name":"gradientHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Gradient Legend

      \\n","line":111,"rawdescription":"\\nInfo to be shown on the tooltip for Gradient Legend","modifierKind":[144]},{"name":"gradients","defaultValue":"selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Gradient colors along with their stop points

      \\n","line":120,"rawdescription":"\\nGradient colors along with their stop points","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":81,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"isTableFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Indicates if the table is fully shown, defaults to false

      \\n","line":117,"rawdescription":"\\nIndicates if the table is fully shown, defaults to false"},{"name":"mapping","defaultValue":"selectSnapshot(IllustratorSelectors.mapping)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current mapping file

      \\n","line":76,"rawdescription":"\\n\\nCurrent mapping file\\n","modifierKind":[144]},{"name":"message","defaultValue":"`We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      message markdown of empty biomarker component.

      \\n","line":150,"rawdescription":"\\n\\nmessage markdown of empty biomarker component.\\n","modifierKind":[144]},{"name":"sizeHoverInfo","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Info to be shown on the tooltip for Size Legend

      \\n","line":114,"rawdescription":"\\nInfo to be shown on the tooltip for Size Legend","modifierKind":[144]},{"name":"sizes","defaultValue":"selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":125,"rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","modifierKind":[144]},{"name":"source","defaultValue":"selectSnapshot(SourceRefsSelectors.sourceReferences)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      List of sources with titles and links displayed to the user

      \\n","line":128,"rawdescription":"\\nList of sources with titles and links displayed to the user","modifierKind":[144]},{"name":"tabs","defaultValue":"selectSnapshot(CellSummarySelectors.aggregates)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Table tabs

      \\n","line":108,"rawdescription":"\\nTable tabs","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":86,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]},{"name":"updateNodeOnClicked","defaultValue":"dispatch(IllustratorActions.SetClicked)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node click

      \\n","line":105,"rawdescription":"\\n\\nUpdates the active node on node click\\n","modifierKind":[144]},{"name":"updateNodeOnHover","defaultValue":"dispatch(IllustratorActions.SetHover)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node hover

      \\n","line":100,"rawdescription":"\\n\\nUpdates the active node on node hover\\n","modifierKind":[144]}],"methodsClass":[{"name":"collaborate","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":167,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which opens the contact modal dialog box","description":"

      A function which opens the contact modal dialog box

      \\n"},{"name":"toggleFullscreen","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":162,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function that toggles isTableFullScreen and\\ncalls the setScreenMode function.\\n","description":"

      A function that toggles isTableFullScreen and\\ncalls the setScreenMode function.

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Biomarker Table Details Web component

      \\n","rawdescription":"\\nComponent for Biomarker Table Details Web component","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTabsModule } from \'@angular/material/tabs\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { selectSnapshot, selectQuerySnapshot, dispatch } from \'@hra-ui/cdk/injectors\';\\nimport {\\n GradientLegendComponent,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n EmptyBiomarkerComponent,\\n GradientPoint,\\n SizeLegend,\\n} from \'@hra-ui/components/atoms\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n InteractiveSvgComponent,\\n SourceListComponent,\\n} from \'@hra-ui/components/molecules\';\\nimport { TissueInfo, BiomarkerTableComponent } from \'@hra-ui/components/organisms\';\\nimport {\\n ActiveFtuSelectors,\\n TissueLibrarySelectors,\\n ScreenModeAction,\\n IllustratorActions,\\n IllustratorSelectors,\\n CellSummarySelectors,\\n ResourceIds as Ids,\\n ResourceTypes as RTypes,\\n SourceRefsSelectors,\\n} from \'@hra-ui/state\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { MatDialog, MatDialogConfig } from \'@angular/material/dialog\';\\nimport { ContactBehaviorComponent } from \'../contact-behavior/contact-behavior.component\';\\n\\n/**\\n * PlaceHolder for Empty Tissue Info\\n */\\nconst EMPTY_TISSUE_INFO: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n};\\n\\n/** Component for Biomarker Table Details Web component */\\n@Component({\\n selector: \'ftu-wc-biomarker-details\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatIconModule,\\n MatTabsModule,\\n\\n BiomarkerTableComponent,\\n BiomarkerTableDataCardComponent,\\n GradientLegendComponent,\\n HoverDirective,\\n LabelBoxComponent,\\n SizeLegendComponent,\\n SourceListComponent,\\n EmptyBiomarkerComponent,\\n InteractiveSvgComponent,\\n ],\\n templateUrl: \'./biomarker-details-wc.component.html\',\\n styleUrls: [\'./biomarker-details-wc.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerDetailsWcComponent {\\n /**\\n * Current illustration url\\n */\\n readonly currentUrl = selectSnapshot(IllustratorSelectors.url);\\n\\n /**\\n * Current mapping file\\n */\\n readonly mapping = selectSnapshot(IllustratorSelectors.mapping);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueTitle(): string {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n return iri ? tissues[iri].label : \'\';\\n }\\n\\n /**\\n * Updates the active node on node hover\\n */\\n readonly updateNodeOnHover = dispatch(IllustratorActions.SetHover);\\n\\n /**\\n * Updates the active node on node click\\n */\\n readonly updateNodeOnClicked = dispatch(IllustratorActions.SetClicked);\\n\\n /** Table tabs */\\n readonly tabs = selectSnapshot(CellSummarySelectors.aggregates);\\n\\n /** Info to be shown on the tooltip for Gradient Legend */\\n readonly gradientHoverInfo = selectQuerySnapshot(RR.anyText, Ids.GradientLegendInfo);\\n\\n /** Info to be shown on the tooltip for Size Legend */\\n readonly sizeHoverInfo = selectQuerySnapshot(RR.anyText, Ids.SizeLegendInfo);\\n\\n /** Indicates if the table is fully shown, defaults to false*/\\n isTableFullScreen = false;\\n\\n /** Gradient colors along with their stop points */\\n readonly gradients = selectQuerySnapshot(RR.field, Ids.GradientLegend, RTypes.Gradient, \'points\' as const, [])<\\n GradientPoint[]\\n >;\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n readonly sizes = selectQuerySnapshot(RR.field, Ids.SizeLegend, RTypes.Size, \'sizes\' as const, []);\\n\\n /** List of sources with titles and links displayed to the user */\\n readonly source = selectSnapshot(SourceRefsSelectors.sourceReferences);\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueInfo(): TissueInfo {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n if (iri === undefined) {\\n return EMPTY_TISSUE_INFO;\\n }\\n const { id, label } = tissues[iri];\\n return { id, label };\\n }\\n\\n /**\\n * button text of empty biomarker component.\\n */\\n readonly collaborateText = \'Collaborate with the HRA Team\';\\n\\n /**\\n * message markdown of empty biomarker component.\\n */\\n readonly message = `We currently do not have cell type data for this biomarker.\\n

      Please contact us to discuss your dataset.`;\\n\\n /** A dispatcher function to set the screen mode */\\n private readonly setScreenMode = dispatch(ScreenModeAction.Set);\\n\\n /** A dialog box which shows contact modal after clicking on contact */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A function that toggles isTableFullScreen and\\n * calls the setScreenMode function.\\n */\\n toggleFullscreen(): void {\\n this.isTableFullScreen = !this.isTableFullScreen;\\n this.setScreenMode(this.isTableFullScreen);\\n }\\n /** A function which opens the contact modal dialog box */\\n collaborate(): void {\\n const dialogConfig = new MatDialogConfig();\\n dialogConfig.disableClose = true;\\n this.dialog.open(ContactBehaviorComponent, dialogConfig);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n ::ng-deep .extraTab {\\n border: 0.063rem solid #d3d3d3;\\n border-top: 0;\\n }\\n\\n .table-header {\\n grid-area: table-header;\\n border: 0.063rem solid #d3d3d3;\\n width: 43rem;\\n height: 3.5rem;\\n }\\n\\n .table {\\n grid-area: table;\\n max-width: 100%;\\n overflow: auto;\\n border: 0.063rem solid #d3d3d3;\\n\\n ::ng-deep .table-tab-header {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n border-left: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n\\n &:last-child {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n &.mdc-tab-indicator--active {\\n background-color: #f8f9fa;\\n }\\n }\\n }\\n\\n hra-biomarker-table {\\n overflow-y: auto;\\n overflow-x: auto;\\n }\\n\\n .legends {\\n display: inline-flex;\\n width: 100%;\\n .legends-right {\\n width: 50%;\\n }\\n .legends-left {\\n width: 50%;\\n }\\n }\\n\\n .legend-header {\\n color: vars.$dark-primary-text;\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend-header;\\n }\\n\\n &.size {\\n grid-area: size-legend-header;\\n }\\n\\n .icon {\\n margin-left: 0.6rem;\\n }\\n }\\n\\n .legend {\\n padding: 1rem 2rem;\\n border-right: 0.063rem solid #d3d3d3;\\n\\n &.gradient {\\n grid-area: gradient-legend;\\n\\n .content {\\n width: 10rem;\\n }\\n }\\n\\n &.size {\\n grid-area: size-legend;\\n }\\n }\\n\\n .source-list {\\n grid-area: source-list;\\n\\n .content {\\n width: min-content;\\n }\\n }\\n}\\n\\n::ng-deep .biomarker-details.info-tooltip {\\n display: flex;\\n padding: 1rem;\\n border: 1px solid #a8a3a3;\\n border-radius: 0.5rem;\\n box-shadow: 1px 2px 16px 2px #00000029;\\n background-color: vars.$primary-contrast-rgb;\\n max-width: 21rem;\\n font-size: small;\\n}\\n","styleUrl":"./biomarker-details-wc.component.scss"}],"stylesData":"","accessors":{"tissueTitle":{"name":"tissueTitle","getSignature":{"name":"tissueTitle","type":"string","returnType":"string","line":91,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}},"tissueInfo":{"name":"tissueInfo","getSignature":{"name":"tissueInfo","type":"","returnType":"TissueInfo","line":132,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"\\n {{ tissueTitle }}: FTU Illustration\\n \\n {{ isTableFullScreen ? \'close_fullscreen\' : \'open_in_full\' }}\\n \\n\\n\\n\\n \\n \\n \\n \\n \\n \\n\\n
      \\n
      \\n \\n Biomarker Expression Mean in FTU\\n info_outlined\\n \\n
      \\n \\n
      \\n
      \\n\\n
      \\n \\n Percentage of Cells in FTU\\n info_outlined\\n \\n
      \\n \\n
      \\n
      \\n
      \\n \\n
      \\n \\n
      \\n \\n
      \\n\\n \\n
      \\n {{ tooltip }}\\n
      \\n
      \\n
      \\n
      \\n"},{"name":"ContactBehaviorComponent","id":"component-ContactBehaviorComponent-b9d5e223798d92be933b5dbadc75b1d6c247f7b00beb75f933bb07b0a4949d22458ee53931ca654d0b255f40508dbf23ef4e516e2f80368415a86fdfe44d60b6","file":"src/lib/contact-behavior/contact-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-contact-behavior","styleUrls":["./contact-behavior.component.scss"],"styles":[],"templateUrl":["./contact-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"description","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ContactAcknowledgement)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Information modal message to the user

      \\n","line":29,"rawdescription":"\\nInformation modal message to the user","modifierKind":[144]},{"name":"postMessageTemplate","deprecated":false,"deprecationMessage":"","type":"TemplateRef","optional":false,"description":"

      A template to post a message

      \\n","line":20,"rawdescription":"\\nA template to post a message","decorators":[{"name":"ViewChild","stringifiedArguments":"\'postMessage\'"}],"modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":23,"rawdescription":"\\nInput for product logo URL to displayed on the left side.","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":26,"rawdescription":"\\nInput for product title to displayed on the left side.","modifierKind":[144]},{"name":"sendMessage","defaultValue":"dispatch(ContactActions.SendMessage)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A dispatcher function to send message entered by user

      \\n","line":32,"rawdescription":"\\nA dispatcher function to send message entered by user","modifierKind":[144]}],"methodsClass":[{"name":"close","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":51,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which closes the \'Contact us\' dialog and the acknowledgement dialog.","description":"

      A function which closes the 'Contact us' dialog and the acknowledgement dialog.

      \\n"},{"name":"submit","args":[{"name":"message","type":"ContactData","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":44,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box.","description":"

      A function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box.

      \\n","jsdoctags":[{"name":"message","type":"ContactData","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A Component for contact behavior which sends the message entered by the user and shows an acknowledgement

      \\n","rawdescription":"\\nA Component for contact behavior which sends the message entered by the user and shows an acknowledgement","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject, TemplateRef, ViewChild } from \'@angular/core\';\\nimport { MatDialog, MatDialogModule, MatDialogRef } from \'@angular/material/dialog\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { ContactData, ContactModalComponent, InfoModalComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceIds as Ids, ContactActions } from \'@hra-ui/state\';\\n\\n/** A Component for contact behavior which sends the message entered by the user and shows an acknowledgement */\\n@Component({\\n selector: \'ftu-contact-behavior\',\\n standalone: true,\\n imports: [CommonModule, MatDialogModule, ContactModalComponent, InfoModalComponent],\\n templateUrl: \'./contact-behavior.component.html\',\\n styleUrls: [\'./contact-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactBehaviorComponent {\\n /** A template to post a message */\\n @ViewChild(\'postMessage\') readonly postMessageTemplate!: TemplateRef;\\n\\n /** Input for product logo URL to displayed on the left side. */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /** Input for product title to displayed on the left side. */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /** Information modal message to the user */\\n readonly description = selectQuerySnapshot(RR.anyText, Ids.ContactAcknowledgement);\\n\\n /** A dispatcher function to send message entered by user */\\n readonly sendMessage = dispatch(ContactActions.SendMessage);\\n\\n /** A dialog box which shows user an acknowledgement after clicking on submit */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A mat form field dialog which accepts the email, subject, and message of user and validates it */\\n private readonly selfRef = inject(MatDialogRef, { optional: true });\\n\\n /** Dialog box which references the acknowledgement dialog box */\\n private postRef?: MatDialogRef;\\n\\n /** A function which sends/dispatches a message which contains email, subject, and message. And also opens the acknowledgement dialog box. */\\n submit(message: ContactData): void {\\n this.sendMessage(message);\\n this.selfRef?.close();\\n this.postRef = this.dialog.open(this.postMessageTemplate);\\n }\\n\\n /** A function which closes the \'Contact us\' dialog and the acknowledgement dialog. */\\n close(): void {\\n this.postRef?.close();\\n this.selfRef?.close();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .contact-modal {\\n width: 41rem;\\n height: 40rem;\\n }\\n\\n .info-modal {\\n width: 35rem;\\n height: 11.8rem;\\n }\\n\\n @media screen and (max-height: 328px) {\\n .contact-modal {\\n height: calc(100vh - 2rem);\\n }\\n }\\n}\\n","styleUrl":"./contact-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n\\n\\n \\n \\n\\n"},{"name":"FooterBehaviorComponent","id":"component-FooterBehaviorComponent-d9ecf51e28e6cdbe2f77b2f819a2e3df3acd0382e946f213975e78af53f6c11b1a7a013fefb862cfa9449b9973d2ea3497fa9687d6c04eb492751c2a83c17410","file":"src/lib/footer-behavior/footer-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-footer-behavior","styleUrls":["./footer-behavior.component.scss"],"styles":[],"templateUrl":["./footer-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"download","defaultValue":"dispatch(DownloadActions.Download)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      A dispatcher function to download file in specified format

      \\n","line":39,"rawdescription":"\\nA dispatcher function to download file in specified format","modifierKind":[144]},{"name":"downloadFormats","defaultValue":"selectSnapshot(DownloadSelectors.formats)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects a snapshot of the current value of the available download formats

      \\n","line":27,"rawdescription":"\\nSelects a snapshot of the current value of the available download formats","modifierKind":[144]},{"name":"embed","defaultValue":"LinkIds.Embed","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Embed link routing after clicking on Embed

      \\n","line":36,"rawdescription":"\\nEmbed link routing after clicking on Embed","modifierKind":[144]},{"name":"hraPortal","defaultValue":"LinkIds.Portal","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Hra portal link routing after clicking on HRA Portal

      \\n","line":30,"rawdescription":"\\nHra portal link routing after clicking on HRA Portal","modifierKind":[144]},{"name":"illustrationMetadata","defaultValue":"LinkIds.Illustration","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Metadata page link routing after clicking on Illustration

      \\n","line":33,"rawdescription":"\\nMetadata page link routing after clicking on Illustration","modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":21,"rawdescription":"\\nInput for product logo URL to displayed on the left side.","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":24,"rawdescription":"\\nInput for product title to displayed on the left side.","modifierKind":[144]},{"name":"size","defaultValue":"selectSnapshot(ScreenModeSelectors.size)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Selects the current value of the available ScreenMode Size

      \\n","line":41,"rawdescription":"\\nSelects the current value of the available ScreenMode Size","modifierKind":[144]}],"methodsClass":[{"name":"contact","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":47,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which opens the contact modal dialog box","description":"

      A function which opens the contact modal dialog box

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component for footer behavior which provides functionality for various buttons in footer

      \\n","rawdescription":"\\nA component for footer behavior which provides functionality for various buttons in footer","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { MatDialog, MatDialogConfig, MatDialogModule } from \'@angular/material/dialog\';\\nimport { dispatch, selectQuerySnapshot, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { FooterComponent } from \'@hra-ui/components/molecules\';\\nimport { DownloadActions, DownloadSelectors, ResourceIds as Ids, LinkIds, ScreenModeSelectors } from \'@hra-ui/state\';\\nimport { ContactBehaviorComponent } from \'../contact-behavior/contact-behavior.component\';\\n\\n/** A component for footer behavior which provides functionality for various buttons in footer */\\n@Component({\\n selector: \'ftu-footer-behavior\',\\n standalone: true,\\n imports: [CommonModule, MatDialogModule, FooterComponent, ContactBehaviorComponent],\\n templateUrl: \'./footer-behavior.component.html\',\\n styleUrls: [\'./footer-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterBehaviorComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /** Input for product title to displayed on the left side. */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /** Selects a snapshot of the current value of the available download formats */\\n readonly downloadFormats = selectSnapshot(DownloadSelectors.formats);\\n\\n /** Hra portal link routing after clicking on HRA Portal */\\n readonly hraPortal = LinkIds.Portal;\\n\\n /** Metadata page link routing after clicking on Illustration */\\n readonly illustrationMetadata = LinkIds.Illustration;\\n\\n /** Embed link routing after clicking on Embed */\\n readonly embed = LinkIds.Embed;\\n\\n /** A dispatcher function to download file in specified format */\\n readonly download = dispatch(DownloadActions.Download);\\n /** Selects the current value of the available ScreenMode Size */\\n readonly size = selectSnapshot(ScreenModeSelectors.size);\\n\\n /** A dialog box which shows contact modal after clicking on contact */\\n private readonly dialog = inject(MatDialog);\\n\\n /** A function which opens the contact modal dialog box */\\n contact(): void {\\n const dialogConfig = new MatDialogConfig();\\n dialogConfig.disableClose = true;\\n this.dialog.open(ContactBehaviorComponent, dialogConfig);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./footer-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"HeaderBehaviorComponent","id":"component-HeaderBehaviorComponent-a76f74e70c7aacab4debd2492e1302dc534513cd4598dce499fc0d4f09bf0a16fc333bcb4bb100ffc9dbcb5427533473060400e0ae5eb7051dac7768474ae300","file":"src/lib/header-behavior/header-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-header-behavior","styleUrls":["./header-behavior.component.scss"],"styles":[],"templateUrl":["./header-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"aboutLink","defaultValue":"LinkIds.About","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for about link for user click action.

      \\n","line":41,"rawdescription":"\\n\\nInput for about link for user click action.\\n","modifierKind":[144]},{"name":"appTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.AppTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for app title to show on the left side.

      \\n","line":31,"rawdescription":"\\n\\nInput for app title to show on the left side.\\n","modifierKind":[144]},{"name":"productLogoUrl","defaultValue":"selectQuerySnapshot(RR.url, Ids.ProductLogoUrl)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":21,"rawdescription":"\\n\\nInput for product logo URL to displayed on the left side.\\n","modifierKind":[144]},{"name":"productTitle","defaultValue":"selectQuerySnapshot(RR.anyText, Ids.ProductTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title to displayed on the left side.

      \\n","line":26,"rawdescription":"\\n\\nInput for product title to displayed on the left side.\\n","modifierKind":[144]},{"name":"productTitleLink","defaultValue":"LinkIds.ProductTitle","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for product title link for user click action

      \\n","line":36,"rawdescription":"\\n\\nInput for product title link for user click action\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Header Behavior

      \\n","rawdescription":"\\nComponent for Header Behavior","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR } from \'@hra-ui/cdk/state\';\\nimport { HeaderComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceIds as Ids, LinkIds } from \'@hra-ui/state\';\\n\\n/** Component for Header Behavior */\\n@Component({\\n selector: \'ftu-header-behavior\',\\n standalone: true,\\n imports: [CommonModule, HeaderComponent],\\n templateUrl: \'./header-behavior.component.html\',\\n styleUrls: [\'./header-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HeaderBehaviorComponent {\\n /**\\n * Input for product logo URL to displayed on the left side.\\n */\\n readonly productLogoUrl = selectQuerySnapshot(RR.url, Ids.ProductLogoUrl);\\n\\n /**\\n * Input for product title to displayed on the left side.\\n */\\n readonly productTitle = selectQuerySnapshot(RR.anyText, Ids.ProductTitle);\\n\\n /**\\n * Input for app title to show on the left side.\\n */\\n readonly appTitle = selectQuerySnapshot(RR.anyText, Ids.AppTitle);\\n\\n /**\\n * Input for product title link for user click action\\n */\\n readonly productTitleLink = LinkIds.ProductTitle;\\n\\n /**\\n * Input for about link for user click action.\\n */\\n readonly aboutLink = LinkIds.About;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./header-behavior.component.scss"}],"stylesData":"","templateData":"\\n\\n"},{"name":"HraLandingPageIntroWcBehaviourComponent","id":"component-HraLandingPageIntroWcBehaviourComponent-b8c2509d12b92bff8ab139855b712563f2a92e8aa91e8ecc05714063b91b1765ade0e9c6e691367a2eaa4724d94d6dfe4ade28c89da03cfcf6eae21630452b23","file":"src/lib/hra-landing-page-intro-wc-behaviour/hra-landing-page-intro-wc-behaviour.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-wc-intro","styleUrls":["./hra-landing-page-intro-wc-behaviour.component.scss"],"styles":[],"templateUrl":["./hra-landing-page-intro-wc-behaviour.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"landingPageIntroDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro description

      \\n","line":21,"rawdescription":"\\nselect snapshot for landing page intro description","modifierKind":[144]},{"name":"landingPageIntroPartners","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":25,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroReadMore","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageIntroReadMore)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":23,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for Landing Page title

      \\n","line":19,"rawdescription":"\\nselect snapshot for Landing Page title","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro Behaviour: Web component

      \\n","rawdescription":"\\nComponent for LandingPage Intro Behaviour: Web component","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { HraLandingPageIntroWcComponent } from \'@hra-ui/components/molecules\';\\nimport { ResourceRegistrySelectors as RRS } from \'@hra-ui/cdk/state\';\\nimport { selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceIds as RIds } from \'@hra-ui/state\';\\n\\n/** Component for LandingPage Intro Behaviour: Web component */\\n@Component({\\n selector: \'ftu-wc-intro\',\\n standalone: true,\\n imports: [CommonModule, HraLandingPageIntroWcComponent],\\n templateUrl: \'./hra-landing-page-intro-wc-behaviour.component.html\',\\n styleUrls: [\'./hra-landing-page-intro-wc-behaviour.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HraLandingPageIntroWcBehaviourComponent {\\n /** select snapshot for Landing Page title */\\n readonly landingPageIntroTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle);\\n /** select snapshot for landing page intro description */\\n readonly landingPageIntroDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroReadMore = selectQuerySnapshot(RRS.markdown, RIds.LandingPageIntroReadMore);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroPartners = selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners);\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .intro {\\n display: inline-grid;\\n border: 1px solid #e2e7e9;\\n padding: 24px 32px 24px 32px;\\n width: 71rem;\\n }\\n}\\n","styleUrl":"./hra-landing-page-intro-wc-behaviour.component.scss"}],"stylesData":"","templateData":"\\n"},{"name":"LandingPageContentComponent","id":"component-LandingPageContentComponent-d72615e2863b7f2f08c767452a75c71c9e079687610cd3e50b54f72f11546184f7ad55c5304741d79adb9bb9ea161cdac4253ae6fb1cbbf15040f2814110616a","file":"src/lib/landing-page-content/landing-page-content.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-landing-page-content","styleUrls":["./landing-page-content.component.scss"],"styles":[],"templateUrl":["./landing-page-content.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"intersectableEls","deprecated":false,"deprecationMessage":"","type":"QueryList","optional":false,"description":"

      array of element refs for intersectables

      \\n","line":34,"rawdescription":"\\narray of element refs for intersectables","decorators":[{"name":"ViewChildren","stringifiedArguments":"\'intersectable\', {read: ElementRef}"}],"modifierKind":[144]},{"name":"landingPageDepthDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDepthDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth description

      \\n","line":57,"rawdescription":"\\nselect snapshot for landing page depth description","modifierKind":[144]},{"name":"landingPageDepthImg","defaultValue":"selectQuerySnapshot(RRS.url, RIds.LandingPageDepthImg)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth img

      \\n","line":61,"rawdescription":"\\nselect snapshot for landing page depth img","modifierKind":[144]},{"name":"landingPageDepthMoreText","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthMoreText)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot forlanding page depth more text

      \\n","line":59,"rawdescription":"\\nselect snapshot forlanding page depth more text","modifierKind":[144]},{"name":"landingPageDepthTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page depth title

      \\n","line":55,"rawdescription":"\\nselect snapshot for landing page depth title","modifierKind":[144]},{"name":"landingPageIntroDescription","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro description

      \\n","line":40,"rawdescription":"\\nselect snapshot for landing page intro description","modifierKind":[144]},{"name":"landingPageIntroImg","defaultValue":"selectQuerySnapshot(RRS.url, RIds.LandingPageIntroImg)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro img

      \\n","line":47,"rawdescription":"\\nselect snapshot for landing page intro img","modifierKind":[144]},{"name":"landingPageIntroMoreText","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageIntroMoreText)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro more text

      \\n","line":45,"rawdescription":"\\nselect snapshot for landing page intro more text","modifierKind":[144]},{"name":"landingPageIntroPartners","defaultValue":"selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for landing page intro partners

      \\n","line":42,"rawdescription":"\\nselect snapshot for landing page intro partners","modifierKind":[144]},{"name":"landingPageIntroTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for Landing Page title

      \\n","line":37,"rawdescription":"\\nselect snapshot for Landing Page title","modifierKind":[144]},{"name":"LinkIds","defaultValue":"LinkIds","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Expose links for use it template

      \\n","line":64,"rawdescription":"\\nExpose links for use it template","modifierKind":[144]},{"name":"metrics","defaultValue":"selectQuerySnapshot(RRS.field, RIds.Metrics, RTypes.Metrics, \'metrics\' as const, [])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics

      \\n","line":49,"rawdescription":"\\nselect snapshot for metrics","modifierKind":[144]},{"name":"metricsLogo","defaultValue":"selectQuerySnapshot(RRS.url, RIds.MetricsLogo)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics logo

      \\n","line":53,"rawdescription":"\\nselect snapshot for metrics logo","modifierKind":[144]},{"name":"metricsTitle","defaultValue":"selectQuerySnapshot(RRS.anyText, RIds.MetricsTitle)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      select snapshot for metrics title

      \\n","line":51,"rawdescription":"\\nselect snapshot for metrics title","modifierKind":[144]}],"methodsClass":[{"name":"handleIntersection","args":[{"name":"entries","type":"IntersectionObserverEntry[]","deprecated":false,"deprecationMessage":""},{"name":"observer","type":"IntersectionObserver","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":82,"deprecated":false,"deprecationMessage":"","rawdescription":"\\ncallback function for intersection observer","description":"

      callback function for intersection observer

      \\n","jsdoctags":[{"name":"entries","type":"IntersectionObserverEntry[]","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"observer","type":"IntersectionObserver","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPageContent Behavior

      \\n","rawdescription":"\\nComponent for LandingPageContent Behavior","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport {\\n AfterViewInit,\\n ChangeDetectionStrategy,\\n Component,\\n ElementRef,\\n inject,\\n QueryList,\\n Renderer2,\\n ViewChildren,\\n} from \'@angular/core\';\\nimport { injectDestroy$, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RRS } from \'@hra-ui/cdk/state\';\\nimport {\\n LandingPageInDepthComponent,\\n LandingPageIntroComponent,\\n MetricItem,\\n MetricsComponent,\\n} from \'@hra-ui/components/molecules\';\\nimport { LinkIds, ResourceIds as RIds, ResourceTypes as RTypes } from \'@hra-ui/state\';\\n\\n/** Component for LandingPageContent Behavior */\\n@Component({\\n selector: \'ftu-landing-page-content\',\\n standalone: true,\\n imports: [CommonModule, LandingPageIntroComponent, MetricsComponent, LandingPageInDepthComponent],\\n templateUrl: \'./landing-page-content.component.html\',\\n styleUrls: [\'./landing-page-content.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageContentComponent implements AfterViewInit {\\n /** array of element refs for intersectables */\\n @ViewChildren(\'intersectable\', { read: ElementRef })\\n readonly intersectableEls!: QueryList;\\n\\n /** select snapshot for Landing Page title */\\n readonly landingPageIntroTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageTitle);\\n\\n /** select snapshot for landing page intro description */\\n readonly landingPageIntroDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDescription);\\n /** select snapshot for landing page intro partners */\\n readonly landingPageIntroPartners = selectQuerySnapshot(RRS.markdown, RIds.LandingPagePartners);\\n\\n /** select snapshot for landing page intro more text */\\n readonly landingPageIntroMoreText = selectQuerySnapshot(RRS.anyText, RIds.LandingPageIntroMoreText);\\n /** select snapshot for landing page intro img */\\n readonly landingPageIntroImg = selectQuerySnapshot(RRS.url, RIds.LandingPageIntroImg);\\n /** select snapshot for metrics */\\n readonly metrics = selectQuerySnapshot(RRS.field, RIds.Metrics, RTypes.Metrics, \'metrics\' as const, []);\\n /** select snapshot for metrics title */\\n readonly metricsTitle = selectQuerySnapshot(RRS.anyText, RIds.MetricsTitle);\\n /** select snapshot for metrics logo */\\n readonly metricsLogo = selectQuerySnapshot(RRS.url, RIds.MetricsLogo);\\n /** select snapshot for landing page depth title */\\n readonly landingPageDepthTitle = selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthTitle);\\n /** select snapshot for landing page depth description */\\n readonly landingPageDepthDescription = selectQuerySnapshot(RRS.markdown, RIds.LandingPageDepthDescription);\\n /** select snapshot forlanding page depth more text */\\n readonly landingPageDepthMoreText = selectQuerySnapshot(RRS.anyText, RIds.LandingPageDepthMoreText);\\n /** select snapshot for landing page depth img */\\n readonly landingPageDepthImg = selectQuerySnapshot(RRS.url, RIds.LandingPageDepthImg);\\n\\n /** Expose links for use it template */\\n readonly LinkIds = LinkIds;\\n\\n /** Renderer to add class for animation */\\n private readonly renderer = inject(Renderer2);\\n /** destroys observer */\\n private readonly destroy$ = injectDestroy$();\\n\\n /** creates an observer after view init */\\n ngAfterViewInit(): void {\\n const observer = new IntersectionObserver(this.handleIntersection.bind(this), {\\n threshold: 0.18,\\n });\\n\\n this.intersectableEls.forEach((el) => observer.observe(el.nativeElement));\\n this.destroy$.subscribe(() => observer.disconnect());\\n }\\n\\n /** callback function for intersection observer */\\n handleIntersection(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void {\\n for (const { isIntersecting, target } of entries) {\\n if (isIntersecting) {\\n this.renderer.addClass(target, \'visible\');\\n observer.unobserve(target);\\n }\\n }\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n overflow-x: hidden;\\n\\n .intro {\\n margin: 3.5rem 2rem;\\n }\\n\\n .metrics {\\n opacity: 0;\\n\\n &.visible {\\n animation: fadeIn 2s ease-in forwards;\\n }\\n }\\n\\n .in-depth {\\n opacity: 0;\\n\\n &.visible {\\n overflow: hidden;\\n animation: slideIn 2s ease-in-out forwards;\\n }\\n }\\n}\\n\\n@keyframes fadeIn {\\n 0% {\\n opacity: 0;\\n }\\n\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n@keyframes slideIn {\\n 0% {\\n transform: translateX(200%);\\n opacity: 1;\\n }\\n\\n 100% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n}\\n","styleUrl":"./landing-page-content.component.scss"}],"stylesData":"","implements":["AfterViewInit"],"templateData":"\\n\\n\\n\\n\\n\\n"},{"name":"MedicalIllustrationBehaviorComponent","id":"component-MedicalIllustrationBehaviorComponent-6fea78f0a6011315eef3ff0e9cf3f451130b68d93388f1b8ff7f362f6c7f2ec8bbad2f6518d0329f94a749b1e02a1018129acf2b8340f015397957c3e0fd985d","file":"src/lib/medical-illustration-behavior/medical-illustration-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-medical-illustration-behavior","styleUrls":["./medical-illustration-behavior.component.scss"],"styles":[],"templateUrl":["./medical-illustration-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"currentUrl","defaultValue":"selectSnapshot(IllustratorSelectors.url)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current illustration url

      \\n","line":23,"rawdescription":"\\n\\nCurrent illustration url\\n","modifierKind":[144]},{"name":"iri","defaultValue":"selectSnapshot(ActiveFtuSelectors.iri)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Iri of medical illustration behavior component

      \\n","line":33,"rawdescription":"\\n\\nIri of medical illustration behavior component\\n","modifierKind":[144]},{"name":"mapping","defaultValue":"selectSnapshot(IllustratorSelectors.mapping)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Current mapping file

      \\n","line":28,"rawdescription":"\\n\\nCurrent mapping file\\n","modifierKind":[144]},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Get all tissues

      \\n","line":38,"rawdescription":"\\n\\nGet all tissues\\n","modifierKind":[144]},{"name":"updateNodeOnClicked","defaultValue":"dispatch(IllustratorActions.SetClicked)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node click

      \\n","line":57,"rawdescription":"\\n\\nUpdates the active node on node click\\n","modifierKind":[144]},{"name":"updateNodeOnHover","defaultValue":"dispatch(IllustratorActions.SetHover)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Updates the active node on node hover

      \\n","line":52,"rawdescription":"\\n\\nUpdates the active node on node hover\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Behavior component for medical illustration component

      \\n","rawdescription":"\\n\\nBehavior component for medical illustration component\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component } from \'@angular/core\';\\nimport { dispatch, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\nimport { InteractiveSvgComponent } from \'@hra-ui/components/molecules\';\\nimport { ActiveFtuSelectors, IllustratorActions, IllustratorSelectors, TissueLibrarySelectors } from \'@hra-ui/state\';\\n\\n/**\\n * Behavior component for medical illustration component\\n */\\n@Component({\\n selector: \'ftu-medical-illustration-behavior\',\\n standalone: true,\\n imports: [CommonModule, InteractiveSvgComponent, LabelBoxComponent],\\n templateUrl: \'./medical-illustration-behavior.component.html\',\\n styleUrls: [\'./medical-illustration-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MedicalIllustrationBehaviorComponent {\\n /**\\n * Current illustration url\\n */\\n readonly currentUrl = selectSnapshot(IllustratorSelectors.url);\\n\\n /**\\n * Current mapping file\\n */\\n readonly mapping = selectSnapshot(IllustratorSelectors.mapping);\\n\\n /**\\n * Iri of medical illustration behavior component\\n */\\n readonly iri = selectSnapshot(ActiveFtuSelectors.iri);\\n\\n /**\\n * Get all tissues\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n\\n /**\\n * Gets tissue title from the list of tissues\\n */\\n get tissueTitle(): string {\\n const iri = this.iri();\\n const tissues = this.tissues();\\n return iri ? tissues[iri].label : \'\';\\n }\\n\\n /**\\n * Updates the active node on node hover\\n */\\n readonly updateNodeOnHover = dispatch(IllustratorActions.SetHover);\\n\\n /**\\n * Updates the active node on node click\\n */\\n readonly updateNodeOnClicked = dispatch(IllustratorActions.SetClicked);\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n hra-label-box {\\n border-bottom: 0.063rem solid #d3d3d3;\\n width: 100%;\\n height: 3.5rem;\\n }\\n}\\n","styleUrl":"./medical-illustration-behavior.component.scss"}],"stylesData":"","accessors":{"tissueTitle":{"name":"tissueTitle","getSignature":{"name":"tissueTitle","type":"string","returnType":"string","line":43,"rawdescription":"\\n\\nGets tissue title from the list of tissues\\n","description":"

      Gets tissue title from the list of tissues

      \\n"}}},"templateData":"{{ tissueTitle }}\\n\\n\\n"},{"name":"ScreenNoticeBehaviorComponent","id":"component-ScreenNoticeBehaviorComponent-de4fc156bf7f658d9ca0a8d114626d829387a03f3b206cb5439f1ad22b9e157cbc51e850b06eb8f0b9dd48a75acb723b42c7fd79d0c50694757e9d23cac9f416","file":"src/lib/screen-notice-behavior/screen-notice-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-ui-screen-notice-behavior","styleUrls":["./screen-notice-behavior.component.scss"],"styles":[],"templateUrl":["./screen-notice-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"content","defaultValue":"selectQuerySnapshot(RR.anyText, ResourceIds.ScreenSizeNoticeContent)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Content of screen notice behavior component

      \\n","line":21,"rawdescription":"\\nContent of screen notice behavior component","modifierKind":[144]},{"name":"portal","defaultValue":"LinkIds.Portal","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Hra portal link routing after clicking on HRA Portal

      \\n","line":24,"rawdescription":"\\nHra portal link routing after clicking on HRA Portal","modifierKind":[144]}],"methodsClass":[{"name":"close","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":33,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nA function which closes the screen size notice dialog box","description":"

      A function which closes the screen size notice dialog box

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component for screen size notice behavior which provides the content to be displayed and provides functionality\\nfor the buttons on the notice modal

      \\n","rawdescription":"\\nA component for screen size notice behavior which provides the content to be displayed and provides functionality\\nfor the buttons on the notice modal","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, inject } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { dispatch, selectQuerySnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { ResourceRegistrySelectors as RR, StorageActions, StorageId } from \'@hra-ui/cdk/state\';\\nimport { ResourceIds, LinkIds } from \'@hra-ui/state\';\\nimport { ScreenSizeNoticeComponent } from \'@hra-ui/components/molecules\';\\nimport { MatDialogRef } from \'@angular/material/dialog\';\\n\\n/** A component for screen size notice behavior which provides the content to be displayed and provides functionality\\n * for the buttons on the notice modal */\\n@Component({\\n selector: \'ftu-ui-screen-notice-behavior\',\\n standalone: true,\\n imports: [CommonModule, ScreenSizeNoticeComponent],\\n templateUrl: \'./screen-notice-behavior.component.html\',\\n styleUrls: [\'./screen-notice-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ScreenNoticeBehaviorComponent {\\n /** Content of screen notice behavior component*/\\n readonly content = selectQuerySnapshot(RR.anyText, ResourceIds.ScreenSizeNoticeContent);\\n\\n /** Hra portal link routing after clicking on HRA Portal*/\\n readonly portal = LinkIds.Portal;\\n\\n /** Reference for the screen size notice dialog box*/\\n private readonly ref = inject(MatDialogRef, { optional: true });\\n\\n /** A dispatcher function that sets the Local Storage as \'shown\'*/\\n private readonly setScreenNoticeShown = dispatch(StorageActions.Set, StorageId.Local, \'screen-size-notice\', \'shown\');\\n\\n /** A function which closes the screen size notice dialog box*/\\n close(): void {\\n this.setScreenNoticeShown();\\n this.ref?.close();\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n}\\n","styleUrl":"./screen-notice-behavior.component.scss"}],"stylesData":"","templateData":" \\n"},{"name":"TissueLibraryBehaviorComponent","id":"component-TissueLibraryBehaviorComponent-1565978e9f70870b546b49f929236ee86c2eb9cc241e10b805863df59e4d66dca72495ffa8c27a7f282e396acc84f78b6724255570a4eab733a3af995543b47a","file":"src/lib/tissue-library-behavior/tissue-library-behavior.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"ftu-tissue-library-behavior","styleUrls":["./tissue-library-behavior.component.scss"],"styles":[],"templateUrl":["./tissue-library-behavior.component.html"],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"list","deprecated":false,"deprecationMessage":"","type":"TissueTreeListComponent","optional":true,"description":"

      Reference to the TissueTreeListComponent.

      \\n","line":25,"rawdescription":"\\n\\nReference to the TissueTreeListComponent.\\n","decorators":[{"name":"ViewChild","stringifiedArguments":"\'list\', {static: true}"}],"modifierKind":[144]},{"name":"selected","deprecated":false,"deprecationMessage":"","type":"Tissue","optional":true,"description":"

      Selected of tissue library behavior component

      \\n","line":34,"rawdescription":"\\n\\nSelected of tissue library behavior component\\n"},{"name":"tissues","defaultValue":"selectSnapshot(TissueLibrarySelectors.tissues)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Input for tissues data

      \\n","line":30,"rawdescription":"\\n\\nInput for tissues data\\n","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for Tissue Library Behavior

      \\n","rawdescription":"\\n\\nComponent for Tissue Library Behavior\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, ViewChild } from \'@angular/core\';\\nimport { select$, selectSnapshot } from \'@hra-ui/cdk/injectors\';\\nimport { TissueTreeListComponent } from \'@hra-ui/components/molecules\';\\nimport { Tissue } from \'@hra-ui/services\';\\nimport { ActiveFtuSelectors, TissueLibrarySelectors } from \'@hra-ui/state\';\\nimport { LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * Component for Tissue Library Behavior\\n */\\n@Component({\\n selector: \'ftu-tissue-library-behavior\',\\n standalone: true,\\n imports: [CommonModule, LabelBoxComponent, TissueTreeListComponent],\\n templateUrl: \'./tissue-library-behavior.component.html\',\\n styleUrls: [\'./tissue-library-behavior.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueLibraryBehaviorComponent {\\n /**\\n * Reference to the TissueTreeListComponent.\\n */\\n @ViewChild(\'list\', { static: true })\\n readonly list?: TissueTreeListComponent;\\n\\n /**\\n * Input for tissues data\\n */\\n readonly tissues = selectSnapshot(TissueLibrarySelectors.tissues);\\n /**\\n * Selected of tissue library behavior component\\n */\\n selected?: Tissue;\\n\\n /**\\n * Sets the TissueItem instance as undefined if\\n * the url is undefined\\n */\\n constructor() {\\n /** Get iris from the observable else reset selection if\\n * iri is undefined\\n */\\n select$(ActiveFtuSelectors.iri).subscribe((iri) => {\\n this.selected = iri && this.tissues()[iri];\\n if (iri === undefined) {\\n this.list?.resetSelection();\\n }\\n });\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n .label {\\n border-bottom: 1px solid #e2e7e9;\\n width: 100%;\\n height: 3.5rem;\\n }\\n}\\n","styleUrl":"./tissue-library-behavior.component.scss"}],"stylesData":"","constructorObj":{"name":"constructor","description":"

      Sets the TissueItem instance as undefined if\\nthe url is undefined

      \\n","deprecated":false,"deprecationMessage":"","args":[],"line":34,"rawdescription":"\\n\\nSets the TissueItem instance as undefined if\\nthe url is undefined\\n"},"templateData":"FTU Library\\n \\n"}],"modules":[],"miscellaneous":{"variables":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details/biomarker-details.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"},{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}],"functions":[],"typealiases":[],"enumerations":[],"groupedVariables":{"src/lib/biomarker-details/biomarker-details.component.ts":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details/biomarker-details.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}],"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts":[{"name":"EMPTY_TISSUE_INFO","ctype":"miscellaneous","subtype":"variable","file":"src/lib/biomarker-details-wc/biomarker-details-wc.component.ts","deprecated":false,"deprecationMessage":"","type":"TissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n}","rawdescription":"PlaceHolder for Empty Tissue Info","description":"

      PlaceHolder for Empty Tissue Info

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{}}}')},"./dist/compodoc/components-molecules/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"ContactData","id":"interface-ContactData-309310b2740da63be5ea5aaa894ef73ced8bed2a86b50643af4dd031551d6cdb7b26ece6b3328d0e31c21e46f940bd8b901f5665c241ca2a4cb38f39631bd8a3","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmailInputComponent, RequiredInputComponent, RequiredTextboxComponent } from \'@hra-ui/components/atoms\';\\nimport { produce } from \'immer\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n An interface representing contact data information which will be emitted if all the fields are in correct format.\\n */\\nexport interface ContactData {\\n /** The email address of the person submitting the form. */\\n email: string;\\n /** The subject line of the message being sent. */\\n subject: string;\\n /** The body of the message being sent. */\\n message: string;\\n}\\n\\n/** Initial empty contact data */\\nconst EMPTY_CONTACT_DATA: Partial = {\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n};\\n\\n/**\\n * Contact modal component.\\n */\\n@Component({\\n selector: \'hra-contact-modal\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatIconModule,\\n EmailInputComponent,\\n MarkdownModule,\\n RequiredTextboxComponent,\\n RequiredInputComponent,\\n ],\\n templateUrl: \'./contact-modal.component.html\',\\n styleUrls: [\'./contact-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactModalComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Emits when the submit button is clicked and all the values are appropriate. */\\n @Output() readonly submitClick = new EventEmitter();\\n\\n /** Emits when the cancel button or close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n\\n /** A function to disable the submit button. If all the values are in approproiate format, then it will be enabled. */\\n get disableSubmit(): boolean {\\n return Object.values(this.contactData).some((value) => value === undefined);\\n }\\n\\n /** Asigns the undefined initially to all the input fields. */\\n contactData = EMPTY_CONTACT_DATA;\\n\\n /** Updates the contact data object with a new value for a given key. */\\n updateData(key: K, value?: ContactData[K]): void {\\n this.contactData = produce(this.contactData, (draft) => {\\n draft[key] = value;\\n });\\n }\\n\\n /** It emits the updated value of contact data */\\n submit(): void {\\n this.submitClick.emit(this.contactData as ContactData);\\n }\\n}\\n","properties":[{"name":"email","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The email address of the person submitting the form.

      \\n","line":14,"rawdescription":"\\nThe email address of the person submitting the form."},{"name":"message","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The body of the message being sent.

      \\n","line":18,"rawdescription":"\\nThe body of the message being sent."},{"name":"subject","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      The subject line of the message being sent.

      \\n","line":16,"rawdescription":"\\nThe subject line of the message being sent."}],"indexSignatures":[],"kind":165,"description":"

      An interface representing contact data information which will be emitted if all the fields are in correct format.

      \\n","rawdescription":"\\n\\nAn interface representing contact data information which will be emitted if all the fields are in correct format.\\n","methods":[]},{"name":"DataItem","id":"interface-DataItem-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      A string property that represents the label

      \\n","line":8,"rawdescription":"\\nA string property that represents the label"},{"name":"value","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      A string property that represents the value

      \\n","line":10,"rawdescription":"\\nA string property that represents the value"}],"indexSignatures":[],"kind":165,"description":"

      An item which defines a string label and a string value

      \\n","rawdescription":"\\nAn item which defines a string label and a string value","methods":[]},{"name":"DataNode","id":"interface-DataNode-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","properties":[{"name":"children","deprecated":false,"deprecationMessage":"","type":"K[]","optional":true,"description":"

      Nested nodes

      \\n","line":29,"rawdescription":"\\nNested nodes"},{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":true,"description":"

      Id to pass as a query parameter on navigation

      \\n","line":25,"rawdescription":"\\nId to pass as a query parameter on navigation"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      User readable label

      \\n","line":23,"rawdescription":"\\nUser readable label"},{"name":"link","deprecated":false,"deprecationMessage":"","type":"LinkId","optional":true,"description":"

      Link to navigate to on node click

      \\n","line":27,"rawdescription":"\\nLink to navigate to on node click"}],"indexSignatures":[],"kind":165,"description":"

      Base node type

      \\n","rawdescription":"\\nBase node type","methods":[]},{"name":"DownloadFormat","id":"interface-DownloadFormat-45c5a61fc5d68c201808fb76ff867f9a7cf8e42e6ef95ae08b440dbd37ce63eb4c77c3da0597ef90973854d65522a3ba496eeb5eccbe75750c1fd2f5abf52e6b","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { MatListModule } from \'@angular/material/list\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * Base type for different download format options.\\n */\\nexport interface DownloadFormat {\\n /**\\n * User readable format label\\n */\\n label: string;\\n}\\n\\n/**\\n * Positioning value for the download list popup\\n */\\nconst DOWNLOADS_LIST_POSITION: ConnectedPosition[] = [\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n];\\n\\n/**\\n * Component for footer that displays its content at the bottom of the page with different action buttons.\\n */\\n@Component({\\n selector: \'hra-footer\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, OverlayModule, MatListModule, LinkDirective],\\n templateUrl: \'./footer.component.html\',\\n styleUrls: [\'./footer.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterComponent {\\n /** Host binding of footer component */\\n @HostBinding(\'class\')\\n @Input()\\n size: \'small\' | \'large\' = \'large\';\\n\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Input for HRA Portal link */\\n @Input() hraPortal = EMPTY_LINK;\\n\\n /** Input for Illustration metadata page link in HRA Portal */\\n @Input() illustrationMetadata = EMPTY_LINK;\\n\\n /** Input for embed link in HRA Portal */\\n @Input() embed = EMPTY_LINK;\\n\\n /** Different download formats options displayed to the user */\\n @Input() downloadFormats: T[] = [];\\n\\n /** Emits the selected download format */\\n @Output() readonly download = new EventEmitter();\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly contactClick = new EventEmitter();\\n\\n /** Download list popup overlay positioning */\\n readonly DOWNLOADS_LIST_POSITION = DOWNLOADS_LIST_POSITION;\\n\\n /** Gets whether the footer required is small */\\n get isSmall(): boolean {\\n return this.size === \'small\';\\n }\\n\\n /** Whether the download list panel is open */\\n downloadListOpen = false;\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      User readable format label

      \\n","line":17,"rawdescription":"\\n\\nUser readable format label\\n"}],"indexSignatures":[],"kind":165,"description":"

      Base type for different download format options.

      \\n","rawdescription":"\\n\\nBase type for different download format options.\\n","methods":[]},{"name":"InternalNode","id":"interface-InternalNode-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","properties":[{"name":"data","deprecated":false,"deprecationMessage":"","type":"T","optional":false,"description":"

      Associated user node data

      \\n","line":43,"rawdescription":"\\nAssociated user node data"},{"name":"expandable","deprecated":false,"deprecationMessage":"","type":"boolean","optional":false,"description":"

      Whether the node can be expanded to display child nodes

      \\n","line":39,"rawdescription":"\\nWhether the node can be expanded to display child nodes"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Displayed label

      \\n","line":37,"rawdescription":"\\nDisplayed label"},{"name":"level","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Depth of node in the tree

      \\n","line":41,"rawdescription":"\\nDepth of node in the tree"}],"indexSignatures":[],"kind":165,"description":"

      Internal interface for flat tissue data hierarchy

      \\n","rawdescription":"\\n\\nInternal interface for flat tissue data hierarchy\\n","methods":[]},{"name":"MetricItem","id":"interface-MetricItem-e52c0a1cdf090042d1924c4907a4034774cbb442217faca9ec5035e76d2796116cf55644ecf49ae040fdea1168f9c5d99f6ce15b2079f70de3d853fece481b30","file":"src/lib/metrics/metrics.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n An interface representing a single metric with an icon, value and description.\\n */\\nexport interface MetricItem {\\n /** Represents the icon associated with the metric. */\\n icon: string;\\n /** Describes the numberical value of the metric. */\\n value: string;\\n /** Describes the type of metric. */\\n description: string;\\n}\\n/**\\n * Describes the metrics for the HuBMAP project.\\n */\\n@Component({\\n selector: \'hra-metrics\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./metrics.component.html\',\\n styleUrls: [\'./metrics.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MetricsComponent {\\n /** Main title of metrics component. */\\n @Input() title = \'\';\\n\\n /** Logo of metrics component. */\\n @Input() logo = \'\';\\n\\n /** List of metrics that will be shown to the user. */\\n @Input() metrics: MetricItem[] = [];\\n}\\n","properties":[{"name":"description","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Describes the type of metric.

      \\n","line":13,"rawdescription":"\\nDescribes the type of metric."},{"name":"icon","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Represents the icon associated with the metric.

      \\n","line":9,"rawdescription":"\\nRepresents the icon associated with the metric."},{"name":"value","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Describes the numberical value of the metric.

      \\n","line":11,"rawdescription":"\\nDescribes the numberical value of the metric."}],"indexSignatures":[],"kind":165,"description":"

      An interface representing a single metric with an icon, value and description.

      \\n","rawdescription":"\\n\\nAn interface representing a single metric with an icon, value and description.\\n","methods":[]},{"name":"NodeMapEntry","id":"interface-NodeMapEntry-34dafc0493fcadf92dd676bebad498e3798e87879ccd7ab9c56dfb6b52cf51b41a6b132fa4c00fa2f32867f3f84829bef3163da37de19cf480f10a8cd94e74f1","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.onCrosswalkHover(undefined as never as MouseEvent));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n if (event) {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n } else {\\n this.nodeHoverData$.next(undefined);\\n this.nodeHover.emit();\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","properties":[{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node id in svg

      \\n","line":69,"rawdescription":"\\nNode id in svg"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node label

      \\n","line":67,"rawdescription":"\\nNode label"},{"name":"ontologyId","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Ontology id of cell type

      \\n","line":71,"rawdescription":"\\nOntology id of cell type"}],"indexSignatures":[],"kind":165,"description":"

      Interface for node entries

      \\n","rawdescription":"\\nInterface for node entries","methods":[]},{"name":"NodeTooltipData","id":"interface-NodeTooltipData-34dafc0493fcadf92dd676bebad498e3798e87879ccd7ab9c56dfb6b52cf51b41a6b132fa4c00fa2f32867f3f84829bef3163da37de19cf480f10a8cd94e74f1","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.onCrosswalkHover(undefined as never as MouseEvent));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n if (event) {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n } else {\\n this.nodeHoverData$.next(undefined);\\n this.nodeHover.emit();\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","properties":[{"name":"node","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Node name

      \\n","line":59,"rawdescription":"\\nNode name"},{"name":"origin","deprecated":false,"deprecationMessage":"","type":"literal type","optional":false,"description":"

      Center point of hovered node in screen coordinates

      \\n","line":61,"rawdescription":"\\nCenter point of hovered node in screen coordinates"}],"indexSignatures":[],"kind":165,"description":"

      Node tooltip data

      \\n","rawdescription":"\\nNode tooltip data","methods":[]},{"name":"SectionItem","id":"interface-SectionItem-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","properties":[{"name":"data","deprecated":false,"deprecationMessage":"","type":"DataItem","optional":false,"description":"

      A DateItem property that represents a section and its data

      \\n","line":18,"rawdescription":"\\nA DateItem property that represents a section and its data"},{"name":"isLastItem","deprecated":false,"deprecationMessage":"","type":"boolean","optional":false,"description":"

      A boolean property that represents the last item of a section

      \\n","line":20,"rawdescription":"\\nA boolean property that represents the last item of a section"},{"name":"section","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      A number property that represents the section number

      \\n","line":16,"rawdescription":"\\nA number property that represents the section number"}],"indexSignatures":[],"kind":165,"description":"

      An item which represents a section with a data item and an indicator for the last item in the section

      \\n","rawdescription":"\\nAn item which represents a section with a data item and an indicator for the last item in the section","methods":[]},{"name":"SourceListItem","id":"interface-SourceListItem-f0d0464b044f898be3752719190f2d8ad8511283d4daafb2f8b17bd0f4dfa0290abbbeb293819664c07134fcaee5a64313aaf72d69e335a063e244c2ba1d7c0c","file":"src/lib/source-list/source-list.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmptyBiomarkerComponent, LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/** SourceListItem interface contains title and link to the dataset for the SourceList*/\\nexport interface SourceListItem {\\n /** Title of the dataset in the SourceList */\\n title: string;\\n\\n /** Label of the dataset in the SourceList */\\n label: string;\\n\\n /** Link to the dataset in the SourceList */\\n link: string;\\n}\\n\\n/** This component shows list of sources with title and links to the datasets */\\n@Component({\\n selector: \'hra-source-list\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule, MatIconModule, LabelBoxComponent, EmptyBiomarkerComponent],\\n templateUrl: \'./source-list.component.html\',\\n styleUrls: [\'./source-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SourceListComponent {\\n /** List of sources with titles and links displayed to the user */\\n @Input() sources: SourceListItem[] = [];\\n /**\\n * Input buttonon text of empty biomarker component.\\n */\\n @Input() collaborateText = \'\';\\n\\n /**\\n * Input message markdown of empty biomarker component.\\n */\\n @Input() message = \'\';\\n /**\\n * Show table of source list component which toggles to true or false\\n * based on click\\n */\\n showTable = true;\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly collaborateClick = new EventEmitter();\\n\\n /**\\n * It changes the value of showTable to false if value it true\\n * and vice versa\\n */\\n toggleTable(): void {\\n this.showTable = !this.showTable;\\n }\\n}\\n","properties":[{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Label of the dataset in the SourceList

      \\n","line":13,"rawdescription":"\\nLabel of the dataset in the SourceList"},{"name":"link","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Link to the dataset in the SourceList

      \\n","line":16,"rawdescription":"\\nLink to the dataset in the SourceList"},{"name":"title","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Title of the dataset in the SourceList

      \\n","line":10,"rawdescription":"\\nTitle of the dataset in the SourceList"}],"indexSignatures":[],"kind":165,"description":"

      SourceListItem interface contains title and link to the dataset for the SourceList

      \\n","rawdescription":"\\nSourceListItem interface contains title and link to the dataset for the SourceList","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerTableDataCardComponent","id":"component-BiomarkerTableDataCardComponent-dba50a1e9cbac5f9733930bd6b04d1ac5fda31ee6342e13da75314f7b5dbbf46c436aab104bfc47abdc323e9ff42aeeb0047ee89577f639d3979c6964344bbd7","file":"src/lib/biomarker-table-data-card/biomarker-table-data-card.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table-data-card","styleUrls":["./biomarker-table-data-card.component.scss"],"styles":[],"templateUrl":["./biomarker-table-data-card.component.html"],"viewProviders":[],"inputsClass":[{"name":"data","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nNested list of DataItems for each section which is displayed to the user","description":"

      Nested list of DataItems for each section which is displayed to the user

      \\n","line":34,"type":"DataItem[][]","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"sectionItems","defaultValue":"[]","deprecated":false,"deprecationMessage":"","type":"SectionItem[]","optional":false,"description":"

      Converted nested array of DataItem into Flat array of SectionItem

      \\n","line":37,"rawdescription":"\\nConverted nested array of DataItem into Flat array of SectionItem"}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      This component displays a table with sections, where each section contains a list of items with a label and a value.

      \\n","rawdescription":"\\nThis component displays a table with sections, where each section contains a list of items with a label and a value.","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\n\\n/** An item which defines a string label and a string value */\\nexport interface DataItem {\\n /** A string property that represents the label */\\n label: string;\\n /** A string property that represents the value */\\n value: string;\\n}\\n\\n/** An item which represents a section with a data item and an indicator for the last item in the section */\\nexport interface SectionItem {\\n /** A number property that represents the section number */\\n section: number;\\n /** A DateItem property that represents a section and its data */\\n data: DataItem;\\n /** A boolean property that represents the last item of a section */\\n isLastItem: boolean;\\n}\\n\\n/** This component displays a table with sections, where each section contains a list of items with a label and a value. */\\n@Component({\\n selector: \'hra-biomarker-table-data-card\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule],\\n templateUrl: \'./biomarker-table-data-card.component.html\',\\n styleUrls: [\'./biomarker-table-data-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataCardComponent implements OnChanges {\\n /** Nested list of DataItems for each section which is displayed to the user */\\n @Input() data: DataItem[][] = [];\\n\\n /** Converted nested array of DataItem into Flat array of SectionItem */\\n sectionItems: SectionItem[] = [];\\n\\n /** Triggers an update on sectionItems array when data is changed */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.updateSectionItems();\\n }\\n }\\n\\n /** Updates sectionItems array when data is changed */\\n private updateSectionItems(): void {\\n const newSectionItems: SectionItem[] = [];\\n\\n this.data.forEach((section, sectionIndex) => {\\n section.forEach((item, itemIndex) => {\\n newSectionItems.push({\\n data: item,\\n section: sectionIndex,\\n isLastItem: itemIndex === section.length - 1,\\n });\\n });\\n });\\n\\n this.sectionItems = newSectionItems;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: flex;\\n padding: 1rem 1.5rem;\\n border-radius: 0.5rem;\\n box-shadow: 0.063rem 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n background-color: vars.$primary-contrast-rgb;\\n\\n .mat-mdc-cell {\\n padding: 0.25rem 0rem;\\n }\\n\\n .mat-mdc-row {\\n height: fit-content;\\n }\\n\\n .no-border {\\n border: none;\\n }\\n\\n .label {\\n color: #243142;\\n padding-right: 3rem;\\n }\\n\\n .value {\\n color: #4c5a69;\\n }\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n}\\n","styleUrl":"./biomarker-table-data-card.component.scss"}],"stylesData":"","implements":["OnChanges"],"templateData":"
      No data
      \\n 0\\" [dataSource]=\\"sectionItems\\">\\n \\n\\n \x3c!-- Label Column --\x3e\\n \\n \\n \\n \\n\\n \x3c!-- Value Column --\x3e\\n \\n \\n \\n \\n\\n \\n
      \\n Biomarker Table Data Card\\n
      Item Label\\n {{ element.data.label }}\\n Item Value\\n {{ element.data.value }}\\n
      \\n"},{"name":"BiomarkerTableDataIconComponent","id":"component-BiomarkerTableDataIconComponent-0fab04062dee70e0c4d57bfdc6f056400c9b82591b050c6912b9e59a896e1a5535f884a104c1d3f95c19721a049ca51f5b2a953512dc1d6a501c29d5399a063c","file":"src/lib/biomarker-table-data-icon/biomarker-table-data-icon.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table-data-icon","styleUrls":["./biomarker-table-data-icon.component.scss"],"styles":[],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[{"name":"color","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRepresents the color of the icon","description":"

      Represents the color of the icon

      \\n","line":17,"type":"string","decorators":[]},{"name":"size","defaultValue":"0","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRepresents the size of the icon","description":"

      Represents the size of the icon

      \\n","line":20,"type":"number","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Describes the data icon for the table

      \\n","rawdescription":"\\n\\nDescribes the data icon for the table\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, HostBinding, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n * Describes the data icon for the table\\n */\\n@Component({\\n selector: \'hra-biomarker-table-data-icon\',\\n standalone: true,\\n imports: [CommonModule],\\n template: \'\',\\n styleUrls: [\'./biomarker-table-data-icon.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableDataIconComponent {\\n /** Represents the color of the icon */\\n @HostBinding(\'style.background-color\') @Input() color = \'\';\\n\\n /** Represents the size of the icon */\\n @HostBinding(\'style.--radius.rem\') @Input() size = 0;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n border-radius: 50%;\\n --radius: 0.625rem;\\n width: var(--radius);\\n height: var(--radius);\\n}\\n","styleUrl":"./biomarker-table-data-icon.component.scss"}],"stylesData":""},{"name":"ContactModalComponent","id":"component-ContactModalComponent-309310b2740da63be5ea5aaa894ef73ced8bed2a86b50643af4dd031551d6cdb7b26ece6b3328d0e31c21e46f940bd8b901f5665c241ca2a4cb38f39631bd8a3","file":"src/lib/contact-modal/contact-modal.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-contact-modal","styleUrls":["./contact-modal.component.scss"],"styles":[],"templateUrl":["./contact-modal.component.html"],"viewProviders":[],"inputsClass":[{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product logo URL to displayed on the left side.","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":49,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product title to displayed on the left side.","description":"

      Input for product title to displayed on the left side.

      \\n","line":52,"type":"string","decorators":[]}],"outputsClass":[{"name":"closeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the cancel button or close icon is clicked","description":"

      Emits when the cancel button or close icon is clicked

      \\n","line":58,"type":"EventEmitter"},{"name":"submitClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the submit button is clicked and all the values are appropriate.","description":"

      Emits when the submit button is clicked and all the values are appropriate.

      \\n","line":55,"type":"EventEmitter"}],"propertiesClass":[{"name":"contactData","defaultValue":"EMPTY_CONTACT_DATA","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Asigns the undefined initially to all the input fields.

      \\n","line":66,"rawdescription":"\\nAsigns the undefined initially to all the input fields."}],"methodsClass":[{"name":"submit","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":76,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nIt emits the updated value of contact data","description":"

      It emits the updated value of contact data

      \\n"},{"name":"updateData","args":[{"name":"key","type":"K","deprecated":false,"deprecationMessage":""},{"name":"value","type":"","deprecated":false,"deprecationMessage":"","optional":true}],"optional":false,"returnType":"void","typeParameters":["K"],"line":69,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nUpdates the contact data object with a new value for a given key.","description":"

      Updates the contact data object with a new value for a given key.

      \\n","jsdoctags":[{"name":"key","type":"K","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":"value","type":"","deprecated":false,"deprecationMessage":"","optional":true,"tagName":{"text":"param"}}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Contact modal component.

      \\n","rawdescription":"\\n\\nContact modal component.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmailInputComponent, RequiredInputComponent, RequiredTextboxComponent } from \'@hra-ui/components/atoms\';\\nimport { produce } from \'immer\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n An interface representing contact data information which will be emitted if all the fields are in correct format.\\n */\\nexport interface ContactData {\\n /** The email address of the person submitting the form. */\\n email: string;\\n /** The subject line of the message being sent. */\\n subject: string;\\n /** The body of the message being sent. */\\n message: string;\\n}\\n\\n/** Initial empty contact data */\\nconst EMPTY_CONTACT_DATA: Partial = {\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n};\\n\\n/**\\n * Contact modal component.\\n */\\n@Component({\\n selector: \'hra-contact-modal\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatIconModule,\\n EmailInputComponent,\\n MarkdownModule,\\n RequiredTextboxComponent,\\n RequiredInputComponent,\\n ],\\n templateUrl: \'./contact-modal.component.html\',\\n styleUrls: [\'./contact-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ContactModalComponent {\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Emits when the submit button is clicked and all the values are appropriate. */\\n @Output() readonly submitClick = new EventEmitter();\\n\\n /** Emits when the cancel button or close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n\\n /** A function to disable the submit button. If all the values are in approproiate format, then it will be enabled. */\\n get disableSubmit(): boolean {\\n return Object.values(this.contactData).some((value) => value === undefined);\\n }\\n\\n /** Asigns the undefined initially to all the input fields. */\\n contactData = EMPTY_CONTACT_DATA;\\n\\n /** Updates the contact data object with a new value for a given key. */\\n updateData(key: K, value?: ContactData[K]): void {\\n this.contactData = produce(this.contactData, (draft) => {\\n draft[key] = value;\\n });\\n }\\n\\n /** It emits the updated value of contact data */\\n submit(): void {\\n this.submitClick.emit(this.contactData as ContactData);\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n position: relative;\\n padding-top: 2rem;\\n margin-right: 1.5rem;\\n margin-left: 1.5rem;\\n font-family: \'Inter\';\\n\\n .product-logo {\\n display: flex;\\n align-items: center;\\n\\n .product-logo-image {\\n margin-right: 1rem;\\n }\\n\\n .product-title {\\n color: #990000;\\n margin: 0;\\n font-weight: 600;\\n }\\n }\\n\\n .close {\\n position: absolute;\\n top: 1.5rem;\\n right: 0rem;\\n }\\n\\n .submit {\\n margin-right: 1.5rem;\\n }\\n\\n .submit,\\n .cancel {\\n width: 7.5rem;\\n }\\n\\n .email {\\n margin-top: 1.25rem;\\n }\\n\\n .message-field {\\n margin-top: 1rem;\\n }\\n\\n .subject-field {\\n margin-top: 1rem;\\n }\\n\\n .desc {\\n margin-top: 1.5rem;\\n }\\n}\\n","styleUrl":"./contact-modal.component.scss"}],"stylesData":"","accessors":{"disableSubmit":{"name":"disableSubmit","getSignature":{"name":"disableSubmit","type":"boolean","returnType":"boolean","line":61,"rawdescription":"\\nA function to disable the submit button. If all the values are in approproiate format, then it will be enabled.","description":"

      A function to disable the submit button. If all the values are in approproiate format, then it will be enabled.

      \\n"}}},"templateData":"\\n \\"Prodoct\\n

      {{ productTitle }}

      \\n
      \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n"},{"name":"FooterComponent","id":"component-FooterComponent-45c5a61fc5d68c201808fb76ff867f9a7cf8e42e6ef95ae08b440dbd37ce63eb4c77c3da0597ef90973854d65522a3ba496eeb5eccbe75750c1fd2f5abf52e6b","file":"src/lib/footer/footer.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-footer","styleUrls":["./footer.component.scss"],"styles":[],"templateUrl":["./footer.component.html"],"viewProviders":[],"inputsClass":[{"name":"downloadFormats","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDifferent download formats options displayed to the user","description":"

      Different download formats options displayed to the user

      \\n","line":74,"type":"T[]","decorators":[]},{"name":"embed","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for embed link in HRA Portal","description":"

      Input for embed link in HRA Portal

      \\n","line":71,"type":"any","decorators":[]},{"name":"hraPortal","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for HRA Portal link","description":"

      Input for HRA Portal link

      \\n","line":65,"type":"any","decorators":[]},{"name":"illustrationMetadata","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for Illustration metadata page link in HRA Portal","description":"

      Input for Illustration metadata page link in HRA Portal

      \\n","line":68,"type":"any","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product logo URL to displayed on the left side.","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":59,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for product title to displayed on the left side.","description":"

      Input for product title to displayed on the left side.

      \\n","line":62,"type":"string","decorators":[]},{"name":"size","defaultValue":"\'large\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHost binding of footer component","description":"

      Host binding of footer component

      \\n","line":56,"type":"\\"small\\" | \\"large\\"","decorators":[]}],"outputsClass":[{"name":"contactClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the contact button is clicked","description":"

      Emits when the contact button is clicked

      \\n","line":80,"type":"EventEmitter"},{"name":"download","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits the selected download format","description":"

      Emits the selected download format

      \\n","line":77,"type":"EventEmitter"}],"propertiesClass":[{"name":"downloadListOpen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Whether the download list panel is open

      \\n","line":91,"rawdescription":"\\nWhether the download list panel is open"},{"name":"DOWNLOADS_LIST_POSITION","defaultValue":"DOWNLOADS_LIST_POSITION","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Download list popup overlay positioning

      \\n","line":83,"rawdescription":"\\nDownload list popup overlay positioning","modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for footer that displays its content at the bottom of the page with different action buttons.

      \\n","rawdescription":"\\n\\nComponent for footer that displays its content at the bottom of the page with different action buttons.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { MatListModule } from \'@angular/material/list\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk/state\';\\n\\n/**\\n * Base type for different download format options.\\n */\\nexport interface DownloadFormat {\\n /**\\n * User readable format label\\n */\\n label: string;\\n}\\n\\n/**\\n * Positioning value for the download list popup\\n */\\nconst DOWNLOADS_LIST_POSITION: ConnectedPosition[] = [\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n];\\n\\n/**\\n * Component for footer that displays its content at the bottom of the page with different action buttons.\\n */\\n@Component({\\n selector: \'hra-footer\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, OverlayModule, MatListModule, LinkDirective],\\n templateUrl: \'./footer.component.html\',\\n styleUrls: [\'./footer.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FooterComponent {\\n /** Host binding of footer component */\\n @HostBinding(\'class\')\\n @Input()\\n size: \'small\' | \'large\' = \'large\';\\n\\n /** Input for product logo URL to displayed on the left side. */\\n @Input() productLogoUrl = \'\';\\n\\n /** Input for product title to displayed on the left side. */\\n @Input() productTitle = \'\';\\n\\n /** Input for HRA Portal link */\\n @Input() hraPortal = EMPTY_LINK;\\n\\n /** Input for Illustration metadata page link in HRA Portal */\\n @Input() illustrationMetadata = EMPTY_LINK;\\n\\n /** Input for embed link in HRA Portal */\\n @Input() embed = EMPTY_LINK;\\n\\n /** Different download formats options displayed to the user */\\n @Input() downloadFormats: T[] = [];\\n\\n /** Emits the selected download format */\\n @Output() readonly download = new EventEmitter();\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly contactClick = new EventEmitter();\\n\\n /** Download list popup overlay positioning */\\n readonly DOWNLOADS_LIST_POSITION = DOWNLOADS_LIST_POSITION;\\n\\n /** Gets whether the footer required is small */\\n get isSmall(): boolean {\\n return this.size === \'small\';\\n }\\n\\n /** Whether the download list panel is open */\\n downloadListOpen = false;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n padding: 1rem 2rem;\\n border-top: 0.063rem solid #e2e7e9;\\n align-items: center;\\n background-color: #f8f9fa;\\n gap: 1rem;\\n\\n --palette-primary-500: #abcdef;\\n\\n .controls {\\n display: flex;\\n justify-content: flex-end;\\n }\\n .filler {\\n flex-grow: 1;\\n }\\n\\n .product-title {\\n color: #990000;\\n margin-right: 0rem;\\n }\\n\\n a {\\n cursor: pointer;\\n display: flex;\\n }\\n\\n .product-logo-image {\\n height: 1.2rem;\\n margin-right: 1rem;\\n }\\n\\n button {\\n justify-content: center;\\n align-items: center;\\n min-width: 9rem;\\n min-height: 3rem;\\n gap: 0.5rem;\\n\\n --palette-primary-100-rgb: #4c5a69;\\n --palette-primary-500-rgb: #243142;\\n\\n &.mat-accent {\\n &:active {\\n --palette-primary-700-rgb: #4c5a69;\\n }\\n .mat-icon {\\n z-index: 1;\\n }\\n }\\n }\\n}\\n\\n::ng-deep {\\n .download-options-panel {\\n box-shadow: 0.1rem 0.1rem 0.4rem 0.2rem #dad7d7;\\n background-color: #ffffff;\\n }\\n}\\n","styleUrl":"./footer.component.scss"}],"stylesData":"","accessors":{"isSmall":{"name":"isSmall","getSignature":{"name":"isSmall","type":"boolean","returnType":"boolean","line":86,"rawdescription":"\\nGets whether the footer required is small","description":"

      Gets whether the footer required is small

      \\n"}}},"templateData":"\\n
      \\n\\n\\n\\n\\n download\\n Download\\n\\n\\n\\n\\n
      \\n\\n\\n\\n\\n\\n\\n \\n \\n {{ format.label }}\\n \\n \\n\\n"},{"name":"FullscreenContainerComponent","id":"component-FullscreenContainerComponent-78edc2b37cbc90a17be0fcca4ed7291593d5f3d12c4ea823de3f9510c13bad4492bc5cd65823726fc7e333c874880c17093ff9d20096fd92e20137c8cc4f75af","file":"src/lib/fullscreen/fullscreen-container.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-fullscreen-container","styleUrls":[],"styles":["\\n :host {\\n display: block;\\n position: relative;\\n }\\n "],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[{"name":"fullscreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nA boolean input property that controls the fullscreen mode","description":"

      A boolean input property that controls the fullscreen mode

      \\n","line":38,"type":"boolean","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"content","deprecated":false,"deprecationMessage":"","type":"QueryList","optional":true,"description":"

      A property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component's content area

      \\n","line":35,"rawdescription":"\\nA property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component\'s content area","decorators":[{"name":"ContentChildren","stringifiedArguments":"FullscreenContentComponent"}],"modifierKind":[144]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      A component that wraps any child components of type FullscreenContentComponent and\\nsets their isFullScreen property to true or false based on its own fullscreen input property

      \\n","rawdescription":"\\nA component that wraps any child components of type FullscreenContentComponent and\\nsets their isFullScreen property to true or false based on its own fullscreen input property\\n","type":"component","sourceCode":"import {\\n AfterContentInit,\\n ChangeDetectionStrategy,\\n Component,\\n ContentChildren,\\n Input,\\n OnChanges,\\n QueryList,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { FullscreenContentComponent } from \'./fullscreen-content.component\';\\n\\n/** A component that wraps any child components of type FullscreenContentComponent and\\n * sets their isFullScreen property to true or false based on its own fullscreen input property\\n */\\n@Component({\\n selector: \'hra-fullscreen-container\',\\n standalone: true,\\n imports: [CommonModule, FullscreenContentComponent],\\n template: \'\',\\n styles: [\\n `\\n :host {\\n display: block;\\n position: relative;\\n }\\n `,\\n ],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FullscreenContainerComponent implements AfterContentInit, OnChanges {\\n /** A property that gets a reference to any child components of type FullscreenContentComponent that are projected into the component\'s content area */\\n @ContentChildren(FullscreenContentComponent)\\n readonly content?: QueryList;\\n\\n /** A boolean input property that controls the fullscreen mode */\\n @Input() fullscreen = false;\\n\\n /** It calls the updateFullscreenMode method to set the isFullScreen property of the child\\n * FullscreenContentComponent instances based on the value of the fullscreen input property\\n */\\n ngAfterContentInit(): void {\\n this.updateFullscreenMode();\\n }\\n\\n /** It checks if the fullscreen input property has changed, and calls the updateFullscreenMode method if it has */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'fullscreen\' in changes) {\\n this.updateFullscreenMode();\\n }\\n }\\n\\n /** A private method that sets the isFullScreen property of each child FullscreenContentComponent based on the value of the fullscreen */\\n private updateFullscreenMode(): void {\\n this.content?.forEach((content) => {\\n content.isFullScreen = this.fullscreen;\\n });\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":"","stylesData":"\\n :host {\\n display: block;\\n position: relative;\\n }\\n \\n","implements":["AfterContentInit","OnChanges"]},{"name":"FullscreenContentComponent","id":"component-FullscreenContentComponent-061cdd7c639f9c53e46272aaf23ed318885fbcf937978d8940b0f0baf165576129c5897204992603662d7b530bcd8d63a7d7a97602a18e97b7f1711f84c4725f","file":"src/lib/fullscreen/fullscreen-content.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-fullscreen-content","styleUrls":["./fullscreen-content.component.scss"],"styles":[],"template":"","templateUrl":[],"viewProviders":[],"inputsClass":[],"outputsClass":[],"propertiesClass":[{"name":"isFullScreen","defaultValue":"false","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":40,"rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","decorators":[{"name":"HostBinding","stringifiedArguments":"\'class.fullscreen-on\'"},{"name":"HostBinding","stringifiedArguments":"\'@animateResize\'"}]}],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[{"name":"@animateResize","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":40,"type":"boolean","decorators":[]},{"name":"class.fullscreen-on","defaultValue":"false","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThis binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true","description":"

      This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true

      \\n","line":40,"type":"boolean","decorators":[]}],"hostListeners":[],"description":"

      A component that displays its content in fullscreen mode when its isFullScreen property is set to true

      \\n","rawdescription":"\\nA component that displays its content in fullscreen mode when its isFullScreen property is set to true","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, HostBinding } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { animate, state, style, transition, trigger } from \'@angular/animations\';\\n\\n/** A component that displays its content in fullscreen mode when its isFullScreen property is set to true */\\n@Component({\\n selector: \'hra-fullscreen-content\',\\n standalone: true,\\n imports: [CommonModule],\\n animations: [\\n trigger(\'animateResize\', [\\n state(\\n \'true\',\\n style({\\n width: \'100%\',\\n position: \'absolute\',\\n right: 0,\\n })\\n ),\\n state(\\n \'false\',\\n style({\\n width: \'50%\',\\n position: \'absolute\',\\n right: 0,\\n })\\n ),\\n transition(\'true <=> false\', [animate(\'0.5s ease\')]),\\n ]),\\n ],\\n template: \'\',\\n styleUrls: [\'./fullscreen-content.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class FullscreenContentComponent {\\n /** This binds the isFullScreen property to the class.fullscreen-on when isFullScreen is true */\\n @HostBinding(\'class.fullscreen-on\')\\n /** This binds the isFullScreen property to the @animateResize when isFullScreen is true */\\n @HostBinding(\'@animateResize\')\\n isFullScreen = false;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n overflow-y: hidden;\\n transition: width 0.5s ease;\\n width: 50%;\\n\\n &.fullscreen-on {\\n z-index: 100;\\n background: #f8f9fa;\\n }\\n}\\n","styleUrl":"./fullscreen-content.component.scss"}],"stylesData":""},{"name":"HeaderComponent","id":"component-HeaderComponent-81f5689eacf69c8f1658a62e299bcad0df485f2cc8e6664f3f16cfa7d30400e53a54549f6aa8125abb2fc207fb428887c0a19dde695063a2d92611d78d9c6956","file":"src/lib/header/header.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-header","styleUrls":["./header.component.scss"],"styles":[],"templateUrl":["./header.component.html"],"viewProviders":[],"inputsClass":[{"name":"aboutLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for about link","description":"

      Input for about link

      \\n","line":40,"type":"any","decorators":[]},{"name":"appTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for app title to show on the left side.\\n","description":"

      Input for app title to show on the left side.

      \\n","line":34,"type":"string","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for product logo URL to displayed on the left side.\\n","description":"

      Input for product logo URL to displayed on the left side.

      \\n","line":24,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for product title to displayed on the left side.\\n","description":"

      Input for product title to displayed on the left side.

      \\n","line":29,"type":"string","decorators":[]},{"name":"productTitleLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInput for Product Title link","description":"

      Input for Product Title link

      \\n","line":37,"type":"any","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Header component, displays on top of every page.

      \\n","rawdescription":"\\n\\nHeader component, displays on top of every page.\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { EMPTY_LINK } from \'@hra-ui/cdk\';\\n\\n/**\\n * Header component, displays on top of every page.\\n */\\n@Component({\\n selector: \'hra-header\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MatRippleModule, LinkDirective],\\n templateUrl: \'./header.component.html\',\\n styleUrls: [\'./header.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HeaderComponent {\\n /**\\n * Input for product logo URL to displayed on the left side.\\n */\\n @Input() productLogoUrl = \'\';\\n\\n /**\\n * Input for product title to displayed on the left side.\\n */\\n @Input() productTitle = \'\';\\n\\n /**\\n * Input for app title to show on the left side.\\n */\\n @Input() appTitle = \'\';\\n\\n /** Input for Product Title link */\\n @Input() productTitleLink = EMPTY_LINK;\\n\\n /** Input for about link */\\n @Input() aboutLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: flex;\\n align-items: center;\\n height: 5rem;\\n padding: 0 2rem 0 1rem;\\n\\n @include utils.define-flex-filler();\\n\\n h1 {\\n // Reset margins for h1 elements\\n margin: 0;\\n }\\n\\n .product {\\n display: flex;\\n align-items: center;\\n text-decoration: none;\\n // Style the ripple animation\\n padding: 0 1rem;\\n border-radius: 0.25rem;\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\\n .text {\\n margin-left: 1rem;\\n font-weight: 600;\\n color: vars.$accent-rgb;\\n }\\n }\\n\\n .app {\\n margin-left: 0.5rem;\\n }\\n\\n .about {\\n width: 9rem;\\n height: 3rem;\\n text-decoration: none;\\n span {\\n border-bottom: 1px solid var(--palette-primary-500-rgb);\\n }\\n .icon {\\n width: 1.5rem;\\n height: 1.5rem;\\n font-size: 1.5rem;\\n }\\n }\\n\\n @media (max-width: 30rem) {\\n height: 4.5rem;\\n\\n .product .text,\\n .about .text {\\n @include utils.sr-only();\\n }\\n\\n .product {\\n height: 2.5rem;\\n padding: 0 0.25rem;\\n\\n .logo {\\n width: 1.5rem;\\n height: 1.5rem;\\n }\\n }\\n\\n .app {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n }\\n\\n .about {\\n min-width: 2.5rem;\\n width: 2.5rem;\\n height: 2.5rem;\\n padding: 0;\\n\\n .icon {\\n margin: 0;\\n }\\n }\\n }\\n\\n @media (max-width: 20rem) {\\n padding: 0;\\n }\\n}\\n","styleUrl":"./header.component.scss"}],"stylesData":"","templateData":"\\n \\n

      {{ productTitle }}

      \\n
      \\n

      {{ appTitle }}

      \\n\\n
      \\n\\n\\n info_outlined\\n About\\n\\n"},{"name":"HraLandingPageIntroWcComponent","id":"component-HraLandingPageIntroWcComponent-57ba89b5fa60bec2ad59de1cc52e4d3002935eab8da7f77895b1d7b507237df7df5d8fa2fec4dd3ba498b8d06fc5f70758beb2ba67ccbb24f2819798948e81d4","file":"src/lib/hra-landing-page-intro-wc/hra-landing-page-intro-wc.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-ui-hra-landing-page-intro-wc","styleUrls":["./hra-landing-page-intro-wc.component.scss"],"styles":[],"templateUrl":["./hra-landing-page-intro-wc.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for FTU Explorer","description":"

      Description for FTU Explorer

      \\n","line":19,"type":"string","decorators":[]},{"name":"partners","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThank you message to partners","description":"

      Thank you message to partners

      \\n","line":22,"type":"string","decorators":[]},{"name":"readMore","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro Image file url","description":"

      Intro Image file url

      \\n","line":25,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro title for FTU Explorer","description":"

      Intro title for FTU Explorer

      \\n","line":16,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro - Web coomponent

      \\n","rawdescription":"\\nComponent for LandingPage Intro - Web coomponent","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Component for LandingPage Intro - Web coomponent */\\n@Component({\\n selector: \'hra-ui-hra-landing-page-intro-wc\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule],\\n templateUrl: \'./hra-landing-page-intro-wc.component.html\',\\n styleUrls: [\'./hra-landing-page-intro-wc.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class HraLandingPageIntroWcComponent {\\n /** Intro title for FTU Explorer */\\n @Input() title = \'\';\\n\\n /** Description for FTU Explorer */\\n @Input() description = \'\';\\n\\n /** Thank you message to partners */\\n @Input() partners = \'\';\\n\\n /** Intro Image file url */\\n @Input() readMore = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n gap: 8px;\\n padding: 24px, 32px, 24px, 32px;\\n .title {\\n font-size: 20px;\\n font-family: Inter;\\n font-weight: 400;\\n line-height: 24px;\\n letter-spacing: 0em;\\n text-align: left;\\n }\\n\\n .description .partners .readMore {\\n font-family: Inter;\\n font-size: 16px;\\n font-weight: 400;\\n line-height: 24px;\\n letter-spacing: 0em;\\n text-align: left;\\n }\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n ::ng-deep p {\\n margin: 0;\\n }\\n}\\n","styleUrl":"./hra-landing-page-intro-wc.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n\\n\\n\\n\\n\\n"},{"name":"InfoModalComponent","id":"component-InfoModalComponent-56dc03e6960f4005149bab8dbf6a5b713061505964f6b3cc7d33868ed7f83aff7dbf222ccf66999864c6313f218c20f849715b3ebcc4d2ea44285c6e07811662","file":"src/lib/info-modal/info-modal.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-info-modal","styleUrls":["./info-modal.component.scss"],"styles":[],"templateUrl":["./info-modal.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nInformation modal message to the user","description":"

      Information modal message to the user

      \\n","line":24,"type":"string","decorators":[]},{"name":"productLogoUrl","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nProduct logo shown to the user","description":"

      Product logo shown to the user

      \\n","line":21,"type":"string","decorators":[]},{"name":"productTitle","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nProduct title shown to the user","description":"

      Product title shown to the user

      \\n","line":18,"type":"string","decorators":[]}],"outputsClass":[{"name":"closeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the close icon is clicked","description":"

      Emits when the close icon is clicked

      \\n","line":27,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays an information modal to the user with the product title and logo and description

      \\n","rawdescription":"\\nDisplays an information modal to the user with the product title and logo and description","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Displays an information modal to the user with the product title and logo and description */\\n@Component({\\n selector: \'hra-info-modal\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MarkdownModule],\\n templateUrl: \'./info-modal.component.html\',\\n styleUrls: [\'./info-modal.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class InfoModalComponent {\\n /** Product title shown to the user */\\n @Input() productTitle = \'\';\\n\\n /** Product logo shown to the user */\\n @Input() productLogoUrl = \'\';\\n\\n /** Information modal message to the user */\\n @Input() description = \'\';\\n\\n /** Emits when the close icon is clicked */\\n @Output() readonly closeClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n position: relative;\\n padding: 2rem 2rem 1.25rem 2rem;\\n\\n .close {\\n position: absolute;\\n top: 1.5rem;\\n right: 1.5rem;\\n }\\n\\n .title {\\n display: flex;\\n align-items: center;\\n\\n .product-logo-image {\\n height: 2.75rem;\\n margin-right: 1rem;\\n }\\n\\n .product-title {\\n margin: 0;\\n color: #990000;\\n }\\n }\\n\\n .description {\\n display: block;\\n margin-top: 1rem;\\n }\\n}\\n","styleUrl":"./info-modal.component.scss"}],"stylesData":"","templateData":"\\n \\"Prodoct\\n

      {{ productTitle }}

      \\n
      \\n\\n\\n\\n\\n"},{"name":"InteractiveSvgComponent","id":"component-InteractiveSvgComponent-34dafc0493fcadf92dd676bebad498e3798e87879ccd7ab9c56dfb6b52cf51b41a6b132fa4c00fa2f32867f3f84829bef3163da37de19cf480f10a8cd94e74f1","file":"src/lib/interactive-svg/interactive-svg.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":["ViewEncapsulation.ShadowDom"],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-interactive-svg","styleUrls":["./interactive-svg.component.scss"],"styles":[],"templateUrl":["./interactive-svg.component.html"],"viewProviders":[],"inputsClass":[{"name":"highlightId","deprecated":false,"deprecationMessage":"","rawdescription":"\\nHighlighted ontology id","description":"

      Highlighted ontology id

      \\n","line":94,"type":"string","decorators":[]},{"name":"mapping","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nMapping info","description":"

      Mapping info

      \\n","line":91,"type":"T[]","decorators":[]},{"name":"url","deprecated":false,"deprecationMessage":"","rawdescription":"\\nSVG url","description":"

      SVG url

      \\n","line":88,"type":"string","decorators":[]}],"outputsClass":[{"name":"nodeClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits node id when clicked","description":"

      Emits node id when clicked

      \\n","line":100,"type":"EventEmitter"},{"name":"nodeHover","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits node id when hovered","description":"

      Emits node id when hovered

      \\n","line":97,"type":"EventEmitter"}],"propertiesClass":[{"name":"NEVER_EVAL_SCRIPTS","defaultValue":"SVGScriptEvalMode.NEVER","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      SVG script eval mode

      \\n","line":103,"rawdescription":"\\nSVG script eval mode","modifierKind":[144]},{"name":"nodeHoverData$","defaultValue":"new BehaviorSubject(undefined)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable of node hover data or undefined when there is no active hover

      \\n","line":109,"rawdescription":"\\nObservable of node hover data or undefined when there is no active hover","modifierKind":[144]},{"name":"nodeHoverDelayedData$","defaultValue":"this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)))","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Observable of node hover with a timer

      \\n","line":112,"rawdescription":"\\nObservable of node hover with a timer","modifierKind":[144]},{"name":"TOOLTIP_POSITIONS","defaultValue":"TOOLTIP_POSITIONS","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Tooltip position settings

      \\n","line":106,"rawdescription":"\\nTooltip position settings","modifierKind":[144]}],"methodsClass":[{"name":"formatNodeName","args":[{"name":"name","type":"string","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"string","typeParameters":[],"line":196,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nRemoves underscores from id\\n","description":"

      Removes underscores from id

      \\n","jsdoctags":[{"name":{"pos":4993,"end":4997,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"name"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":4987,"end":4992,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Node name

      \\n"},{"tagName":{"pos":5014,"end":5021,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      node name without underscores

      \\n"}]},{"name":"setSvgElement","args":[{"name":"el","type":"SVGElement","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":181,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nSets SVG element\\n","description":"

      Sets SVG element

      \\n","jsdoctags":[{"name":{"pos":4595,"end":4597,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"el"},"type":"SVGElement","deprecated":false,"deprecationMessage":"","tagName":{"pos":4589,"end":4594,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      SVG element

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Interactive SVG component

      \\n","rawdescription":"\\n\\nInteractive SVG component\\n","type":"component","sourceCode":"import { ConnectedPosition, OverlayModule } from \'@angular/cdk/overlay\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n inject,\\n Input,\\n OnChanges,\\n OnDestroy,\\n Output,\\n Renderer2,\\n SimpleChanges,\\n ViewEncapsulation,\\n} from \'@angular/core\';\\nimport { TooltipComponent } from \'@hra-ui/components/atoms\';\\nimport { InlineSVGModule, SVGScriptEvalMode } from \'ng-inline-svg-2\';\\nimport { BehaviorSubject, debounce, fromEventPattern, Observable, Subject, takeUntil, timer } from \'rxjs\';\\nimport { NodeEventHandler } from \'rxjs/internal/observable/fromEvent\';\\n\\n/** Delay before tooltip becomes visible */\\nconst HOVER_DELAY = 200;\\n\\n/** Tooltip position settings */\\nconst TOOLTIP_POSITIONS: ConnectedPosition[] = [\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n];\\n\\n/** Node tooltip data */\\nexport interface NodeTooltipData {\\n /** Node name */\\n node: string;\\n /** Center point of hovered node in screen coordinates */\\n origin: { x: number; y: number };\\n}\\n\\n/** Interface for node entries */\\nexport interface NodeMapEntry {\\n /** Node label */\\n label: string;\\n /** Node id in svg */\\n id: string;\\n /** Ontology id of cell type */\\n ontologyId: string;\\n}\\n\\n/**\\n * Interactive SVG component\\n */\\n@Component({\\n selector: \'hra-interactive-svg\',\\n standalone: true,\\n imports: [CommonModule, InlineSVGModule, OverlayModule, TooltipComponent],\\n templateUrl: \'./interactive-svg.component.html\',\\n styleUrls: [\'./interactive-svg.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n encapsulation: ViewEncapsulation.ShadowDom,\\n})\\nexport class InteractiveSvgComponent implements OnChanges, OnDestroy {\\n /** SVG url */\\n @Input() url?: string;\\n\\n /** Mapping info */\\n @Input() mapping: T[] = [];\\n\\n /** Highlighted ontology id */\\n @Input() highlightId?: string;\\n\\n /** Emits node id when hovered */\\n @Output() readonly nodeHover = new EventEmitter();\\n\\n /** Emits node id when clicked */\\n @Output() readonly nodeClick = new EventEmitter();\\n\\n /** SVG script eval mode */\\n readonly NEVER_EVAL_SCRIPTS = SVGScriptEvalMode.NEVER;\\n\\n /** Tooltip position settings */\\n readonly TOOLTIP_POSITIONS = TOOLTIP_POSITIONS;\\n\\n /** Observable of node hover data or undefined when there is no active hover */\\n readonly nodeHoverData$ = new BehaviorSubject(undefined);\\n\\n /** Observable of node hover with a timer */\\n readonly nodeHoverDelayedData$ = this.nodeHoverData$.pipe(debounce((event) => timer(event ? HOVER_DELAY : 0)));\\n\\n /** Custom renderer */\\n private readonly renderer = inject(Renderer2);\\n\\n /** Destroys */\\n private destroy$ = new Subject();\\n\\n /** Crosswalk element of svg */\\n private crosswalkEl?: Element;\\n\\n /** List of highlighted svg elements */\\n private highlightedElements: Element[] = [];\\n\\n /**\\n * Updates the highlighting based on current highlight id\\n * @param changes\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'highlightId\' in changes) {\\n this.resetHighlight();\\n this.setHighlight();\\n }\\n }\\n\\n /**\\n * Highlights cells that match highlightId\\n */\\n private setHighlight() {\\n const { mapping, highlightId, crosswalkEl } = this;\\n const entry = mapping.find(({ ontologyId }) => ontologyId === highlightId);\\n if (!entry || !crosswalkEl) {\\n return;\\n }\\n\\n let id = this.encodeId(entry.id);\\n const element = crosswalkEl.querySelector(`#${id}`);\\n if (!element) {\\n return;\\n } else if (element.nodeName !== \'g\') {\\n id = element.parentElement?.id ?? \'\';\\n }\\n\\n const elements = crosswalkEl.querySelectorAll(`#${id} :is(path, polygon, polyline)`);\\n this.highlightedElements = Array.from(elements);\\n elements.forEach((el) => el.classList.add(\'click-active\'));\\n }\\n\\n /**\\n * Resets all highlighted elements in the svg\\n */\\n private resetHighlight(): void {\\n for (const el of this.highlightedElements) {\\n el.classList.remove(\'click-active\');\\n }\\n this.highlightedElements = [];\\n }\\n\\n /**\\n * Clears observables on destroy\\n */\\n ngOnDestroy(): void {\\n this.clear();\\n }\\n\\n /**\\n * Sets SVG element\\n * @param el SVG element\\n */\\n setSvgElement(el: SVGElement): void {\\n this.clear();\\n this.crosswalkEl = el.querySelector(\'[id^=\\"Crosswalk\\"]\') ?? undefined;\\n if (this.crosswalkEl) {\\n // Move to front (i.e. last child in svg)\\n this.renderer.appendChild(el, this.crosswalkEl);\\n this.attachCrosswalkHover(this.crosswalkEl);\\n }\\n }\\n\\n /**\\n * Removes underscores from id\\n * @param name Node name\\n * @returns node name without underscores\\n */\\n formatNodeName(name: string): string {\\n return name.replace(/_/g, \' \');\\n }\\n\\n /**\\n * Attaches crosswalk hover\\n * @param el element\\n */\\n private attachCrosswalkHover(el: Element): void {\\n this.attachEvent(el, \'mouseover\').subscribe((event) => this.onCrosswalkHover(event));\\n this.attachEvent(el, \'mouseout\').subscribe(() => this.onCrosswalkHover(undefined as never as MouseEvent));\\n this.attachEvent(el, \'click\').subscribe((event) => this.nodeClick.emit(this.getNode(event)));\\n }\\n\\n /**\\n * Finds matching node in data from a hovered element\\n * @param event Mouse event\\n */\\n private onCrosswalkHover(event: MouseEvent): void {\\n if (event) {\\n const node = this.getNode(event);\\n if (node) {\\n this.nodeHoverData$.next({\\n node: node.label,\\n origin: {\\n x: event.clientX,\\n y: event.clientY,\\n },\\n });\\n this.nodeHover.emit(node); //emits node entry\\n }\\n } else {\\n this.nodeHoverData$.next(undefined);\\n this.nodeHover.emit();\\n }\\n }\\n\\n /**\\n * Clears observables\\n */\\n private clear(): void {\\n this.destroy$.next();\\n this.destroy$.complete();\\n this.destroy$ = new Subject();\\n }\\n\\n /**\\n * Returns entry from mapping if target, parent, or grandparent id matches the node name\\n * @param event Event\\n * @returns Node entry that matches the target id\\n */\\n private getNode(event: Event): T | undefined {\\n const targetId = (event.target as Element).id;\\n const parentId = (event.target as Element).parentElement?.id ?? \'\';\\n const grandparentId = (event.target as Element).parentElement?.parentElement?.id ?? \'\';\\n const idCollection = [targetId, parentId, grandparentId];\\n for (const id of idCollection) {\\n const decodedID = this.decodeId(id);\\n const match = this.mapping.find(\\n (item) => item.id?.toLowerCase() === decodedID.toLowerCase() //search mapping by name for matching node entry\\n );\\n if (match) {\\n return match;\\n }\\n }\\n return undefined;\\n }\\n\\n /**\\n * Decodes id into a normal string\\n * @param id Undecoded ID\\n * @returns id\\n */\\n private decodeId(id: string): string {\\n const replacer = (_match: string, hex: string) => String.fromCharCode(Number.parseInt(hex, 16));\\n return id.replace(/_x([\\\\da-f]+)_/gi, replacer);\\n }\\n\\n /**\\n * Turns normal string into decoded SVG id\\n * @param id id\\n * @returns Encoded id\\n */\\n private encodeId(id: string): string {\\n const replacer = (match: string) => `_x${match.charCodeAt(0).toString(16).toUpperCase()}_`;\\n return id.replace(/[^a-z0-9-]/gi, replacer);\\n }\\n\\n /**\\n * Attaches an event listener\\n * @template K\\n * @param el Element\\n * @param event Event\\n * @returns Observable\\n */\\n private attachEvent(el: Element, event: K): Observable {\\n const { renderer, destroy$ } = this;\\n const add = (handler: NodeEventHandler) => renderer.listen(el, event, handler);\\n const remove = (_handler: NodeEventHandler, unlisten: () => void) => unlisten();\\n return fromEventPattern(add, remove).pipe(takeUntil(destroy$));\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":".svg {\\n max-height: calc(100vh - 14rem);\\n overflow-y: auto;\\n}\\nsvg {\\n max-height: calc(100vh - 10rem);\\n width: 100%;\\n}\\n\\n[id^=\'Crosswalk\'] {\\n :is(path, polygon, polyline) {\\n fill: transparent;\\n stroke: transparent;\\n }\\n\\n .hover-active & g:hover > :is(path, polygon, polyline),\\n .hover-active & g > g:hover > :is(path, polygon, polyline),\\n .click-active {\\n fill: hsl(0deg 100% 50%);\\n mix-blend-mode: saturation;\\n }\\n}\\n\\n::-webkit-scrollbar {\\n width: 0.5rem;\\n height: 0.5rem;\\n}\\n\\n::-webkit-scrollbar-track {\\n background: #f8f9fa;\\n border: 0.063rem solid #d3d3d3;\\n}\\n\\n::-webkit-scrollbar-thumb {\\n background: #a0abb4;\\n border-radius: 0.5rem;\\n}\\n","styleUrl":"./interactive-svg.component.scss"}],"stylesData":"","implements":["OnChanges","OnDestroy"],"templateData":"\\n\\n\\n \\n \\n \\n\\n"},{"name":"LandingPageInDepthComponent","id":"component-LandingPageInDepthComponent-266cc77d12f81268af62a259a42675f25c0be65e3cab6881ce7afcd3dbaa4ab87e767f669fc822ea592327de677787a00c9eb4a5b9b1171d78fe6aefc8cc439b","file":"src/lib/landing-page-in-depth/landing-page-in-depth.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-landing-page-in-depth","styleUrls":["./landing-page-in-depth.component.scss"],"styles":[],"templateUrl":["./landing-page-in-depth.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage description shown to the user","description":"

      Image description shown to the user

      \\n","line":24,"type":"string","decorators":[]},{"name":"img","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage shown to the user","description":"

      Image shown to the user

      \\n","line":27,"type":"string","decorators":[]},{"name":"moreLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLink to navigate to on more button click","description":"

      Link to navigate to on more button click

      \\n","line":33,"type":"any","decorators":[]},{"name":"moreText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nText for more button","description":"

      Text for more button

      \\n","line":30,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nImage title shown to the user","description":"

      Image title shown to the user

      \\n","line":21,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays the image and also corresponding title and text along with a button to read more

      \\n","rawdescription":"\\n\\nDisplays the image and also corresponding title and text along with a button to read more\\n","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/**\\n * Displays the image and also corresponding title and text along with a button to read more\\n */\\n@Component({\\n selector: \'hra-landing-page-in-depth\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule, MatButtonModule, MatIconModule, LinkDirective],\\n templateUrl: \'./landing-page-in-depth.component.html\',\\n styleUrls: [\'./landing-page-in-depth.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageInDepthComponent {\\n /** Image title shown to the user */\\n @Input() title = \'\';\\n\\n /** Image description shown to the user */\\n @Input() description = \'\';\\n\\n /** Image shown to the user */\\n @Input() img = \'\';\\n\\n /** Text for more button */\\n @Input() moreText = \'\';\\n\\n /** Link to navigate to on more button click */\\n @Input() moreLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 2fr 3fr;\\n grid-template-rows: auto auto 1fr;\\n column-gap: 2rem;\\n row-gap: 2rem;\\n padding: 3.5rem 2rem;\\n\\n .image {\\n grid-column: 1;\\n grid-row: 1 / span 3;\\n width: 100%;\\n height: auto;\\n align-self: center;\\n border-radius: 1rem;\\n box-shadow: 0.06rem 0.13rem 1rem 0.13rem #00000029;\\n }\\n\\n .title {\\n font-size: 2rem;\\n line-height: 2.5rem;\\n margin: 0;\\n }\\n\\n .description {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n\\n ::ng-deep p {\\n margin: 0;\\n }\\n\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n }\\n\\n .more-button {\\n width: fit-content;\\n height: 3rem;\\n }\\n}\\n","styleUrl":"./landing-page-in-depth.component.scss"}],"stylesData":"","templateData":"\\"\\"\\n

      {{ title }}

      \\n\\n\\n"},{"name":"LandingPageIntroComponent","id":"component-LandingPageIntroComponent-8e48a2ad3d32eea60c9dee7976b3dbc195b3a8107a3c174ac68b4696362903f19522bad089b509daae23505334aa5361945e7a8124fd32f17a6834c349c87aed","file":"src/lib/landing-page-intro/landing-page-intro.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-landing-page-intro","styleUrls":["./landing-page-intro.component.scss"],"styles":[],"templateUrl":["./landing-page-intro.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for FTU Explorer","description":"

      Description for FTU Explorer

      \\n","line":22,"type":"string","decorators":[]},{"name":"img","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro Image file url","description":"

      Intro Image file url

      \\n","line":28,"type":"string","decorators":[]},{"name":"moreLink","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLink to navigate to on more button click","description":"

      Link to navigate to on more button click

      \\n","line":34,"type":"any","decorators":[]},{"name":"moreText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nText for more button","description":"

      Text for more button

      \\n","line":31,"type":"string","decorators":[]},{"name":"partners","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nThank you message to partners","description":"

      Thank you message to partners

      \\n","line":25,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nIntro title for FTU Explorer","description":"

      Intro title for FTU Explorer

      \\n","line":19,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Component for LandingPage Intro

      \\n","rawdescription":"\\nComponent for LandingPage Intro","type":"component","sourceCode":"import { CommonModule } from \'@angular/common\';\\nimport { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Component for LandingPage Intro */\\n@Component({\\n selector: \'hra-landing-page-intro\',\\n standalone: true,\\n imports: [CommonModule, MatButtonModule, MatIconModule, MarkdownModule, LinkDirective],\\n templateUrl: \'./landing-page-intro.component.html\',\\n styleUrls: [\'./landing-page-intro.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class LandingPageIntroComponent {\\n /** Intro title for FTU Explorer */\\n @Input() title = \'\';\\n\\n /** Description for FTU Explorer */\\n @Input() description = \'\';\\n\\n /** Thank you message to partners */\\n @Input() partners = \'\';\\n\\n /** Intro Image file url */\\n @Input() img = \'\';\\n\\n /** Text for more button */\\n @Input() moreText = \'\';\\n\\n /** Link to navigate to on more button click */\\n @Input() moreLink = EMPTY_LINK;\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: grid;\\n grid-template-columns: 3fr 2fr;\\n grid-template-rows: auto auto 3rem 1fr;\\n align-items: start;\\n column-gap: 2rem;\\n row-gap: 2rem;\\n\\n .title {\\n font-size: 3rem;\\n line-height: 4rem;\\n margin: 0;\\n }\\n\\n .more-button {\\n width: fit-content;\\n height: 3rem;\\n }\\n\\n .image {\\n grid-column: 2;\\n grid-row: 1 / span 4;\\n place-self: center;\\n width: 100%;\\n height: auto;\\n }\\n\\n .description,\\n .partners {\\n ::ng-deep p {\\n margin: 0;\\n }\\n\\n ::ng-deep a {\\n color: vars.$primary-rgb;\\n font-weight: 700;\\n }\\n }\\n\\n .red-theme {\\n background-color: #990000;\\n border-color: #990000;\\n &:hover {\\n background-color: #990000;\\n border-color: #990000;\\n\\n mat-icon {\\n transform: translateX(30%);\\n transition: 0.5s;\\n }\\n }\\n\\n &:active,\\n &:focus,\\n &:focus:not(:hover) {\\n background-color: #990000;\\n border-color: #990000;\\n\\n ::ng-deep .mat-mdc-focus-indicator {\\n background-color: #990000 !important;\\n border-color: #990000;\\n }\\n }\\n }\\n}\\n","styleUrl":"./landing-page-intro.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n\\n\\n\\n\\n\\"alt\\"\\n"},{"name":"MetricsComponent","id":"component-MetricsComponent-e52c0a1cdf090042d1924c4907a4034774cbb442217faca9ec5035e76d2796116cf55644ecf49ae040fdea1168f9c5d99f6ce15b2079f70de3d853fece481b30","file":"src/lib/metrics/metrics.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-metrics","styleUrls":["./metrics.component.scss"],"styles":[],"templateUrl":["./metrics.component.html"],"viewProviders":[],"inputsClass":[{"name":"logo","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nLogo of metrics component.","description":"

      Logo of metrics component.

      \\n","line":31,"type":"string","decorators":[]},{"name":"metrics","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nList of metrics that will be shown to the user.","description":"

      List of metrics that will be shown to the user.

      \\n","line":34,"type":"MetricItem[]","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nMain title of metrics component.","description":"

      Main title of metrics component.

      \\n","line":28,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Describes the metrics for the HuBMAP project.

      \\n","rawdescription":"\\n\\nDescribes the metrics for the HuBMAP project.\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\n\\n/**\\n An interface representing a single metric with an icon, value and description.\\n */\\nexport interface MetricItem {\\n /** Represents the icon associated with the metric. */\\n icon: string;\\n /** Describes the numberical value of the metric. */\\n value: string;\\n /** Describes the type of metric. */\\n description: string;\\n}\\n/**\\n * Describes the metrics for the HuBMAP project.\\n */\\n@Component({\\n selector: \'hra-metrics\',\\n standalone: true,\\n imports: [CommonModule],\\n templateUrl: \'./metrics.component.html\',\\n styleUrls: [\'./metrics.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class MetricsComponent {\\n /** Main title of metrics component. */\\n @Input() title = \'\';\\n\\n /** Logo of metrics component. */\\n @Input() logo = \'\';\\n\\n /** List of metrics that will be shown to the user. */\\n @Input() metrics: MetricItem[] = [];\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n padding: 2rem 0 0 0;\\n background: #f8f9fa;\\n gap: 0.5rem;\\n\\n .logo {\\n height: 2.75rem;\\n }\\n\\n .header-title {\\n font-size: 2rem;\\n line-height: 2.5rem;\\n }\\n\\n .metrics {\\n display: flex;\\n flex-direction: row;\\n overflow-x: auto;\\n max-width: 100%;\\n gap: 2rem;\\n padding: 2rem 1.75rem;\\n\\n .metric {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n min-width: 14.25rem;\\n height: 14.75rem;\\n padding-top: 2rem;\\n padding-bottom: 2rem;\\n\\n .logo {\\n margin-bottom: 2rem;\\n }\\n\\n .value {\\n font-size: 3rem;\\n line-height: 4rem;\\n margin-bottom: 0.25rem;\\n }\\n\\n .description {\\n font-size: 1rem;\\n text-align: center;\\n }\\n }\\n }\\n}\\n","styleUrl":"./metrics.component.scss"}],"stylesData":"","templateData":"\\"\\"\\n{{ title }}\\n\\n
      \\n
      \\n \\"\\"\\n {{ item.value }} \\n {{ item.description }} \\n
      \\n
      \\n"},{"name":"ScreenSizeNoticeComponent","id":"component-ScreenSizeNoticeComponent-6b641a220201d969fb228ecf72f5e7a8fc87da742b8a53350bc9c27cea9c54a6493313826b99ec8c34dfd7004772a27748e45af5b0c9ead80bdf168a781117f8","file":"src/lib/screen-size-notice/screen-size-notice.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-screen-size-notice","styleUrls":["./screen-size-notice.component.scss"],"styles":[],"templateUrl":["./screen-size-notice.component.html"],"viewProviders":[],"inputsClass":[{"name":"content","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput for passing screen size notice content\\n","description":"

      Input for passing screen size notice content

      \\n","line":23,"type":"string","decorators":[]},{"name":"portal","defaultValue":"EMPTY_LINK","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput of screen size notice component\\n","description":"

      Input of screen size notice component

      \\n","line":28,"type":"any","decorators":[]}],"outputsClass":[{"name":"proceedClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the proceed button is clicked","description":"

      Emits when the proceed button is clicked

      \\n","line":31,"type":"EventEmitter"}],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      The screen size notice component displays a notice for the users specifying the required screen size

      \\n","rawdescription":"\\n\\nThe screen size notice component displays a notice for the users specifying the required screen size\\n","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EMPTY_LINK, LinkDirective } from \'@hra-ui/cdk\';\\n\\n/**\\n * The screen size notice component displays a notice for the users specifying the required screen size\\n */\\n@Component({\\n selector: \'hra-screen-size-notice\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule, MatButtonModule, MatIconModule, LinkDirective],\\n templateUrl: \'./screen-size-notice.component.html\',\\n styleUrls: [\'./screen-size-notice.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class ScreenSizeNoticeComponent {\\n /**\\n * Input for passing screen size notice content\\n */\\n @Input() content = \'\';\\n\\n /**\\n * Input of screen size notice component\\n */\\n @Input() portal = EMPTY_LINK;\\n\\n /** Emits when the proceed button is clicked */\\n @Output() readonly proceedClick = new EventEmitter();\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: none;\\n position: relative;\\n border-radius: 0.5rem;\\n padding: 1.5rem;\\n flex-direction: column;\\n\\n .header-close {\\n position: absolute;\\n top: 0.625rem;\\n right: 1rem;\\n }\\n\\n h3 {\\n margin: 0 0 1rem 0;\\n font-weight: 700;\\n }\\n\\n .btn-stroked {\\n font-weight: 700;\\n margin-bottom: 1rem;\\n margin-top: 1rem;\\n padding: 0.75rem 0;\\n letter-spacing: 0.5px;\\n }\\n\\n .btn-flat {\\n font-weight: 700;\\n font-size: 16px;\\n padding: 0.75rem 0;\\n letter-spacing: 0.5px;\\n color: white;\\n }\\n\\n .content {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n letter-spacing: 0.5px;\\n }\\n\\n @media (max-width: 480px) {\\n display: flex;\\n }\\n}\\n","styleUrl":"./screen-size-notice.component.scss"}],"stylesData":"","templateData":"

      Screen Size Notice

      \\n\\n\\n\\n Human Reference Atlas Portal \\n"},{"name":"SourceListComponent","id":"component-SourceListComponent-f0d0464b044f898be3752719190f2d8ad8511283d4daafb2f8b17bd0f4dfa0290abbbeb293819664c07134fcaee5a64313aaf72d69e335a063e244c2ba1d7c0c","file":"src/lib/source-list/source-list.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-source-list","styleUrls":["./source-list.component.scss"],"styles":[],"templateUrl":["./source-list.component.html"],"viewProviders":[],"inputsClass":[{"name":"collaborateText","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput buttonon text of empty biomarker component.\\n","description":"

      Input buttonon text of empty biomarker component.

      \\n","line":34,"type":"string","decorators":[]},{"name":"message","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput message markdown of empty biomarker component.\\n","description":"

      Input message markdown of empty biomarker component.

      \\n","line":39,"type":"string","decorators":[]},{"name":"sources","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nList of sources with titles and links displayed to the user","description":"

      List of sources with titles and links displayed to the user

      \\n","line":30,"type":"SourceListItem[]","decorators":[]}],"outputsClass":[{"name":"collaborateClick","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\nEmits when the contact button is clicked","description":"

      Emits when the contact button is clicked

      \\n","line":47,"type":"EventEmitter"}],"propertiesClass":[{"name":"showTable","defaultValue":"true","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Show table of source list component which toggles to true or false\\nbased on click

      \\n","line":44,"rawdescription":"\\n\\nShow table of source list component which toggles to true or false\\nbased on click\\n"}],"methodsClass":[{"name":"toggleTable","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":53,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nIt changes the value of showTable to false if value it true\\nand vice versa\\n","description":"

      It changes the value of showTable to false if value it true\\nand vice versa

      \\n"}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      This component shows list of sources with title and links to the datasets

      \\n","rawdescription":"\\nThis component shows list of sources with title and links to the datasets","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule } from \'@angular/material/table\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { EmptyBiomarkerComponent, LabelBoxComponent } from \'@hra-ui/components/atoms\';\\n\\n/** SourceListItem interface contains title and link to the dataset for the SourceList*/\\nexport interface SourceListItem {\\n /** Title of the dataset in the SourceList */\\n title: string;\\n\\n /** Label of the dataset in the SourceList */\\n label: string;\\n\\n /** Link to the dataset in the SourceList */\\n link: string;\\n}\\n\\n/** This component shows list of sources with title and links to the datasets */\\n@Component({\\n selector: \'hra-source-list\',\\n standalone: true,\\n imports: [CommonModule, MatTableModule, MatIconModule, LabelBoxComponent, EmptyBiomarkerComponent],\\n templateUrl: \'./source-list.component.html\',\\n styleUrls: [\'./source-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class SourceListComponent {\\n /** List of sources with titles and links displayed to the user */\\n @Input() sources: SourceListItem[] = [];\\n /**\\n * Input buttonon text of empty biomarker component.\\n */\\n @Input() collaborateText = \'\';\\n\\n /**\\n * Input message markdown of empty biomarker component.\\n */\\n @Input() message = \'\';\\n /**\\n * Show table of source list component which toggles to true or false\\n * based on click\\n */\\n showTable = true;\\n\\n /** Emits when the contact button is clicked */\\n @Output() readonly collaborateClick = new EventEmitter();\\n\\n /**\\n * It changes the value of showTable to false if value it true\\n * and vice versa\\n */\\n toggleTable(): void {\\n this.showTable = !this.showTable;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n height: 100%;\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n\\n .toggle {\\n display: flex;\\n align-items: center;\\n height: 3.5rem;\\n grid-area: source-list-header;\\n color: var(--dark-primary-text);\\n border-top: 0.063rem solid #d3d3d3;\\n border-bottom: 0.063rem solid #d3d3d3;\\n }\\n\\n .table-content {\\n height: calc(100% - 3.5rem);\\n overflow: auto;\\n\\n &.hidden {\\n display: none;\\n }\\n\\n table {\\n height: 100%;\\n }\\n\\n .mat-mdc-cell {\\n vertical-align: top;\\n border: none;\\n padding: 0.25rem 0.875rem;\\n font-size: 1rem;\\n }\\n\\n ::ng-deep .mdc-data-table__content {\\n display: block;\\n padding: 1rem 0rem;\\n }\\n }\\n}\\n","styleUrl":"./source-list.component.scss"}],"stylesData":"","templateData":"\\n Source Data\\n \\n {{ showTable ? \'keyboard_arrow_down\' : \'keyboard_arrow_up\' }}\\n \\n\\n\\n
      \\n \\n \\n\\n \x3c!-- Position Column --\x3e\\n \\n \\n \\n \\n\\n \x3c!-- Data Column --\x3e\\n \\n \\n \\n \\n\\n \\n
      \\n Source List Table with Title and Links\\n
      Item Number{{ i + 1 }}.Title and Link\\n {{ element.title }}\\n
      \\n {{ element.label }}\\n
      \\n \\n
      \\n"},{"name":"TissueTreeListComponent","id":"component-TissueTreeListComponent-8544338e8c5e11dd440f8b104bfa31552155bc5006289770258a8e940978177df7797adcb9bafb5b09a9943913ecf339692d528f868c6846be5c3de8a6270237","file":"src/lib/tissue-tree-list/tissue-tree-list.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-tissue-tree-list","styleUrls":["./tissue-tree-list.component.scss"],"styles":[],"templateUrl":["./tissue-tree-list.component.html"],"viewProviders":[],"inputsClass":[{"name":"nodes","defaultValue":"{} as Record","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput of tissue tree list component\\n","description":"

      Input of tissue tree list component

      \\n","line":69,"type":"Record","decorators":[]},{"name":"selected","defaultValue":"undefined","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nNode selected, to view the data associated with it\\n","description":"

      Node selected, to view the data associated with it

      \\n","line":74,"type":"T","decorators":[]}],"outputsClass":[{"name":"selectedChange","defaultValue":"new EventEmitter()","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nOutput of tissue tree list component\\n","description":"

      Output of tissue tree list component

      \\n","line":79,"type":"EventEmitter"}],"propertiesClass":[{"name":"control","defaultValue":"new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n )","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      tree controller, used to control the nodes in the tree

      \\n","line":84,"rawdescription":"\\n\\ntree controller, used to control the nodes in the tree\\n","modifierKind":[144]},{"name":"dataSource","defaultValue":"new MatTreeFlatDataSource(this.control, this.flattener)","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Data source of tissue tree list component, defines the data in mat-tree

      \\n","line":107,"rawdescription":"\\n\\nData source of tissue tree list component, defines the data in mat-tree\\n","modifierKind":[144]},{"name":"flattener","defaultValue":"new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n )","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Flattener of tissue tree list component, returns flat-data structure

      \\n","line":92,"rawdescription":"\\n\\nFlattener of tissue tree list component, returns flat-data structure\\n","modifierKind":[144]}],"methodsClass":[{"name":"hasChild","args":[{"name":"_","type":"number","deprecated":false,"deprecationMessage":""},{"name":"node","type":"InternalNode","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"boolean","typeParameters":[],"line":128,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ncheck if the current node has children\\n","description":"

      check if the current node has children

      \\n","jsdoctags":[{"name":"_","type":"number","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"name":{"pos":3422,"end":3426,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"node"},"type":"InternalNode","deprecated":false,"deprecationMessage":"","tagName":{"pos":3416,"end":3421,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      current selected node

      \\n"},{"tagName":{"pos":3455,"end":3462,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      boolean, which means if node has children

      \\n"}]},{"name":"resetSelection","args":[],"optional":false,"returnType":"void","typeParameters":[],"line":146,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nResets selection and collapes all nodes of the tree.\\n","description":"

      Resets selection and collapes all nodes of the tree.

      \\n"},{"name":"selectNode","args":[{"name":"node","type":"T","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"void","typeParameters":[],"line":136,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nIt selects the node, which is clicked.\\n","description":"

      It selects the node, which is clicked.

      \\n","jsdoctags":[{"name":{"pos":3665,"end":3669,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"node"},"type":"T","deprecated":false,"deprecationMessage":"","tagName":{"pos":3659,"end":3664,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      Tissue Tree Item, which is clicked

      \\n"}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Tabular View for hubMap tissue side-bar

      \\n","rawdescription":"\\n\\nTabular View for hubMap tissue side-bar\\n","type":"component","sourceCode":"import { FlatTreeControl } from \'@angular/cdk/tree\';\\nimport { CommonModule } from \'@angular/common\';\\nimport {\\n ChangeDetectionStrategy,\\n Component,\\n EventEmitter,\\n Input,\\n OnChanges,\\n Output,\\n SimpleChanges,\\n} from \'@angular/core\';\\nimport { MatButtonModule } from \'@angular/material/button\';\\nimport { MatRippleModule } from \'@angular/material/core\';\\nimport { MatExpansionModule } from \'@angular/material/expansion\';\\nimport { MatIconModule } from \'@angular/material/icon\';\\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from \'@angular/material/tree\';\\nimport { LinkDirective } from \'@hra-ui/cdk\';\\nimport { LinkId } from \'@hra-ui/cdk/state\';\\n\\n/** Base node type */\\nexport interface DataNode {\\n /** User readable label */\\n label: string;\\n /** Id to pass as a query parameter on navigation */\\n id?: string;\\n /** Link to navigate to on node click */\\n link?: LinkId;\\n /** Nested nodes */\\n children?: K[];\\n}\\n\\n/**\\n * Internal interface for flat tissue data hierarchy\\n */\\ninterface InternalNode> {\\n /** Displayed label */\\n label: string;\\n /** Whether the node can be expanded to display child nodes */\\n expandable: boolean;\\n /** Depth of node in the tree */\\n level: number;\\n /** Associated user node data */\\n data: T;\\n}\\n\\n/**\\n * Tabular View for hubMap tissue side-bar\\n */\\n@Component({\\n selector: \'hra-tissue-tree-list\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatButtonModule,\\n MatTreeModule,\\n MatIconModule,\\n MatExpansionModule,\\n MatRippleModule,\\n LinkDirective,\\n ],\\n templateUrl: \'./tissue-tree-list.component.html\',\\n styleUrls: [\'./tissue-tree-list.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TissueTreeListComponent> implements OnChanges {\\n /**\\n * Input of tissue tree list component\\n */\\n @Input() nodes: Record = {} as Record;\\n\\n /**\\n * Node selected, to view the data associated with it\\n */\\n @Input() selected?: T = undefined;\\n\\n /**\\n * Output of tissue tree list component\\n */\\n @Output() readonly selectedChange = new EventEmitter();\\n\\n /**\\n * tree controller, used to control the nodes in the tree\\n */\\n readonly control = new FlatTreeControl>(\\n (node) => node.level,\\n (node) => node.expandable\\n );\\n\\n /**\\n * Flattener of tissue tree list component, returns flat-data structure\\n */\\n readonly flattener = new MatTreeFlattener>(\\n (node, level) => ({\\n label: node.label,\\n expandable: (node.children?.length ?? 0) > 0,\\n level,\\n data: node,\\n }),\\n (node) => node.level,\\n (node) => node.expandable,\\n (node) => node.children?.map((id) => this.nodes[id])\\n );\\n\\n /**\\n * Data source of tissue tree list component, defines the data in mat-tree\\n */\\n readonly dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\\n\\n /**\\n * Take actions if any data changes\\n * @param changes changes in data\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'nodes\' in changes) {\\n this.dataSource.data = this.findRootNodes();\\n }\\n if (\'selected\' in changes) {\\n const path = this.selected ? this.dfsFindPath(this.findRootNodes(), this.selected) : [];\\n this.expandPath(path);\\n }\\n }\\n\\n /**\\n * check if the current node has children\\n * @param node current selected node\\n * @returns boolean, which means if node has children\\n */\\n hasChild(_: number, node: InternalNode): boolean {\\n return node.expandable;\\n }\\n\\n /**\\n * It selects the node, which is clicked.\\n * @param node Tissue Tree Item, which is clicked\\n */\\n selectNode(node: T): void {\\n if (this.selected !== node) {\\n this.selected = node;\\n this.selectedChange.emit(this.selected);\\n }\\n }\\n\\n /**\\n * Resets selection and collapes all nodes of the tree.\\n */\\n resetSelection(): void {\\n this.selected = undefined;\\n this.control.collapseAll();\\n }\\n\\n /**\\n * It creates a copy of the input nodes object.\\n * It iterates over it and removes all the children nodes from it.\\n * @returns remaining nodes which are root nodes.\\n */\\n private findRootNodes(): T[] {\\n const { nodes } = this;\\n const roots = { ...this.nodes };\\n for (const key in nodes) {\\n for (const child of nodes[key].children ?? []) {\\n delete roots[child];\\n }\\n }\\n\\n return Object.values(roots);\\n }\\n\\n /**\\n * expands the tree nodes based on the path provided.\\n * @param path is given as an input.\\n */\\n private expandPath(path: DataNode[]): void {\\n const nodes = this.control.dataNodes.filter((node) => path.includes(node.data));\\n nodes.forEach((node) => this.control.expand(node));\\n }\\n\\n /**\\n * It used the logic of depth first search to find the target node.\\n * returns the path to the target node.\\n */\\n private dfsFindPath(nodes: T[], target: T, path: T[] = []): T[] {\\n for (const node of nodes) {\\n path.push(node);\\n if (node === target) {\\n return path;\\n }\\n\\n const savedLength = path.length;\\n const children = node.children?.map((id) => this.nodes[id]) ?? [];\\n if (this.dfsFindPath(children, target, path).length > savedLength) {\\n return path;\\n }\\n\\n path.pop();\\n }\\n\\n return path;\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n max-height: calc(100% - 5rem);\\n overflow-y: auto;\\n .row {\\n min-height: 2rem;\\n &.child {\\n padding: 5px 0 5px 64px;\\n }\\n &.selected {\\n background-color: vars.$accent-lighter-rgb;\\n }\\n\\n .toggle {\\n width: 2rem;\\n height: 2rem;\\n padding: 0.25rem;\\n }\\n\\n .label-container {\\n display: flex;\\n align-items: center;\\n height: 2rem;\\n padding: 0 1rem;\\n border-radius: 0.25rem;\\n\\n .link {\\n cursor: pointer;\\n text-decoration: none;\\n color: rgba(vars.$dark-primary-text);\\n }\\n }\\n\\n &.selected .label-container .link {\\n color: vars.$accent-rgb;\\n }\\n }\\n}\\n","styleUrl":"./tissue-tree-list.component.scss"}],"stylesData":"","implements":["OnChanges"],"templateData":"\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n\\n\\n\\n
      \\n \\n {{ label }}\\n \\n \\n {{ label }}\\n \\n
      \\n
      \\n"},{"name":"TitleCardComponent","id":"component-TitleCardComponent-dda33e0370aff82797f5b3494c98b25f59e8b87daefd03e828cec8116928222c19885f73255625acfce7c66d590784fd1ad8faa664dac65130f8119fc2670670","file":"src/lib/title-card/title-card.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-title-card","styleUrls":["./title-card.component.scss"],"styles":[],"templateUrl":["./title-card.component.html"],"viewProviders":[],"inputsClass":[{"name":"description","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nDescription for the title card shown to the user","description":"

      Description for the title card shown to the user

      \\n","line":19,"type":"string","decorators":[]},{"name":"title","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTitle for the title card shown to the user","description":"

      Title for the title card shown to the user

      \\n","line":16,"type":"string","decorators":[]}],"outputsClass":[],"propertiesClass":[],"methodsClass":[],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Displays title card to the user with title and description

      \\n","rawdescription":"\\nDisplays title card to the user with title and description","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MarkdownModule } from \'ngx-markdown\';\\n\\n/** Displays title card to the user with title and description */\\n@Component({\\n selector: \'hra-title-card\',\\n standalone: true,\\n imports: [CommonModule, MarkdownModule],\\n templateUrl: \'./title-card.component.html\',\\n styleUrls: [\'./title-card.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class TitleCardComponent {\\n /** Title for the title card shown to the user*/\\n @Input() title = \'\';\\n\\n /** Description for the title card shown to the user*/\\n @Input() description = \'\';\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":":host {\\n display: block;\\n\\n .title {\\n margin-bottom: 0.5rem;\\n }\\n}\\n","styleUrl":"./title-card.component.scss"}],"stylesData":"","templateData":"

      {{ title }}

      \\n\\n"}],"modules":[],"miscellaneous":{"variables":[{"name":"DOWNLOADS_LIST_POSITION","ctype":"miscellaneous","subtype":"variable","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n]","rawdescription":"Positioning value for the download list popup","description":"

      Positioning value for the download list popup

      \\n"},{"name":"EMPTY_CONTACT_DATA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"Partial","defaultValue":"{\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n}","rawdescription":"Initial empty contact data","description":"

      Initial empty contact data

      \\n"},{"name":"HOVER_DELAY","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"number","defaultValue":"200","rawdescription":"Delay before tooltip becomes visible","description":"

      Delay before tooltip becomes visible

      \\n"},{"name":"TOOLTIP_POSITIONS","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n]","rawdescription":"Tooltip position settings","description":"

      Tooltip position settings

      \\n"}],"functions":[],"typealiases":[],"enumerations":[],"groupedVariables":{"src/lib/footer/footer.component.ts":[{"name":"DOWNLOADS_LIST_POSITION","ctype":"miscellaneous","subtype":"variable","file":"src/lib/footer/footer.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n panelClass: \'above\',\\n originX: \'start\',\\n originY: \'top\',\\n overlayX: \'start\',\\n overlayY: \'bottom\',\\n offsetY: 0,\\n },\\n {\\n panelClass: \'below\',\\n originX: \'start\',\\n originY: \'bottom\',\\n overlayX: \'start\',\\n overlayY: \'top\',\\n },\\n]","rawdescription":"Positioning value for the download list popup","description":"

      Positioning value for the download list popup

      \\n"}],"src/lib/contact-modal/contact-modal.component.ts":[{"name":"EMPTY_CONTACT_DATA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/contact-modal/contact-modal.component.ts","deprecated":false,"deprecationMessage":"","type":"Partial","defaultValue":"{\\n email: undefined,\\n subject: undefined,\\n message: undefined,\\n}","rawdescription":"Initial empty contact data","description":"

      Initial empty contact data

      \\n"}],"src/lib/interactive-svg/interactive-svg.component.ts":[{"name":"HOVER_DELAY","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"number","defaultValue":"200","rawdescription":"Delay before tooltip becomes visible","description":"

      Delay before tooltip becomes visible

      \\n"},{"name":"TOOLTIP_POSITIONS","ctype":"miscellaneous","subtype":"variable","file":"src/lib/interactive-svg/interactive-svg.component.ts","deprecated":false,"deprecationMessage":"","type":"ConnectedPosition[]","defaultValue":"[\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'start\',\\n overlayY: \'center\',\\n offsetX: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'end\',\\n overlayY: \'center\',\\n offsetX: -8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'top\',\\n offsetY: 8,\\n },\\n {\\n originX: \'center\',\\n originY: \'center\',\\n overlayX: \'center\',\\n overlayY: \'bottom\',\\n offsetY: -8,\\n },\\n]","rawdescription":"Tooltip position settings","description":"

      Tooltip position settings

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{}}}')},"./dist/compodoc/components-organisms/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[{"name":"DataCell","id":"interface-DataCell-1a11b32dee89b55746dd02d393406aa7ea06e3d180099074510a109749d06241410786b045f3a9d570f4479be6442014b194d68f340724b0e76b4b0983b59760","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /**Cell name which is hovered, used for highlighting */\\n @Input() hightlightedCellName = \'\';\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","properties":[{"name":"color","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Represents the color of the icon

      \\n","line":22,"rawdescription":"\\nRepresents the color of the icon"},{"name":"data","deprecated":false,"deprecationMessage":"","type":"literal type","optional":false,"description":"

      Represents the data for the data card

      \\n","line":26,"rawdescription":"\\nRepresents the data for the data card"},{"name":"size","deprecated":false,"deprecationMessage":"","type":"number","optional":false,"description":"

      Represents the size of the icon

      \\n","line":24,"rawdescription":"\\nRepresents the size of the icon"}],"indexSignatures":[],"kind":165,"description":"

      An interface representing a single cell of the table.

      \\n","rawdescription":"\\n\\nAn interface representing a single cell of the table.\\n","methods":[]},{"name":"TissueInfo","id":"interface-TissueInfo-1a11b32dee89b55746dd02d393406aa7ea06e3d180099074510a109749d06241410786b045f3a9d570f4479be6442014b194d68f340724b0e76b4b0983b59760","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","type":"interface","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /**Cell name which is hovered, used for highlighting */\\n @Input() hightlightedCellName = \'\';\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","properties":[{"name":"id","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      ID of the Tissue

      \\n","line":40,"rawdescription":"\\nID of the Tissue"},{"name":"label","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      Name of the Tissue

      \\n","line":42,"rawdescription":"\\nName of the Tissue"}],"indexSignatures":[],"kind":165,"description":"

      Details of the Tissue

      \\n","rawdescription":"\\n\\nDetails of the Tissue\\n","methods":[]}],"injectables":[],"guards":[],"interceptors":[],"classes":[],"directives":[],"components":[{"name":"BiomarkerTableComponent","id":"component-BiomarkerTableComponent-1a11b32dee89b55746dd02d393406aa7ea06e3d180099074510a109749d06241410786b045f3a9d570f4479be6442014b194d68f340724b0e76b4b0983b59760","file":"src/lib/biomarker-table/biomarker-table.component.ts","changeDetection":"ChangeDetectionStrategy.OnPush","encapsulation":[],"entryComponents":[],"inputs":[],"outputs":[],"providers":[],"selector":"hra-biomarker-table","styleUrls":["./biomarker-table.component.scss"],"styles":[],"templateUrl":["./biomarker-table.component.html"],"viewProviders":[],"inputsClass":[{"name":"columns","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nColumns for the table","description":"

      Columns for the table

      \\n","line":73,"type":"string[]","decorators":[]},{"name":"data","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nRows of the table","description":"

      Rows of the table

      \\n","line":76,"type":"DataRow[]","decorators":[]},{"name":"gradient","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nGradient colors along with their stop points","description":"

      Gradient colors along with their stop points

      \\n","line":79,"type":"GradientPoint[]","decorators":[]},{"name":"hightlightedCellName","defaultValue":"\'\'","deprecated":false,"deprecationMessage":"","rawdescription":"\\nCell name which is hovered, used for highlighting","description":"

      Cell name which is hovered, used for highlighting

      \\n","line":85,"type":"string","decorators":[]},{"name":"sizes","defaultValue":"[]","deprecated":false,"deprecationMessage":"","rawdescription":"\\nTaking input for the radius of the circle and the label to be displayed.","description":"

      Taking input for the radius of the circle and the label to be displayed.

      \\n","line":82,"type":"SizeLegend[]","decorators":[]},{"name":"tissueInfo","defaultValue":"{\\n id: \'\',\\n label: \'\',\\n }","deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nInput: TissueInfo carrying the details of the tissue open\\n","description":"

      Input: TissueInfo carrying the details of the tissue open

      \\n","line":67,"type":"TissueInfo","decorators":[]}],"outputsClass":[],"propertiesClass":[{"name":"dataSource","defaultValue":"new MatTableDataSource>([])","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Source for the table

      \\n","line":93,"rawdescription":"\\nSource for the table","modifierKind":[144]}],"methodsClass":[{"name":"getColor","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"string","typeParameters":[],"line":165,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nCalculates the color of this value on this gradient\\n","description":"

      Calculates the color of this value on this gradient

      \\n","jsdoctags":[{"name":{"pos":4778,"end":4783,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":4772,"end":4777,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":4790,"end":4797,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getHoverData","args":[{"type":"[number, DataRow]","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"[][]","typeParameters":[],"line":192,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nrocesses the object for hover data for Table Cell\\n","description":"

      rocesses the object for hover data for Table Cell

      \\n","jsdoctags":[{"type":"[number, DataRow]","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":5512,"end":5519,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getMinMaxColor","args":[{"name":"meanExpression","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"literal type","typeParameters":[],"line":133,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets Min and Max color grade based on the meanExpression value\\n","description":"

      Gets Min and Max color grade based on the meanExpression value

      \\n","jsdoctags":[{"name":{"pos":3545,"end":3559,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"meanExpression"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3539,"end":3544,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3566,"end":3573,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getMinMaxSize","args":[{"name":"percentage","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"literal type","typeParameters":[],"line":151,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nGets Min and Max size grade based on the Percentage value\\n","description":"

      Gets Min and Max size grade based on the Percentage value

      \\n","jsdoctags":[{"name":{"pos":4199,"end":4209,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"percentage"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":4193,"end":4198,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":4216,"end":4223,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"getSize","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"number","typeParameters":[],"line":181,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\ngets Size of the Cell based on the percentage value\\n","description":"

      gets Size of the Cell based on the percentage value

      \\n","jsdoctags":[{"name":{"pos":5181,"end":5186,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":5175,"end":5180,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":5193,"end":5200,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"hex2rgb","args":[{"name":"hex","type":"string","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"RGBTriplet","typeParameters":[],"line":121,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nConverts HexCode to RGB\\n","description":"

      Converts HexCode to RGB

      \\n","jsdoctags":[{"name":{"pos":3236,"end":3239,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"hex"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":3230,"end":3235,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3246,"end":3253,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]},{"name":"lerp","args":[{"name":"value","type":"number","deprecated":false,"deprecationMessage":""},{"name":"min","type":"number","deprecated":false,"deprecationMessage":""},{"name":"max","type":"number","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"number","typeParameters":[],"line":112,"deprecated":false,"deprecationMessage":"","rawdescription":"\\nLerp function to give value beween min and max value based on the given value\\n\\n","description":"

      Lerp function to give value beween min and max value based on the given value

      \\n","jsdoctags":[{"name":{"pos":3024,"end":3029,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"value"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3018,"end":3023,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"name":{"pos":3042,"end":3045,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"min"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3036,"end":3041,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"name":{"pos":3058,"end":3061,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"max"},"type":"number","deprecated":false,"deprecationMessage":"","tagName":{"pos":3052,"end":3057,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":""},{"tagName":{"pos":3068,"end":3075,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":""}]}],"deprecated":false,"deprecationMessage":"","hostBindings":[],"hostListeners":[],"description":"

      Cell types table, describing the types and quanitites of cells for a specific organ

      \\n","rawdescription":"\\nCell types table, describing the types and quanitites of cells for a specific organ","type":"component","sourceCode":"import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from \'@angular/core\';\\nimport { CommonModule } from \'@angular/common\';\\nimport { MatTableModule, MatTableDataSource } from \'@angular/material/table\';\\nimport {\\n BiomarkerTableDataCardComponent,\\n BiomarkerTableDataIconComponent,\\n DataItem,\\n} from \'@hra-ui/components/molecules\';\\nimport { HoverDirective } from \'@hra-ui/cdk\';\\nimport { GradientPoint, SizeLegend } from \'@hra-ui/components/atoms\';\\n\\n/**\\n * RGBTriblet of type RGB to store color\\n */\\ntype RGBTriplet = [number, number, number];\\n\\n/**\\n * An interface representing a single cell of the table.\\n */\\nexport interface DataCell {\\n /** Represents the color of the icon */\\n color: string;\\n /** Represents the size of the icon */\\n size: number;\\n /** Represents the data for the data card */\\n data: {\\n cell: string;\\n biomarker: string;\\n meanExpression: number;\\n /** Number of datasets for this Tissue */\\n dataset_count: number;\\n };\\n}\\n\\n/**\\n * Details of the Tissue\\n */\\nexport interface TissueInfo {\\n /** ID of the Tissue */\\n id: string;\\n /** Name of the Tissue */\\n label: string;\\n}\\n\\n/** Describes the composition of a single row in the table */\\nexport type DataRow = [string, number | undefined, ...(T | undefined)[]];\\n\\n/** Cell types table, describing the types and quanitites of cells for a specific organ */\\n@Component({\\n selector: \'hra-biomarker-table\',\\n standalone: true,\\n imports: [\\n CommonModule,\\n MatTableModule,\\n BiomarkerTableDataIconComponent,\\n HoverDirective,\\n BiomarkerTableDataCardComponent,\\n ],\\n templateUrl: \'./biomarker-table.component.html\',\\n styleUrls: [\'./biomarker-table.component.scss\'],\\n changeDetection: ChangeDetectionStrategy.OnPush,\\n})\\nexport class BiomarkerTableComponent implements OnChanges {\\n /**\\n * Input: TissueInfo carrying the details of the tissue open\\n */\\n @Input() tissueInfo: TissueInfo = {\\n id: \'\',\\n label: \'\',\\n };\\n\\n /** Columns for the table */\\n @Input() columns: string[] = [];\\n\\n /** Rows of the table */\\n @Input() data: DataRow[] = [];\\n\\n /** Gradient colors along with their stop points */\\n @Input() gradient: GradientPoint[] = [];\\n\\n /** Taking input for the radius of the circle and the label to be displayed. */\\n @Input() sizes: SizeLegend[] = [];\\n\\n /**Cell name which is hovered, used for highlighting */\\n @Input() hightlightedCellName = \'\';\\n\\n /** Getter method to provide the definations of the columns */\\n get columnsWithTypeAndCount(): string[] {\\n return [\'type\', \'count\', ...this.columns];\\n }\\n\\n /** Source for the table */\\n readonly dataSource = new MatTableDataSource>([]);\\n\\n /**\\n * sets the data source for the table on every change\\n * @param changes object consisting of change in the Input\\n */\\n ngOnChanges(changes: SimpleChanges): void {\\n if (\'data\' in changes) {\\n this.dataSource.data = this.data;\\n }\\n }\\n\\n /** Lerp function to give value beween min and max value based on the given value\\n *\\n * @param value\\n * @param min\\n * @param max\\n * @returns\\n */\\n lerp(value: number, min: number, max: number): number {\\n return min * (1 - value) + max * value;\\n }\\n\\n /**\\n * Converts HexCode to RGB\\n * @param hex\\n * @returns\\n */\\n hex2rgb(hex: string): RGBTriplet {\\n const r = parseInt(hex.slice(1, 3), 16);\\n const g = parseInt(hex.slice(3, 5), 16);\\n const b = parseInt(hex.slice(5, 7), 16);\\n return [r, g, b];\\n }\\n\\n /**\\n * Gets Min and Max color grade based on the meanExpression value\\n * @param meanExpression\\n * @returns\\n */\\n getMinMaxColor(meanExpression: number): { minColor: RGBTriplet; maxColor: RGBTriplet } {\\n const index = this.gradient.findIndex((item, i, arr) => {\\n return meanExpression >= item.percentage && meanExpression <= arr[i + 1]?.percentage;\\n });\\n\\n const minColor: RGBTriplet = this.hex2rgb(this.gradient[index]?.color ?? this.gradient[0].color);\\n const maxColor: RGBTriplet = this.hex2rgb(\\n this.gradient[index + 1]?.color ?? this.gradient[this.gradient.length - 1].color\\n );\\n\\n return { minColor, maxColor };\\n }\\n\\n /**\\n * Gets Min and Max size grade based on the Percentage value\\n * @param percentage\\n * @returns\\n */\\n getMinMaxSize(percentage: number): { minSize: number; maxSize: number } {\\n const index = this.sizes.findIndex((item, i, arr) => {\\n return percentage >= parseFloat(item.label) / 100 && percentage <= parseFloat(arr[i + 1]?.label) / 100;\\n });\\n const minSize: number = this.sizes[index]?.radius ?? this.sizes[0].radius;\\n const maxSize: number = this.sizes[index + 1]?.radius ?? this.sizes[this.sizes.length - 1].radius;\\n return { minSize, maxSize };\\n }\\n\\n /**\\n * Calculates the color of this value on this gradient\\n * @param value\\n * @returns\\n */\\n getColor(value: number): string {\\n const { minColor, maxColor } = this.getMinMaxColor(value);\\n return (\\n \'#\' +\\n minColor\\n .map((min, index) => this.lerp(value, min, maxColor[index]))\\n .map((component) => Math.round(component).toString(16))\\n .join(\'\')\\n );\\n }\\n\\n /**\\n * gets Size of the Cell based on the percentage value\\n * @param value\\n * @returns\\n */\\n getSize(value: number): number {\\n const { minSize, maxSize } = this.getMinMaxSize(value);\\n return this.lerp(value, minSize, maxSize);\\n }\\n\\n /**\\n * rocesses the object for hover data for Table Cell\\n * @param index index of the row of the datasource\\n * @param row row of the datasource\\n * @returns\\n */\\n getHoverData([index, row]: [number, DataRow]): DataItem[][] {\\n if (row[index] === undefined) {\\n return [];\\n }\\n\\n const {\\n tissueInfo: { id, label },\\n } = this;\\n const {\\n data: { cell, biomarker, meanExpression, dataset_count },\\n } = row[index] as T;\\n\\n return [\\n [\\n { label: \'Functional Tissue Unit Name\', value: label },\\n { label: \'Uberon ID\', value: id },\\n { label: \'#Datasets\', value: `${dataset_count ?? 0}` },\\n ],\\n [\\n { label: \'Cell Type Name\', value: row[0] },\\n { label: \'CL ID\', value: cell },\\n { label: \'Number of Cells\', value: `${row[1]}` },\\n ],\\n [\\n { label: \'Gene Name\', value: this.columns[index - 2] },\\n { label: \'HGNC ID\', value: biomarker },\\n { label: \'Mean Expression Value\', value: meanExpression.toFixed(6) },\\n ],\\n ];\\n }\\n}\\n","assetsDirs":[],"styleUrlsData":[{"data":"@use \'utils\';\\n@use \'variables\' as vars;\\n\\n:host {\\n display: block;\\n\\n .sr-only {\\n @include utils.sr-only();\\n }\\n\\n .table {\\n margin-left: -1px;\\n\\n .highlight {\\n background-color: #f8f9fa;\\n }\\n td.type {\\n text-transform: lowercase;\\n }\\n }\\n\\n .table th {\\n background-color: #fff7f8;\\n color: #59264d;\\n text-align: right;\\n }\\n\\n .table td {\\n border-bottom: 0.063rem solid #d3d3d3;\\n border-left: 0.063rem solid #d3d3d3;\\n }\\n\\n .table tr:first-child td {\\n border-top: 0rem solid #d3d3d3;\\n }\\n\\n tr > td:first-child {\\n text-align: left;\\n padding: 0 2rem;\\n }\\n\\n tr > th:first-child {\\n text-align: left;\\n padding: 0 2rem;\\n }\\n\\n tr > td:last-of-type {\\n border-right: 0.063rem solid #d3d3d3;\\n }\\n\\n tr > th:last-of-type {\\n border-right: 0.063rem solid #d3d3d3;\\n border-left: solid #d3d3d3 1px;\\n }\\n\\n .type {\\n height: 3rem;\\n max-width: 26rem;\\n min-width: 17rem;\\n border-radius: 0rem;\\n white-space: nowrap;\\n }\\n\\n .count {\\n text-align: right;\\n height: 3rem;\\n min-width: 6.5rem;\\n }\\n\\n .count:not(:first-child) {\\n border-left: solid #d3d3d3 1px;\\n }\\n\\n .icon-header {\\n max-width: 5rem;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n }\\n\\n .icon-cell {\\n max-width: 5rem;\\n min-height: 3rem;\\n\\n .icon {\\n margin: auto;\\n }\\n }\\n}\\n\\n::ng-deep .mat-mdc-tab-header {\\n margin-left: -1px !important;\\n}\\n\\n::ng-deep .biomarker-table-hover.full-column-name {\\n display: flex;\\n padding: 1rem 1.5rem;\\n border-radius: 0.5rem;\\n box-shadow: 0.063rem 0.125rem 1rem 0.125rem rgba(0, 0, 0, 0.16);\\n background-color: vars.$primary-contrast-rgb;\\n overflow: auto;\\n max-width: fit-content;\\n}\\n","styleUrl":"./biomarker-table.component.scss"}],"stylesData":"","implements":["OnChanges"],"accessors":{"columnsWithTypeAndCount":{"name":"columnsWithTypeAndCount","getSignature":{"name":"columnsWithTypeAndCount","type":"[]","returnType":"string[]","line":88,"rawdescription":"\\nGetter method to provide the definations of the columns","description":"

      Getter method to provide the definations of the columns

      \\n"}}},"templateData":"\\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n
      \\n Cell type table by Biomarker\\n
      Cell Type\\n {{ element[0] }}\\n Cell Count\\n {{ element[1] !== undefined ? (element[1] | number) : \'no data\' }}\\n \\n {{ column }}\\n \\n \\n \\n\\n \\n
      \\n
      \\n
      \\n\\n\\n
      \\n {{ columnName }}\\n
      \\n
      \\n\\n\\n \\n\\n"}],"modules":[],"miscellaneous":{"variables":[],"functions":[],"typealiases":[{"name":"DataRow","ctype":"miscellaneous","subtype":"typealias","rawtype":"[string, , ...[]]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      Describes the composition of a single row in the table

      \\n","kind":183},{"name":"RGBTriplet","ctype":"miscellaneous","subtype":"typealias","rawtype":"[number, number, number]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      RGBTriblet of type RGB to store color

      \\n","kind":183}],"enumerations":[],"groupedVariables":{},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{"src/lib/biomarker-table/biomarker-table.component.ts":[{"name":"DataRow","ctype":"miscellaneous","subtype":"typealias","rawtype":"[string, , ...[]]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      Describes the composition of a single row in the table

      \\n","kind":183},{"name":"RGBTriplet","ctype":"miscellaneous","subtype":"typealias","rawtype":"[number, number, number]","file":"src/lib/biomarker-table/biomarker-table.component.ts","deprecated":false,"deprecationMessage":"","description":"

      RGBTriblet of type RGB to store color

      \\n","kind":183}]}}}')},"./dist/compodoc/shared-theming/documentation.json":module=>{"use strict";module.exports=JSON.parse('{"pipes":[],"interfaces":[],"injectables":[{"name":"ThemingState","id":"injectable-ThemingState-bc96eb085e9f41108d0a07c93ef58359e93bf96384f9b49b4e90d3f6f570a75ca04b1bd6fce0878c0c58715039571f02f400086da7f63acae3a2987851ae31fa","file":"src/lib/state/theming.state.ts","properties":[],"methods":[{"name":"load","args":[{"name":"ctx","type":"ThemingContext","deprecated":false,"deprecationMessage":""},{"type":"Load","deprecated":false,"deprecationMessage":""}],"optional":false,"returnType":"Observable<>","typeParameters":[],"line":44,"deprecated":false,"deprecationMessage":"","rawdescription":"\\n\\nAction for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.\\n","description":"

      Action for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.

      \\n","decorators":[{"name":"Action","stringifiedArguments":"Load"}],"jsdoctags":[{"name":{"pos":1096,"end":1099,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"ctx"},"type":"ThemingContext","deprecated":false,"deprecationMessage":"","tagName":{"pos":1090,"end":1095,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      State Context

      \\n"},{"type":"Load","deprecated":false,"deprecationMessage":"","tagName":{"text":"param"}},{"tagName":{"pos":1173,"end":1180,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"returns"},"comment":"

      asyncronous data from the url

      \\n"}]}],"deprecated":false,"deprecationMessage":"","description":"

      State for keeping track of theming applied

      \\n","rawdescription":"\\n\\nState for keeping track of theming applied\\n","sourceCode":"import { HttpClient } from \'@angular/common/http\';\\nimport { inject, Injectable } from \'@angular/core\';\\nimport { Action, State } from \'@ngxs/store\';\\nimport { MaterialCssVariables, MaterialCssVarsService } from \'angular-material-css-vars\';\\nimport { load } from \'js-yaml\';\\nimport { map, Observable, tap } from \'rxjs\';\\nimport { Load } from \'./theming.actions\';\\nimport { ThemingContext, ThemingModel, THEMING_FILE_SCHEMA } from \'./theming.model\';\\n\\n/**\\n * State for keeping track of theming applied\\n */\\n@State({\\n /**\\n * name of the state\\n */\\n name: \'theming\',\\n /**\\n * state variables default value\\n */\\n defaults: {},\\n})\\n/**\\n * Theming state class\\n */\\n@Injectable()\\nexport class ThemingState {\\n /**\\n * http service for link loading\\n */\\n private readonly http = inject(HttpClient);\\n /**\\n * Material-vars service for setting theming variables\\n */\\n private readonly materialVars = inject(MaterialCssVarsService);\\n\\n /**\\n * Action for loading yaml, reading data from yaml, setting state variables, and set material-css-vars variables for dynamic theming.\\n * @param ctx State Context\\n * @param action Action with url(yaml url) to load\\n * @returns asyncronous data from the url\\n */\\n @Action(Load)\\n load(ctx: ThemingContext, { url }: Load): Observable {\\n return this.http.get(url, { responseType: \'text\' }).pipe(\\n map((data) => load(data, { filename: url })),\\n map((data) => THEMING_FILE_SCHEMA.parse(data)),\\n tap((data) => ctx.setState(data)),\\n tap((data) => this.setVariables(data))\\n );\\n }\\n\\n /**\\n * Set values to the material-css-vars pallete keys\\n * @param data key-value pairs set in state\\n */\\n private setVariables(data: ThemingModel): void {\\n for (const [key, value] of Object.entries(data)) {\\n this.materialVars.setVariable(key as MaterialCssVariables, value);\\n }\\n }\\n}\\n","type":"injectable"}],"guards":[],"interceptors":[],"classes":[{"name":"Load","id":"class-Load-469f09c45915febbba378ba114f9cebc6d6342ca6e618a54edaa277bdc8b3fbbce18cea9b8c908ad8794b8a3f9a2fac6a9e21ab80e6e979fda2c08bca4eb995b","file":"src/lib/state/theming.actions.ts","deprecated":false,"deprecationMessage":"","type":"class","sourceCode":"export class Load {\\n /**\\n * static type for the action\\n */\\n static readonly type = \'[Theming] Load Theming File\';\\n /**\\n * Initialising type for the action\\n */\\n readonly type = Load.type;\\n\\n /**\\n * It takes URL of the yaml file, and loads it.\\n * @param url URL of the yaml file, containing theming color key-value pairs\\n */\\n constructor(readonly url: string) {}\\n}\\n","constructorObj":{"name":"constructor","description":"

      It takes URL of the yaml file, and loads it.

      \\n","deprecated":false,"deprecationMessage":"","args":[{"name":"url","type":"string","deprecated":false,"deprecationMessage":""}],"line":12,"rawdescription":"\\n\\nIt takes URL of the yaml file, and loads it.\\n","jsdoctags":[{"name":{"pos":354,"end":357,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"url"},"type":"string","deprecated":false,"deprecationMessage":"","tagName":{"pos":348,"end":353,"flags":4227072,"modifierFlagsCache":0,"transformFlags":0,"kind":79,"escapedText":"param"},"comment":"

      URL of the yaml file, containing theming color key-value pairs

      \\n"}]},"properties":[{"name":"type","defaultValue":"\'[Theming] Load Theming File\'","deprecated":false,"deprecationMessage":"","type":"string","optional":false,"description":"

      static type for the action

      \\n","line":8,"rawdescription":"\\n\\nstatic type for the action\\n","modifierKind":[124,144]},{"name":"type","defaultValue":"Load.type","deprecated":false,"deprecationMessage":"","type":"","optional":false,"description":"

      Initialising type for the action

      \\n","line":12,"rawdescription":"\\n\\nInitialising type for the action\\n","modifierKind":[144]}],"description":"

      Load Action, which is triggered to load yaml file, to get theming pallete

      \\n","rawdescription":"\\n\\nLoad Action, which is triggered to load yaml file, to get theming pallete\\n","methods":[],"indexSignatures":[],"inputsClass":[],"outputsClass":[],"hostBindings":[],"hostListeners":[]}],"directives":[],"components":[],"modules":[{"name":"ThemingModule","id":"module-ThemingModule-a5ac292a1d8f0af8ae5b93edb01358072adb02eaa2e0139627ccb0f40b61d38613bc286464b0e4b2577330616277bc72746d8169acd7a4f527abd04f0e0fe000","description":"

      Configures global theming

      \\n","deprecationMessage":"","deprecated":false,"file":"src/lib/theming.module.ts","methods":[],"sourceCode":"import { NgModule } from \'@angular/core\';\\nimport { NgxsModule } from \'@ngxs/store\';\\nimport { MaterialCssVarsModule } from \'angular-material-css-vars\';\\nimport { ThemingState } from \'./state/theming.state\';\\n\\n/** Configures global theming */\\n@NgModule({\\n imports: [MaterialCssVarsModule.forRoot({}), NgxsModule.forFeature([ThemingState])],\\n})\\nexport class ThemingModule {}\\n","children":[{"type":"providers","elements":[]},{"type":"declarations","elements":[]},{"type":"imports","elements":[]},{"type":"exports","elements":[]},{"type":"bootstrap","elements":[]},{"type":"classes","elements":[]}]}],"miscellaneous":{"variables":[{"name":"placeholder","ctype":"miscellaneous","subtype":"variable","file":"src/index.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"undefined","rawdescription":"Placeholder to make build and tests pass until any actual library code is created","description":"

      Placeholder to make build and tests pass until any actual library code is created

      \\n"},{"name":"THEMING_FILE_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(z.nativeEnum(MaterialCssVariables), z.string())","rawdescription":"Theming mdoel schema, having records with key as material-css-vars pallete keys and string values","description":"

      Theming mdoel schema, having records with key as material-css-vars pallete keys and string values

      \\n"}],"functions":[],"typealiases":[{"name":"ThemingContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State context for theming, with reference of model

      \\n","kind":177},{"name":"ThemingModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for theming

      \\n","kind":177}],"enumerations":[],"groupedVariables":{"src/index.ts":[{"name":"placeholder","ctype":"miscellaneous","subtype":"variable","file":"src/index.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"undefined","rawdescription":"Placeholder to make build and tests pass until any actual library code is created","description":"

      Placeholder to make build and tests pass until any actual library code is created

      \\n"}],"src/lib/state/theming.model.ts":[{"name":"THEMING_FILE_SCHEMA","ctype":"miscellaneous","subtype":"variable","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","type":"","defaultValue":"z.record(z.nativeEnum(MaterialCssVariables), z.string())","rawdescription":"Theming mdoel schema, having records with key as material-css-vars pallete keys and string values","description":"

      Theming mdoel schema, having records with key as material-css-vars pallete keys and string values

      \\n"}]},"groupedFunctions":{},"groupedEnumerations":{},"groupedTypeAliases":{"src/lib/state/theming.model.ts":[{"name":"ThemingContext","ctype":"miscellaneous","subtype":"typealias","rawtype":"StateContext","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      State context for theming, with reference of model

      \\n","kind":177},{"name":"ThemingModel","ctype":"miscellaneous","subtype":"typealias","rawtype":"z.infer<>","file":"src/lib/state/theming.model.ts","deprecated":false,"deprecationMessage":"","description":"

      Model for theming

      \\n","kind":177}]}}}')}},__webpack_require__=>{var __webpack_exec__=moduleId=>__webpack_require__(__webpack_require__.s=moduleId);__webpack_require__.O(0,[666],(()=>(__webpack_exec__("./storybook-config-entry.js"),__webpack_exec__("./.storybook/styles.scss?ngGlobalStyle"))));__webpack_require__.O()}]); \ No newline at end of file diff --git a/storybook/components-atoms/main.css b/storybook/components-atoms/main.css index 265fab4dc..a37079967 100644 --- a/storybook/components-atoms/main.css +++ b/storybook/components-atoms/main.css @@ -6248,6 +6248,8 @@ textarea.cdk-textarea-autosize-measuring-firefox { button.mdc-button { font-weight: 700; font-size: 1rem; + letter-spacing: initial; + line-height: 1.5rem; } button.mdc-button.mat-primary { background-color: var(--palette-primary-500-rgb); diff --git a/storybook/components-atoms/project.json b/storybook/components-atoms/project.json index 6a79d8e13..7f41cd7d1 100644 --- a/storybook/components-atoms/project.json +++ b/storybook/components-atoms/project.json @@ -1 +1 @@ -{"generatedAt":1693513254552,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":true,"hasStorybookEslint":true,"refCount":0,"metaFramework":{"name":"nx","packageName":"@nrwl/storybook","version":"15.9.2"},"monorepo":"Nx","packageManager":{"type":"npm","version":"8.19.4"},"framework":{"name":"@storybook/angular","options":{}},"builder":"@storybook/builder-webpack5","renderer":"@storybook/angular","storybookVersion":"7.0.2","storybookVersionSpecifier":"^7.0.2","language":"typescript","storybookPackages":{"@nrwl/storybook":{"version":"15.9.2"},"@storybook/angular":{"version":"7.0.2"},"@storybook/core-common":{"version":"7.0.2"},"@storybook/core-server":{"version":"7.0.2"},"@storybook/test-runner":{"version":"0.10.0"},"eslint-plugin-storybook":{"version":"0.6.11"}},"addons":{"@storybook/addon-essentials":{"version":"7.0.2"}}} +{"generatedAt":1694197343242,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":true,"hasStorybookEslint":true,"refCount":0,"metaFramework":{"name":"nx","packageName":"@nrwl/storybook","version":"15.9.2"},"monorepo":"Nx","packageManager":{"type":"npm","version":"8.19.4"},"framework":{"name":"@storybook/angular","options":{}},"builder":"@storybook/builder-webpack5","renderer":"@storybook/angular","storybookVersion":"7.0.2","storybookVersionSpecifier":"^7.0.2","language":"typescript","storybookPackages":{"@nrwl/storybook":{"version":"15.9.2"},"@storybook/angular":{"version":"7.0.2"},"@storybook/core-common":{"version":"7.0.2"},"@storybook/core-server":{"version":"7.0.2"},"@storybook/test-runner":{"version":"0.10.0"},"eslint-plugin-storybook":{"version":"0.6.11"}},"addons":{"@storybook/addon-essentials":{"version":"7.0.2"}}} diff --git a/storybook/components-atoms/runtime~main.2056d85e.iframe.bundle.js b/storybook/components-atoms/runtime~main.c84bb7ae.iframe.bundle.js similarity index 98% rename from storybook/components-atoms/runtime~main.2056d85e.iframe.bundle.js rename to storybook/components-atoms/runtime~main.c84bb7ae.iframe.bundle.js index 51d8d2b4c..9f7c0a725 100644 --- a/storybook/components-atoms/runtime~main.2056d85e.iframe.bundle.js +++ b/storybook/components-atoms/runtime~main.c84bb7ae.iframe.bundle.js @@ -1 +1 @@ -(()=>{"use strict";var deferred,leafPrototypes,getProto,inProgress,__webpack_modules__={},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:!1,exports:{}};return __webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.amdO={},deferred=[],__webpack_require__.O=(result,chunkIds,fn,priority)=>{if(!chunkIds){var notFulfilled=1/0;for(i=0;i=priority)&&Object.keys(__webpack_require__.O).every((key=>__webpack_require__.O[key](chunkIds[j])))?chunkIds.splice(j--,1):(fulfilled=!1,priority0&&deferred[i-1][2]>priority;i--)deferred[i]=deferred[i-1];deferred[i]=[chunkIds,fn,priority]},__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module.default:()=>module;return __webpack_require__.d(getter,{a:getter}),getter},getProto=Object.getPrototypeOf?obj=>Object.getPrototypeOf(obj):obj=>obj.__proto__,__webpack_require__.t=function(value,mode){if(1&mode&&(value=this(value)),8&mode)return value;if("object"==typeof value&&value){if(4&mode&&value.__esModule)return value;if(16&mode&&"function"==typeof value.then)return value}var ns=Object.create(null);__webpack_require__.r(ns);var def={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var current=2&mode&&value;"object"==typeof current&&!~leafPrototypes.indexOf(current);current=getProto(current))Object.getOwnPropertyNames(current).forEach((key=>def[key]=()=>value[key]));return def.default=()=>value,__webpack_require__.d(ns,def),ns},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.f={},__webpack_require__.e=chunkId=>Promise.all(Object.keys(__webpack_require__.f).reduce(((promises,key)=>(__webpack_require__.f[key](chunkId,promises),promises)),[])),__webpack_require__.u=chunkId=>(({236:"src-lib-size-legend-size-legend-component-stories",242:"src-lib-label-box-label-box-component-stories",446:"src-lib-required-textbox-required-textbox-component-stories",661:"src-lib-required-input-required-input-component-stories",798:"src-lib-empty-biomarker-empty-biomarker-stories",942:"src-lib-email-input-email-input-component-stories",983:"src-lib-gradient-legend-gradient-legend-component-stories"}[chunkId]||chunkId)+"."+{140:"d67f4659",236:"bbe74a07",242:"4f7b6d64",256:"711330bc",384:"c0a7ed0c",415:"d2a35c2f",446:"d72ac7a7",562:"c8cd5c23",582:"5adc4521",583:"54f984a3",661:"f47c9fd3",798:"53fee050",828:"003b1424",849:"fc333e4d",882:"54d736c3",933:"b1070b20",942:"40c35ad1",983:"f3f7e565"}[chunkId]+".iframe.bundle.js"),__webpack_require__.miniCssF=chunkId=>{},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),inProgress={},__webpack_require__.l=(url,done,key,chunkId)=>{if(inProgress[url])inProgress[url].push(done);else{var script,needAttach;if(void 0!==key)for(var scripts=document.getElementsByTagName("script"),i=0;i{script.onerror=script.onload=null,clearTimeout(timeout);var doneFns=inProgress[url];if(delete inProgress[url],script.parentNode&&script.parentNode.removeChild(script),doneFns&&doneFns.forEach((fn=>fn(event))),prev)return prev(event)},timeout=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:script}),12e4);script.onerror=onScriptComplete.bind(null,script.onerror),script.onload=onScriptComplete.bind(null,script.onload),needAttach&&document.head.appendChild(script)}},__webpack_require__.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),__webpack_require__.p="",(()=>{var installedChunks={303:0};__webpack_require__.f.j=(chunkId,promises)=>{var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:void 0;if(0!==installedChunkData)if(installedChunkData)promises.push(installedChunkData[2]);else if(303!=chunkId){var promise=new Promise(((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]));promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId),error=new Error;__webpack_require__.l(url,(event=>{if(__webpack_require__.o(installedChunks,chunkId)&&(0!==(installedChunkData=installedChunks[chunkId])&&(installedChunks[chunkId]=void 0),installedChunkData)){var errorType=event&&("load"===event.type?"missing":event.type),realSrc=event&&event.target&&event.target.src;error.message="Loading chunk "+chunkId+" failed.\n("+errorType+": "+realSrc+")",error.name="ChunkLoadError",error.type=errorType,error.request=realSrc,installedChunkData[1](error)}}),"chunk-"+chunkId,chunkId)}else installedChunks[chunkId]=0},__webpack_require__.O.j=chunkId=>0===installedChunks[chunkId];var webpackJsonpCallback=(parentChunkLoadingFunction,data)=>{var moduleId,chunkId,[chunkIds,moreModules,runtime]=data,i=0;if(chunkIds.some((id=>0!==installedChunks[id]))){for(moduleId in moreModules)__webpack_require__.o(moreModules,moduleId)&&(__webpack_require__.m[moduleId]=moreModules[moduleId]);if(runtime)var result=runtime(__webpack_require__)}for(parentChunkLoadingFunction&&parentChunkLoadingFunction(data);i{"use strict";var deferred,leafPrototypes,getProto,inProgress,__webpack_modules__={},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:!1,exports:{}};return __webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.amdO={},deferred=[],__webpack_require__.O=(result,chunkIds,fn,priority)=>{if(!chunkIds){var notFulfilled=1/0;for(i=0;i=priority)&&Object.keys(__webpack_require__.O).every((key=>__webpack_require__.O[key](chunkIds[j])))?chunkIds.splice(j--,1):(fulfilled=!1,priority0&&deferred[i-1][2]>priority;i--)deferred[i]=deferred[i-1];deferred[i]=[chunkIds,fn,priority]},__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module.default:()=>module;return __webpack_require__.d(getter,{a:getter}),getter},getProto=Object.getPrototypeOf?obj=>Object.getPrototypeOf(obj):obj=>obj.__proto__,__webpack_require__.t=function(value,mode){if(1&mode&&(value=this(value)),8&mode)return value;if("object"==typeof value&&value){if(4&mode&&value.__esModule)return value;if(16&mode&&"function"==typeof value.then)return value}var ns=Object.create(null);__webpack_require__.r(ns);var def={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var current=2&mode&&value;"object"==typeof current&&!~leafPrototypes.indexOf(current);current=getProto(current))Object.getOwnPropertyNames(current).forEach((key=>def[key]=()=>value[key]));return def.default=()=>value,__webpack_require__.d(ns,def),ns},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.f={},__webpack_require__.e=chunkId=>Promise.all(Object.keys(__webpack_require__.f).reduce(((promises,key)=>(__webpack_require__.f[key](chunkId,promises),promises)),[])),__webpack_require__.u=chunkId=>(({236:"src-lib-size-legend-size-legend-component-stories",242:"src-lib-label-box-label-box-component-stories",446:"src-lib-required-textbox-required-textbox-component-stories",661:"src-lib-required-input-required-input-component-stories",798:"src-lib-empty-biomarker-empty-biomarker-stories",942:"src-lib-email-input-email-input-component-stories",983:"src-lib-gradient-legend-gradient-legend-component-stories"}[chunkId]||chunkId)+"."+{140:"d67f4659",236:"bbe74a07",242:"7bf20754",256:"711330bc",384:"c0a7ed0c",415:"d2a35c2f",446:"d72ac7a7",562:"c8cd5c23",582:"5adc4521",583:"54f984a3",661:"f47c9fd3",798:"805cffb2",828:"003b1424",849:"fc333e4d",882:"54d736c3",933:"b1070b20",942:"40c35ad1",983:"f3f7e565"}[chunkId]+".iframe.bundle.js"),__webpack_require__.miniCssF=chunkId=>{},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),inProgress={},__webpack_require__.l=(url,done,key,chunkId)=>{if(inProgress[url])inProgress[url].push(done);else{var script,needAttach;if(void 0!==key)for(var scripts=document.getElementsByTagName("script"),i=0;i{script.onerror=script.onload=null,clearTimeout(timeout);var doneFns=inProgress[url];if(delete inProgress[url],script.parentNode&&script.parentNode.removeChild(script),doneFns&&doneFns.forEach((fn=>fn(event))),prev)return prev(event)},timeout=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:script}),12e4);script.onerror=onScriptComplete.bind(null,script.onerror),script.onload=onScriptComplete.bind(null,script.onload),needAttach&&document.head.appendChild(script)}},__webpack_require__.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),__webpack_require__.p="",(()=>{var installedChunks={303:0};__webpack_require__.f.j=(chunkId,promises)=>{var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:void 0;if(0!==installedChunkData)if(installedChunkData)promises.push(installedChunkData[2]);else if(303!=chunkId){var promise=new Promise(((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]));promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId),error=new Error;__webpack_require__.l(url,(event=>{if(__webpack_require__.o(installedChunks,chunkId)&&(0!==(installedChunkData=installedChunks[chunkId])&&(installedChunks[chunkId]=void 0),installedChunkData)){var errorType=event&&("load"===event.type?"missing":event.type),realSrc=event&&event.target&&event.target.src;error.message="Loading chunk "+chunkId+" failed.\n("+errorType+": "+realSrc+")",error.name="ChunkLoadError",error.type=errorType,error.request=realSrc,installedChunkData[1](error)}}),"chunk-"+chunkId,chunkId)}else installedChunks[chunkId]=0},__webpack_require__.O.j=chunkId=>0===installedChunks[chunkId];var webpackJsonpCallback=(parentChunkLoadingFunction,data)=>{var moduleId,chunkId,[chunkIds,moreModules,runtime]=data,i=0;if(chunkIds.some((id=>0!==installedChunks[id]))){for(moduleId in moreModules)__webpack_require__.o(moreModules,moduleId)&&(__webpack_require__.m[moduleId]=moreModules[moduleId]);if(runtime)var result=runtime(__webpack_require__)}for(parentChunkLoadingFunction&&parentChunkLoadingFunction(data);i{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n padding: 2.625rem 2rem 2.625rem 2rem;\n}\n:host .message {\n color: #243142;\n}\n:host .collaborate-button {\n margin-top: 2rem;\n font-weight: 700;\n color: #fff;\n width: 100%;\n max-width: 17.25rem;\n height: 3rem;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/atoms/src/lib/empty-biomarker/empty-biomarker.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Default:()=>Default,default:()=>empty_biomarker_stories});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");var _class,empty_biomarker_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/empty-biomarker/empty-biomarker.component.scss?ngResource"),empty_biomarker_componentngResource_default=__webpack_require__.n(empty_biomarker_componentngResource),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),fesm2020_button=__webpack_require__("./node_modules/@angular/material/fesm2020/button.mjs"),ngx_markdown=__webpack_require__("./node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs");let EmptyBiomarkerComponent=((_class=class EmptyBiomarkerComponent{constructor(){this.collaborateText="",this.message="",this.collaborateClick=new core.EventEmitter}}).propDecorators={collaborateText:[{type:core.Input}],message:[{type:core.Input}],collaborateClick:[{type:core.Output}]},_class);EmptyBiomarkerComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-empty-biomarker",standalone:!0,imports:[common.CommonModule,fesm2020_button.ot,ngx_markdown.JP],template:'\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[empty_biomarker_componentngResource_default()]})],EmptyBiomarkerComponent);const empty_biomarker_stories={title:"EmptyBiomarker",component:EmptyBiomarkerComponent},Default=(args=>({props:args})).bind({});Default.args={collaborateText:"Collaborate with the HRA Team",message:"We currently do not have cell type data for this biomarker.\n

      Please contact us to discuss your dataset."},Default.parameters={...Default.parameters,docs:{...Default.parameters?.docs,source:{originalSource:"args => ({\n props: args\n})",...Default.parameters?.docs?.source}}}}}]); \ No newline at end of file diff --git a/storybook/components-atoms/src-lib-empty-biomarker-empty-biomarker-stories.805cffb2.iframe.bundle.js b/storybook/components-atoms/src-lib-empty-biomarker-empty-biomarker-stories.805cffb2.iframe.bundle.js new file mode 100644 index 000000000..52f8da73e --- /dev/null +++ b/storybook/components-atoms/src-lib-empty-biomarker-empty-biomarker-stories.805cffb2.iframe.bundle.js @@ -0,0 +1 @@ +(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[798],{"./libs/components/atoms/src/lib/empty-biomarker/empty-biomarker.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n padding: 2.625rem 2rem 2.625rem 2rem;\n}\n:host .message {\n color: #243142;\n}\n:host .collaborate-button {\n margin-top: 2rem;\n font-weight: 700;\n color: #fff;\n width: 100%;\n max-width: 20rem;\n height: 3rem;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/atoms/src/lib/empty-biomarker/empty-biomarker.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Default:()=>Default,default:()=>empty_biomarker_stories});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");var _class,empty_biomarker_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/empty-biomarker/empty-biomarker.component.scss?ngResource"),empty_biomarker_componentngResource_default=__webpack_require__.n(empty_biomarker_componentngResource),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),fesm2020_button=__webpack_require__("./node_modules/@angular/material/fesm2020/button.mjs"),ngx_markdown=__webpack_require__("./node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs");let EmptyBiomarkerComponent=((_class=class EmptyBiomarkerComponent{constructor(){this.collaborateText="",this.message="",this.collaborateClick=new core.EventEmitter}}).propDecorators={collaborateText:[{type:core.Input}],message:[{type:core.Input}],collaborateClick:[{type:core.Output}]},_class);EmptyBiomarkerComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-empty-biomarker",standalone:!0,imports:[common.CommonModule,fesm2020_button.ot,ngx_markdown.JP],template:'\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[empty_biomarker_componentngResource_default()]})],EmptyBiomarkerComponent);const empty_biomarker_stories={title:"EmptyBiomarker",component:EmptyBiomarkerComponent},Default=(args=>({props:args})).bind({});Default.args={collaborateText:"Collaborate with the HRA Team",message:"We currently do not have cell type data for this biomarker.\n

      Please contact us to discuss your dataset."},Default.parameters={...Default.parameters,docs:{...Default.parameters?.docs,source:{originalSource:"args => ({\n props: args\n})",...Default.parameters?.docs?.source}}}}}]); \ No newline at end of file diff --git a/storybook/components-atoms/src-lib-label-box-label-box-component-stories.4f7b6d64.iframe.bundle.js b/storybook/components-atoms/src-lib-label-box-label-box-component-stories.4f7b6d64.iframe.bundle.js deleted file mode 100644 index a5e848ddc..000000000 --- a/storybook/components-atoms/src-lib-label-box-label-box-component-stories.4f7b6d64.iframe.bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see src-lib-label-box-label-box-component-stories.4f7b6d64.iframe.bundle.js.LICENSE.txt */ -(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[242],{"./libs/components/atoms/src/lib/label-box/label-box.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: flex;\n align-items: center;\n padding: 0.75rem 2rem;\n background: #f8f9fa;\n}\n:host .filler {\n flex-grow: 1;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/atoms/src/lib/label-box/label-box.component.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Primary:()=>Primary,WithIconAtEnd:()=>WithIconAtEnd,default:()=>label_box_component_stories});var core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),fesm2020_core=__webpack_require__("./node_modules/@angular/material/fesm2020/core.mjs"),coercion=__webpack_require__("./node_modules/@angular/cdk/fesm2020/coercion.mjs"),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),of=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/of.js"),throwError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/throwError.js"),forkJoin=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js"),Subscription=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subscription.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js"),catchError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/catchError.js"),lift=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/util/lift.js");var share=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/share.js"),take=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/take.js"),http=__webpack_require__("./node_modules/@angular/common/fesm2020/http.mjs"),platform_browser=__webpack_require__("./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs");let policy;function trustedHTMLFromString(html){return function getPolicy(){if(void 0===policy&&(policy=null,"undefined"!=typeof window)){const ttWindow=window;void 0!==ttWindow.trustedTypes&&(policy=ttWindow.trustedTypes.createPolicy("angular#components",{createHTML:s=>s}))}return policy}()?.createHTML(html)||html}function getMatIconNameNotFoundError(iconName){return Error(`Unable to find icon with the name "${iconName}"`)}function getMatIconFailedToSanitizeUrlError(url){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${url}".`)}function getMatIconFailedToSanitizeLiteralError(literal){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${literal}".`)}class SvgIconConfig{constructor(url,svgText,options){this.url=url,this.svgText=svgText,this.options=options}}class MatIconRegistry{constructor(_httpClient,_sanitizer,document,_errorHandler){this._httpClient=_httpClient,this._sanitizer=_sanitizer,this._errorHandler=_errorHandler,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=document}addSvgIcon(iconName,url,options){return this.addSvgIconInNamespace("",iconName,url,options)}addSvgIconLiteral(iconName,literal,options){return this.addSvgIconLiteralInNamespace("",iconName,literal,options)}addSvgIconInNamespace(namespace,iconName,url,options){return this._addSvgIconConfig(namespace,iconName,new SvgIconConfig(url,null,options))}addSvgIconResolver(resolver){return this._resolvers.push(resolver),this}addSvgIconLiteralInNamespace(namespace,iconName,literal,options){const cleanLiteral=this._sanitizer.sanitize(core.SecurityContext.HTML,literal);if(!cleanLiteral)throw getMatIconFailedToSanitizeLiteralError(literal);const trustedLiteral=trustedHTMLFromString(cleanLiteral);return this._addSvgIconConfig(namespace,iconName,new SvgIconConfig("",trustedLiteral,options))}addSvgIconSet(url,options){return this.addSvgIconSetInNamespace("",url,options)}addSvgIconSetLiteral(literal,options){return this.addSvgIconSetLiteralInNamespace("",literal,options)}addSvgIconSetInNamespace(namespace,url,options){return this._addSvgIconSetConfig(namespace,new SvgIconConfig(url,null,options))}addSvgIconSetLiteralInNamespace(namespace,literal,options){const cleanLiteral=this._sanitizer.sanitize(core.SecurityContext.HTML,literal);if(!cleanLiteral)throw getMatIconFailedToSanitizeLiteralError(literal);const trustedLiteral=trustedHTMLFromString(cleanLiteral);return this._addSvgIconSetConfig(namespace,new SvgIconConfig("",trustedLiteral,options))}registerFontClassAlias(alias,classNames=alias){return this._fontCssClassesByAlias.set(alias,classNames),this}classNameForFontAlias(alias){return this._fontCssClassesByAlias.get(alias)||alias}setDefaultFontSetClass(...classNames){return this._defaultFontSetClass=classNames,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(safeUrl){const url=this._sanitizer.sanitize(core.SecurityContext.RESOURCE_URL,safeUrl);if(!url)throw getMatIconFailedToSanitizeUrlError(safeUrl);const cachedIcon=this._cachedIconsByUrl.get(url);return cachedIcon?(0,of.of)(cloneSvg(cachedIcon)):this._loadSvgIconFromConfig(new SvgIconConfig(safeUrl,null)).pipe((0,tap.b)((svg=>this._cachedIconsByUrl.set(url,svg))),(0,map.U)((svg=>cloneSvg(svg))))}getNamedSvgIcon(name,namespace=""){const key=iconKey(namespace,name);let config=this._svgIconConfigs.get(key);if(config)return this._getSvgFromConfig(config);if(config=this._getIconConfigFromResolvers(namespace,name),config)return this._svgIconConfigs.set(key,config),this._getSvgFromConfig(config);const iconSetConfigs=this._iconSetConfigs.get(namespace);return iconSetConfigs?this._getSvgFromIconSetConfigs(name,iconSetConfigs):(0,throwError._)(getMatIconNameNotFoundError(key))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(config){return config.svgText?(0,of.of)(cloneSvg(this._svgElementFromConfig(config))):this._loadSvgIconFromConfig(config).pipe((0,map.U)((svg=>cloneSvg(svg))))}_getSvgFromIconSetConfigs(name,iconSetConfigs){const namedIcon=this._extractIconWithNameFromAnySet(name,iconSetConfigs);if(namedIcon)return(0,of.of)(namedIcon);const iconSetFetchRequests=iconSetConfigs.filter((iconSetConfig=>!iconSetConfig.svgText)).map((iconSetConfig=>this._loadSvgIconSetFromConfig(iconSetConfig).pipe((0,catchError.K)((err=>{const errorMessage=`Loading icon set URL: ${this._sanitizer.sanitize(core.SecurityContext.RESOURCE_URL,iconSetConfig.url)} failed: ${err.message}`;return this._errorHandler.handleError(new Error(errorMessage)),(0,of.of)(null)})))));return(0,forkJoin.D)(iconSetFetchRequests).pipe((0,map.U)((()=>{const foundIcon=this._extractIconWithNameFromAnySet(name,iconSetConfigs);if(!foundIcon)throw getMatIconNameNotFoundError(name);return foundIcon})))}_extractIconWithNameFromAnySet(iconName,iconSetConfigs){for(let i=iconSetConfigs.length-1;i>=0;i--){const config=iconSetConfigs[i];if(config.svgText&&config.svgText.toString().indexOf(iconName)>-1){const svg=this._svgElementFromConfig(config),foundIcon=this._extractSvgIconFromSet(svg,iconName,config.options);if(foundIcon)return foundIcon}}return null}_loadSvgIconFromConfig(config){return this._fetchIcon(config).pipe((0,tap.b)((svgText=>config.svgText=svgText)),(0,map.U)((()=>this._svgElementFromConfig(config))))}_loadSvgIconSetFromConfig(config){return config.svgText?(0,of.of)(null):this._fetchIcon(config).pipe((0,tap.b)((svgText=>config.svgText=svgText)))}_extractSvgIconFromSet(iconSet,iconName,options){const iconSource=iconSet.querySelector(`[id="${iconName}"]`);if(!iconSource)return null;const iconElement=iconSource.cloneNode(!0);if(iconElement.removeAttribute("id"),"svg"===iconElement.nodeName.toLowerCase())return this._setSvgAttributes(iconElement,options);if("symbol"===iconElement.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(iconElement),options);const svg=this._svgElementFromString(trustedHTMLFromString(""));return svg.appendChild(iconElement),this._setSvgAttributes(svg,options)}_svgElementFromString(str){const div=this._document.createElement("DIV");div.innerHTML=str;const svg=div.querySelector("svg");if(!svg)throw Error(" tag not found");return svg}_toSvgElement(element){const svg=this._svgElementFromString(trustedHTMLFromString("")),attributes=element.attributes;for(let i=0;itrustedHTMLFromString(svg))),function finalize(callback){return(0,lift.e)((function(source,subscriber){try{source.subscribe(subscriber)}finally{subscriber.add(callback)}}))}((()=>this._inProgressUrlFetches.delete(url))),(0,share.B)());return this._inProgressUrlFetches.set(url,req),req}_addSvgIconConfig(namespace,iconName,config){return this._svgIconConfigs.set(iconKey(namespace,iconName),config),this}_addSvgIconSetConfig(namespace,config){const configNamespace=this._iconSetConfigs.get(namespace);return configNamespace?configNamespace.push(config):this._iconSetConfigs.set(namespace,[config]),this}_svgElementFromConfig(config){if(!config.svgElement){const svg=this._svgElementFromString(config.svgText);this._setSvgAttributes(svg,config.options),config.svgElement=svg}return config.svgElement}_getIconConfigFromResolvers(namespace,name){for(let i=0;i_location?_location.pathname+_location.search:""}}});const funcIriAttributes=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],funcIriAttributeSelector=funcIriAttributes.map((attr=>`[${attr}]`)).join(", "),funcIriPattern=/^url\(['"]?#(.*?)['"]?\)$/;class MatIcon extends _MatIconBase{get inline(){return this._inline}set inline(inline){this._inline=(0,coercion.Ig)(inline)}get svgIcon(){return this._svgIcon}set svgIcon(value){value!==this._svgIcon&&(value?this._updateSvgIcon(value):this._svgIcon&&this._clearSvgElement(),this._svgIcon=value)}get fontSet(){return this._fontSet}set fontSet(value){const newValue=this._cleanupFontValue(value);newValue!==this._fontSet&&(this._fontSet=newValue,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(value){const newValue=this._cleanupFontValue(value);newValue!==this._fontIcon&&(this._fontIcon=newValue,this._updateFontIconClasses())}constructor(elementRef,_iconRegistry,ariaHidden,_location,_errorHandler,defaults){super(elementRef),this._iconRegistry=_iconRegistry,this._location=_location,this._errorHandler=_errorHandler,this._inline=!1,this._previousFontSetClass=[],this._currentIconFetch=Subscription.w0.EMPTY,defaults&&(defaults.color&&(this.color=this.defaultColor=defaults.color),defaults.fontSet&&(this.fontSet=defaults.fontSet)),ariaHidden||elementRef.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(iconName){if(!iconName)return["",""];const parts=iconName.split(":");switch(parts.length){case 1:return["",parts[0]];case 2:return parts;default:throw Error(`Invalid icon name: "${iconName}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const cachedElements=this._elementsWithExternalReferences;if(cachedElements&&cachedElements.size){const newPath=this._location.getPathname();newPath!==this._previousPath&&(this._previousPath=newPath,this._prependPathToReferences(newPath))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(svg){this._clearSvgElement();const path=this._location.getPathname();this._previousPath=path,this._cacheChildrenWithExternalReferences(svg),this._prependPathToReferences(path),this._elementRef.nativeElement.appendChild(svg)}_clearSvgElement(){const layoutElement=this._elementRef.nativeElement;let childCount=layoutElement.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();childCount--;){const child=layoutElement.childNodes[childCount];1===child.nodeType&&"svg"!==child.nodeName.toLowerCase()||child.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const elem=this._elementRef.nativeElement,fontSetClasses=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter((className=>className.length>0));this._previousFontSetClass.forEach((className=>elem.classList.remove(className))),fontSetClasses.forEach((className=>elem.classList.add(className))),this._previousFontSetClass=fontSetClasses,this.fontIcon===this._previousFontIconClass||fontSetClasses.includes("mat-ligature-font")||(this._previousFontIconClass&&elem.classList.remove(this._previousFontIconClass),this.fontIcon&&elem.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(value){return"string"==typeof value?value.trim().split(" ")[0]:value}_prependPathToReferences(path){const elements=this._elementsWithExternalReferences;elements&&elements.forEach(((attrs,element)=>{attrs.forEach((attr=>{element.setAttribute(attr.name,`url('${path}#${attr.value}')`)}))}))}_cacheChildrenWithExternalReferences(element){const elementsWithFuncIri=element.querySelectorAll(funcIriAttributeSelector),elements=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let i=0;i{const elementWithReference=elementsWithFuncIri[i],value=elementWithReference.getAttribute(attr),match=value?value.match(funcIriPattern):null;if(match){let attributes=elements.get(elementWithReference);attributes||(attributes=[],elements.set(elementWithReference,attributes)),attributes.push({name:attr,value:match[1]})}}))}_updateSvgIcon(rawName){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),rawName){const[namespace,iconName]=this._splitIconName(rawName);namespace&&(this._svgNamespace=namespace),iconName&&(this._svgName=iconName),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(iconName,namespace).pipe((0,take.q)(1)).subscribe((svg=>this._setSvgElement(svg)),(err=>{const errorMessage=`Error retrieving icon ${namespace}:${iconName}! ${err.message}`;this._errorHandler.handleError(new Error(errorMessage))}))}}}MatIcon.ɵfac=function MatIcon_Factory(t){return new(t||MatIcon)(core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](MatIconRegistry),core["ɵɵinjectAttribute"]("aria-hidden"),core["ɵɵdirectiveInject"](MAT_ICON_LOCATION),core["ɵɵdirectiveInject"](core.ErrorHandler),core["ɵɵdirectiveInject"](MAT_ICON_DEFAULT_OPTIONS,8))},MatIcon.ɵcmp=core["ɵɵdefineComponent"]({type:MatIcon,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:8,hostBindings:function MatIcon_HostBindings(rf,ctx){2&rf&&(core["ɵɵattribute"]("data-mat-icon-type",ctx._usingFontIcon()?"font":"svg")("data-mat-icon-name",ctx._svgName||ctx.fontIcon)("data-mat-icon-namespace",ctx._svgNamespace||ctx.fontSet)("fontIcon",ctx._usingFontIcon()?ctx.fontIcon:null),core["ɵɵclassProp"]("mat-icon-inline",ctx.inline)("mat-icon-no-color","primary"!==ctx.color&&"accent"!==ctx.color&&"warn"!==ctx.color))},inputs:{color:"color",inline:"inline",svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[core["ɵɵInheritDefinitionFeature"]],ngContentSelectors:["*"],decls:1,vars:0,template:function MatIcon_Template(rf,ctx){1&rf&&(core["ɵɵprojectionDef"](),core["ɵɵprojection"](0))},styles:[".mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatIcon,[{type:core.Component,args:[{template:"",selector:"mat-icon",exportAs:"matIcon",inputs:["color"],host:{role:"img",class:"mat-icon notranslate","[attr.data-mat-icon-type]":'_usingFontIcon() ? "font" : "svg"',"[attr.data-mat-icon-name]":"_svgName || fontIcon","[attr.data-mat-icon-namespace]":"_svgNamespace || fontSet","[attr.fontIcon]":"_usingFontIcon() ? fontIcon : null","[class.mat-icon-inline]":"inline","[class.mat-icon-no-color]":'color !== "primary" && color !== "accent" && color !== "warn"'},encapsulation:core.ViewEncapsulation.None,changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[".mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"]}]}],(function(){return[{type:core.ElementRef},{type:MatIconRegistry},{type:void 0,decorators:[{type:core.Attribute,args:["aria-hidden"]}]},{type:void 0,decorators:[{type:core.Inject,args:[MAT_ICON_LOCATION]}]},{type:core.ErrorHandler},{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[MAT_ICON_DEFAULT_OPTIONS]}]}]}),{inline:[{type:core.Input}],svgIcon:[{type:core.Input}],fontSet:[{type:core.Input}],fontIcon:[{type:core.Input}]});class MatIconModule{}MatIconModule.ɵfac=function MatIconModule_Factory(t){return new(t||MatIconModule)},MatIconModule.ɵmod=core["ɵɵdefineNgModule"]({type:MatIconModule,declarations:[MatIcon],imports:[fesm2020_core.BQ],exports:[MatIcon,fesm2020_core.BQ]}),MatIconModule.ɵinj=core["ɵɵdefineInjector"]({imports:[fesm2020_core.BQ,fesm2020_core.BQ]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatIconModule,[{type:core.NgModule,args:[{imports:[fesm2020_core.BQ],exports:[MatIcon,fesm2020_core.BQ],declarations:[MatIcon]}]}],null,null);var dist=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");var label_box_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/label-box/label-box.component.scss?ngResource"),label_box_componentngResource_default=__webpack_require__.n(label_box_componentngResource);let LabelBoxComponent=class LabelBoxComponent{};LabelBoxComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-label-box",standalone:!0,imports:[common.CommonModule],template:'\n\n
      \n\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[label_box_componentngResource_default()]})],LabelBoxComponent);const label_box_component_stories={title:"LabelBoxComponent",component:LabelBoxComponent,decorators:[(0,dist.moduleMetadata)({imports:[MatIconModule]})]},Template=(content="")=>args=>({props:args,template:`\n \n ${content}\n \n `,styles:["\n hra-label-box {\n max-width: 400px;\n }\n "]}),Primary=Template("FTU Library"),WithIconAtEnd=Template('\n Percentage of Cells in FTU\n info_outline\n');Primary.parameters={...Primary.parameters,docs:{...Primary.parameters?.docs,source:{originalSource:"Template('FTU Library')",...Primary.parameters?.docs?.source}}},WithIconAtEnd.parameters={...WithIconAtEnd.parameters,docs:{...WithIconAtEnd.parameters?.docs,source:{originalSource:'Template(`\n Percentage of Cells in FTU\n info_outline\n`)',...WithIconAtEnd.parameters?.docs?.source}}}}}]); \ No newline at end of file diff --git a/storybook/components-atoms/src-lib-label-box-label-box-component-stories.7bf20754.iframe.bundle.js b/storybook/components-atoms/src-lib-label-box-label-box-component-stories.7bf20754.iframe.bundle.js new file mode 100644 index 000000000..496dd5c41 --- /dev/null +++ b/storybook/components-atoms/src-lib-label-box-label-box-component-stories.7bf20754.iframe.bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see src-lib-label-box-label-box-component-stories.7bf20754.iframe.bundle.js.LICENSE.txt */ +(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[242],{"./libs/components/atoms/src/lib/label-box/label-box.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,':host {\n display: flex;\n align-items: center;\n padding: 0.75rem 2rem;\n background: #f8f9fa;\n font-family: "Inter";\n}\n:host .filler {\n flex-grow: 1;\n}',""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/atoms/src/lib/label-box/label-box.component.stories.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Primary:()=>Primary,WithIconAtEnd:()=>WithIconAtEnd,default:()=>label_box_component_stories});var core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),fesm2020_core=__webpack_require__("./node_modules/@angular/material/fesm2020/core.mjs"),coercion=__webpack_require__("./node_modules/@angular/cdk/fesm2020/coercion.mjs"),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),of=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/of.js"),throwError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/throwError.js"),forkJoin=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js"),Subscription=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subscription.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js"),catchError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/catchError.js"),lift=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/util/lift.js");var share=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/share.js"),take=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/take.js"),http=__webpack_require__("./node_modules/@angular/common/fesm2020/http.mjs"),platform_browser=__webpack_require__("./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs");let policy;function trustedHTMLFromString(html){return function getPolicy(){if(void 0===policy&&(policy=null,"undefined"!=typeof window)){const ttWindow=window;void 0!==ttWindow.trustedTypes&&(policy=ttWindow.trustedTypes.createPolicy("angular#components",{createHTML:s=>s}))}return policy}()?.createHTML(html)||html}function getMatIconNameNotFoundError(iconName){return Error(`Unable to find icon with the name "${iconName}"`)}function getMatIconFailedToSanitizeUrlError(url){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${url}".`)}function getMatIconFailedToSanitizeLiteralError(literal){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${literal}".`)}class SvgIconConfig{constructor(url,svgText,options){this.url=url,this.svgText=svgText,this.options=options}}class MatIconRegistry{constructor(_httpClient,_sanitizer,document,_errorHandler){this._httpClient=_httpClient,this._sanitizer=_sanitizer,this._errorHandler=_errorHandler,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=document}addSvgIcon(iconName,url,options){return this.addSvgIconInNamespace("",iconName,url,options)}addSvgIconLiteral(iconName,literal,options){return this.addSvgIconLiteralInNamespace("",iconName,literal,options)}addSvgIconInNamespace(namespace,iconName,url,options){return this._addSvgIconConfig(namespace,iconName,new SvgIconConfig(url,null,options))}addSvgIconResolver(resolver){return this._resolvers.push(resolver),this}addSvgIconLiteralInNamespace(namespace,iconName,literal,options){const cleanLiteral=this._sanitizer.sanitize(core.SecurityContext.HTML,literal);if(!cleanLiteral)throw getMatIconFailedToSanitizeLiteralError(literal);const trustedLiteral=trustedHTMLFromString(cleanLiteral);return this._addSvgIconConfig(namespace,iconName,new SvgIconConfig("",trustedLiteral,options))}addSvgIconSet(url,options){return this.addSvgIconSetInNamespace("",url,options)}addSvgIconSetLiteral(literal,options){return this.addSvgIconSetLiteralInNamespace("",literal,options)}addSvgIconSetInNamespace(namespace,url,options){return this._addSvgIconSetConfig(namespace,new SvgIconConfig(url,null,options))}addSvgIconSetLiteralInNamespace(namespace,literal,options){const cleanLiteral=this._sanitizer.sanitize(core.SecurityContext.HTML,literal);if(!cleanLiteral)throw getMatIconFailedToSanitizeLiteralError(literal);const trustedLiteral=trustedHTMLFromString(cleanLiteral);return this._addSvgIconSetConfig(namespace,new SvgIconConfig("",trustedLiteral,options))}registerFontClassAlias(alias,classNames=alias){return this._fontCssClassesByAlias.set(alias,classNames),this}classNameForFontAlias(alias){return this._fontCssClassesByAlias.get(alias)||alias}setDefaultFontSetClass(...classNames){return this._defaultFontSetClass=classNames,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(safeUrl){const url=this._sanitizer.sanitize(core.SecurityContext.RESOURCE_URL,safeUrl);if(!url)throw getMatIconFailedToSanitizeUrlError(safeUrl);const cachedIcon=this._cachedIconsByUrl.get(url);return cachedIcon?(0,of.of)(cloneSvg(cachedIcon)):this._loadSvgIconFromConfig(new SvgIconConfig(safeUrl,null)).pipe((0,tap.b)((svg=>this._cachedIconsByUrl.set(url,svg))),(0,map.U)((svg=>cloneSvg(svg))))}getNamedSvgIcon(name,namespace=""){const key=iconKey(namespace,name);let config=this._svgIconConfigs.get(key);if(config)return this._getSvgFromConfig(config);if(config=this._getIconConfigFromResolvers(namespace,name),config)return this._svgIconConfigs.set(key,config),this._getSvgFromConfig(config);const iconSetConfigs=this._iconSetConfigs.get(namespace);return iconSetConfigs?this._getSvgFromIconSetConfigs(name,iconSetConfigs):(0,throwError._)(getMatIconNameNotFoundError(key))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(config){return config.svgText?(0,of.of)(cloneSvg(this._svgElementFromConfig(config))):this._loadSvgIconFromConfig(config).pipe((0,map.U)((svg=>cloneSvg(svg))))}_getSvgFromIconSetConfigs(name,iconSetConfigs){const namedIcon=this._extractIconWithNameFromAnySet(name,iconSetConfigs);if(namedIcon)return(0,of.of)(namedIcon);const iconSetFetchRequests=iconSetConfigs.filter((iconSetConfig=>!iconSetConfig.svgText)).map((iconSetConfig=>this._loadSvgIconSetFromConfig(iconSetConfig).pipe((0,catchError.K)((err=>{const errorMessage=`Loading icon set URL: ${this._sanitizer.sanitize(core.SecurityContext.RESOURCE_URL,iconSetConfig.url)} failed: ${err.message}`;return this._errorHandler.handleError(new Error(errorMessage)),(0,of.of)(null)})))));return(0,forkJoin.D)(iconSetFetchRequests).pipe((0,map.U)((()=>{const foundIcon=this._extractIconWithNameFromAnySet(name,iconSetConfigs);if(!foundIcon)throw getMatIconNameNotFoundError(name);return foundIcon})))}_extractIconWithNameFromAnySet(iconName,iconSetConfigs){for(let i=iconSetConfigs.length-1;i>=0;i--){const config=iconSetConfigs[i];if(config.svgText&&config.svgText.toString().indexOf(iconName)>-1){const svg=this._svgElementFromConfig(config),foundIcon=this._extractSvgIconFromSet(svg,iconName,config.options);if(foundIcon)return foundIcon}}return null}_loadSvgIconFromConfig(config){return this._fetchIcon(config).pipe((0,tap.b)((svgText=>config.svgText=svgText)),(0,map.U)((()=>this._svgElementFromConfig(config))))}_loadSvgIconSetFromConfig(config){return config.svgText?(0,of.of)(null):this._fetchIcon(config).pipe((0,tap.b)((svgText=>config.svgText=svgText)))}_extractSvgIconFromSet(iconSet,iconName,options){const iconSource=iconSet.querySelector(`[id="${iconName}"]`);if(!iconSource)return null;const iconElement=iconSource.cloneNode(!0);if(iconElement.removeAttribute("id"),"svg"===iconElement.nodeName.toLowerCase())return this._setSvgAttributes(iconElement,options);if("symbol"===iconElement.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(iconElement),options);const svg=this._svgElementFromString(trustedHTMLFromString(""));return svg.appendChild(iconElement),this._setSvgAttributes(svg,options)}_svgElementFromString(str){const div=this._document.createElement("DIV");div.innerHTML=str;const svg=div.querySelector("svg");if(!svg)throw Error(" tag not found");return svg}_toSvgElement(element){const svg=this._svgElementFromString(trustedHTMLFromString("")),attributes=element.attributes;for(let i=0;itrustedHTMLFromString(svg))),function finalize(callback){return(0,lift.e)((function(source,subscriber){try{source.subscribe(subscriber)}finally{subscriber.add(callback)}}))}((()=>this._inProgressUrlFetches.delete(url))),(0,share.B)());return this._inProgressUrlFetches.set(url,req),req}_addSvgIconConfig(namespace,iconName,config){return this._svgIconConfigs.set(iconKey(namespace,iconName),config),this}_addSvgIconSetConfig(namespace,config){const configNamespace=this._iconSetConfigs.get(namespace);return configNamespace?configNamespace.push(config):this._iconSetConfigs.set(namespace,[config]),this}_svgElementFromConfig(config){if(!config.svgElement){const svg=this._svgElementFromString(config.svgText);this._setSvgAttributes(svg,config.options),config.svgElement=svg}return config.svgElement}_getIconConfigFromResolvers(namespace,name){for(let i=0;i_location?_location.pathname+_location.search:""}}});const funcIriAttributes=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],funcIriAttributeSelector=funcIriAttributes.map((attr=>`[${attr}]`)).join(", "),funcIriPattern=/^url\(['"]?#(.*?)['"]?\)$/;class MatIcon extends _MatIconBase{get inline(){return this._inline}set inline(inline){this._inline=(0,coercion.Ig)(inline)}get svgIcon(){return this._svgIcon}set svgIcon(value){value!==this._svgIcon&&(value?this._updateSvgIcon(value):this._svgIcon&&this._clearSvgElement(),this._svgIcon=value)}get fontSet(){return this._fontSet}set fontSet(value){const newValue=this._cleanupFontValue(value);newValue!==this._fontSet&&(this._fontSet=newValue,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(value){const newValue=this._cleanupFontValue(value);newValue!==this._fontIcon&&(this._fontIcon=newValue,this._updateFontIconClasses())}constructor(elementRef,_iconRegistry,ariaHidden,_location,_errorHandler,defaults){super(elementRef),this._iconRegistry=_iconRegistry,this._location=_location,this._errorHandler=_errorHandler,this._inline=!1,this._previousFontSetClass=[],this._currentIconFetch=Subscription.w0.EMPTY,defaults&&(defaults.color&&(this.color=this.defaultColor=defaults.color),defaults.fontSet&&(this.fontSet=defaults.fontSet)),ariaHidden||elementRef.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(iconName){if(!iconName)return["",""];const parts=iconName.split(":");switch(parts.length){case 1:return["",parts[0]];case 2:return parts;default:throw Error(`Invalid icon name: "${iconName}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const cachedElements=this._elementsWithExternalReferences;if(cachedElements&&cachedElements.size){const newPath=this._location.getPathname();newPath!==this._previousPath&&(this._previousPath=newPath,this._prependPathToReferences(newPath))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(svg){this._clearSvgElement();const path=this._location.getPathname();this._previousPath=path,this._cacheChildrenWithExternalReferences(svg),this._prependPathToReferences(path),this._elementRef.nativeElement.appendChild(svg)}_clearSvgElement(){const layoutElement=this._elementRef.nativeElement;let childCount=layoutElement.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();childCount--;){const child=layoutElement.childNodes[childCount];1===child.nodeType&&"svg"!==child.nodeName.toLowerCase()||child.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const elem=this._elementRef.nativeElement,fontSetClasses=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter((className=>className.length>0));this._previousFontSetClass.forEach((className=>elem.classList.remove(className))),fontSetClasses.forEach((className=>elem.classList.add(className))),this._previousFontSetClass=fontSetClasses,this.fontIcon===this._previousFontIconClass||fontSetClasses.includes("mat-ligature-font")||(this._previousFontIconClass&&elem.classList.remove(this._previousFontIconClass),this.fontIcon&&elem.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(value){return"string"==typeof value?value.trim().split(" ")[0]:value}_prependPathToReferences(path){const elements=this._elementsWithExternalReferences;elements&&elements.forEach(((attrs,element)=>{attrs.forEach((attr=>{element.setAttribute(attr.name,`url('${path}#${attr.value}')`)}))}))}_cacheChildrenWithExternalReferences(element){const elementsWithFuncIri=element.querySelectorAll(funcIriAttributeSelector),elements=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let i=0;i{const elementWithReference=elementsWithFuncIri[i],value=elementWithReference.getAttribute(attr),match=value?value.match(funcIriPattern):null;if(match){let attributes=elements.get(elementWithReference);attributes||(attributes=[],elements.set(elementWithReference,attributes)),attributes.push({name:attr,value:match[1]})}}))}_updateSvgIcon(rawName){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),rawName){const[namespace,iconName]=this._splitIconName(rawName);namespace&&(this._svgNamespace=namespace),iconName&&(this._svgName=iconName),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(iconName,namespace).pipe((0,take.q)(1)).subscribe((svg=>this._setSvgElement(svg)),(err=>{const errorMessage=`Error retrieving icon ${namespace}:${iconName}! ${err.message}`;this._errorHandler.handleError(new Error(errorMessage))}))}}}MatIcon.ɵfac=function MatIcon_Factory(t){return new(t||MatIcon)(core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](MatIconRegistry),core["ɵɵinjectAttribute"]("aria-hidden"),core["ɵɵdirectiveInject"](MAT_ICON_LOCATION),core["ɵɵdirectiveInject"](core.ErrorHandler),core["ɵɵdirectiveInject"](MAT_ICON_DEFAULT_OPTIONS,8))},MatIcon.ɵcmp=core["ɵɵdefineComponent"]({type:MatIcon,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:8,hostBindings:function MatIcon_HostBindings(rf,ctx){2&rf&&(core["ɵɵattribute"]("data-mat-icon-type",ctx._usingFontIcon()?"font":"svg")("data-mat-icon-name",ctx._svgName||ctx.fontIcon)("data-mat-icon-namespace",ctx._svgNamespace||ctx.fontSet)("fontIcon",ctx._usingFontIcon()?ctx.fontIcon:null),core["ɵɵclassProp"]("mat-icon-inline",ctx.inline)("mat-icon-no-color","primary"!==ctx.color&&"accent"!==ctx.color&&"warn"!==ctx.color))},inputs:{color:"color",inline:"inline",svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[core["ɵɵInheritDefinitionFeature"]],ngContentSelectors:["*"],decls:1,vars:0,template:function MatIcon_Template(rf,ctx){1&rf&&(core["ɵɵprojectionDef"](),core["ɵɵprojection"](0))},styles:[".mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatIcon,[{type:core.Component,args:[{template:"",selector:"mat-icon",exportAs:"matIcon",inputs:["color"],host:{role:"img",class:"mat-icon notranslate","[attr.data-mat-icon-type]":'_usingFontIcon() ? "font" : "svg"',"[attr.data-mat-icon-name]":"_svgName || fontIcon","[attr.data-mat-icon-namespace]":"_svgNamespace || fontSet","[attr.fontIcon]":"_usingFontIcon() ? fontIcon : null","[class.mat-icon-inline]":"inline","[class.mat-icon-no-color]":'color !== "primary" && color !== "accent" && color !== "warn"'},encapsulation:core.ViewEncapsulation.None,changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[".mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"]}]}],(function(){return[{type:core.ElementRef},{type:MatIconRegistry},{type:void 0,decorators:[{type:core.Attribute,args:["aria-hidden"]}]},{type:void 0,decorators:[{type:core.Inject,args:[MAT_ICON_LOCATION]}]},{type:core.ErrorHandler},{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[MAT_ICON_DEFAULT_OPTIONS]}]}]}),{inline:[{type:core.Input}],svgIcon:[{type:core.Input}],fontSet:[{type:core.Input}],fontIcon:[{type:core.Input}]});class MatIconModule{}MatIconModule.ɵfac=function MatIconModule_Factory(t){return new(t||MatIconModule)},MatIconModule.ɵmod=core["ɵɵdefineNgModule"]({type:MatIconModule,declarations:[MatIcon],imports:[fesm2020_core.BQ],exports:[MatIcon,fesm2020_core.BQ]}),MatIconModule.ɵinj=core["ɵɵdefineInjector"]({imports:[fesm2020_core.BQ,fesm2020_core.BQ]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatIconModule,[{type:core.NgModule,args:[{imports:[fesm2020_core.BQ],exports:[MatIcon,fesm2020_core.BQ],declarations:[MatIcon]}]}],null,null);var dist=__webpack_require__("./node_modules/@storybook/angular/dist/index.mjs"),tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");var label_box_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/label-box/label-box.component.scss?ngResource"),label_box_componentngResource_default=__webpack_require__.n(label_box_componentngResource);let LabelBoxComponent=class LabelBoxComponent{};LabelBoxComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-label-box",standalone:!0,imports:[common.CommonModule],template:'\n\n
      \n\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[label_box_componentngResource_default()]})],LabelBoxComponent);const label_box_component_stories={title:"LabelBoxComponent",component:LabelBoxComponent,decorators:[(0,dist.moduleMetadata)({imports:[MatIconModule]})]},Template=(content="")=>args=>({props:args,template:`\n \n ${content}\n \n `,styles:["\n hra-label-box {\n max-width: 400px;\n }\n "]}),Primary=Template("FTU Library"),WithIconAtEnd=Template('\n Percentage of Cells in FTU\n info_outline\n');Primary.parameters={...Primary.parameters,docs:{...Primary.parameters?.docs,source:{originalSource:"Template('FTU Library')",...Primary.parameters?.docs?.source}}},WithIconAtEnd.parameters={...WithIconAtEnd.parameters,docs:{...WithIconAtEnd.parameters?.docs,source:{originalSource:'Template(`\n Percentage of Cells in FTU\n info_outline\n`)',...WithIconAtEnd.parameters?.docs?.source}}}}}]); \ No newline at end of file diff --git a/storybook/components-atoms/src-lib-label-box-label-box-component-stories.4f7b6d64.iframe.bundle.js.LICENSE.txt b/storybook/components-atoms/src-lib-label-box-label-box-component-stories.7bf20754.iframe.bundle.js.LICENSE.txt similarity index 100% rename from storybook/components-atoms/src-lib-label-box-label-box-component-stories.4f7b6d64.iframe.bundle.js.LICENSE.txt rename to storybook/components-atoms/src-lib-label-box-label-box-component-stories.7bf20754.iframe.bundle.js.LICENSE.txt diff --git a/storybook/components-behavioral/724.bea39244.iframe.bundle.js b/storybook/components-behavioral/724.a6c8add2.iframe.bundle.js similarity index 99% rename from storybook/components-behavioral/724.bea39244.iframe.bundle.js rename to storybook/components-behavioral/724.a6c8add2.iframe.bundle.js index 49c583fbd..1df3a6674 100644 --- a/storybook/components-behavioral/724.bea39244.iframe.bundle.js +++ b/storybook/components-behavioral/724.a6c8add2.iframe.bundle.js @@ -1 +1 @@ -(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[724],{"./libs/cdk/injectors/src/lib/dispatch/dispatch.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{WI:()=>dispatch});var _angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js");function identity(value){return value}function createActionFactory(type,boundArgs){return(...args)=>new type(...boundArgs,...args)}function dispatchImpl(actionFactory,resultHandler){const store=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.yh);return(...args)=>{const action=actionFactory(...args),obs$=store.dispatch(action);return resultHandler(action,obs$)}}function dispatch(type,...boundArgs){return dispatchImpl(createActionFactory(type,boundArgs),identity)}},"./libs/cdk/state/src/link-registry/link-registry.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{AU:()=>LoadFromYaml,Fg:()=>Navigate,Gg:()=>AddMany,mm:()=>Add,tI:()=>AddFromYaml});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("LinkRegistry");class Add extends(Action("Add")){constructor(id,entry){super(),this.id=id,this.entry=entry}}class AddMany extends(Action("Add Many")){constructor(entries){super(),this.entries=entries}}class AddFromYaml extends(Action("Add from Yaml")){constructor(yaml){super(),this.yaml=yaml}}class LoadFromYaml extends(Action("Load from Yaml")){constructor(url){super(),this.url=url}}class Navigate extends(Action("Navigate")){constructor(id,extras={}){super(),this.id=id,this.extras=extras}}},"./libs/cdk/state/src/link-registry/link-registry.model.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{HW:()=>createLinkId,Ry:()=>EMPTY_LINK,Un:()=>LinkType,l$:()=>LINK_REGISTRY_SCHEMA});var LinkType,zod__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/zod/lib/index.mjs");!function(LinkType){LinkType.Internal="internal",LinkType.External="external"}(LinkType||(LinkType={}));const EXTERNAL_LINK_SCHEMA=zod__WEBPACK_IMPORTED_MODULE_0__.z.object({type:zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(LinkType.External),url:zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),rel:zod__WEBPACK_IMPORTED_MODULE_0__.z.string().default("noopener"),target:zod__WEBPACK_IMPORTED_MODULE_0__.z.string()}).partial({rel:!0,target:!0}),INTERNAL_LINK_SCHEMA=zod__WEBPACK_IMPORTED_MODULE_0__.z.object({type:zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(LinkType.Internal),commands:zod__WEBPACK_IMPORTED_MODULE_0__.z.any().array(),extras:zod__WEBPACK_IMPORTED_MODULE_0__.z.object({queryParams:zod__WEBPACK_IMPORTED_MODULE_0__.z.record(zod__WEBPACK_IMPORTED_MODULE_0__.z.any()).nullable(),fragment:zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),queryParamsHandling:zod__WEBPACK_IMPORTED_MODULE_0__.z.enum(["merge","preserve",""]).nullable(),preserveFragment:zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean(),onSameUrlNavigation:zod__WEBPACK_IMPORTED_MODULE_0__.z.literal("reload"),skipLocationChange:zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean(),replaceUrl:zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean()}).partial()}).partial({extras:!0}),LINK_REGISTRY_SCHEMA=zod__WEBPACK_IMPORTED_MODULE_0__.z.record(zod__WEBPACK_IMPORTED_MODULE_0__.z.string().transform((id=>`LinkId:'${id}'`)).brand("LinkId"),zod__WEBPACK_IMPORTED_MODULE_0__.z.discriminatedUnion("type",[EXTERNAL_LINK_SCHEMA,INTERNAL_LINK_SCHEMA]));function createLinkId(id){return LINK_REGISTRY_SCHEMA.keySchema.parse(id)}const EMPTY_LINK=createLinkId("@@__EMPTY__")},"./libs/components/atoms/src/lib/label-box/label-box.component.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{d:()=>LabelBoxComponent});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");var label_box_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/label-box/label-box.component.scss?ngResource"),label_box_componentngResource_default=__webpack_require__.n(label_box_componentngResource),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let LabelBoxComponent=class LabelBoxComponent{};LabelBoxComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-label-box",standalone:!0,imports:[common.CommonModule],template:'\n\n
      \n\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[label_box_componentngResource_default()]})],LabelBoxComponent)},"./libs/services/src/lib/ftu-data/ftu-data.service.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{q:()=>FtuDataService});var tslib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs");let FtuDataService=class FtuDataService{};FtuDataService=(0,tslib__WEBPACK_IMPORTED_MODULE_0__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable)()],FtuDataService)},"./libs/state/src/lib/active-ftu/active-ftu.selectors.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{K:()=>ActiveFtuSelectors});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),cell_summary_actions=__webpack_require__("./libs/state/src/lib/cell-summary/cell-summary.actions.ts"),cell_summary_state=__webpack_require__("./libs/state/src/lib/cell-summary/cell-summary.state.ts"),illustrator_actions=__webpack_require__("./libs/state/src/lib/illustrator/illustrator.actions.ts"),illustrator_state=__webpack_require__("./libs/state/src/lib/illustrator/illustrator.state.ts"),source_refs_actions=__webpack_require__("./libs/state/src/lib/source-refs/source-refs.actions.ts"),source_refs_state=__webpack_require__("./libs/state/src/lib/source-refs/source-refs.state.ts");const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("ActiveFtu");class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class SetIllustrationUrl extends(Action("Set Illustration Url")){constructor(iri){super(),this.iri=iri}}class Clear extends(Action("Clear")){}class Reset extends(Action("Reset")){}var download_action=__webpack_require__("./libs/state/src/lib/download/download.action.ts"),download_state=__webpack_require__("./libs/state/src/lib/download/download.state.ts"),link_registry_actions=__webpack_require__("./libs/cdk/state/src/link-registry/link-registry.actions.ts"),link_registry_model=__webpack_require__("./libs/cdk/state/src/link-registry/link-registry.model.ts"),link_ids=__webpack_require__("./libs/state/src/lib/link-ids.ts");let ActiveFtuState=class ActiveFtuState{load({getState,patchState,dispatch},{iri}){if(getState().iri!==iri)return dispatch([new cell_summary_actions.q5(iri),new illustrator_actions.q5(iri),new download_action.q5(iri),new source_refs_actions.q(iri),new SetIllustrationUrl(iri)]).pipe((0,tap.b)((()=>patchState({iri}))))}setIllustrationUrl({dispatch},{iri}){const[name]=iri.split("/").slice(-1),url=`https://hubmapconsortium.github.io/ccf-releases/v1.4/docs/2d-ftu/2d-ftu-${name}.html`;return dispatch(new link_registry_actions.mm(link_ids.Illustration,{type:link_registry_model.Un.External,url}))}clear({patchState}){patchState({iri:void 0})}reset({dispatch}){return dispatch([new cell_summary_actions.AG,new illustrator_actions.AG,new source_refs_actions.A,new download_action.R2])}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(Load,{cancelUncompleted:!0}),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,Load]),(0,tslib_es6.w6)("design:returntype",Object)],ActiveFtuState.prototype,"load",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(SetIllustrationUrl),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,SetIllustrationUrl]),(0,tslib_es6.w6)("design:returntype",Object)],ActiveFtuState.prototype,"setIllustrationUrl",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)([Clear,Reset]),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",void 0)],ActiveFtuState.prototype,"clear",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(Reset),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",Observable.y)],ActiveFtuState.prototype,"reset",null),ActiveFtuState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"activeFtu",defaults:{},children:[cell_summary_state.x,download_state.r,illustrator_state.K,source_refs_state.b]}),(0,core.Injectable)()],ActiveFtuState);class ActiveFtuSelectors{static isActive({iri}){return void 0!==iri}static iri({iri}){return iri}}(0,tslib_es6.gn)([(0,ngxs_store.Qf)([ActiveFtuState]),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",Boolean)],ActiveFtuSelectors,"isActive",null),(0,tslib_es6.gn)([(0,ngxs_store.Qf)([ActiveFtuState]),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",Object)],ActiveFtuSelectors,"iri",null)},"./libs/state/src/lib/cell-summary/cell-summary.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{AG:()=>Reset,X8:()=>ComputeAggregates,q5:()=>Load});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("CellSummary");class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class ComputeAggregates extends(Action("Compute Aggregates")){}class Reset extends(Action("Reset")){}},"./libs/state/src/lib/cell-summary/cell-summary.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{x:()=>CellSummaryState});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),ftu_data_service=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),switchMap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),cell_summary_actions=__webpack_require__("./libs/state/src/lib/cell-summary/cell-summary.actions.ts");function getRow(rowById,id){return rowById.has(id)||rowById.set(id,["",0]),rowById.get(id)}function expandRow(row,length){if(row.lengthitem.id===id))?.label??``}function getTotalCount(row){return row.reduce(((acc,entry)=>acc+("object"==typeof entry?entry.data.count:0)),0)}function computeAggregate(summary){const{label,cells,biomarkers,summaries}=summary,columnIndexByBiomarker=new Map,rowsByCell=new Map;for(const summary of summaries){const{biomarker,cell}=summary,columnIndex=(id=biomarker,(indexById=columnIndexByBiomarker).has(id)||indexById.set(id,indexById.size+2),indexById.get(id)),row=getRow(rowsByCell,cell);expandRow(row,columnIndex),row[columnIndex]={color:summary.meanExpression,size:summary.percentage,data:summary}}var indexById,id;for(const[cell,row]of rowsByCell.entries())row[0]=getLabel(cells,cell,"cell"),row[1]=getTotalCount(row);const columns=Array.from(columnIndexByBiomarker.keys()).map((id=>getLabel(biomarkers,id,"biomarker")));return{label,columns,rows:Array.from(rowsByCell.values())}}let CellSummaryState=class CellSummaryState{constructor(){this.dataService=(0,core.inject)(ftu_data_service.q)}load({patchState,dispatch},{iri}){return this.dataService.getCellSummaries(iri).pipe((0,tap.b)((summaries=>patchState({summaries,aggregates:[]}))),(0,switchMap.w)((()=>dispatch(new cell_summary_actions.X8))))}computeAggregates({getState,patchState}){const{summaries}=getState();patchState({aggregates:summaries.map(computeAggregate)})}reset({patchState}){patchState({summaries:[],aggregates:[]})}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(cell_summary_actions.q5,{cancelUncompleted:!0}),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,cell_summary_actions.q5]),(0,tslib_es6.w6)("design:returntype",Observable.y)],CellSummaryState.prototype,"load",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(cell_summary_actions.X8),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",void 0)],CellSummaryState.prototype,"computeAggregates",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(cell_summary_actions.AG),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",void 0)],CellSummaryState.prototype,"reset",null),CellSummaryState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"cellSummary",defaults:{summaries:[],aggregates:[]}}),(0,core.Injectable)()],CellSummaryState)},"./libs/state/src/lib/download/download.action.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{R2:()=>ClearEntries,UW:()=>Download,h6:()=>RegisterFormat,i2:()=>AddEntry,q5:()=>Load});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("Download");class RegisterFormat extends(Action("Register Format")){constructor(format){super(),this.format=format}}class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class AddEntry extends(Action("Add")){constructor(id,entry){super(),this.id=id,this.entry=entry}}class ClearEntries extends(Action("Clear")){}class Download extends(Action("Download")){constructor(format){super(),this.format=format}}},"./libs/state/src/lib/download/download.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{r:()=>DownloadState});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),http=__webpack_require__("./node_modules/@angular/common/fesm2020/http.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),immer_esm=__webpack_require__("./node_modules/immer/dist/immer.esm.mjs"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),ftu_data_service=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),lib=__webpack_require__("./node_modules/zod/lib/index.mjs");const DOWNLOAD_FORMAT_ID=lib.z.string().transform((id=>`DownloadFormatId:'${id}'`)).brand("DownloadFormatId"),DOWNLOAD_ENTRY=lib.z.discriminatedUnion("type",[lib.z.object({type:lib.z.literal("url"),url:lib.z.string()}),lib.z.object({type:lib.z.literal("data"),data:lib.z.string()})]),DOWNLOAD_FORMAT=lib.z.object({id:DOWNLOAD_FORMAT_ID,label:lib.z.string(),extension:lib.z.string()}).partial({extension:!0});lib.z.object({formats:lib.z.record(DOWNLOAD_FORMAT_ID,DOWNLOAD_FORMAT),entries:lib.z.record(DOWNLOAD_FORMAT_ID,DOWNLOAD_ENTRY)});function createDownloadFormatId(id){return DOWNLOAD_FORMAT_ID.parse(id)}const Svg=createDownloadFormatId("svg"),Png=createDownloadFormatId("png"),SVG_FORMAT={id:Svg,label:"Download SVG",extension:".svg"},PNG_FORMAT={id:Png,label:"Download PNG",extension:".png"};var download_action=__webpack_require__("./libs/state/src/lib/download/download.action.ts");let DownloadState=class DownloadState{constructor(){this.http=(0,core.inject)(http.eN),this.dataService=(0,core.inject)(ftu_data_service.q)}ngxsOnInit(ctx){ctx.dispatch([new download_action.h6(SVG_FORMAT),new download_action.h6(PNG_FORMAT)])}registerFormat(ctx,{format}){ctx.setState((0,immer_esm.ZP)((draft=>{draft.formats[format.id]=format})))}load(ctx,{iri}){return this.dataService.getDataFileReferences(iri).pipe((0,tap.b)((items=>ctx.setState((0,immer_esm.ZP)((draft=>{draft.entries={};for(const{format,url}of items)draft.entries[createDownloadFormatId(format)]={type:"url",url}}))))))}addEntry(ctx,{id,entry}){ctx.setState((0,immer_esm.ZP)((draft=>{draft.entries[id]=entry})))}clearEntries(ctx){ctx.setState((0,immer_esm.ZP)((draft=>{draft.entries={}})))}download(ctx,{format}){const{entries}=ctx.getState(),entry=entries[format];switch(entry?.type){case"url":{const filename=this.guessFilename(ctx,format,entry.url);return this.downloadRemoteData(entry.url).pipe((0,tap.b)((data=>this.downloadData(data,filename))))}case"data":{const filename=this.guessFilename(ctx,format,"");this.downloadData(new Blob([entry.data]),filename);break}default:throw new Error("Cannot download file without data")}}guessFilename(ctx,id,url){const{formats}=ctx.getState(),{extension=""}=formats[id]??{},segments=new URL(url,"https://base.com").pathname.split("/").filter((seg=>""!==seg)),name=segments.length>0?segments[segments.length-1]:"download";return name.includes(".")?name:`${name}${extension}`}downloadData(blob,filename){const url=window.URL.createObjectURL(blob),anchor=document.createElement("a");document.body.appendChild(anchor),anchor.download=filename,anchor.href=url,anchor.click(),anchor.remove(),window.URL.revokeObjectURL(url)}downloadRemoteData(url){return this.http.get(url,{responseType:"blob"})}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.h6),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,download_action.h6]),(0,tslib_es6.w6)("design:returntype",void 0)],DownloadState.prototype,"registerFormat",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.q5),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,download_action.q5]),(0,tslib_es6.w6)("design:returntype",Observable.y)],DownloadState.prototype,"load",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.i2),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,download_action.i2]),(0,tslib_es6.w6)("design:returntype",void 0)],DownloadState.prototype,"addEntry",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.R2),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",void 0)],DownloadState.prototype,"clearEntries",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.UW),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,download_action.UW]),(0,tslib_es6.w6)("design:returntype",Object)],DownloadState.prototype,"download",null),DownloadState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"download",defaults:{formats:{},entries:{}}}),(0,core.Injectable)()],DownloadState)},"./libs/state/src/lib/illustrator/illustrator.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{A1:()=>SetHover,AG:()=>Reset,Yp:()=>ClearSelection,im:()=>SetClicked,q5:()=>Load});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("Illustrator");class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class SetHover extends(Action("Set Selection on Hover")){constructor(selectedOnHover){super(),this.selectedOnHover=selectedOnHover}}class SetClicked extends(Action("Set Selection on Clicked")){constructor(selectedOnClick){super(),this.selectedOnClick=selectedOnClick}}class ClearSelection extends(Action("Clear Selection")){}class Reset extends(Action("Reset")){}},"./libs/state/src/lib/illustrator/illustrator.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{K:()=>IllustratorState});var tslib__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),rxjs__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js"),rxjs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),rxjs__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./libs/state/src/lib/illustrator/illustrator.actions.ts");let IllustratorState=class IllustratorState{constructor(){this.dataService=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__.q)}load({patchState},{iri}){const url$=this.dataService.getIllustrationUrl(iri),mapping$=this.dataService.getIllustrationMapping(iri);return(0,rxjs__WEBPACK_IMPORTED_MODULE_3__.D)({url:url$,mapping:mapping$}).pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_4__.b)((result=>patchState({...result,selectedOnHover:void 0,selectedOnClick:void 0}))))}SetHover({patchState},{selectedOnHover}){patchState({selectedOnHover})}SetClicked({patchState},{selectedOnClick}){patchState({selectedOnClick})}clearSelection({patchState}){patchState({selectedOnHover:void 0,selectedOnClick:void 0})}reset({setState}){setState({mapping:[]})}};(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.q5,{cancelUncompleted:!0}),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object,_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.q5]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",rxjs__WEBPACK_IMPORTED_MODULE_7__.y)],IllustratorState.prototype,"load",null),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.A1),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object,_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.A1]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",void 0)],IllustratorState.prototype,"SetHover",null),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.im),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object,_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.im]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",void 0)],IllustratorState.prototype,"SetClicked",null),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.Yp),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",void 0)],IllustratorState.prototype,"clearSelection",null),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.AG),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",void 0)],IllustratorState.prototype,"reset",null),IllustratorState=(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.ZM)({name:"illustrator",defaults:{mapping:[]}}),(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable)()],IllustratorState)},"./libs/state/src/lib/link-ids.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{About:()=>About,Embed:()=>Embed,ExploreFTU:()=>ExploreFTU,Illustration:()=>Illustration,LandingPage:()=>LandingPage,LandingPageReadMore:()=>LandingPageReadMore,Portal:()=>Portal,ProductTitle:()=>ProductTitle});var _hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./libs/cdk/state/src/link-registry/link-registry.model.ts");const LandingPage=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("LandingPage"),ProductTitle=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("ProductTitle"),About=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("About"),Portal=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("Portal"),Illustration=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("Illustration"),Embed=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("Embed"),ExploreFTU=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("ExploreFTU"),LandingPageReadMore=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("LandingPageReadMore")},"./libs/state/src/lib/source-refs/source-refs.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{A:()=>Reset,q:()=>Load});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("SourceRefs");class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class Reset extends(Action("Reset")){}},"./libs/state/src/lib/source-refs/source-refs.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{b:()=>SourceRefsState});var tslib__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),rxjs__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),rxjs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),_source_refs_actions__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./libs/state/src/lib/source-refs/source-refs.actions.ts");let SourceRefsState=class SourceRefsState{constructor(){this.dataService=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__.q)}load({setState},{iri}){return this.dataService.getSourceReferences(iri).pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_3__.b)(setState))}reset({setState}){setState([])}};(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_source_refs_actions__WEBPACK_IMPORTED_MODULE_5__.q),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:paramtypes",[Object,_source_refs_actions__WEBPACK_IMPORTED_MODULE_5__.q]),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:returntype",rxjs__WEBPACK_IMPORTED_MODULE_6__.y)],SourceRefsState.prototype,"load",null),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_source_refs_actions__WEBPACK_IMPORTED_MODULE_5__.A),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:returntype",void 0)],SourceRefsState.prototype,"reset",null),SourceRefsState=(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.ZM)({name:"sourceReferences",defaults:[]}),(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable)()],SourceRefsState)},"./libs/state/src/lib/tissue-library/tissue-library.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{q:()=>Load});var _hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./libs/cdk/state/src/actions/actions.ts");class Load extends((0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.a)("[TissueLibrary] Load Tissue Data")){}},"./libs/state/src/lib/tissue-library/tissue-library.selectors.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{N:()=>TissueLibrarySelectors});var tslib__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),_tissue_library_state__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./libs/state/src/lib/tissue-library/tissue-library.state.ts");class TissueLibrarySelectors{static tissues(state){return state.nodes}}(0,tslib__WEBPACK_IMPORTED_MODULE_1__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.Qf)([_tissue_library_state__WEBPACK_IMPORTED_MODULE_2__.o]),(0,tslib__WEBPACK_IMPORTED_MODULE_1__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_1__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_1__.w6)("design:returntype",Object)],TissueLibrarySelectors,"tissues",null)},"./libs/state/src/lib/tissue-library/tissue-library.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{o:()=>TissueLibraryState});var tslib__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),rxjs__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),rxjs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),_tissue_library_actions__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./libs/state/src/lib/tissue-library/tissue-library.actions.ts");let TissueLibraryState=class TissueLibraryState{constructor(){this.dataService=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__.q)}setActive(ctx){return this.dataService.getTissueLibrary().pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_3__.b)((data=>ctx.setState(data))))}};(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_tissue_library_actions__WEBPACK_IMPORTED_MODULE_5__.q),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:returntype",rxjs__WEBPACK_IMPORTED_MODULE_6__.y)],TissueLibraryState.prototype,"setActive",null),TissueLibraryState=(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.ZM)({name:"tissueLibrary"}),(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable)()],TissueLibraryState)},"./libs/components/atoms/src/lib/label-box/label-box.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: flex;\n align-items: center;\n padding: 0.75rem 2rem;\n background: #f8f9fa;\n}\n:host .filler {\n flex-grow: 1;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()}}]); \ No newline at end of file +(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[724],{"./libs/cdk/injectors/src/lib/dispatch/dispatch.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{WI:()=>dispatch});var _angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js");function identity(value){return value}function createActionFactory(type,boundArgs){return(...args)=>new type(...boundArgs,...args)}function dispatchImpl(actionFactory,resultHandler){const store=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.yh);return(...args)=>{const action=actionFactory(...args),obs$=store.dispatch(action);return resultHandler(action,obs$)}}function dispatch(type,...boundArgs){return dispatchImpl(createActionFactory(type,boundArgs),identity)}},"./libs/cdk/state/src/link-registry/link-registry.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{AU:()=>LoadFromYaml,Fg:()=>Navigate,Gg:()=>AddMany,mm:()=>Add,tI:()=>AddFromYaml});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("LinkRegistry");class Add extends(Action("Add")){constructor(id,entry){super(),this.id=id,this.entry=entry}}class AddMany extends(Action("Add Many")){constructor(entries){super(),this.entries=entries}}class AddFromYaml extends(Action("Add from Yaml")){constructor(yaml){super(),this.yaml=yaml}}class LoadFromYaml extends(Action("Load from Yaml")){constructor(url){super(),this.url=url}}class Navigate extends(Action("Navigate")){constructor(id,extras={}){super(),this.id=id,this.extras=extras}}},"./libs/cdk/state/src/link-registry/link-registry.model.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{HW:()=>createLinkId,Ry:()=>EMPTY_LINK,Un:()=>LinkType,l$:()=>LINK_REGISTRY_SCHEMA});var LinkType,zod__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/zod/lib/index.mjs");!function(LinkType){LinkType.Internal="internal",LinkType.External="external"}(LinkType||(LinkType={}));const EXTERNAL_LINK_SCHEMA=zod__WEBPACK_IMPORTED_MODULE_0__.z.object({type:zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(LinkType.External),url:zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),rel:zod__WEBPACK_IMPORTED_MODULE_0__.z.string().default("noopener"),target:zod__WEBPACK_IMPORTED_MODULE_0__.z.string()}).partial({rel:!0,target:!0}),INTERNAL_LINK_SCHEMA=zod__WEBPACK_IMPORTED_MODULE_0__.z.object({type:zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(LinkType.Internal),commands:zod__WEBPACK_IMPORTED_MODULE_0__.z.any().array(),extras:zod__WEBPACK_IMPORTED_MODULE_0__.z.object({queryParams:zod__WEBPACK_IMPORTED_MODULE_0__.z.record(zod__WEBPACK_IMPORTED_MODULE_0__.z.any()).nullable(),fragment:zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),queryParamsHandling:zod__WEBPACK_IMPORTED_MODULE_0__.z.enum(["merge","preserve",""]).nullable(),preserveFragment:zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean(),onSameUrlNavigation:zod__WEBPACK_IMPORTED_MODULE_0__.z.literal("reload"),skipLocationChange:zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean(),replaceUrl:zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean()}).partial()}).partial({extras:!0}),LINK_REGISTRY_SCHEMA=zod__WEBPACK_IMPORTED_MODULE_0__.z.record(zod__WEBPACK_IMPORTED_MODULE_0__.z.string().transform((id=>`LinkId:'${id}'`)).brand("LinkId"),zod__WEBPACK_IMPORTED_MODULE_0__.z.discriminatedUnion("type",[EXTERNAL_LINK_SCHEMA,INTERNAL_LINK_SCHEMA]));function createLinkId(id){return LINK_REGISTRY_SCHEMA.keySchema.parse(id)}const EMPTY_LINK=createLinkId("@@__EMPTY__")},"./libs/components/atoms/src/lib/label-box/label-box.component.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{d:()=>LabelBoxComponent});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");var label_box_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/label-box/label-box.component.scss?ngResource"),label_box_componentngResource_default=__webpack_require__.n(label_box_componentngResource),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs");let LabelBoxComponent=class LabelBoxComponent{};LabelBoxComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-label-box",standalone:!0,imports:[common.CommonModule],template:'\n\n
      \n\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[label_box_componentngResource_default()]})],LabelBoxComponent)},"./libs/services/src/lib/ftu-data/ftu-data.service.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{q:()=>FtuDataService});var tslib__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs");let FtuDataService=class FtuDataService{};FtuDataService=(0,tslib__WEBPACK_IMPORTED_MODULE_0__.gn)([(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable)()],FtuDataService)},"./libs/state/src/lib/active-ftu/active-ftu.selectors.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{K:()=>ActiveFtuSelectors});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),cell_summary_actions=__webpack_require__("./libs/state/src/lib/cell-summary/cell-summary.actions.ts"),cell_summary_state=__webpack_require__("./libs/state/src/lib/cell-summary/cell-summary.state.ts"),illustrator_actions=__webpack_require__("./libs/state/src/lib/illustrator/illustrator.actions.ts"),illustrator_state=__webpack_require__("./libs/state/src/lib/illustrator/illustrator.state.ts"),source_refs_actions=__webpack_require__("./libs/state/src/lib/source-refs/source-refs.actions.ts"),source_refs_state=__webpack_require__("./libs/state/src/lib/source-refs/source-refs.state.ts");const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("ActiveFtu");class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class SetIllustrationUrl extends(Action("Set Illustration Url")){constructor(iri){super(),this.iri=iri}}class Clear extends(Action("Clear")){}class Reset extends(Action("Reset")){}var download_action=__webpack_require__("./libs/state/src/lib/download/download.action.ts"),download_state=__webpack_require__("./libs/state/src/lib/download/download.state.ts"),link_registry_actions=__webpack_require__("./libs/cdk/state/src/link-registry/link-registry.actions.ts"),link_registry_model=__webpack_require__("./libs/cdk/state/src/link-registry/link-registry.model.ts"),link_ids=__webpack_require__("./libs/state/src/lib/link-ids.ts");let ActiveFtuState=class ActiveFtuState{load({getState,patchState,dispatch},{iri}){if(getState().iri!==iri)return dispatch([new cell_summary_actions.q5(iri),new illustrator_actions.q5(iri),new download_action.q5(iri),new source_refs_actions.q(iri),new SetIllustrationUrl(iri)]).pipe((0,tap.b)((()=>patchState({iri}))))}setIllustrationUrl({dispatch},{iri}){const[name]=iri.split("/").slice(-1),url=`https://hubmapconsortium.github.io/ccf-releases/v1.4/docs/2d-ftu/2d-ftu-${name}.html`;return dispatch(new link_registry_actions.mm(link_ids.Illustration,{type:link_registry_model.Un.External,url}))}clear({patchState}){patchState({iri:void 0})}reset({dispatch}){return dispatch([new cell_summary_actions.AG,new illustrator_actions.AG,new source_refs_actions.A,new download_action.R2])}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(Load,{cancelUncompleted:!0}),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,Load]),(0,tslib_es6.w6)("design:returntype",Object)],ActiveFtuState.prototype,"load",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(SetIllustrationUrl),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,SetIllustrationUrl]),(0,tslib_es6.w6)("design:returntype",Object)],ActiveFtuState.prototype,"setIllustrationUrl",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)([Clear,Reset]),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",void 0)],ActiveFtuState.prototype,"clear",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(Reset),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",Observable.y)],ActiveFtuState.prototype,"reset",null),ActiveFtuState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"activeFtu",defaults:{},children:[cell_summary_state.x,download_state.r,illustrator_state.K,source_refs_state.b]}),(0,core.Injectable)()],ActiveFtuState);class ActiveFtuSelectors{static isActive({iri}){return void 0!==iri}static iri({iri}){return iri}}(0,tslib_es6.gn)([(0,ngxs_store.Qf)([ActiveFtuState]),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",Boolean)],ActiveFtuSelectors,"isActive",null),(0,tslib_es6.gn)([(0,ngxs_store.Qf)([ActiveFtuState]),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",Object)],ActiveFtuSelectors,"iri",null)},"./libs/state/src/lib/cell-summary/cell-summary.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{AG:()=>Reset,X8:()=>ComputeAggregates,q5:()=>Load});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("CellSummary");class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class ComputeAggregates extends(Action("Compute Aggregates")){}class Reset extends(Action("Reset")){}},"./libs/state/src/lib/cell-summary/cell-summary.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{x:()=>CellSummaryState});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),ftu_data_service=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),switchMap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),cell_summary_actions=__webpack_require__("./libs/state/src/lib/cell-summary/cell-summary.actions.ts");function getRow(rowById,id){return rowById.has(id)||rowById.set(id,["",0]),rowById.get(id)}function expandRow(row,length){if(row.lengthitem.id===id))?.label??``}function getTotalCount(row){return row.reduce(((acc,entry)=>acc+("object"==typeof entry?entry.data.count:0)),0)}function computeAggregate(summary){const{label,cells,biomarkers,summaries}=summary,columnIndexByBiomarker=new Map,rowsByCell=new Map;for(const summary of summaries){const{biomarker,cell}=summary,columnIndex=(id=biomarker,(indexById=columnIndexByBiomarker).has(id)||indexById.set(id,indexById.size+2),indexById.get(id)),row=getRow(rowsByCell,cell);expandRow(row,columnIndex),row[columnIndex]={color:summary.meanExpression,size:summary.percentage,data:summary}}var indexById,id;for(const[cell,row]of rowsByCell.entries())row[0]=getLabel(cells,cell,"cell"),row[1]=getTotalCount(row);const columns=Array.from(columnIndexByBiomarker.keys()).map((id=>getLabel(biomarkers,id,"biomarker")));return{label,columns,rows:Array.from(rowsByCell.values())}}let CellSummaryState=class CellSummaryState{constructor(){this.dataService=(0,core.inject)(ftu_data_service.q)}load({patchState,dispatch},{iri}){return this.dataService.getCellSummaries(iri).pipe((0,tap.b)((summaries=>patchState({summaries,aggregates:[]}))),(0,switchMap.w)((()=>dispatch(new cell_summary_actions.X8))))}computeAggregates({getState,patchState}){const{summaries}=getState();patchState({aggregates:summaries.map(computeAggregate)})}reset({patchState}){patchState({summaries:[],aggregates:[]})}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(cell_summary_actions.q5,{cancelUncompleted:!0}),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,cell_summary_actions.q5]),(0,tslib_es6.w6)("design:returntype",Observable.y)],CellSummaryState.prototype,"load",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(cell_summary_actions.X8),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",void 0)],CellSummaryState.prototype,"computeAggregates",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(cell_summary_actions.AG),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",void 0)],CellSummaryState.prototype,"reset",null),CellSummaryState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"cellSummary",defaults:{summaries:[],aggregates:[]}}),(0,core.Injectable)()],CellSummaryState)},"./libs/state/src/lib/download/download.action.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{R2:()=>ClearEntries,UW:()=>Download,h6:()=>RegisterFormat,i2:()=>AddEntry,q5:()=>Load});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("Download");class RegisterFormat extends(Action("Register Format")){constructor(format){super(),this.format=format}}class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class AddEntry extends(Action("Add")){constructor(id,entry){super(),this.id=id,this.entry=entry}}class ClearEntries extends(Action("Clear")){}class Download extends(Action("Download")){constructor(format){super(),this.format=format}}},"./libs/state/src/lib/download/download.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{r:()=>DownloadState});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js"),http=__webpack_require__("./node_modules/@angular/common/fesm2020/http.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),ngxs_store=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),immer_esm=__webpack_require__("./node_modules/immer/dist/immer.esm.mjs"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),ftu_data_service=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),lib=__webpack_require__("./node_modules/zod/lib/index.mjs");const DOWNLOAD_FORMAT_ID=lib.z.string().transform((id=>`DownloadFormatId:'${id}'`)).brand("DownloadFormatId"),DOWNLOAD_ENTRY=lib.z.discriminatedUnion("type",[lib.z.object({type:lib.z.literal("url"),url:lib.z.string()}),lib.z.object({type:lib.z.literal("data"),data:lib.z.string()})]),DOWNLOAD_FORMAT=lib.z.object({id:DOWNLOAD_FORMAT_ID,label:lib.z.string(),extension:lib.z.string()}).partial({extension:!0});lib.z.object({formats:lib.z.record(DOWNLOAD_FORMAT_ID,DOWNLOAD_FORMAT),entries:lib.z.record(DOWNLOAD_FORMAT_ID,DOWNLOAD_ENTRY)});function createDownloadFormatId(id){return DOWNLOAD_FORMAT_ID.parse(id)}const Svg=createDownloadFormatId("svg"),Png=createDownloadFormatId("png"),SVG_FORMAT={id:Svg,label:"Download SVG",extension:".svg"},PNG_FORMAT={id:Png,label:"Download PNG",extension:".png"};var download_action=__webpack_require__("./libs/state/src/lib/download/download.action.ts");let DownloadState=class DownloadState{constructor(){this.http=(0,core.inject)(http.eN),this.dataService=(0,core.inject)(ftu_data_service.q)}ngxsOnInit(ctx){ctx.dispatch([new download_action.h6(SVG_FORMAT),new download_action.h6(PNG_FORMAT)])}registerFormat(ctx,{format}){ctx.setState((0,immer_esm.ZP)((draft=>{draft.formats[format.id]=format})))}load(ctx,{iri}){return this.dataService.getDataFileReferences(iri).pipe((0,tap.b)((items=>ctx.setState((0,immer_esm.ZP)((draft=>{draft.entries={};for(const{format,url}of items)draft.entries[createDownloadFormatId(format)]={type:"url",url}}))))))}addEntry(ctx,{id,entry}){ctx.setState((0,immer_esm.ZP)((draft=>{draft.entries[id]=entry})))}clearEntries(ctx){ctx.setState((0,immer_esm.ZP)((draft=>{draft.entries={}})))}download(ctx,{format}){const{entries}=ctx.getState(),entry=entries[format];switch(entry?.type){case"url":{const filename=this.guessFilename(ctx,format,entry.url);return this.downloadRemoteData(entry.url).pipe((0,tap.b)((data=>this.downloadData(data,filename))))}case"data":{const filename=this.guessFilename(ctx,format,"");this.downloadData(new Blob([entry.data]),filename);break}default:throw new Error("Cannot download file without data")}}guessFilename(ctx,id,url){const{formats}=ctx.getState(),{extension=""}=formats[id]??{},segments=new URL(url,"https://base.com").pathname.split("/").filter((seg=>""!==seg)),name=segments.length>0?segments[segments.length-1]:"download";return name.includes(".")?name:`${name}${extension}`}downloadData(blob,filename){const url=window.URL.createObjectURL(blob),anchor=document.createElement("a");document.body.appendChild(anchor),anchor.download=filename,anchor.href=url,anchor.click(),anchor.remove(),window.URL.revokeObjectURL(url)}downloadRemoteData(url){return this.http.get(url,{responseType:"blob"})}};(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.h6),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,download_action.h6]),(0,tslib_es6.w6)("design:returntype",void 0)],DownloadState.prototype,"registerFormat",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.q5),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,download_action.q5]),(0,tslib_es6.w6)("design:returntype",Observable.y)],DownloadState.prototype,"load",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.i2),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,download_action.i2]),(0,tslib_es6.w6)("design:returntype",void 0)],DownloadState.prototype,"addEntry",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.R2),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object]),(0,tslib_es6.w6)("design:returntype",void 0)],DownloadState.prototype,"clearEntries",null),(0,tslib_es6.gn)([(0,ngxs_store.aU)(download_action.UW),(0,tslib_es6.w6)("design:type",Function),(0,tslib_es6.w6)("design:paramtypes",[Object,download_action.UW]),(0,tslib_es6.w6)("design:returntype",Object)],DownloadState.prototype,"download",null),DownloadState=(0,tslib_es6.gn)([(0,ngxs_store.ZM)({name:"download",defaults:{formats:{},entries:{}}}),(0,core.Injectable)()],DownloadState)},"./libs/state/src/lib/illustrator/illustrator.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{A1:()=>SetHover,AG:()=>Reset,Yp:()=>ClearSelection,im:()=>SetClicked,q5:()=>Load});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("Illustrator");class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class SetHover extends(Action("Set Selection on Hover")){constructor(selectedOnHover){super(),this.selectedOnHover=selectedOnHover}}class SetClicked extends(Action("Set Selection on Clicked")){constructor(selectedOnClick){super(),this.selectedOnClick=selectedOnClick}}class ClearSelection extends(Action("Clear Selection")){}class Reset extends(Action("Reset")){}},"./libs/state/src/lib/illustrator/illustrator.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{K:()=>IllustratorState});var tslib__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),rxjs__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js"),rxjs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),rxjs__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./libs/state/src/lib/illustrator/illustrator.actions.ts");let IllustratorState=class IllustratorState{constructor(){this.dataService=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__.q)}load({patchState},{iri}){const url$=this.dataService.getIllustrationUrl(iri),mapping$=this.dataService.getIllustrationMapping(iri);return(0,rxjs__WEBPACK_IMPORTED_MODULE_3__.D)({url:url$,mapping:mapping$}).pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_4__.b)((result=>patchState({...result,selectedOnHover:void 0,selectedOnClick:void 0}))))}SetHover({patchState},{selectedOnHover}){patchState({selectedOnHover})}SetClicked({patchState},{selectedOnClick}){patchState({selectedOnClick})}clearSelection({patchState}){patchState({selectedOnHover:void 0,selectedOnClick:void 0})}reset({setState}){setState({mapping:[]})}};(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.q5,{cancelUncompleted:!0}),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object,_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.q5]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",rxjs__WEBPACK_IMPORTED_MODULE_7__.y)],IllustratorState.prototype,"load",null),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.A1),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object,_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.A1]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",void 0)],IllustratorState.prototype,"SetHover",null),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.im),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object,_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.im]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",void 0)],IllustratorState.prototype,"SetClicked",null),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.Yp),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",void 0)],IllustratorState.prototype,"clearSelection",null),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_illustrator_actions__WEBPACK_IMPORTED_MODULE_6__.AG),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_5__.w6)("design:returntype",void 0)],IllustratorState.prototype,"reset",null),IllustratorState=(0,tslib__WEBPACK_IMPORTED_MODULE_5__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.ZM)({name:"illustrator",defaults:{mapping:[]}}),(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable)()],IllustratorState)},"./libs/state/src/lib/link-ids.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{About:()=>About,Embed:()=>Embed,ExploreFTU:()=>ExploreFTU,Illustration:()=>Illustration,LandingPage:()=>LandingPage,LandingPageReadMore:()=>LandingPageReadMore,Portal:()=>Portal,ProductTitle:()=>ProductTitle});var _hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./libs/cdk/state/src/link-registry/link-registry.model.ts");const LandingPage=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("LandingPage"),ProductTitle=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("ProductTitle"),About=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("About"),Portal=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("Portal"),Illustration=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("Illustration"),Embed=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("Embed"),ExploreFTU=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("ExploreFTU"),LandingPageReadMore=(0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.HW)("LandingPageReadMore")},"./libs/state/src/lib/source-refs/source-refs.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{A:()=>Reset,q:()=>Load});const Action=(0,__webpack_require__("./libs/cdk/state/src/actions/actions.ts").W)("SourceRefs");class Load extends(Action("Load")){constructor(iri){super(),this.iri=iri}}class Reset extends(Action("Reset")){}},"./libs/state/src/lib/source-refs/source-refs.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{b:()=>SourceRefsState});var tslib__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),rxjs__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),rxjs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),_source_refs_actions__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./libs/state/src/lib/source-refs/source-refs.actions.ts");let SourceRefsState=class SourceRefsState{constructor(){this.dataService=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__.q)}load({setState},{iri}){return this.dataService.getSourceReferences(iri).pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_3__.b)(setState))}reset({setState}){setState([])}};(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_source_refs_actions__WEBPACK_IMPORTED_MODULE_5__.q),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:paramtypes",[Object,_source_refs_actions__WEBPACK_IMPORTED_MODULE_5__.q]),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:returntype",rxjs__WEBPACK_IMPORTED_MODULE_6__.y)],SourceRefsState.prototype,"load",null),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_source_refs_actions__WEBPACK_IMPORTED_MODULE_5__.A),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:returntype",void 0)],SourceRefsState.prototype,"reset",null),SourceRefsState=(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.ZM)({name:"sourceReferences",defaults:[]}),(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable)()],SourceRefsState)},"./libs/state/src/lib/tissue-library/tissue-library.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{q:()=>Load});var _hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./libs/cdk/state/src/actions/actions.ts");class Load extends((0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.a)("[TissueLibrary] Load Tissue Data")){}},"./libs/state/src/lib/tissue-library/tissue-library.selectors.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{N:()=>TissueLibrarySelectors});var tslib__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),_tissue_library_state__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./libs/state/src/lib/tissue-library/tissue-library.state.ts");class TissueLibrarySelectors{static tissues(state){return state.nodes}}(0,tslib__WEBPACK_IMPORTED_MODULE_1__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.Qf)([_tissue_library_state__WEBPACK_IMPORTED_MODULE_2__.o]),(0,tslib__WEBPACK_IMPORTED_MODULE_1__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_1__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_1__.w6)("design:returntype",Object)],TissueLibrarySelectors,"tissues",null)},"./libs/state/src/lib/tissue-library/tissue-library.state.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{o:()=>TissueLibraryState});var tslib__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/tslib/tslib.es6.js"),_angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./libs/services/src/lib/ftu-data/ftu-data.service.ts"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js"),rxjs__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),rxjs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),_tissue_library_actions__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./libs/state/src/lib/tissue-library/tissue-library.actions.ts");let TissueLibraryState=class TissueLibraryState{constructor(){this.dataService=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_hra_ui_services__WEBPACK_IMPORTED_MODULE_2__.q)}setActive(ctx){return this.dataService.getTissueLibrary().pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_3__.b)((data=>ctx.setState(data))))}};(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.aU)(_tissue_library_actions__WEBPACK_IMPORTED_MODULE_5__.q),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:type",Function),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:paramtypes",[Object]),(0,tslib__WEBPACK_IMPORTED_MODULE_4__.w6)("design:returntype",rxjs__WEBPACK_IMPORTED_MODULE_6__.y)],TissueLibraryState.prototype,"setActive",null),TissueLibraryState=(0,tslib__WEBPACK_IMPORTED_MODULE_4__.gn)([(0,_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.ZM)({name:"tissueLibrary"}),(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable)()],TissueLibraryState)},"./libs/components/atoms/src/lib/label-box/label-box.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,':host {\n display: flex;\n align-items: center;\n padding: 0.75rem 2rem;\n background: #f8f9fa;\n font-family: "Inter";\n}\n:host .filler {\n flex-grow: 1;\n}',""]),module.exports=___CSS_LOADER_EXPORT___.toString()}}]); \ No newline at end of file diff --git a/storybook/components-behavioral/801.46418e5d.iframe.bundle.js b/storybook/components-behavioral/801.46418e5d.iframe.bundle.js deleted file mode 100644 index 68b080163..000000000 --- a/storybook/components-behavioral/801.46418e5d.iframe.bundle.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[801],{"./libs/cdk/injectors/src/lib/dispatch/dispatch.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{WI:()=>dispatch});var _angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_ngxs_store__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@ngxs/store/fesm2015/ngxs-store.js");function identity(value){return value}function createActionFactory(type,boundArgs){return(...args)=>new type(...boundArgs,...args)}function dispatchImpl(actionFactory,resultHandler){const store=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_ngxs_store__WEBPACK_IMPORTED_MODULE_0__.yh);return(...args)=>{const action=actionFactory(...args),obs$=store.dispatch(action);return resultHandler(action,obs$)}}function dispatch(type,...boundArgs){return dispatchImpl(createActionFactory(type,boundArgs),identity)}},"./libs/components/behavioral/src/lib/contact-behavior/contact-behavior.component.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{Q:()=>ContactBehaviorComponent});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");var contact_behavior_componentngResource=__webpack_require__("./libs/components/behavioral/src/lib/contact-behavior/contact-behavior.component.scss?ngResource"),contact_behavior_componentngResource_default=__webpack_require__.n(contact_behavior_componentngResource),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),dialog=__webpack_require__("./node_modules/@angular/material/fesm2020/dialog.mjs"),select_snapshot=__webpack_require__("./libs/cdk/injectors/src/lib/select/select-snapshot.ts"),dispatch=__webpack_require__("./libs/cdk/injectors/src/lib/dispatch/dispatch.ts"),resource_registry_selectors=__webpack_require__("./libs/cdk/state/src/resource-registry/resource-registry.selectors.ts");var contact_modal_componentngResource=__webpack_require__("./libs/components/molecules/src/lib/contact-modal/contact-modal.component.scss?ngResource"),contact_modal_componentngResource_default=__webpack_require__.n(contact_modal_componentngResource),fesm2020_button=__webpack_require__("./node_modules/@angular/material/fesm2020/button.mjs"),icon=__webpack_require__("./node_modules/@angular/material/fesm2020/icon.mjs");var _class,email_input_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/email-input/email-input.component.scss?ngResource"),email_input_componentngResource_default=__webpack_require__.n(email_input_componentngResource),fesm2020_forms=__webpack_require__("./node_modules/@angular/forms/fesm2020/forms.mjs"),form_field=__webpack_require__("./node_modules/@angular/material/fesm2020/form-field.mjs"),input=__webpack_require__("./node_modules/@angular/material/fesm2020/input.mjs"),on_destroy=__webpack_require__("./libs/cdk/injectors/src/lib/on-destroy/on-destroy.ts"),takeUntil=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js");let EmailInputComponent=((_class=class EmailInputComponent{constructor(){this.placeholder="",this.emailChange=new core.EventEmitter,this.destroy$=(0,on_destroy.o)(),this.control=new fesm2020_forms.NI("",{updateOn:"blur",validators:[fesm2020_forms.kI.required,fesm2020_forms.kI.email]});const{control,destroy$}=this;control.valueChanges.pipe((0,takeUntil.R)(destroy$),(0,map.U)((value=>control.valid?value:void 0))).subscribe((value=>this.emailChange.emit(value)))}}).ctorParameters=()=>[],_class.propDecorators={placeholder:[{type:core.Input}],emailChange:[{type:core.Output}]},_class);EmailInputComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-email-input",standalone:!0,imports:[common.CommonModule,form_field.lN,fesm2020_forms.UX,input.c],template:'\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[email_input_componentngResource_default()]}),(0,tslib_es6.w6)("design:paramtypes",[])],EmailInputComponent);var required_textbox_component_class,required_textbox_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/required-textbox/required-textbox.component.scss?ngResource"),required_textbox_componentngResource_default=__webpack_require__.n(required_textbox_componentngResource);let RequiredTextboxComponent=((required_textbox_component_class=class RequiredTextboxComponent{constructor(){this.placeholder="",this.label="",this.messageChange=new core.EventEmitter,this.destroy$=(0,on_destroy.o)(),this.control=new fesm2020_forms.NI("",{updateOn:"blur",validators:[fesm2020_forms.kI.required]});const{control,destroy$}=this;control.valueChanges.pipe((0,takeUntil.R)(destroy$),(0,map.U)((value=>control.valid?value:void 0))).subscribe((value=>this.messageChange.emit(value)))}}).ctorParameters=()=>[],required_textbox_component_class.propDecorators={placeholder:[{type:core.Input}],label:[{type:core.Input}],messageChange:[{type:core.Output}]},required_textbox_component_class);RequiredTextboxComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-required-textbox",standalone:!0,imports:[common.CommonModule,input.c,form_field.lN,fesm2020_forms.UX],template:'\n {{ label }} \n \n {{ label }} is required! \n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[required_textbox_componentngResource_default()]}),(0,tslib_es6.w6)("design:paramtypes",[])],RequiredTextboxComponent);var required_input_component_class,required_input_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/required-input/required-input.component.scss?ngResource"),required_input_componentngResource_default=__webpack_require__.n(required_input_componentngResource);let RequiredInputComponent=((required_input_component_class=class RequiredInputComponent{constructor(){this.label="",this.inputChange=new core.EventEmitter,this.destroy$=(0,on_destroy.o)(),this.control=new fesm2020_forms.NI("",{updateOn:"blur",validators:fesm2020_forms.kI.required});const{control,destroy$,inputChange}=this;control.valueChanges.pipe((0,takeUntil.R)(destroy$),(0,map.U)((value=>control.valid?value:void 0))).subscribe(inputChange)}}).ctorParameters=()=>[],required_input_component_class.propDecorators={label:[{type:core.Input}],inputChange:[{type:core.Output}]},required_input_component_class);RequiredInputComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-required-input",standalone:!0,imports:[common.CommonModule,form_field.lN,input.c,fesm2020_forms.UX],template:'\n {{ label }} \n \n {{ label }} is required!\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[required_input_componentngResource_default()]}),(0,tslib_es6.w6)("design:paramtypes",[])],RequiredInputComponent);var contact_modal_component_class,immer_esm=__webpack_require__("./node_modules/immer/dist/immer.esm.mjs"),ngx_markdown=__webpack_require__("./node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs");const EMPTY_CONTACT_DATA={email:void 0,subject:void 0,message:void 0};let ContactModalComponent=((contact_modal_component_class=class ContactModalComponent{constructor(){this.productLogoUrl="",this.productTitle="",this.submitClick=new core.EventEmitter,this.closeClick=new core.EventEmitter,this.contactData=EMPTY_CONTACT_DATA}get disableSubmit(){return Object.values(this.contactData).some((value=>void 0===value))}updateData(key,value){this.contactData=(0,immer_esm.Uy)(this.contactData,(draft=>{draft[key]=value}))}submit(){this.submitClick.emit(this.contactData)}}).propDecorators={productLogoUrl:[{type:core.Input}],productTitle:[{type:core.Input}],submitClick:[{type:core.Output}],closeClick:[{type:core.Output}]},contact_modal_component_class);ContactModalComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-contact-modal",standalone:!0,imports:[common.CommonModule,fesm2020_button.ot,icon.Ps,EmailInputComponent,ngx_markdown.JP,RequiredTextboxComponent,RequiredInputComponent],template:'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[contact_modal_componentngResource_default()]})],ContactModalComponent);var info_modal_component_class,info_modal_componentngResource=__webpack_require__("./libs/components/molecules/src/lib/info-modal/info-modal.component.scss?ngResource"),info_modal_componentngResource_default=__webpack_require__.n(info_modal_componentngResource);let InfoModalComponent=((info_modal_component_class=class InfoModalComponent{constructor(){this.productTitle="",this.productLogoUrl="",this.description="",this.closeClick=new core.EventEmitter}}).propDecorators={productTitle:[{type:core.Input}],productLogoUrl:[{type:core.Input}],description:[{type:core.Input}],closeClick:[{type:core.Output}]},info_modal_component_class);InfoModalComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-info-modal",standalone:!0,imports:[common.CommonModule,fesm2020_button.ot,icon.Ps,ngx_markdown.JP],template:'\n Prodoct Logo\n

      {{ productTitle }}

      \n
      \n\n\n\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[info_modal_componentngResource_default()]})],InfoModalComponent);var contact_behavior_component_class,resource_ids=__webpack_require__("./libs/state/src/lib/resource-ids.ts"),contact_actions=__webpack_require__("./libs/state/src/lib/contact/contact.actions.ts");let ContactBehaviorComponent=((contact_behavior_component_class=class ContactBehaviorComponent{constructor(){this.productLogoUrl=(0,select_snapshot.w)(resource_registry_selectors.S.url,resource_ids.Dw),this.productTitle=(0,select_snapshot.w)(resource_registry_selectors.S.anyText,resource_ids.tc),this.description=(0,select_snapshot.w)(resource_registry_selectors.S.anyText,resource_ids.O2),this.sendMessage=(0,dispatch.WI)(contact_actions.u),this.dialog=(0,core.inject)(dialog.uw),this.selfRef=(0,core.inject)(dialog.so,{optional:!0})}submit(message){this.sendMessage(message),this.selfRef?.close(),this.postRef=this.dialog.open(this.postMessageTemplate)}close(){this.postRef?.close(),this.selfRef?.close()}}).propDecorators={postMessageTemplate:[{type:core.ViewChild,args:["postMessage"]}]},contact_behavior_component_class);ContactBehaviorComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"ftu-contact-behavior",standalone:!0,imports:[common.CommonModule,dialog.Is,ContactModalComponent,InfoModalComponent],template:'\n\n\n\n \n \n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[contact_behavior_componentngResource_default()]})],ContactBehaviorComponent)},"./libs/state/src/lib/contact/contact.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{u:()=>SendMessage});var _hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./libs/cdk/state/src/actions/actions.ts");class SendMessage extends((0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.a)("[Contact] Send Message")){constructor(message){super(),this.message=message}}},"./libs/components/atoms/src/lib/email-input/email-input.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n}\n:host .email-text-field {\n width: 100%;\n background: #ffffff;\n}\n:host ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/atoms/src/lib/required-input/required-input.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n}\n:host .form-field {\n width: 100%;\n}\n:host ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/atoms/src/lib/required-textbox/required-textbox.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n}\n:host .message-field {\n width: 100%;\n background: #ffffff;\n}\n:host ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/behavioral/src/lib/contact-behavior/contact-behavior.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n}\n:host .contact-modal {\n width: 41rem;\n height: 40rem;\n}\n:host .info-modal {\n width: 35rem;\n height: 11.8rem;\n}\n@media screen and (max-height: 328px) {\n :host .contact-modal {\n height: calc(100vh - 2rem);\n }\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/molecules/src/lib/contact-modal/contact-modal.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n position: relative;\n padding-top: 2rem;\n margin-right: 1.5rem;\n margin-left: 1.5rem;\n}\n:host .product-logo {\n display: flex;\n align-items: center;\n}\n:host .product-logo .product-logo-image {\n margin-right: 1rem;\n}\n:host .product-logo .product-title {\n color: #990000;\n margin: 0;\n font-weight: 600;\n}\n:host .close {\n position: absolute;\n top: 1.5rem;\n right: 0rem;\n}\n:host .submit {\n margin-right: 1.5rem;\n}\n:host .submit,\n:host .cancel {\n width: 7.5rem;\n}\n:host .email {\n margin-top: 1.25rem;\n}\n:host .message-field {\n margin-top: 1rem;\n}\n:host .subject-field {\n margin-top: 1rem;\n}\n:host .desc {\n margin-top: 1.5rem;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/molecules/src/lib/info-modal/info-modal.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n position: relative;\n padding: 2rem 2rem 1.25rem 2rem;\n}\n:host .close {\n position: absolute;\n top: 1.5rem;\n right: 1.5rem;\n}\n:host .title {\n display: flex;\n align-items: center;\n}\n:host .title .product-logo-image {\n height: 2.75rem;\n margin-right: 1rem;\n}\n:host .title .product-title {\n margin: 0;\n color: #990000;\n}\n:host .description {\n display: block;\n margin-top: 1rem;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()}}]); \ No newline at end of file diff --git a/storybook/components-behavioral/801.d5ec94e5.iframe.bundle.js b/storybook/components-behavioral/801.d5ec94e5.iframe.bundle.js new file mode 100644 index 000000000..8b44169c6 --- /dev/null +++ b/storybook/components-behavioral/801.d5ec94e5.iframe.bundle.js @@ -0,0 +1 @@ +(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[801],{"./libs/components/behavioral/src/lib/contact-behavior/contact-behavior.component.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{Q:()=>ContactBehaviorComponent});var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");var contact_behavior_componentngResource=__webpack_require__("./libs/components/behavioral/src/lib/contact-behavior/contact-behavior.component.scss?ngResource"),contact_behavior_componentngResource_default=__webpack_require__.n(contact_behavior_componentngResource),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),dialog=__webpack_require__("./node_modules/@angular/material/fesm2020/dialog.mjs"),select_snapshot=__webpack_require__("./libs/cdk/injectors/src/lib/select/select-snapshot.ts"),dispatch=__webpack_require__("./libs/cdk/injectors/src/lib/dispatch/dispatch.ts"),resource_registry_selectors=__webpack_require__("./libs/cdk/state/src/resource-registry/resource-registry.selectors.ts");var contact_modal_componentngResource=__webpack_require__("./libs/components/molecules/src/lib/contact-modal/contact-modal.component.scss?ngResource"),contact_modal_componentngResource_default=__webpack_require__.n(contact_modal_componentngResource),fesm2020_button=__webpack_require__("./node_modules/@angular/material/fesm2020/button.mjs"),icon=__webpack_require__("./node_modules/@angular/material/fesm2020/icon.mjs");var _class,email_input_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/email-input/email-input.component.scss?ngResource"),email_input_componentngResource_default=__webpack_require__.n(email_input_componentngResource),fesm2020_forms=__webpack_require__("./node_modules/@angular/forms/fesm2020/forms.mjs"),form_field=__webpack_require__("./node_modules/@angular/material/fesm2020/form-field.mjs"),input=__webpack_require__("./node_modules/@angular/material/fesm2020/input.mjs"),on_destroy=__webpack_require__("./libs/cdk/injectors/src/lib/on-destroy/on-destroy.ts"),takeUntil=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js");let EmailInputComponent=((_class=class EmailInputComponent{constructor(){this.placeholder="",this.emailChange=new core.EventEmitter,this.destroy$=(0,on_destroy.o)(),this.control=new fesm2020_forms.NI("",{updateOn:"blur",validators:[fesm2020_forms.kI.required,fesm2020_forms.kI.email]});const{control,destroy$}=this;control.valueChanges.pipe((0,takeUntil.R)(destroy$),(0,map.U)((value=>control.valid?value:void 0))).subscribe((value=>this.emailChange.emit(value)))}}).ctorParameters=()=>[],_class.propDecorators={placeholder:[{type:core.Input}],emailChange:[{type:core.Output}]},_class);EmailInputComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-email-input",standalone:!0,imports:[common.CommonModule,form_field.lN,fesm2020_forms.UX,input.c],template:'\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[email_input_componentngResource_default()]}),(0,tslib_es6.w6)("design:paramtypes",[])],EmailInputComponent);var required_textbox_component_class,required_textbox_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/required-textbox/required-textbox.component.scss?ngResource"),required_textbox_componentngResource_default=__webpack_require__.n(required_textbox_componentngResource);let RequiredTextboxComponent=((required_textbox_component_class=class RequiredTextboxComponent{constructor(){this.placeholder="",this.label="",this.messageChange=new core.EventEmitter,this.destroy$=(0,on_destroy.o)(),this.control=new fesm2020_forms.NI("",{updateOn:"blur",validators:[fesm2020_forms.kI.required]});const{control,destroy$}=this;control.valueChanges.pipe((0,takeUntil.R)(destroy$),(0,map.U)((value=>control.valid?value:void 0))).subscribe((value=>this.messageChange.emit(value)))}}).ctorParameters=()=>[],required_textbox_component_class.propDecorators={placeholder:[{type:core.Input}],label:[{type:core.Input}],messageChange:[{type:core.Output}]},required_textbox_component_class);RequiredTextboxComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-required-textbox",standalone:!0,imports:[common.CommonModule,input.c,form_field.lN,fesm2020_forms.UX],template:'\n {{ label }} \n \n {{ label }} is required! \n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[required_textbox_componentngResource_default()]}),(0,tslib_es6.w6)("design:paramtypes",[])],RequiredTextboxComponent);var required_input_component_class,required_input_componentngResource=__webpack_require__("./libs/components/atoms/src/lib/required-input/required-input.component.scss?ngResource"),required_input_componentngResource_default=__webpack_require__.n(required_input_componentngResource);let RequiredInputComponent=((required_input_component_class=class RequiredInputComponent{constructor(){this.label="",this.inputChange=new core.EventEmitter,this.destroy$=(0,on_destroy.o)(),this.control=new fesm2020_forms.NI("",{updateOn:"blur",validators:fesm2020_forms.kI.required});const{control,destroy$,inputChange}=this;control.valueChanges.pipe((0,takeUntil.R)(destroy$),(0,map.U)((value=>control.valid?value:void 0))).subscribe(inputChange)}}).ctorParameters=()=>[],required_input_component_class.propDecorators={label:[{type:core.Input}],inputChange:[{type:core.Output}]},required_input_component_class);RequiredInputComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-required-input",standalone:!0,imports:[common.CommonModule,form_field.lN,input.c,fesm2020_forms.UX],template:'\n {{ label }} \n \n {{ label }} is required!\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[required_input_componentngResource_default()]}),(0,tslib_es6.w6)("design:paramtypes",[])],RequiredInputComponent);var contact_modal_component_class,immer_esm=__webpack_require__("./node_modules/immer/dist/immer.esm.mjs"),ngx_markdown=__webpack_require__("./node_modules/ngx-markdown/fesm2020/ngx-markdown.mjs");const EMPTY_CONTACT_DATA={email:void 0,subject:void 0,message:void 0};let ContactModalComponent=((contact_modal_component_class=class ContactModalComponent{constructor(){this.productLogoUrl="",this.productTitle="",this.submitClick=new core.EventEmitter,this.closeClick=new core.EventEmitter,this.contactData=EMPTY_CONTACT_DATA}get disableSubmit(){return Object.values(this.contactData).some((value=>void 0===value))}updateData(key,value){this.contactData=(0,immer_esm.Uy)(this.contactData,(draft=>{draft[key]=value}))}submit(){this.submitClick.emit(this.contactData)}}).propDecorators={productLogoUrl:[{type:core.Input}],productTitle:[{type:core.Input}],submitClick:[{type:core.Output}],closeClick:[{type:core.Output}]},contact_modal_component_class);ContactModalComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-contact-modal",standalone:!0,imports:[common.CommonModule,fesm2020_button.ot,icon.Ps,EmailInputComponent,ngx_markdown.JP,RequiredTextboxComponent,RequiredInputComponent],template:'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[contact_modal_componentngResource_default()]})],ContactModalComponent);var info_modal_component_class,info_modal_componentngResource=__webpack_require__("./libs/components/molecules/src/lib/info-modal/info-modal.component.scss?ngResource"),info_modal_componentngResource_default=__webpack_require__.n(info_modal_componentngResource);let InfoModalComponent=((info_modal_component_class=class InfoModalComponent{constructor(){this.productTitle="",this.productLogoUrl="",this.description="",this.closeClick=new core.EventEmitter}}).propDecorators={productTitle:[{type:core.Input}],productLogoUrl:[{type:core.Input}],description:[{type:core.Input}],closeClick:[{type:core.Output}]},info_modal_component_class);InfoModalComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"hra-info-modal",standalone:!0,imports:[common.CommonModule,fesm2020_button.ot,icon.Ps,ngx_markdown.JP],template:'\n Prodoct Logo\n

      {{ productTitle }}

      \n
      \n\n\n\n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[info_modal_componentngResource_default()]})],InfoModalComponent);var contact_behavior_component_class,resource_ids=__webpack_require__("./libs/state/src/lib/resource-ids.ts"),contact_actions=__webpack_require__("./libs/state/src/lib/contact/contact.actions.ts");let ContactBehaviorComponent=((contact_behavior_component_class=class ContactBehaviorComponent{constructor(){this.productLogoUrl=(0,select_snapshot.w)(resource_registry_selectors.S.url,resource_ids.Dw),this.productTitle=(0,select_snapshot.w)(resource_registry_selectors.S.anyText,resource_ids.tc),this.description=(0,select_snapshot.w)(resource_registry_selectors.S.anyText,resource_ids.O2),this.sendMessage=(0,dispatch.WI)(contact_actions.u),this.dialog=(0,core.inject)(dialog.uw),this.selfRef=(0,core.inject)(dialog.so,{optional:!0})}submit(message){this.sendMessage(message),this.selfRef?.close(),this.postRef=this.dialog.open(this.postMessageTemplate)}close(){this.postRef?.close(),this.selfRef?.close()}}).propDecorators={postMessageTemplate:[{type:core.ViewChild,args:["postMessage"]}]},contact_behavior_component_class);ContactBehaviorComponent=(0,tslib_es6.gn)([(0,core.Component)({selector:"ftu-contact-behavior",standalone:!0,imports:[common.CommonModule,dialog.Is,ContactModalComponent,InfoModalComponent],template:'\n\n\n\n \n \n\n',changeDetection:core.ChangeDetectionStrategy.OnPush,styles:[contact_behavior_componentngResource_default()]})],ContactBehaviorComponent)},"./libs/state/src/lib/contact/contact.actions.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{u:()=>SendMessage});var _hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./libs/cdk/state/src/actions/actions.ts");class SendMessage extends((0,_hra_ui_cdk_state__WEBPACK_IMPORTED_MODULE_0__.a)("[Contact] Send Message")){constructor(message){super(),this.message=message}}},"./libs/components/atoms/src/lib/email-input/email-input.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n}\n:host .email-text-field {\n width: 100%;\n background: #ffffff;\n}\n:host ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/atoms/src/lib/required-input/required-input.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n}\n:host .form-field {\n width: 100%;\n}\n:host ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/atoms/src/lib/required-textbox/required-textbox.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n}\n:host .message-field {\n width: 100%;\n background: #ffffff;\n}\n:host ::ng-deep .mat-mdc-form-field-required-marker {\n color: #dc231e;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/behavioral/src/lib/contact-behavior/contact-behavior.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n}\n:host .contact-modal {\n width: 41rem;\n height: 40rem;\n}\n:host .info-modal {\n width: 35rem;\n height: 11.8rem;\n}\n@media screen and (max-height: 328px) {\n :host .contact-modal {\n height: calc(100vh - 2rem);\n }\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/molecules/src/lib/contact-modal/contact-modal.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,':host {\n display: block;\n position: relative;\n padding-top: 2rem;\n margin-right: 1.5rem;\n margin-left: 1.5rem;\n font-family: "Inter";\n}\n:host .product-logo {\n display: flex;\n align-items: center;\n}\n:host .product-logo .product-logo-image {\n margin-right: 1rem;\n}\n:host .product-logo .product-title {\n color: #990000;\n margin: 0;\n font-weight: 600;\n}\n:host .close {\n position: absolute;\n top: 1.5rem;\n right: 0rem;\n}\n:host .submit {\n margin-right: 1.5rem;\n}\n:host .submit,\n:host .cancel {\n width: 7.5rem;\n}\n:host .email {\n margin-top: 1.25rem;\n}\n:host .message-field {\n margin-top: 1rem;\n}\n:host .subject-field {\n margin-top: 1rem;\n}\n:host .desc {\n margin-top: 1.5rem;\n}',""]),module.exports=___CSS_LOADER_EXPORT___.toString()},"./libs/components/molecules/src/lib/info-modal/info-modal.component.scss?ngResource":(module,__unused_webpack_exports,__webpack_require__)=>{var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js"),___CSS_LOADER_EXPORT___=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);___CSS_LOADER_EXPORT___.push([module.id,":host {\n display: block;\n position: relative;\n padding: 2rem 2rem 1.25rem 2rem;\n}\n:host .close {\n position: absolute;\n top: 1.5rem;\n right: 1.5rem;\n}\n:host .title {\n display: flex;\n align-items: center;\n}\n:host .title .product-logo-image {\n height: 2.75rem;\n margin-right: 1rem;\n}\n:host .title .product-title {\n margin: 0;\n color: #990000;\n}\n:host .description {\n display: block;\n margin-top: 1rem;\n}",""]),module.exports=___CSS_LOADER_EXPORT___.toString()}}]); \ No newline at end of file diff --git a/storybook/components-behavioral/930.6fda4f3b.iframe.bundle.js b/storybook/components-behavioral/930.037fa429.iframe.bundle.js similarity index 99% rename from storybook/components-behavioral/930.6fda4f3b.iframe.bundle.js rename to storybook/components-behavioral/930.037fa429.iframe.bundle.js index 6ca7df29c..3b237d8b2 100644 --- a/storybook/components-behavioral/930.6fda4f3b.iframe.bundle.js +++ b/storybook/components-behavioral/930.037fa429.iframe.bundle.js @@ -1,2 +1,2 @@ -/*! For license information please see 930.6fda4f3b.iframe.bundle.js.LICENSE.txt */ -"use strict";(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[930],{"./node_modules/@angular/router/fesm2020/router.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{gz:()=>ActivatedRoute,F0:()=>Router});var core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),from=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/from.js"),of=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/of.js"),BehaviorSubject=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js"),EmptyError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"),combineLatest=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js"),concat=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/concat.js"),defer=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/defer.js"),pipe=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/util/pipe.js"),throwError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/throwError.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),empty=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/empty.js"),ConnectableObservable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"),Subject=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subject.js"),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js"),switchMap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"),take=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/take.js"),startWith=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/startWith.js"),filter=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/filter.js"),mergeMap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"),first=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/first.js"),concatMap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/concatMap.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),catchError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/catchError.js"),lift=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/util/lift.js"),OperatorSubscriber=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js");function scan(accumulator,seed){return(0,lift.e)(function scanInternals(accumulator,seed,hasSeed,emitOnNext,emitBeforeComplete){return function(source,subscriber){var hasState=hasSeed,state=seed,index=0;source.subscribe((0,OperatorSubscriber.x)(subscriber,(function(value){var i=index++;state=hasState?accumulator(state,value,i):(hasState=!0,value),emitOnNext&&subscriber.next(state)}),emitBeforeComplete&&function(){hasState&&subscriber.next(state),subscriber.complete()}))}}(accumulator,seed,arguments.length>=2,!0))}var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");function takeLast(count){return count<=0?function(){return empty.E}:(0,lift.e)((function(source,subscriber){var buffer=[];source.subscribe((0,OperatorSubscriber.x)(subscriber,(function(value){buffer.push(value),count=2;return function(source){return source.pipe(predicate?(0,filter.h)((function(v,i){return predicate(v,i,source)})):identity.y,takeLast(1),hasDefaultValue?(0,defaultIfEmpty.d)(defaultValue):(0,throwIfEmpty.T)((function(){return new EmptyError.K})))}}var takeWhile=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js"),mapTo=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/mapTo.js"),finalize=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/finalize.js"),refCount=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/refCount.js"),mergeAll=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"),platform_browser=__webpack_require__("./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs");const PRIMARY_OUTLET="primary",RouteTitleKey=Symbol("RouteTitle");class ParamsAsMap{constructor(params){this.params=params||{}}has(name){return Object.prototype.hasOwnProperty.call(this.params,name)}get(name){if(this.has(name)){const v=this.params[name];return Array.isArray(v)?v[0]:v}return null}getAll(name){if(this.has(name)){const v=this.params[name];return Array.isArray(v)?v:[v]}return[]}get keys(){return Object.keys(this.params)}}function convertToParamMap(params){return new ParamsAsMap(params)}function defaultUrlMatcher(segments,segmentGroup,route){const parts=route.path.split("/");if(parts.length>segments.length)return null;if("full"===route.pathMatch&&(segmentGroup.hasChildren()||parts.lengthbSorted[index]===val))}return a===b}function flatten(arr){return Array.prototype.concat.apply([],arr)}function router_last(a){return a.length>0?a[a.length-1]:null}function forEach(map,callback){for(const prop in map)map.hasOwnProperty(prop)&&callback(map[prop],prop)}function wrapIntoObservable(value){return(0,core["ɵisObservable"])(value)?value:(0,core["ɵisPromise"])(value)?(0,from.D)(Promise.resolve(value)):(0,of.of)(value)}const NG_DEV_MODE$b="undefined"==typeof ngDevMode||ngDevMode,pathCompareMap={exact:function equalSegmentGroups(container,containee,matrixParams){if(!equalPath(container.segments,containee.segments))return!1;if(!matrixParamsMatch(container.segments,containee.segments,matrixParams))return!1;if(container.numberOfChildren!==containee.numberOfChildren)return!1;for(const c in containee.children){if(!container.children[c])return!1;if(!equalSegmentGroups(container.children[c],containee.children[c],matrixParams))return!1}return!0},subset:containsSegmentGroup},paramCompareMap={exact:function equalParams(container,containee){return shallowEqual(container,containee)},subset:function containsParams(container,containee){return Object.keys(containee).length<=Object.keys(container).length&&Object.keys(containee).every((key=>equalArraysOrString(container[key],containee[key])))},ignored:()=>!0};function containsTree(container,containee,options){return pathCompareMap[options.paths](container.root,containee.root,options.matrixParams)&¶mCompareMap[options.queryParams](container.queryParams,containee.queryParams)&&!("exact"===options.fragment&&container.fragment!==containee.fragment)}function containsSegmentGroup(container,containee,matrixParams){return containsSegmentGroupHelper(container,containee,containee.segments,matrixParams)}function containsSegmentGroupHelper(container,containee,containeePaths,matrixParams){if(container.segments.length>containeePaths.length){const current=container.segments.slice(0,containeePaths.length);return!!equalPath(current,containeePaths)&&(!containee.hasChildren()&&!!matrixParamsMatch(current,containeePaths,matrixParams))}if(container.segments.length===containeePaths.length){if(!equalPath(container.segments,containeePaths))return!1;if(!matrixParamsMatch(container.segments,containeePaths,matrixParams))return!1;for(const c in containee.children){if(!container.children[c])return!1;if(!containsSegmentGroup(container.children[c],containee.children[c],matrixParams))return!1}return!0}{const current=containeePaths.slice(0,container.segments.length),next=containeePaths.slice(container.segments.length);return!!equalPath(container.segments,current)&&(!!matrixParamsMatch(container.segments,current,matrixParams)&&(!!container.children[PRIMARY_OUTLET]&&containsSegmentGroupHelper(container.children[PRIMARY_OUTLET],containee,next,matrixParams)))}}function matrixParamsMatch(containerPaths,containeePaths,options){return containeePaths.every(((containeeSegment,i)=>paramCompareMap[options](containerPaths[i].parameters,containeeSegment.parameters)))}class UrlTree{constructor(root=new UrlSegmentGroup([],{}),queryParams={},fragment=null){if(this.root=root,this.queryParams=queryParams,this.fragment=fragment,NG_DEV_MODE$b&&root.segments.length>0)throw new core["ɵRuntimeError"](4015,"The root `UrlSegmentGroup` should not contain `segments`. Instead, these segments belong in the `children` so they can be associated with a named outlet.")}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=convertToParamMap(this.queryParams)),this._queryParamMap}toString(){return DEFAULT_SERIALIZER.serialize(this)}}class UrlSegmentGroup{constructor(segments,children){this.segments=segments,this.children=children,this.parent=null,forEach(children,((v,k)=>v.parent=this))}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return serializePaths(this)}}class UrlSegment{constructor(path,parameters){this.path=path,this.parameters=parameters}get parameterMap(){return this._parameterMap||(this._parameterMap=convertToParamMap(this.parameters)),this._parameterMap}toString(){return serializePath(this)}}function equalPath(as,bs){return as.length===bs.length&&as.every(((a,i)=>a.path===bs[i].path))}class UrlSerializer{}UrlSerializer.ɵfac=function UrlSerializer_Factory(t){return new(t||UrlSerializer)},UrlSerializer.ɵprov=core["ɵɵdefineInjectable"]({token:UrlSerializer,factory:function(){return new DefaultUrlSerializer},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](UrlSerializer,[{type:core.Injectable,args:[{providedIn:"root",useFactory:()=>new DefaultUrlSerializer}]}],null,null);class DefaultUrlSerializer{parse(url){const p=new UrlParser(url);return new UrlTree(p.parseRootSegment(),p.parseQueryParams(),p.parseFragment())}serialize(tree){return`${`/${serializeSegment(tree.root,!0)}`}${function serializeQueryParams(params){const strParams=Object.keys(params).map((name=>{const value=params[name];return Array.isArray(value)?value.map((v=>`${encodeUriQuery(name)}=${encodeUriQuery(v)}`)).join("&"):`${encodeUriQuery(name)}=${encodeUriQuery(value)}`})).filter((s=>!!s));return strParams.length?`?${strParams.join("&")}`:""}(tree.queryParams)}${"string"==typeof tree.fragment?`#${function encodeUriFragment(s){return encodeURI(s)}(tree.fragment)}`:""}`}}const DEFAULT_SERIALIZER=new DefaultUrlSerializer;function serializePaths(segment){return segment.segments.map((p=>serializePath(p))).join("/")}function serializeSegment(segment,root){if(!segment.hasChildren())return serializePaths(segment);if(root){const primary=segment.children[PRIMARY_OUTLET]?serializeSegment(segment.children[PRIMARY_OUTLET],!1):"",children=[];return forEach(segment.children,((v,k)=>{k!==PRIMARY_OUTLET&&children.push(`${k}:${serializeSegment(v,!1)}`)})),children.length>0?`${primary}(${children.join("//")})`:primary}{const children=function mapChildrenIntoArray(segment,fn){let res=[];return forEach(segment.children,((child,childOutlet)=>{childOutlet===PRIMARY_OUTLET&&(res=res.concat(fn(child,childOutlet)))})),forEach(segment.children,((child,childOutlet)=>{childOutlet!==PRIMARY_OUTLET&&(res=res.concat(fn(child,childOutlet)))})),res}(segment,((v,k)=>k===PRIMARY_OUTLET?[serializeSegment(segment.children[PRIMARY_OUTLET],!1)]:[`${k}:${serializeSegment(v,!1)}`]));return 1===Object.keys(segment.children).length&&null!=segment.children[PRIMARY_OUTLET]?`${serializePaths(segment)}/${children[0]}`:`${serializePaths(segment)}/(${children.join("//")})`}}function encodeUriString(s){return encodeURIComponent(s).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function encodeUriQuery(s){return encodeUriString(s).replace(/%3B/gi,";")}function encodeUriSegment(s){return encodeUriString(s).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function decode(s){return decodeURIComponent(s)}function decodeQuery(s){return decode(s.replace(/\+/g,"%20"))}function serializePath(path){return`${encodeUriSegment(path.path)}${function serializeMatrixParams(params){return Object.keys(params).map((key=>`;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`)).join("")}(path.parameters)}`}const SEGMENT_RE=/^[^\/()?;=#]+/;function matchSegments(str){const match=str.match(SEGMENT_RE);return match?match[0]:""}const QUERY_PARAM_RE=/^[^=?&#]+/;const QUERY_PARAM_VALUE_RE=/^[^&#]+/;class UrlParser{constructor(url){this.url=url,this.remaining=url}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new UrlSegmentGroup([],{}):new UrlSegmentGroup([],this.parseChildren())}parseQueryParams(){const params={};if(this.consumeOptional("?"))do{this.parseQueryParam(params)}while(this.consumeOptional("&"));return params}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const segments=[];for(this.peekStartsWith("(")||segments.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),segments.push(this.parseSegment());let children={};this.peekStartsWith("/(")&&(this.capture("/"),children=this.parseParens(!0));let res={};return this.peekStartsWith("(")&&(res=this.parseParens(!1)),(segments.length>0||Object.keys(children).length>0)&&(res[PRIMARY_OUTLET]=new UrlSegmentGroup(segments,children)),res}parseSegment(){const path=matchSegments(this.remaining);if(""===path&&this.peekStartsWith(";"))throw new core["ɵRuntimeError"](4009,NG_DEV_MODE$b&&`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(path),new UrlSegment(decode(path),this.parseMatrixParams())}parseMatrixParams(){const params={};for(;this.consumeOptional(";");)this.parseParam(params);return params}parseParam(params){const key=matchSegments(this.remaining);if(!key)return;this.capture(key);let value="";if(this.consumeOptional("=")){const valueMatch=matchSegments(this.remaining);valueMatch&&(value=valueMatch,this.capture(value))}params[decode(key)]=decode(value)}parseQueryParam(params){const key=function matchQueryParams(str){const match=str.match(QUERY_PARAM_RE);return match?match[0]:""}(this.remaining);if(!key)return;this.capture(key);let value="";if(this.consumeOptional("=")){const valueMatch=function matchUrlQueryParamValue(str){const match=str.match(QUERY_PARAM_VALUE_RE);return match?match[0]:""}(this.remaining);valueMatch&&(value=valueMatch,this.capture(value))}const decodedKey=decodeQuery(key),decodedVal=decodeQuery(value);if(params.hasOwnProperty(decodedKey)){let currentVal=params[decodedKey];Array.isArray(currentVal)||(currentVal=[currentVal],params[decodedKey]=currentVal),currentVal.push(decodedVal)}else params[decodedKey]=decodedVal}parseParens(allowPrimary){const segments={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const path=matchSegments(this.remaining),next=this.remaining[path.length];if("/"!==next&&")"!==next&&";"!==next)throw new core["ɵRuntimeError"](4010,NG_DEV_MODE$b&&`Cannot parse url '${this.url}'`);let outletName;path.indexOf(":")>-1?(outletName=path.slice(0,path.indexOf(":")),this.capture(outletName),this.capture(":")):allowPrimary&&(outletName=PRIMARY_OUTLET);const children=this.parseChildren();segments[outletName]=1===Object.keys(children).length?children[PRIMARY_OUTLET]:new UrlSegmentGroup([],children),this.consumeOptional("//")}return segments}peekStartsWith(str){return this.remaining.startsWith(str)}consumeOptional(str){return!!this.peekStartsWith(str)&&(this.remaining=this.remaining.substring(str.length),!0)}capture(str){if(!this.consumeOptional(str))throw new core["ɵRuntimeError"](4011,NG_DEV_MODE$b&&`Expected "${str}".`)}}function createRoot(rootCandidate){return rootCandidate.segments.length>0?new UrlSegmentGroup([],{[PRIMARY_OUTLET]:rootCandidate}):rootCandidate}function squashSegmentGroup(segmentGroup){const newChildren={};for(const childOutlet of Object.keys(segmentGroup.children)){const childCandidate=squashSegmentGroup(segmentGroup.children[childOutlet]);(childCandidate.segments.length>0||childCandidate.hasChildren())&&(newChildren[childOutlet]=childCandidate)}return function mergeTrivialChildren(s){if(1===s.numberOfChildren&&s.children[PRIMARY_OUTLET]){const c=s.children[PRIMARY_OUTLET];return new UrlSegmentGroup(s.segments.concat(c.segments),c.children)}return s}(new UrlSegmentGroup(segmentGroup.segments,newChildren))}function isUrlTree(v){return v instanceof UrlTree}const NG_DEV_MODE$a="undefined"==typeof ngDevMode||ngDevMode;function createSegmentGroupFromRoute(route){let targetGroup;const rootCandidate=function createSegmentGroupFromRouteRecursive(currentRoute){const childOutlets={};for(const childSnapshot of currentRoute.children){const root=createSegmentGroupFromRouteRecursive(childSnapshot);childOutlets[childSnapshot.outlet]=root}const segmentGroup=new UrlSegmentGroup(currentRoute.url,childOutlets);return currentRoute===route&&(targetGroup=segmentGroup),segmentGroup}(route.root),rootSegmentGroup=createRoot(rootCandidate);return targetGroup??rootSegmentGroup}function createUrlTreeFromSegmentGroup(relativeTo,commands,queryParams,fragment){let root=relativeTo;for(;root.parent;)root=root.parent;if(0===commands.length)return tree(root,root,root,queryParams,fragment);const nav=computeNavigation(commands);if(nav.toRoot())return tree(root,root,new UrlSegmentGroup([],{}),queryParams,fragment);const position=function findStartingPositionForTargetGroup(nav,root,target){if(nav.isAbsolute)return new Position(root,!0,0);if(!target)return new Position(root,!1,NaN);if(null===target.parent)return new Position(target,!0,0);const modifier=isMatrixParams(nav.commands[0])?0:1,index=target.segments.length-1+modifier;return createPositionApplyingDoubleDots(target,index,nav.numberOfDoubleDots)}(nav,root,relativeTo),newSegmentGroup=position.processChildren?updateSegmentGroupChildren(position.segmentGroup,position.index,nav.commands):updateSegmentGroup(position.segmentGroup,position.index,nav.commands);return tree(root,position.segmentGroup,newSegmentGroup,queryParams,fragment)}function createUrlTree(route,urlTree,commands,queryParams,fragment){if(0===commands.length)return tree(urlTree.root,urlTree.root,urlTree.root,queryParams,fragment);const nav=computeNavigation(commands);if(nav.toRoot())return tree(urlTree.root,urlTree.root,new UrlSegmentGroup([],{}),queryParams,fragment);return function createTreeUsingPathIndex(lastPathIndex){const startingPosition=function findStartingPosition(nav,tree,segmentGroup,lastPathIndex){if(nav.isAbsolute)return new Position(tree.root,!0,0);if(-1===lastPathIndex){const processChildren=segmentGroup===tree.root;return new Position(segmentGroup,processChildren,0)}const modifier=isMatrixParams(nav.commands[0])?0:1,index=lastPathIndex+modifier;return createPositionApplyingDoubleDots(segmentGroup,index,nav.numberOfDoubleDots)}(nav,urlTree,route.snapshot?._urlSegment,lastPathIndex),segmentGroup=startingPosition.processChildren?updateSegmentGroupChildren(startingPosition.segmentGroup,startingPosition.index,nav.commands):updateSegmentGroup(startingPosition.segmentGroup,startingPosition.index,nav.commands);return tree(urlTree.root,startingPosition.segmentGroup,segmentGroup,queryParams,fragment)}(route.snapshot?._lastPathIndex)}function isMatrixParams(command){return"object"==typeof command&&null!=command&&!command.outlets&&!command.segmentPath}function isCommandWithOutlets(command){return"object"==typeof command&&null!=command&&command.outlets}function tree(oldRoot,oldSegmentGroup,newSegmentGroup,queryParams,fragment){let rootCandidate,qp={};queryParams&&forEach(queryParams,((value,name)=>{qp[name]=Array.isArray(value)?value.map((v=>`${v}`)):`${value}`})),rootCandidate=oldRoot===oldSegmentGroup?newSegmentGroup:replaceSegment(oldRoot,oldSegmentGroup,newSegmentGroup);const newRoot=createRoot(squashSegmentGroup(rootCandidate));return new UrlTree(newRoot,qp,fragment)}function replaceSegment(current,oldSegment,newSegment){const children={};return forEach(current.children,((c,outletName)=>{children[outletName]=c===oldSegment?newSegment:replaceSegment(c,oldSegment,newSegment)})),new UrlSegmentGroup(current.segments,children)}class Navigation{constructor(isAbsolute,numberOfDoubleDots,commands){if(this.isAbsolute=isAbsolute,this.numberOfDoubleDots=numberOfDoubleDots,this.commands=commands,isAbsolute&&commands.length>0&&isMatrixParams(commands[0]))throw new core["ɵRuntimeError"](4003,NG_DEV_MODE$a&&"Root segment cannot have matrix parameters");const cmdWithOutlet=commands.find(isCommandWithOutlets);if(cmdWithOutlet&&cmdWithOutlet!==router_last(commands))throw new core["ɵRuntimeError"](4004,NG_DEV_MODE$a&&"{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}function computeNavigation(commands){if("string"==typeof commands[0]&&1===commands.length&&"/"===commands[0])return new Navigation(!0,0,commands);let numberOfDoubleDots=0,isAbsolute=!1;const res=commands.reduce(((res,cmd,cmdIdx)=>{if("object"==typeof cmd&&null!=cmd){if(cmd.outlets){const outlets={};return forEach(cmd.outlets,((commands,name)=>{outlets[name]="string"==typeof commands?commands.split("/"):commands})),[...res,{outlets}]}if(cmd.segmentPath)return[...res,cmd.segmentPath]}return"string"!=typeof cmd?[...res,cmd]:0===cmdIdx?(cmd.split("/").forEach(((urlPart,partIndex)=>{0==partIndex&&"."===urlPart||(0==partIndex&&""===urlPart?isAbsolute=!0:".."===urlPart?numberOfDoubleDots++:""!=urlPart&&res.push(urlPart))})),res):[...res,cmd]}),[]);return new Navigation(isAbsolute,numberOfDoubleDots,res)}class Position{constructor(segmentGroup,processChildren,index){this.segmentGroup=segmentGroup,this.processChildren=processChildren,this.index=index}}function createPositionApplyingDoubleDots(group,index,numberOfDoubleDots){let g=group,ci=index,dd=numberOfDoubleDots;for(;dd>ci;){if(dd-=ci,g=g.parent,!g)throw new core["ɵRuntimeError"](4005,NG_DEV_MODE$a&&"Invalid number of '../'");ci=g.segments.length}return new Position(g,!1,ci-dd)}function updateSegmentGroup(segmentGroup,startIndex,commands){if(segmentGroup||(segmentGroup=new UrlSegmentGroup([],{})),0===segmentGroup.segments.length&&segmentGroup.hasChildren())return updateSegmentGroupChildren(segmentGroup,startIndex,commands);const m=function prefixedWith(segmentGroup,startIndex,commands){let currentCommandIndex=0,currentPathIndex=startIndex;const noMatch={match:!1,pathIndex:0,commandIndex:0};for(;currentPathIndex=commands.length)return noMatch;const path=segmentGroup.segments[currentPathIndex],command=commands[currentCommandIndex];if(isCommandWithOutlets(command))break;const curr=`${command}`,next=currentCommandIndex0&&void 0===curr)break;if(curr&&next&&"object"==typeof next&&void 0===next.outlets){if(!compare(curr,next,path))return noMatch;currentCommandIndex+=2}else{if(!compare(curr,{},path))return noMatch;currentCommandIndex++}currentPathIndex++}return{match:!0,pathIndex:currentPathIndex,commandIndex:currentCommandIndex}}(segmentGroup,startIndex,commands),slicedCommands=commands.slice(m.commandIndex);if(m.match&&m.pathIndex{"string"==typeof commands&&(commands=[commands]),null!==commands&&(children[outlet]=updateSegmentGroup(segmentGroup.children[outlet],startIndex,commands))})),forEach(segmentGroup.children,((child,childOutlet)=>{void 0===outlets[childOutlet]&&(children[childOutlet]=child)})),new UrlSegmentGroup(segmentGroup.segments,children)}}function createNewSegmentGroup(segmentGroup,startIndex,commands){const paths=segmentGroup.segments.slice(0,startIndex);let i=0;for(;i{"string"==typeof commands&&(commands=[commands]),null!==commands&&(children[outlet]=createNewSegmentGroup(new UrlSegmentGroup([],{}),0,commands))})),children}function stringify(params){const res={};return forEach(params,((v,k)=>res[k]=`${v}`)),res}function compare(path,params,segment){return path==segment.path&&shallowEqual(params,segment.parameters)}class RouterEvent{constructor(id,url){this.id=id,this.url=url}}class NavigationStart extends RouterEvent{constructor(id,url,navigationTrigger="imperative",restoredState=null){super(id,url),this.type=0,this.navigationTrigger=navigationTrigger,this.restoredState=restoredState}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class NavigationEnd extends RouterEvent{constructor(id,url,urlAfterRedirects){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class NavigationCancel extends RouterEvent{constructor(id,url,reason,code){super(id,url),this.reason=reason,this.code=code,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class NavigationSkipped extends RouterEvent{constructor(id,url,reason,code){super(id,url),this.reason=reason,this.code=code,this.type=16}}class NavigationError extends RouterEvent{constructor(id,url,error,target){super(id,url),this.error=error,this.target=target,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class RoutesRecognized extends RouterEvent{constructor(id,url,urlAfterRedirects,state){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class GuardsCheckStart extends RouterEvent{constructor(id,url,urlAfterRedirects,state){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class GuardsCheckEnd extends RouterEvent{constructor(id,url,urlAfterRedirects,state,shouldActivate){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.shouldActivate=shouldActivate,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class ResolveStart extends RouterEvent{constructor(id,url,urlAfterRedirects,state){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ResolveEnd extends RouterEvent{constructor(id,url,urlAfterRedirects,state){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class RouteConfigLoadStart{constructor(route){this.route=route,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class RouteConfigLoadEnd{constructor(route){this.route=route,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class ChildActivationStart{constructor(snapshot){this.snapshot=snapshot,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ChildActivationEnd{constructor(snapshot){this.snapshot=snapshot,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ActivationStart{constructor(snapshot){this.snapshot=snapshot,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ActivationEnd{constructor(snapshot){this.snapshot=snapshot,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Scroll{constructor(routerEvent,position,anchor){this.routerEvent=routerEvent,this.position=position,this.anchor=anchor,this.type=15}toString(){const pos=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${pos}')`}}const NG_DEV_MODE$9="undefined"==typeof ngDevMode||ngDevMode;class LegacyCreateUrlTree{createUrlTree(relativeTo,currentState,currentUrlTree,commands,queryParams,fragment){const tree=createUrlTree(relativeTo||currentState.root,currentUrlTree,commands,queryParams,fragment);if(NG_DEV_MODE$9){const treeFromSnapshotStrategy=(new CreateUrlTreeUsingSnapshot).createUrlTree(relativeTo,currentState,currentUrlTree,commands,queryParams,fragment);if(treeFromSnapshotStrategy.toString()!==tree.toString()){let warningString=`The navigation to ${tree.toString()} will instead go to ${treeFromSnapshotStrategy.toString()} in an upcoming version of Angular.`;relativeTo&&(warningString+=" `relativeTo` might need to be removed from the `UrlCreationOptions`."),tree._warnIfUsedForNavigation=warningString}}return tree}}LegacyCreateUrlTree.ɵfac=function LegacyCreateUrlTree_Factory(t){return new(t||LegacyCreateUrlTree)},LegacyCreateUrlTree.ɵprov=core["ɵɵdefineInjectable"]({token:LegacyCreateUrlTree,factory:LegacyCreateUrlTree.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](LegacyCreateUrlTree,[{type:core.Injectable}],null,null);class CreateUrlTreeUsingSnapshot{createUrlTree(relativeTo,currentState,currentUrlTree,commands,queryParams,fragment){let relativeToUrlSegmentGroup;try{relativeToUrlSegmentGroup=createSegmentGroupFromRoute(relativeTo?relativeTo.snapshot:currentState.snapshot.root)}catch(e){"string"==typeof commands[0]&&commands[0].startsWith("/")||(commands=[]),relativeToUrlSegmentGroup=currentUrlTree.root}return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup,commands,queryParams,fragment)}}CreateUrlTreeUsingSnapshot.ɵfac=function CreateUrlTreeUsingSnapshot_Factory(t){return new(t||CreateUrlTreeUsingSnapshot)},CreateUrlTreeUsingSnapshot.ɵprov=core["ɵɵdefineInjectable"]({token:CreateUrlTreeUsingSnapshot,factory:CreateUrlTreeUsingSnapshot.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](CreateUrlTreeUsingSnapshot,[{type:core.Injectable}],null,null);class CreateUrlTreeStrategy{}CreateUrlTreeStrategy.ɵfac=function CreateUrlTreeStrategy_Factory(t){return new(t||CreateUrlTreeStrategy)},CreateUrlTreeStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:CreateUrlTreeStrategy,factory:function(t){return LegacyCreateUrlTree.ɵfac(t)},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](CreateUrlTreeStrategy,[{type:core.Injectable,args:[{providedIn:"root",useClass:LegacyCreateUrlTree}]}],null,null);class Tree{constructor(root){this._root=root}get root(){return this._root.value}parent(t){const p=this.pathFromRoot(t);return p.length>1?p[p.length-2]:null}children(t){const n=findNode(t,this._root);return n?n.children.map((t=>t.value)):[]}firstChild(t){const n=findNode(t,this._root);return n&&n.children.length>0?n.children[0].value:null}siblings(t){const p=findPath(t,this._root);if(p.length<2)return[];return p[p.length-2].children.map((c=>c.value)).filter((cc=>cc!==t))}pathFromRoot(t){return findPath(t,this._root).map((s=>s.value))}}function findNode(value,node){if(value===node.value)return node;for(const child of node.children){const node=findNode(value,child);if(node)return node}return null}function findPath(value,node){if(value===node.value)return[node];for(const child of node.children){const path=findPath(value,child);if(path.length)return path.unshift(node),path}return[]}class TreeNode{constructor(value,children){this.value=value,this.children=children}toString(){return`TreeNode(${this.value})`}}function nodeChildrenAsMap(node){const map={};return node&&node.children.forEach((child=>map[child.value.outlet]=child)),map}class RouterState extends Tree{constructor(root,snapshot){super(root),this.snapshot=snapshot,setRouterState(this,root)}toString(){return this.snapshot.toString()}}function createEmptyState(urlTree,rootComponent){const snapshot=function createEmptyStateSnapshot(urlTree,rootComponent){const emptyParams={},emptyData={},emptyQueryParams={},fragment="",activated=new ActivatedRouteSnapshot([],emptyParams,emptyQueryParams,fragment,emptyData,PRIMARY_OUTLET,rootComponent,null,urlTree.root,-1,{});return new RouterStateSnapshot("",new TreeNode(activated,[]))}(urlTree,rootComponent),emptyUrl=new BehaviorSubject.X([new UrlSegment("",{})]),emptyParams=new BehaviorSubject.X({}),emptyData=new BehaviorSubject.X({}),emptyQueryParams=new BehaviorSubject.X({}),fragment=new BehaviorSubject.X(""),activated=new ActivatedRoute(emptyUrl,emptyParams,emptyQueryParams,fragment,emptyData,PRIMARY_OUTLET,rootComponent,snapshot.root);return activated.snapshot=snapshot.root,new RouterState(new TreeNode(activated,[]),snapshot)}class ActivatedRoute{constructor(url,params,queryParams,fragment,data,outlet,component,futureSnapshot){this.url=url,this.params=params,this.queryParams=queryParams,this.fragment=fragment,this.data=data,this.outlet=outlet,this.component=component,this.title=this.data?.pipe((0,map.U)((d=>d[RouteTitleKey])))??(0,of.of)(void 0),this._futureSnapshot=futureSnapshot}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe((0,map.U)((p=>convertToParamMap(p))))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe((0,map.U)((p=>convertToParamMap(p))))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function inheritedParamsDataResolve(route,paramsInheritanceStrategy="emptyOnly"){const pathFromRoot=route.pathFromRoot;let inheritingStartingFrom=0;if("always"!==paramsInheritanceStrategy)for(inheritingStartingFrom=pathFromRoot.length-1;inheritingStartingFrom>=1;){const current=pathFromRoot[inheritingStartingFrom],parent=pathFromRoot[inheritingStartingFrom-1];if(current.routeConfig&&""===current.routeConfig.path)inheritingStartingFrom--;else{if(parent.component)break;inheritingStartingFrom--}}return function flattenInherited(pathFromRoot){return pathFromRoot.reduce(((res,curr)=>({params:{...res.params,...curr.params},data:{...res.data,...curr.data},resolve:{...curr.data,...res.resolve,...curr.routeConfig?.data,...curr._resolvedData}})),{params:{},data:{},resolve:{}})}(pathFromRoot.slice(inheritingStartingFrom))}class ActivatedRouteSnapshot{get title(){return this.data?.[RouteTitleKey]}constructor(url,params,queryParams,fragment,data,outlet,component,routeConfig,urlSegment,lastPathIndex,resolve){this.url=url,this.params=params,this.queryParams=queryParams,this.fragment=fragment,this.data=data,this.outlet=outlet,this.component=component,this.routeConfig=routeConfig,this._urlSegment=urlSegment,this._lastPathIndex=lastPathIndex,this._resolve=resolve}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=convertToParamMap(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=convertToParamMap(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map((segment=>segment.toString())).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class RouterStateSnapshot extends Tree{constructor(url,root){super(root),this.url=url,setRouterState(this,root)}toString(){return serializeNode(this._root)}}function setRouterState(state,node){node.value._routerState=state,node.children.forEach((c=>setRouterState(state,c)))}function serializeNode(node){const c=node.children.length>0?` { ${node.children.map(serializeNode).join(", ")} } `:"";return`${node.value}${c}`}function advanceActivatedRoute(route){if(route.snapshot){const currentSnapshot=route.snapshot,nextSnapshot=route._futureSnapshot;route.snapshot=nextSnapshot,shallowEqual(currentSnapshot.queryParams,nextSnapshot.queryParams)||route.queryParams.next(nextSnapshot.queryParams),currentSnapshot.fragment!==nextSnapshot.fragment&&route.fragment.next(nextSnapshot.fragment),shallowEqual(currentSnapshot.params,nextSnapshot.params)||route.params.next(nextSnapshot.params),function shallowEqualArrays(a,b){if(a.length!==b.length)return!1;for(let i=0;ishallowEqual(a.parameters,bs[i].parameters)))}(a.url,b.url),parentsMismatch=!a.parent!=!b.parent;return equalUrlParams&&!parentsMismatch&&(!a.parent||equalParamsAndUrlSegments(a.parent,b.parent))}function createNode(routeReuseStrategy,curr,prevState){if(prevState&&routeReuseStrategy.shouldReuseRoute(curr.value,prevState.value.snapshot)){const value=prevState.value;value._futureSnapshot=curr.value;const children=function createOrReuseChildren(routeReuseStrategy,curr,prevState){return curr.children.map((child=>{for(const p of prevState.children)if(routeReuseStrategy.shouldReuseRoute(child.value,p.value.snapshot))return createNode(routeReuseStrategy,child,p);return createNode(routeReuseStrategy,child)}))}(routeReuseStrategy,curr,prevState);return new TreeNode(value,children)}{if(routeReuseStrategy.shouldAttach(curr.value)){const detachedRouteHandle=routeReuseStrategy.retrieve(curr.value);if(null!==detachedRouteHandle){const tree=detachedRouteHandle.route;return tree.value._futureSnapshot=curr.value,tree.children=curr.children.map((c=>createNode(routeReuseStrategy,c))),tree}}const value=function createActivatedRoute(c){return new ActivatedRoute(new BehaviorSubject.X(c.url),new BehaviorSubject.X(c.params),new BehaviorSubject.X(c.queryParams),new BehaviorSubject.X(c.fragment),new BehaviorSubject.X(c.data),c.outlet,c.component,c)}(curr.value),children=curr.children.map((c=>createNode(routeReuseStrategy,c)));return new TreeNode(value,children)}}const NAVIGATION_CANCELING_ERROR="ngNavigationCancelingError";function redirectingNavigationError(urlSerializer,redirect){const{redirectTo,navigationBehaviorOptions}=isUrlTree(redirect)?{redirectTo:redirect,navigationBehaviorOptions:void 0}:redirect,error=navigationCancelingError(ngDevMode&&`Redirecting to "${urlSerializer.serialize(redirectTo)}"`,0,redirect);return error.url=redirectTo,error.navigationBehaviorOptions=navigationBehaviorOptions,error}function navigationCancelingError(message,code,redirectUrl){const error=new Error("NavigationCancelingError: "+(message||""));return error[NAVIGATION_CANCELING_ERROR]=!0,error.cancellationCode=code,redirectUrl&&(error.url=redirectUrl),error}function isRedirectingNavigationCancelingError$1(error){return isNavigationCancelingError$1(error)&&isUrlTree(error.url)}function isNavigationCancelingError$1(error){return error&&error[NAVIGATION_CANCELING_ERROR]}class OutletContext{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new ChildrenOutletContexts,this.attachRef=null}}class ChildrenOutletContexts{constructor(){this.contexts=new Map}onChildOutletCreated(childName,outlet){const context=this.getOrCreateContext(childName);context.outlet=outlet,this.contexts.set(childName,context)}onChildOutletDestroyed(childName){const context=this.getContext(childName);context&&(context.outlet=null,context.attachRef=null)}onOutletDeactivated(){const contexts=this.contexts;return this.contexts=new Map,contexts}onOutletReAttached(contexts){this.contexts=contexts}getOrCreateContext(childName){let context=this.getContext(childName);return context||(context=new OutletContext,this.contexts.set(childName,context)),context}getContext(childName){return this.contexts.get(childName)||null}}ChildrenOutletContexts.ɵfac=function ChildrenOutletContexts_Factory(t){return new(t||ChildrenOutletContexts)},ChildrenOutletContexts.ɵprov=core["ɵɵdefineInjectable"]({token:ChildrenOutletContexts,factory:ChildrenOutletContexts.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](ChildrenOutletContexts,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);const NG_DEV_MODE$8="undefined"==typeof ngDevMode||ngDevMode;class RouterOutlet{constructor(){this.activated=null,this._activatedRoute=null,this.name=PRIMARY_OUTLET,this.activateEvents=new core.EventEmitter,this.deactivateEvents=new core.EventEmitter,this.attachEvents=new core.EventEmitter,this.detachEvents=new core.EventEmitter,this.parentContexts=(0,core.inject)(ChildrenOutletContexts),this.location=(0,core.inject)(core.ViewContainerRef),this.changeDetector=(0,core.inject)(core.ChangeDetectorRef),this.environmentInjector=(0,core.inject)(core.EnvironmentInjector)}ngOnChanges(changes){if(changes.name){const{firstChange,previousValue}=changes.name;if(firstChange)return;this.isTrackedInParentContexts(previousValue)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(previousValue)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name)}isTrackedInParentContexts(outletName){return this.parentContexts.getContext(outletName)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const context=this.parentContexts.getContext(this.name);context?.route&&(context.attachRef?this.attach(context.attachRef,context.route):this.activateWith(context.route,context.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new core["ɵRuntimeError"](4012,NG_DEV_MODE$8&&"Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new core["ɵRuntimeError"](4012,NG_DEV_MODE$8&&"Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new core["ɵRuntimeError"](4012,NG_DEV_MODE$8&&"Outlet is not activated");this.location.detach();const cmp=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(cmp.instance),cmp}attach(ref,activatedRoute){this.activated=ref,this._activatedRoute=activatedRoute,this.location.insert(ref.hostView),this.attachEvents.emit(ref.instance)}deactivate(){if(this.activated){const c=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(c)}}activateWith(activatedRoute,resolverOrInjector){if(this.isActivated)throw new core["ɵRuntimeError"](4013,NG_DEV_MODE$8&&"Cannot activate an already activated outlet");this._activatedRoute=activatedRoute;const location=this.location,component=activatedRoute.snapshot.component,childContexts=this.parentContexts.getOrCreateContext(this.name).children,injector=new OutletInjector(activatedRoute,childContexts,location.injector);if(resolverOrInjector&&function isComponentFactoryResolver(item){return!!item.resolveComponentFactory}(resolverOrInjector)){const factory=resolverOrInjector.resolveComponentFactory(component);this.activated=location.createComponent(factory,location.length,injector)}else{const environmentInjector=resolverOrInjector??this.environmentInjector;this.activated=location.createComponent(component,{index:location.length,injector,environmentInjector})}this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}RouterOutlet.ɵfac=function RouterOutlet_Factory(t){return new(t||RouterOutlet)},RouterOutlet.ɵdir=core["ɵɵdefineDirective"]({type:RouterOutlet,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[core["ɵɵNgOnChangesFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterOutlet,[{type:core.Directive,args:[{selector:"router-outlet",exportAs:"outlet",standalone:!0}]}],null,{name:[{type:core.Input}],activateEvents:[{type:core.Output,args:["activate"]}],deactivateEvents:[{type:core.Output,args:["deactivate"]}],attachEvents:[{type:core.Output,args:["attach"]}],detachEvents:[{type:core.Output,args:["detach"]}]});class OutletInjector{constructor(route,childContexts,parent){this.route=route,this.childContexts=childContexts,this.parent=parent}get(token,notFoundValue){return token===ActivatedRoute?this.route:token===ChildrenOutletContexts?this.childContexts:this.parent.get(token,notFoundValue)}}class ɵEmptyOutletComponent{}function getOrCreateRouteInjectorIfNeeded(route,currentInjector){return route.providers&&!route._injector&&(route._injector=(0,core.createEnvironmentInjector)(route.providers,currentInjector,`Route: ${route.path}`)),route._injector??currentInjector}function validateConfig(config,parentPath="",requireStandaloneComponents=!1){for(let i=0;igetOutlet(r)===outletName));return sortedConfig.push(...routes.filter((r=>getOutlet(r)!==outletName))),sortedConfig}function getClosestRouteInjector(snapshot){if(!snapshot)return null;if(snapshot.routeConfig?._injector)return snapshot.routeConfig._injector;for(let s=snapshot.parent;s;s=s.parent){const route=s.routeConfig;if(route?._loadedInjector)return route._loadedInjector;if(route?._injector)return route._injector}return null}ɵEmptyOutletComponent.ɵfac=function ɵEmptyOutletComponent_Factory(t){return new(t||ɵEmptyOutletComponent)},ɵEmptyOutletComponent.ɵcmp=core["ɵɵdefineComponent"]({type:ɵEmptyOutletComponent,selectors:[["ng-component"]],standalone:!0,features:[core["ɵɵStandaloneFeature"]],decls:1,vars:0,template:function ɵEmptyOutletComponent_Template(rf,ctx){1&rf&&core["ɵɵelement"](0,"router-outlet")},dependencies:[RouterOutlet],encapsulation:2}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](ɵEmptyOutletComponent,[{type:core.Component,args:[{template:"",imports:[RouterOutlet],standalone:!0}]}],null,null);class ActivateRoutes{constructor(routeReuseStrategy,futureState,currState,forwardEvent){this.routeReuseStrategy=routeReuseStrategy,this.futureState=futureState,this.currState=currState,this.forwardEvent=forwardEvent}activate(parentContexts){const futureRoot=this.futureState._root,currRoot=this.currState?this.currState._root:null;this.deactivateChildRoutes(futureRoot,currRoot,parentContexts),advanceActivatedRoute(this.futureState.root),this.activateChildRoutes(futureRoot,currRoot,parentContexts)}deactivateChildRoutes(futureNode,currNode,contexts){const children=nodeChildrenAsMap(currNode);futureNode.children.forEach((futureChild=>{const childOutletName=futureChild.value.outlet;this.deactivateRoutes(futureChild,children[childOutletName],contexts),delete children[childOutletName]})),forEach(children,((v,childName)=>{this.deactivateRouteAndItsChildren(v,contexts)}))}deactivateRoutes(futureNode,currNode,parentContext){const future=futureNode.value,curr=currNode?currNode.value:null;if(future===curr)if(future.component){const context=parentContext.getContext(future.outlet);context&&this.deactivateChildRoutes(futureNode,currNode,context.children)}else this.deactivateChildRoutes(futureNode,currNode,parentContext);else curr&&this.deactivateRouteAndItsChildren(currNode,parentContext)}deactivateRouteAndItsChildren(route,parentContexts){route.value.component&&this.routeReuseStrategy.shouldDetach(route.value.snapshot)?this.detachAndStoreRouteSubtree(route,parentContexts):this.deactivateRouteAndOutlet(route,parentContexts)}detachAndStoreRouteSubtree(route,parentContexts){const context=parentContexts.getContext(route.value.outlet),contexts=context&&route.value.component?context.children:parentContexts,children=nodeChildrenAsMap(route);for(const childOutlet of Object.keys(children))this.deactivateRouteAndItsChildren(children[childOutlet],contexts);if(context&&context.outlet){const componentRef=context.outlet.detach(),contexts=context.children.onOutletDeactivated();this.routeReuseStrategy.store(route.value.snapshot,{componentRef,route,contexts})}}deactivateRouteAndOutlet(route,parentContexts){const context=parentContexts.getContext(route.value.outlet),contexts=context&&route.value.component?context.children:parentContexts,children=nodeChildrenAsMap(route);for(const childOutlet of Object.keys(children))this.deactivateRouteAndItsChildren(children[childOutlet],contexts);context&&(context.outlet&&(context.outlet.deactivate(),context.children.onOutletDeactivated()),context.attachRef=null,context.resolver=null,context.route=null)}activateChildRoutes(futureNode,currNode,contexts){const children=nodeChildrenAsMap(currNode);futureNode.children.forEach((c=>{this.activateRoutes(c,children[c.value.outlet],contexts),this.forwardEvent(new ActivationEnd(c.value.snapshot))})),futureNode.children.length&&this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot))}activateRoutes(futureNode,currNode,parentContexts){const future=futureNode.value,curr=currNode?currNode.value:null;if(advanceActivatedRoute(future),future===curr)if(future.component){const context=parentContexts.getOrCreateContext(future.outlet);this.activateChildRoutes(futureNode,currNode,context.children)}else this.activateChildRoutes(futureNode,currNode,parentContexts);else if(future.component){const context=parentContexts.getOrCreateContext(future.outlet);if(this.routeReuseStrategy.shouldAttach(future.snapshot)){const stored=this.routeReuseStrategy.retrieve(future.snapshot);this.routeReuseStrategy.store(future.snapshot,null),context.children.onOutletReAttached(stored.contexts),context.attachRef=stored.componentRef,context.route=stored.route.value,context.outlet&&context.outlet.attach(stored.componentRef,stored.route.value),advanceActivatedRoute(stored.route.value),this.activateChildRoutes(futureNode,null,context.children)}else{const injector=getClosestRouteInjector(future.snapshot),cmpFactoryResolver=injector?.get(core.ComponentFactoryResolver)??null;context.attachRef=null,context.route=future,context.resolver=cmpFactoryResolver,context.injector=injector,context.outlet&&context.outlet.activateWith(future,context.injector),this.activateChildRoutes(futureNode,null,context.children)}}else this.activateChildRoutes(futureNode,null,parentContexts)}}class CanActivate{constructor(path){this.path=path,this.route=this.path[this.path.length-1]}}class CanDeactivate{constructor(component,route){this.component=component,this.route=route}}function getAllRouteGuards(future,curr,parentContexts){const futureRoot=future._root;return getChildRouteGuards(futureRoot,curr?curr._root:null,parentContexts,[futureRoot.value])}function getTokenOrFunctionIdentity(tokenOrFunction,injector){const NOT_FOUND=Symbol(),result=injector.get(tokenOrFunction,NOT_FOUND);return result===NOT_FOUND?"function"!=typeof tokenOrFunction||(0,core["ɵisInjectable"])(tokenOrFunction)?injector.get(tokenOrFunction):tokenOrFunction:result}function getChildRouteGuards(futureNode,currNode,contexts,futurePath,checks={canDeactivateChecks:[],canActivateChecks:[]}){const prevChildren=nodeChildrenAsMap(currNode);return futureNode.children.forEach((c=>{!function getRouteGuards(futureNode,currNode,parentContexts,futurePath,checks={canDeactivateChecks:[],canActivateChecks:[]}){const future=futureNode.value,curr=currNode?currNode.value:null,context=parentContexts?parentContexts.getContext(futureNode.value.outlet):null;if(curr&&future.routeConfig===curr.routeConfig){const shouldRun=function shouldRunGuardsAndResolvers(curr,future,mode){if("function"==typeof mode)return mode(curr,future);switch(mode){case"pathParamsChange":return!equalPath(curr.url,future.url);case"pathParamsOrQueryParamsChange":return!equalPath(curr.url,future.url)||!shallowEqual(curr.queryParams,future.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!equalParamsAndUrlSegments(curr,future)||!shallowEqual(curr.queryParams,future.queryParams);default:return!equalParamsAndUrlSegments(curr,future)}}(curr,future,future.routeConfig.runGuardsAndResolvers);shouldRun?checks.canActivateChecks.push(new CanActivate(futurePath)):(future.data=curr.data,future._resolvedData=curr._resolvedData),future.component?getChildRouteGuards(futureNode,currNode,context?context.children:null,futurePath,checks):getChildRouteGuards(futureNode,currNode,parentContexts,futurePath,checks),shouldRun&&context&&context.outlet&&context.outlet.isActivated&&checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component,curr))}else curr&&deactivateRouteAndItsChildren(currNode,context,checks),checks.canActivateChecks.push(new CanActivate(futurePath)),future.component?getChildRouteGuards(futureNode,null,context?context.children:null,futurePath,checks):getChildRouteGuards(futureNode,null,parentContexts,futurePath,checks);return checks}(c,prevChildren[c.value.outlet],contexts,futurePath.concat([c.value]),checks),delete prevChildren[c.value.outlet]})),forEach(prevChildren,((v,k)=>deactivateRouteAndItsChildren(v,contexts.getContext(k),checks))),checks}function deactivateRouteAndItsChildren(route,context,checks){const children=nodeChildrenAsMap(route),r=route.value;forEach(children,((node,childName)=>{r.component?deactivateRouteAndItsChildren(node,context?context.children.getContext(childName):null,checks):deactivateRouteAndItsChildren(node,context,checks)})),r.component&&context&&context.outlet&&context.outlet.isActivated?checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component,r)):checks.canDeactivateChecks.push(new CanDeactivate(null,r))}function isFunction(v){return"function"==typeof v}function isEmptyError(e){return e instanceof EmptyError.K||"EmptyError"===e?.name}const INITIAL_VALUE=Symbol("INITIAL_VALUE");function prioritizedGuardValue(){return(0,switchMap.w)((obs=>(0,combineLatest.a)(obs.map((o=>o.pipe((0,take.q)(1),(0,startWith.O)(INITIAL_VALUE))))).pipe((0,map.U)((results=>{for(const result of results)if(!0!==result){if(result===INITIAL_VALUE)return INITIAL_VALUE;if(!1===result||result instanceof UrlTree)return result}return!0})),(0,filter.h)((item=>item!==INITIAL_VALUE)),(0,take.q)(1))))}function checkGuards(injector,forwardEvent){return(0,mergeMap.z)((t=>{const{targetSnapshot,currentSnapshot,guards:{canActivateChecks,canDeactivateChecks}}=t;return 0===canDeactivateChecks.length&&0===canActivateChecks.length?(0,of.of)({...t,guardsResult:!0}):function runCanDeactivateChecks(checks,futureRSS,currRSS,injector){return(0,from.D)(checks).pipe((0,mergeMap.z)((check=>function runCanDeactivate(component,currARS,currRSS,futureRSS,injector){const canDeactivate=currARS&&currARS.routeConfig?currARS.routeConfig.canDeactivate:null;if(!canDeactivate||0===canDeactivate.length)return(0,of.of)(!0);const canDeactivateObservables=canDeactivate.map((c=>{const closestInjector=getClosestRouteInjector(currARS)??injector,guard=getTokenOrFunctionIdentity(c,closestInjector);return wrapIntoObservable(function isCanDeactivate(guard){return guard&&isFunction(guard.canDeactivate)}(guard)?guard.canDeactivate(component,currARS,currRSS,futureRSS):closestInjector.runInContext((()=>guard(component,currARS,currRSS,futureRSS)))).pipe((0,first.P)())}));return(0,of.of)(canDeactivateObservables).pipe(prioritizedGuardValue())}(check.component,check.route,currRSS,futureRSS,injector))),(0,first.P)((result=>!0!==result),!0))}(canDeactivateChecks,targetSnapshot,currentSnapshot,injector).pipe((0,mergeMap.z)((canDeactivate=>canDeactivate&&function isBoolean(v){return"boolean"==typeof v}(canDeactivate)?function runCanActivateChecks(futureSnapshot,checks,injector,forwardEvent){return(0,from.D)(checks).pipe((0,concatMap.b)((check=>(0,concat.z)(function fireChildActivationStart(snapshot,forwardEvent){null!==snapshot&&forwardEvent&&forwardEvent(new ChildActivationStart(snapshot));return(0,of.of)(!0)}(check.route.parent,forwardEvent),function fireActivationStart(snapshot,forwardEvent){null!==snapshot&&forwardEvent&&forwardEvent(new ActivationStart(snapshot));return(0,of.of)(!0)}(check.route,forwardEvent),function runCanActivateChild(futureRSS,path,injector){const futureARS=path[path.length-1],canActivateChildGuardsMapped=path.slice(0,path.length-1).reverse().map((p=>function getCanActivateChild(p){const canActivateChild=p.routeConfig?p.routeConfig.canActivateChild:null;return canActivateChild&&0!==canActivateChild.length?{node:p,guards:canActivateChild}:null}(p))).filter((_=>null!==_)).map((d=>(0,defer.P)((()=>{const guardsMapped=d.guards.map((canActivateChild=>{const closestInjector=getClosestRouteInjector(d.node)??injector,guard=getTokenOrFunctionIdentity(canActivateChild,closestInjector);return wrapIntoObservable(function isCanActivateChild(guard){return guard&&isFunction(guard.canActivateChild)}(guard)?guard.canActivateChild(futureARS,futureRSS):closestInjector.runInContext((()=>guard(futureARS,futureRSS)))).pipe((0,first.P)())}));return(0,of.of)(guardsMapped).pipe(prioritizedGuardValue())}))));return(0,of.of)(canActivateChildGuardsMapped).pipe(prioritizedGuardValue())}(futureSnapshot,check.path,injector),function runCanActivate(futureRSS,futureARS,injector){const canActivate=futureARS.routeConfig?futureARS.routeConfig.canActivate:null;if(!canActivate||0===canActivate.length)return(0,of.of)(!0);const canActivateObservables=canActivate.map((canActivate=>(0,defer.P)((()=>{const closestInjector=getClosestRouteInjector(futureARS)??injector,guard=getTokenOrFunctionIdentity(canActivate,closestInjector);return wrapIntoObservable(function isCanActivate(guard){return guard&&isFunction(guard.canActivate)}(guard)?guard.canActivate(futureARS,futureRSS):closestInjector.runInContext((()=>guard(futureARS,futureRSS)))).pipe((0,first.P)())}))));return(0,of.of)(canActivateObservables).pipe(prioritizedGuardValue())}(futureSnapshot,check.route,injector)))),(0,first.P)((result=>!0!==result),!0))}(targetSnapshot,canActivateChecks,injector,forwardEvent):(0,of.of)(canDeactivate))),(0,map.U)((guardsResult=>({...t,guardsResult}))))}))}function runCanLoadGuards(injector,route,segments,urlSerializer){const canLoad=route.canLoad;if(void 0===canLoad||0===canLoad.length)return(0,of.of)(!0);const canLoadObservables=canLoad.map((injectionToken=>{const guard=getTokenOrFunctionIdentity(injectionToken,injector);return wrapIntoObservable(function isCanLoad(guard){return guard&&isFunction(guard.canLoad)}(guard)?guard.canLoad(route,segments):injector.runInContext((()=>guard(route,segments))))}));return(0,of.of)(canLoadObservables).pipe(prioritizedGuardValue(),redirectIfUrlTree(urlSerializer))}function redirectIfUrlTree(urlSerializer){return(0,pipe.z)((0,tap.b)((result=>{if(isUrlTree(result))throw redirectingNavigationError(urlSerializer,result)})),(0,map.U)((result=>!0===result)))}function runCanMatchGuards(injector,route,segments,urlSerializer){const canMatch=route.canMatch;if(!canMatch||0===canMatch.length)return(0,of.of)(!0);const canMatchObservables=canMatch.map((injectionToken=>{const guard=getTokenOrFunctionIdentity(injectionToken,injector);return wrapIntoObservable(function isCanMatch(guard){return guard&&isFunction(guard.canMatch)}(guard)?guard.canMatch(route,segments):injector.runInContext((()=>guard(route,segments))))}));return(0,of.of)(canMatchObservables).pipe(prioritizedGuardValue(),redirectIfUrlTree(urlSerializer))}const noMatch$1={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function matchWithChecks(segmentGroup,route,segments,injector,urlSerializer){const result=match(segmentGroup,route,segments);return result.matched?runCanMatchGuards(injector=getOrCreateRouteInjectorIfNeeded(route,injector),route,segments,urlSerializer).pipe((0,map.U)((v=>!0===v?result:{...noMatch$1}))):(0,of.of)(result)}function match(segmentGroup,route,segments){if(""===route.path)return"full"===route.pathMatch&&(segmentGroup.hasChildren()||segments.length>0)?{...noMatch$1}:{matched:!0,consumedSegments:[],remainingSegments:segments,parameters:{},positionalParamSegments:{}};const res=(route.matcher||defaultUrlMatcher)(segments,segmentGroup,route);if(!res)return{...noMatch$1};const posParams={};forEach(res.posParams,((v,k)=>{posParams[k]=v.path}));const parameters=res.consumed.length>0?{...posParams,...res.consumed[res.consumed.length-1].parameters}:posParams;return{matched:!0,consumedSegments:res.consumed,remainingSegments:segments.slice(res.consumed.length),parameters,positionalParamSegments:res.posParams??{}}}function split(segmentGroup,consumedSegments,slicedSegments,config){if(slicedSegments.length>0&&function containsEmptyPathMatchesWithNamedOutlets(segmentGroup,slicedSegments,routes){return routes.some((r=>emptyPathMatch(segmentGroup,slicedSegments,r)&&getOutlet(r)!==PRIMARY_OUTLET))}(segmentGroup,slicedSegments,config)){const s=new UrlSegmentGroup(consumedSegments,function createChildrenForEmptyPaths(segmentGroup,consumedSegments,routes,primarySegment){const res={};res[PRIMARY_OUTLET]=primarySegment,primarySegment._sourceSegment=segmentGroup,primarySegment._segmentIndexShift=consumedSegments.length;for(const r of routes)if(""===r.path&&getOutlet(r)!==PRIMARY_OUTLET){const s=new UrlSegmentGroup([],{});s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,res[getOutlet(r)]=s}return res}(segmentGroup,consumedSegments,config,new UrlSegmentGroup(slicedSegments,segmentGroup.children)));return s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,{segmentGroup:s,slicedSegments:[]}}if(0===slicedSegments.length&&function containsEmptyPathMatches(segmentGroup,slicedSegments,routes){return routes.some((r=>emptyPathMatch(segmentGroup,slicedSegments,r)))}(segmentGroup,slicedSegments,config)){const s=new UrlSegmentGroup(segmentGroup.segments,function addEmptyPathsToChildrenIfNeeded(segmentGroup,consumedSegments,slicedSegments,routes,children){const res={};for(const r of routes)if(emptyPathMatch(segmentGroup,slicedSegments,r)&&!children[getOutlet(r)]){const s=new UrlSegmentGroup([],{});s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,res[getOutlet(r)]=s}return{...children,...res}}(segmentGroup,consumedSegments,slicedSegments,config,segmentGroup.children));return s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,{segmentGroup:s,slicedSegments}}const s=new UrlSegmentGroup(segmentGroup.segments,segmentGroup.children);return s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,{segmentGroup:s,slicedSegments}}function emptyPathMatch(segmentGroup,slicedSegments,r){return(!(segmentGroup.hasChildren()||slicedSegments.length>0)||"full"!==r.pathMatch)&&""===r.path}function isImmediateMatch(route,rawSegment,segments,outlet){return!!(getOutlet(route)===outlet||outlet!==PRIMARY_OUTLET&&emptyPathMatch(rawSegment,segments,route))&&("**"===route.path||match(rawSegment,route,segments).matched)}function noLeftoversInUrl(segmentGroup,segments,outlet){return 0===segments.length&&!segmentGroup.children[outlet]}const NG_DEV_MODE$7="undefined"==typeof ngDevMode||ngDevMode;class NoMatch$1{constructor(segmentGroup){this.segmentGroup=segmentGroup||null}}class AbsoluteRedirect{constructor(urlTree){this.urlTree=urlTree}}function noMatch(segmentGroup){return(0,throwError._)(new NoMatch$1(segmentGroup))}function absoluteRedirect(newTree){return(0,throwError._)(new AbsoluteRedirect(newTree))}class ApplyRedirects{constructor(injector,configLoader,urlSerializer,urlTree,config){this.injector=injector,this.configLoader=configLoader,this.urlSerializer=urlSerializer,this.urlTree=urlTree,this.config=config,this.allowRedirects=!0}apply(){const splitGroup=split(this.urlTree.root,[],[],this.config).segmentGroup,rootSegmentGroup=new UrlSegmentGroup(splitGroup.segments,splitGroup.children);return this.expandSegmentGroup(this.injector,this.config,rootSegmentGroup,PRIMARY_OUTLET).pipe((0,map.U)((rootSegmentGroup=>this.createUrlTree(squashSegmentGroup(rootSegmentGroup),this.urlTree.queryParams,this.urlTree.fragment)))).pipe((0,catchError.K)((e=>{if(e instanceof AbsoluteRedirect)return this.allowRedirects=!1,this.match(e.urlTree);if(e instanceof NoMatch$1)throw this.noMatchError(e);throw e})))}match(tree){return this.expandSegmentGroup(this.injector,this.config,tree.root,PRIMARY_OUTLET).pipe((0,map.U)((rootSegmentGroup=>this.createUrlTree(squashSegmentGroup(rootSegmentGroup),tree.queryParams,tree.fragment)))).pipe((0,catchError.K)((e=>{if(e instanceof NoMatch$1)throw this.noMatchError(e);throw e})))}noMatchError(e){return new core["ɵRuntimeError"](4002,NG_DEV_MODE$7&&`Cannot match any routes. URL Segment: '${e.segmentGroup}'`)}createUrlTree(rootCandidate,queryParams,fragment){const root=createRoot(rootCandidate);return new UrlTree(root,queryParams,fragment)}expandSegmentGroup(injector,routes,segmentGroup,outlet){return 0===segmentGroup.segments.length&&segmentGroup.hasChildren()?this.expandChildren(injector,routes,segmentGroup).pipe((0,map.U)((children=>new UrlSegmentGroup([],children)))):this.expandSegment(injector,segmentGroup,routes,segmentGroup.segments,outlet,!0)}expandChildren(injector,routes,segmentGroup){const childOutlets=[];for(const child of Object.keys(segmentGroup.children))"primary"===child?childOutlets.unshift(child):childOutlets.push(child);return(0,from.D)(childOutlets).pipe((0,concatMap.b)((childOutlet=>{const child=segmentGroup.children[childOutlet],sortedRoutes=sortByMatchingOutlets(routes,childOutlet);return this.expandSegmentGroup(injector,sortedRoutes,child,childOutlet).pipe((0,map.U)((s=>({segment:s,outlet:childOutlet}))))})),scan(((children,expandedChild)=>(children[expandedChild.outlet]=expandedChild.segment,children)),{}),last())}expandSegment(injector,segmentGroup,routes,segments,outlet,allowRedirects){return(0,from.D)(routes).pipe((0,concatMap.b)((r=>this.expandSegmentAgainstRoute(injector,segmentGroup,routes,r,segments,outlet,allowRedirects).pipe((0,catchError.K)((e=>{if(e instanceof NoMatch$1)return(0,of.of)(null);throw e}))))),(0,first.P)((s=>!!s)),(0,catchError.K)(((e,_)=>{if(isEmptyError(e))return noLeftoversInUrl(segmentGroup,segments,outlet)?(0,of.of)(new UrlSegmentGroup([],{})):noMatch(segmentGroup);throw e})))}expandSegmentAgainstRoute(injector,segmentGroup,routes,route,paths,outlet,allowRedirects){return isImmediateMatch(route,segmentGroup,paths,outlet)?void 0===route.redirectTo?this.matchSegmentAgainstRoute(injector,segmentGroup,route,paths,outlet):allowRedirects&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(injector,segmentGroup,routes,route,paths,outlet):noMatch(segmentGroup):noMatch(segmentGroup)}expandSegmentAgainstRouteUsingRedirect(injector,segmentGroup,routes,route,segments,outlet){return"**"===route.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(injector,routes,route,outlet):this.expandRegularSegmentAgainstRouteUsingRedirect(injector,segmentGroup,routes,route,segments,outlet)}expandWildCardWithParamsAgainstRouteUsingRedirect(injector,routes,route,outlet){const newTree=this.applyRedirectCommands([],route.redirectTo,{});return route.redirectTo.startsWith("/")?absoluteRedirect(newTree):this.lineralizeSegments(route,newTree).pipe((0,mergeMap.z)((newSegments=>{const group=new UrlSegmentGroup(newSegments,{});return this.expandSegment(injector,group,routes,newSegments,outlet,!1)})))}expandRegularSegmentAgainstRouteUsingRedirect(injector,segmentGroup,routes,route,segments,outlet){const{matched,consumedSegments,remainingSegments,positionalParamSegments}=match(segmentGroup,route,segments);if(!matched)return noMatch(segmentGroup);const newTree=this.applyRedirectCommands(consumedSegments,route.redirectTo,positionalParamSegments);return route.redirectTo.startsWith("/")?absoluteRedirect(newTree):this.lineralizeSegments(route,newTree).pipe((0,mergeMap.z)((newSegments=>this.expandSegment(injector,segmentGroup,routes,newSegments.concat(remainingSegments),outlet,!1))))}matchSegmentAgainstRoute(injector,rawSegmentGroup,route,segments,outlet){if("**"===route.path){if(injector=getOrCreateRouteInjectorIfNeeded(route,injector),route.loadChildren){return(route._loadedRoutes?(0,of.of)({routes:route._loadedRoutes,injector:route._loadedInjector}):this.configLoader.loadChildren(injector,route)).pipe((0,map.U)((cfg=>(route._loadedRoutes=cfg.routes,route._loadedInjector=cfg.injector,new UrlSegmentGroup(segments,{})))))}return(0,of.of)(new UrlSegmentGroup(segments,{}))}return matchWithChecks(rawSegmentGroup,route,segments,injector,this.urlSerializer).pipe((0,switchMap.w)((({matched,consumedSegments,remainingSegments})=>{if(!matched)return noMatch(rawSegmentGroup);injector=route._injector??injector;return this.getChildConfig(injector,route,segments).pipe((0,mergeMap.z)((routerConfig=>{const childInjector=routerConfig.injector??injector,childConfig=routerConfig.routes,{segmentGroup:splitSegmentGroup,slicedSegments}=split(rawSegmentGroup,consumedSegments,remainingSegments,childConfig),segmentGroup=new UrlSegmentGroup(splitSegmentGroup.segments,splitSegmentGroup.children);if(0===slicedSegments.length&&segmentGroup.hasChildren()){return this.expandChildren(childInjector,childConfig,segmentGroup).pipe((0,map.U)((children=>new UrlSegmentGroup(consumedSegments,children))))}if(0===childConfig.length&&0===slicedSegments.length)return(0,of.of)(new UrlSegmentGroup(consumedSegments,{}));const matchedOnOutlet=getOutlet(route)===outlet;return this.expandSegment(childInjector,segmentGroup,childConfig,slicedSegments,matchedOnOutlet?PRIMARY_OUTLET:outlet,!0).pipe((0,map.U)((cs=>new UrlSegmentGroup(consumedSegments.concat(cs.segments),cs.children))))})))})))}getChildConfig(injector,route,segments){return route.children?(0,of.of)({routes:route.children,injector}):route.loadChildren?void 0!==route._loadedRoutes?(0,of.of)({routes:route._loadedRoutes,injector:route._loadedInjector}):runCanLoadGuards(injector,route,segments,this.urlSerializer).pipe((0,mergeMap.z)((shouldLoadResult=>shouldLoadResult?this.configLoader.loadChildren(injector,route).pipe((0,tap.b)((cfg=>{route._loadedRoutes=cfg.routes,route._loadedInjector=cfg.injector}))):function canLoadFails(route){return(0,throwError._)(navigationCancelingError(NG_DEV_MODE$7&&`Cannot load children because the guard of the route "path: '${route.path}'" returned false`,3))}(route)))):(0,of.of)({routes:[],injector})}lineralizeSegments(route,urlTree){let res=[],c=urlTree.root;for(;;){if(res=res.concat(c.segments),0===c.numberOfChildren)return(0,of.of)(res);if(c.numberOfChildren>1||!c.children[PRIMARY_OUTLET])return redirectTo=route.redirectTo,(0,throwError._)(new core["ɵRuntimeError"](4e3,NG_DEV_MODE$7&&`Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`));c=c.children[PRIMARY_OUTLET]}var redirectTo}applyRedirectCommands(segments,redirectTo,posParams){return this.applyRedirectCreateUrlTree(redirectTo,this.urlSerializer.parse(redirectTo),segments,posParams)}applyRedirectCreateUrlTree(redirectTo,urlTree,segments,posParams){const newRoot=this.createSegmentGroup(redirectTo,urlTree.root,segments,posParams);return new UrlTree(newRoot,this.createQueryParams(urlTree.queryParams,this.urlTree.queryParams),urlTree.fragment)}createQueryParams(redirectToParams,actualParams){const res={};return forEach(redirectToParams,((v,k)=>{if("string"==typeof v&&v.startsWith(":")){const sourceName=v.substring(1);res[k]=actualParams[sourceName]}else res[k]=v})),res}createSegmentGroup(redirectTo,group,segments,posParams){const updatedSegments=this.createSegments(redirectTo,group.segments,segments,posParams);let children={};return forEach(group.children,((child,name)=>{children[name]=this.createSegmentGroup(redirectTo,child,segments,posParams)})),new UrlSegmentGroup(updatedSegments,children)}createSegments(redirectTo,redirectToSegments,actualSegments,posParams){return redirectToSegments.map((s=>s.path.startsWith(":")?this.findPosParam(redirectTo,s,posParams):this.findOrReturn(s,actualSegments)))}findPosParam(redirectTo,redirectToUrlSegment,posParams){const pos=posParams[redirectToUrlSegment.path.substring(1)];if(!pos)throw new core["ɵRuntimeError"](4001,NG_DEV_MODE$7&&`Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);return pos}findOrReturn(redirectToUrlSegment,actualSegments){let idx=0;for(const s of actualSegments){if(s.path===redirectToUrlSegment.path)return actualSegments.splice(idx),s;idx++}return redirectToUrlSegment}}function applyRedirects(environmentInjector,configLoader,urlSerializer,config){return(0,switchMap.w)((t=>function applyRedirects$1(injector,configLoader,urlSerializer,urlTree,config){return new ApplyRedirects(injector,configLoader,urlSerializer,urlTree,config).apply()}(environmentInjector,configLoader,urlSerializer,t.extractedUrl,config).pipe((0,map.U)((urlAfterRedirects=>({...t,urlAfterRedirects}))))))}const NG_DEV_MODE$6="undefined"==typeof ngDevMode||!!ngDevMode;class NoMatch{}function recognize$1(injector,rootComponentType,config,urlTree,url,urlSerializer,paramsInheritanceStrategy="emptyOnly"){return new Recognizer(injector,rootComponentType,config,urlTree,url,paramsInheritanceStrategy,urlSerializer).recognize().pipe((0,switchMap.w)((result=>null===result?function newObservableError(e){return new Observable.y((obs=>obs.error(e)))}(new NoMatch):(0,of.of)(result))))}class Recognizer{constructor(injector,rootComponentType,config,urlTree,url,paramsInheritanceStrategy,urlSerializer){this.injector=injector,this.rootComponentType=rootComponentType,this.config=config,this.urlTree=urlTree,this.url=url,this.paramsInheritanceStrategy=paramsInheritanceStrategy,this.urlSerializer=urlSerializer}recognize(){const rootSegmentGroup=split(this.urlTree.root,[],[],this.config.filter((c=>void 0===c.redirectTo))).segmentGroup;return this.processSegmentGroup(this.injector,this.config,rootSegmentGroup,PRIMARY_OUTLET).pipe((0,map.U)((children=>{if(null===children)return null;const root=new ActivatedRouteSnapshot([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},PRIMARY_OUTLET,this.rootComponentType,null,this.urlTree.root,-1,{}),rootNode=new TreeNode(root,children),routeState=new RouterStateSnapshot(this.url,rootNode);return this.inheritParamsAndData(routeState._root),routeState})))}inheritParamsAndData(routeNode){const route=routeNode.value,i=inheritedParamsDataResolve(route,this.paramsInheritanceStrategy);route.params=Object.freeze(i.params),route.data=Object.freeze(i.data),routeNode.children.forEach((n=>this.inheritParamsAndData(n)))}processSegmentGroup(injector,config,segmentGroup,outlet){return 0===segmentGroup.segments.length&&segmentGroup.hasChildren()?this.processChildren(injector,config,segmentGroup):this.processSegment(injector,config,segmentGroup,segmentGroup.segments,outlet)}processChildren(injector,config,segmentGroup){return(0,from.D)(Object.keys(segmentGroup.children)).pipe((0,concatMap.b)((childOutlet=>{const child=segmentGroup.children[childOutlet],sortedConfig=sortByMatchingOutlets(config,childOutlet);return this.processSegmentGroup(injector,sortedConfig,child,childOutlet)})),scan(((children,outletChildren)=>children&&outletChildren?(children.push(...outletChildren),children):null)),(0,takeWhile.o)((children=>null!==children)),(0,defaultIfEmpty.d)(null),last(),(0,map.U)((children=>{if(null===children)return null;const mergedChildren=mergeEmptyPathMatches(children);return NG_DEV_MODE$6&&function checkOutletNameUniqueness(nodes){const names={};nodes.forEach((n=>{const routeWithSameOutletName=names[n.value.outlet];if(routeWithSameOutletName){const p=routeWithSameOutletName.url.map((s=>s.toString())).join("/"),c=n.value.url.map((s=>s.toString())).join("/");throw new core["ɵRuntimeError"](4006,NG_DEV_MODE$6&&`Two segments cannot have the same outlet name: '${p}' and '${c}'.`)}names[n.value.outlet]=n.value}))}(mergedChildren),function sortActivatedRouteSnapshots(nodes){nodes.sort(((a,b)=>a.value.outlet===PRIMARY_OUTLET?-1:b.value.outlet===PRIMARY_OUTLET?1:a.value.outlet.localeCompare(b.value.outlet)))}(mergedChildren),mergedChildren})))}processSegment(injector,routes,segmentGroup,segments,outlet){return(0,from.D)(routes).pipe((0,concatMap.b)((r=>this.processSegmentAgainstRoute(r._injector??injector,r,segmentGroup,segments,outlet))),(0,first.P)((x=>!!x)),(0,catchError.K)((e=>{if(isEmptyError(e))return noLeftoversInUrl(segmentGroup,segments,outlet)?(0,of.of)([]):(0,of.of)(null);throw e})))}processSegmentAgainstRoute(injector,route,rawSegment,segments,outlet){if(route.redirectTo||!isImmediateMatch(route,rawSegment,segments,outlet))return(0,of.of)(null);let matchResult;if("**"===route.path){const params=segments.length>0?router_last(segments).parameters:{},pathIndexShift=getPathIndexShift(rawSegment)+segments.length,snapshot=new ActivatedRouteSnapshot(segments,params,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,getData(route),getOutlet(route),route.component??route._loadedComponent??null,route,getSourceSegmentGroup(rawSegment),pathIndexShift,getResolve(route));matchResult=(0,of.of)({snapshot,consumedSegments:[],remainingSegments:[]})}else matchResult=matchWithChecks(rawSegment,route,segments,injector,this.urlSerializer).pipe((0,map.U)((({matched,consumedSegments,remainingSegments,parameters})=>{if(!matched)return null;const pathIndexShift=getPathIndexShift(rawSegment)+consumedSegments.length;return{snapshot:new ActivatedRouteSnapshot(consumedSegments,parameters,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,getData(route),getOutlet(route),route.component??route._loadedComponent??null,route,getSourceSegmentGroup(rawSegment),pathIndexShift,getResolve(route)),consumedSegments,remainingSegments}})));return matchResult.pipe((0,switchMap.w)((result=>{if(null===result)return(0,of.of)(null);const{snapshot,consumedSegments,remainingSegments}=result;injector=route._injector??injector;const childInjector=route._loadedInjector??injector,childConfig=function getChildConfig(route){if(route.children)return route.children;if(route.loadChildren)return route._loadedRoutes;return[]}(route),{segmentGroup,slicedSegments}=split(rawSegment,consumedSegments,remainingSegments,childConfig.filter((c=>void 0===c.redirectTo)));if(0===slicedSegments.length&&segmentGroup.hasChildren())return this.processChildren(childInjector,childConfig,segmentGroup).pipe((0,map.U)((children=>null===children?null:[new TreeNode(snapshot,children)])));if(0===childConfig.length&&0===slicedSegments.length)return(0,of.of)([new TreeNode(snapshot,[])]);const matchedOnOutlet=getOutlet(route)===outlet;return this.processSegment(childInjector,childConfig,segmentGroup,slicedSegments,matchedOnOutlet?PRIMARY_OUTLET:outlet).pipe((0,map.U)((children=>null===children?null:[new TreeNode(snapshot,children)])))})))}}function hasEmptyPathConfig(node){const config=node.value.routeConfig;return config&&""===config.path&&void 0===config.redirectTo}function mergeEmptyPathMatches(nodes){const result=[],mergedNodes=new Set;for(const node of nodes){if(!hasEmptyPathConfig(node)){result.push(node);continue}const duplicateEmptyPathNode=result.find((resultNode=>node.value.routeConfig===resultNode.value.routeConfig));void 0!==duplicateEmptyPathNode?(duplicateEmptyPathNode.children.push(...node.children),mergedNodes.add(duplicateEmptyPathNode)):result.push(node)}for(const mergedNode of mergedNodes){const mergedChildren=mergeEmptyPathMatches(mergedNode.children);result.push(new TreeNode(mergedNode.value,mergedChildren))}return result.filter((n=>!mergedNodes.has(n)))}function getSourceSegmentGroup(segmentGroup){let s=segmentGroup;for(;s._sourceSegment;)s=s._sourceSegment;return s}function getPathIndexShift(segmentGroup){let s=segmentGroup,res=s._segmentIndexShift??0;for(;s._sourceSegment;)s=s._sourceSegment,res+=s._segmentIndexShift??0;return res-1}function getData(route){return route.data||{}}function getResolve(route){return route.resolve||{}}function resolveData(paramsInheritanceStrategy,injector){return(0,mergeMap.z)((t=>{const{targetSnapshot,guards:{canActivateChecks}}=t;if(!canActivateChecks.length)return(0,of.of)(t);let canActivateChecksResolved=0;return(0,from.D)(canActivateChecks).pipe((0,concatMap.b)((check=>function runResolve(futureARS,futureRSS,paramsInheritanceStrategy,injector){const config=futureARS.routeConfig,resolve=futureARS._resolve;void 0===config?.title||hasStaticTitle(config)||(resolve[RouteTitleKey]=config.title);return function resolveNode(resolve,futureARS,futureRSS,injector){const keys=function getDataKeys(obj){return[...Object.keys(obj),...Object.getOwnPropertySymbols(obj)]}(resolve);if(0===keys.length)return(0,of.of)({});const data={};return(0,from.D)(keys).pipe((0,mergeMap.z)((key=>function getResolver(injectionToken,futureARS,futureRSS,injector){const closestInjector=getClosestRouteInjector(futureARS)??injector,resolver=getTokenOrFunctionIdentity(injectionToken,closestInjector),resolverValue=resolver.resolve?resolver.resolve(futureARS,futureRSS):closestInjector.runInContext((()=>resolver(futureARS,futureRSS)));return wrapIntoObservable(resolverValue)}(resolve[key],futureARS,futureRSS,injector).pipe((0,first.P)(),(0,tap.b)((value=>{data[key]=value}))))),takeLast(1),(0,mapTo.h)(data),(0,catchError.K)((e=>isEmptyError(e)?empty.E:(0,throwError._)(e))))}(resolve,futureARS,futureRSS,injector).pipe((0,map.U)((resolvedData=>(futureARS._resolvedData=resolvedData,futureARS.data=inheritedParamsDataResolve(futureARS,paramsInheritanceStrategy).resolve,config&&hasStaticTitle(config)&&(futureARS.data[RouteTitleKey]=config.title),null))))}(check.route,targetSnapshot,paramsInheritanceStrategy,injector))),(0,tap.b)((()=>canActivateChecksResolved++)),takeLast(1),(0,mergeMap.z)((_=>canActivateChecksResolved===canActivateChecks.length?(0,of.of)(t):empty.E)))}))}function hasStaticTitle(config){return"string"==typeof config.title||null===config.title}function switchTap(next){return(0,switchMap.w)((v=>{const nextResult=next(v);return nextResult?(0,from.D)(nextResult).pipe((0,map.U)((()=>v))):(0,of.of)(v)}))}const NG_DEV_MODE$5="undefined"==typeof ngDevMode||!!ngDevMode,ROUTES=new core.InjectionToken("ROUTES");class RouterConfigLoader{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=(0,core.inject)(core.Compiler)}loadComponent(route){if(this.componentLoaders.get(route))return this.componentLoaders.get(route);if(route._loadedComponent)return(0,of.of)(route._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(route);const loadRunner=wrapIntoObservable(route.loadComponent()).pipe((0,map.U)(maybeUnwrapDefaultExport),(0,tap.b)((component=>{this.onLoadEndListener&&this.onLoadEndListener(route),NG_DEV_MODE$5&&assertStandalone(route.path??"",component),route._loadedComponent=component})),(0,finalize.x)((()=>{this.componentLoaders.delete(route)}))),loader=new ConnectableObservable.c(loadRunner,(()=>new Subject.x)).pipe((0,refCount.x)());return this.componentLoaders.set(route,loader),loader}loadChildren(parentInjector,route){if(this.childrenLoaders.get(route))return this.childrenLoaders.get(route);if(route._loadedRoutes)return(0,of.of)({routes:route._loadedRoutes,injector:route._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(route);const loadRunner=this.loadModuleFactoryOrRoutes(route.loadChildren).pipe((0,map.U)((factoryOrRoutes=>{let injector,rawRoutes;this.onLoadEndListener&&this.onLoadEndListener(route);let requireStandaloneComponents=!1;Array.isArray(factoryOrRoutes)?(rawRoutes=factoryOrRoutes,requireStandaloneComponents=!0):(injector=factoryOrRoutes.create(parentInjector).injector,rawRoutes=flatten(injector.get(ROUTES,[],core.InjectFlags.Self|core.InjectFlags.Optional)));const routes=rawRoutes.map(standardizeConfig);return NG_DEV_MODE$5&&validateConfig(routes,route.path,requireStandaloneComponents),{routes,injector}})),(0,finalize.x)((()=>{this.childrenLoaders.delete(route)}))),loader=new ConnectableObservable.c(loadRunner,(()=>new Subject.x)).pipe((0,refCount.x)());return this.childrenLoaders.set(route,loader),loader}loadModuleFactoryOrRoutes(loadChildren){return wrapIntoObservable(loadChildren()).pipe((0,map.U)(maybeUnwrapDefaultExport),(0,mergeMap.z)((t=>t instanceof core.NgModuleFactory||Array.isArray(t)?(0,of.of)(t):(0,from.D)(this.compiler.compileModuleAsync(t)))))}}function maybeUnwrapDefaultExport(input){return function isWrappedDefaultExport(value){return value&&"object"==typeof value&&"default"in value}(input)?input.default:input}RouterConfigLoader.ɵfac=function RouterConfigLoader_Factory(t){return new(t||RouterConfigLoader)},RouterConfigLoader.ɵprov=core["ɵɵdefineInjectable"]({token:RouterConfigLoader,factory:RouterConfigLoader.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterConfigLoader,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);const NG_DEV_MODE$4="undefined"==typeof ngDevMode||!!ngDevMode;class NavigationTransitions{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.lastSuccessfulNavigation=null,this.events=new Subject.x,this.configLoader=(0,core.inject)(RouterConfigLoader),this.environmentInjector=(0,core.inject)(core.EnvironmentInjector),this.urlSerializer=(0,core.inject)(UrlSerializer),this.rootContexts=(0,core.inject)(ChildrenOutletContexts),this.navigationId=0,this.afterPreactivation=()=>(0,of.of)(void 0),this.rootComponentType=null;this.configLoader.onLoadEndListener=r=>this.events.next(new RouteConfigLoadEnd(r)),this.configLoader.onLoadStartListener=r=>this.events.next(new RouteConfigLoadStart(r))}complete(){this.transitions?.complete()}handleNavigationRequest(request){const id=++this.navigationId;this.transitions?.next({...this.transitions.value,...request,id})}setupNavigations(router){return this.transitions=new BehaviorSubject.X({id:0,targetPageId:0,currentUrlTree:router.currentUrlTree,currentRawUrl:router.currentUrlTree,extractedUrl:router.urlHandlingStrategy.extract(router.currentUrlTree),urlAfterRedirects:router.urlHandlingStrategy.extract(router.currentUrlTree),rawUrl:router.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:router.routerState.snapshot,targetSnapshot:null,currentRouterState:router.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe((0,filter.h)((t=>0!==t.id)),(0,map.U)((t=>({...t,extractedUrl:router.urlHandlingStrategy.extract(t.rawUrl)}))),(0,switchMap.w)((overallTransitionState=>{let completed=!1,errored=!1;return(0,of.of)(overallTransitionState).pipe((0,tap.b)((t=>{this.currentNavigation={id:t.id,initialUrl:t.rawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}})),(0,switchMap.w)((t=>{const browserUrlTree=router.browserUrlTree.toString(),urlTransition=!router.navigated||t.extractedUrl.toString()!==browserUrlTree||browserUrlTree!==router.currentUrlTree.toString(),onSameUrlNavigation=t.extras.onSameUrlNavigation??router.onSameUrlNavigation;if(!urlTransition&&"reload"!==onSameUrlNavigation){const reason=NG_DEV_MODE$4?`Navigation to ${t.rawUrl} was ignored because it is the same as the current Router URL.`:"";return this.events.next(new NavigationSkipped(t.id,router.serializeUrl(overallTransitionState.rawUrl),reason,0)),router.rawUrlTree=t.rawUrl,t.resolve(null),empty.E}if(router.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return isBrowserTriggeredNavigation(t.source)&&(router.browserUrlTree=t.extractedUrl),(0,of.of)(t).pipe((0,switchMap.w)((t=>{const transition=this.transitions?.getValue();return this.events.next(new NavigationStart(t.id,this.urlSerializer.serialize(t.extractedUrl),t.source,t.restoredState)),transition!==this.transitions?.getValue()?empty.E:Promise.resolve(t)})),applyRedirects(this.environmentInjector,this.configLoader,this.urlSerializer,router.config),(0,tap.b)((t=>{this.currentNavigation={...this.currentNavigation,finalUrl:t.urlAfterRedirects},overallTransitionState.urlAfterRedirects=t.urlAfterRedirects})),function recognize(injector,rootComponentType,config,serializer,paramsInheritanceStrategy){return(0,mergeMap.z)((t=>recognize$1(injector,rootComponentType,config,t.urlAfterRedirects,serializer.serialize(t.urlAfterRedirects),serializer,paramsInheritanceStrategy).pipe((0,map.U)((targetSnapshot=>({...t,targetSnapshot}))))))}(this.environmentInjector,this.rootComponentType,router.config,this.urlSerializer,router.paramsInheritanceStrategy),(0,tap.b)((t=>{if(overallTransitionState.targetSnapshot=t.targetSnapshot,"eager"===router.urlUpdateStrategy){if(!t.extras.skipLocationChange){const rawUrl=router.urlHandlingStrategy.merge(t.urlAfterRedirects,t.rawUrl);router.setBrowserUrl(rawUrl,t)}router.browserUrlTree=t.urlAfterRedirects}const routesRecognized=new RoutesRecognized(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot);this.events.next(routesRecognized)})));if(urlTransition&&router.urlHandlingStrategy.shouldProcessUrl(router.rawUrlTree)){const{id,extractedUrl,source,restoredState,extras}=t,navStart=new NavigationStart(id,this.urlSerializer.serialize(extractedUrl),source,restoredState);this.events.next(navStart);const targetSnapshot=createEmptyState(extractedUrl,this.rootComponentType).snapshot;return overallTransitionState={...t,targetSnapshot,urlAfterRedirects:extractedUrl,extras:{...extras,skipLocationChange:!1,replaceUrl:!1}},(0,of.of)(overallTransitionState)}{const reason=NG_DEV_MODE$4?`Navigation was ignored because the UrlHandlingStrategy indicated neither the current URL ${router.rawUrlTree} nor target URL ${t.rawUrl} should be processed.`:"";return this.events.next(new NavigationSkipped(t.id,router.serializeUrl(overallTransitionState.extractedUrl),reason,1)),router.rawUrlTree=t.rawUrl,t.resolve(null),empty.E}})),(0,tap.b)((t=>{const guardsStart=new GuardsCheckStart(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot);this.events.next(guardsStart)})),(0,map.U)((t=>overallTransitionState={...t,guards:getAllRouteGuards(t.targetSnapshot,t.currentSnapshot,this.rootContexts)})),checkGuards(this.environmentInjector,(evt=>this.events.next(evt))),(0,tap.b)((t=>{if(overallTransitionState.guardsResult=t.guardsResult,isUrlTree(t.guardsResult))throw redirectingNavigationError(this.urlSerializer,t.guardsResult);const guardsEnd=new GuardsCheckEnd(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);this.events.next(guardsEnd)})),(0,filter.h)((t=>!!t.guardsResult||(router.restoreHistory(t),this.cancelNavigationTransition(t,"",3),!1))),switchTap((t=>{if(t.guards.canActivateChecks.length)return(0,of.of)(t).pipe((0,tap.b)((t=>{const resolveStart=new ResolveStart(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot);this.events.next(resolveStart)})),(0,switchMap.w)((t=>{let dataResolved=!1;return(0,of.of)(t).pipe(resolveData(router.paramsInheritanceStrategy,this.environmentInjector),(0,tap.b)({next:()=>dataResolved=!0,complete:()=>{dataResolved||(router.restoreHistory(t),this.cancelNavigationTransition(t,NG_DEV_MODE$4?"At least one route resolver didn't emit any value.":"",2))}}))})),(0,tap.b)((t=>{const resolveEnd=new ResolveEnd(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot);this.events.next(resolveEnd)})))})),switchTap((t=>{const loadComponents=route=>{const loaders=[];route.routeConfig?.loadComponent&&!route.routeConfig._loadedComponent&&loaders.push(this.configLoader.loadComponent(route.routeConfig).pipe((0,tap.b)((loadedComponent=>{route.component=loadedComponent})),(0,map.U)((()=>{}))));for(const child of route.children)loaders.push(...loadComponents(child));return loaders};return(0,combineLatest.a)(loadComponents(t.targetSnapshot.root)).pipe((0,defaultIfEmpty.d)(),(0,take.q)(1))})),switchTap((()=>this.afterPreactivation())),(0,map.U)((t=>{const targetRouterState=function createRouterState(routeReuseStrategy,curr,prevState){const root=createNode(routeReuseStrategy,curr._root,prevState?prevState._root:void 0);return new RouterState(root,curr)}(router.routeReuseStrategy,t.targetSnapshot,t.currentRouterState);return overallTransitionState={...t,targetRouterState}})),(0,tap.b)((t=>{router.currentUrlTree=t.urlAfterRedirects,router.rawUrlTree=router.urlHandlingStrategy.merge(t.urlAfterRedirects,t.rawUrl),router.routerState=t.targetRouterState,"deferred"===router.urlUpdateStrategy&&(t.extras.skipLocationChange||router.setBrowserUrl(router.rawUrlTree,t),router.browserUrlTree=t.urlAfterRedirects)})),(rootContexts=this.rootContexts,routeReuseStrategy=router.routeReuseStrategy,forwardEvent=evt=>this.events.next(evt),(0,map.U)((t=>(new ActivateRoutes(routeReuseStrategy,t.targetRouterState,t.currentRouterState,forwardEvent).activate(rootContexts),t)))),(0,take.q)(1),(0,tap.b)({next:t=>{completed=!0,this.lastSuccessfulNavigation=this.currentNavigation,router.navigated=!0,this.events.next(new NavigationEnd(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(router.currentUrlTree))),router.titleStrategy?.updateTitle(t.targetRouterState.snapshot),t.resolve(!0)},complete:()=>{completed=!0}}),(0,finalize.x)((()=>{if(!completed&&!errored){const cancelationReason=NG_DEV_MODE$4?`Navigation ID ${overallTransitionState.id} is not equal to the current navigation id ${this.navigationId}`:"";this.cancelNavigationTransition(overallTransitionState,cancelationReason,1)}this.currentNavigation?.id===overallTransitionState.id&&(this.currentNavigation=null)})),(0,catchError.K)((e=>{if(errored=!0,isNavigationCancelingError$1(e)){isRedirectingNavigationCancelingError$1(e)||(router.navigated=!0,router.restoreHistory(overallTransitionState,!0));const navCancel=new NavigationCancel(overallTransitionState.id,this.urlSerializer.serialize(overallTransitionState.extractedUrl),e.message,e.cancellationCode);if(this.events.next(navCancel),isRedirectingNavigationCancelingError$1(e)){const mergedTree=router.urlHandlingStrategy.merge(e.url,router.rawUrlTree),extras={skipLocationChange:overallTransitionState.extras.skipLocationChange,replaceUrl:"eager"===router.urlUpdateStrategy||isBrowserTriggeredNavigation(overallTransitionState.source)};router.scheduleNavigation(mergedTree,"imperative",null,extras,{resolve:overallTransitionState.resolve,reject:overallTransitionState.reject,promise:overallTransitionState.promise})}else overallTransitionState.resolve(!1)}else{router.restoreHistory(overallTransitionState,!0);const navError=new NavigationError(overallTransitionState.id,this.urlSerializer.serialize(overallTransitionState.extractedUrl),e,overallTransitionState.targetSnapshot??void 0);this.events.next(navError);try{overallTransitionState.resolve(router.errorHandler(e))}catch(ee){overallTransitionState.reject(ee)}}return empty.E})));var rootContexts,routeReuseStrategy,forwardEvent})))}cancelNavigationTransition(t,reason,code){const navCancel=new NavigationCancel(t.id,this.urlSerializer.serialize(t.extractedUrl),reason,code);this.events.next(navCancel),t.resolve(!1)}}function isBrowserTriggeredNavigation(source){return"imperative"!==source}NavigationTransitions.ɵfac=function NavigationTransitions_Factory(t){return new(t||NavigationTransitions)},NavigationTransitions.ɵprov=core["ɵɵdefineInjectable"]({token:NavigationTransitions,factory:NavigationTransitions.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](NavigationTransitions,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[]}),null);class TitleStrategy{buildTitle(snapshot){let pageTitle,route=snapshot.root;for(;void 0!==route;)pageTitle=this.getResolvedTitleForRoute(route)??pageTitle,route=route.children.find((child=>child.outlet===PRIMARY_OUTLET));return pageTitle}getResolvedTitleForRoute(snapshot){return snapshot.data[RouteTitleKey]}}TitleStrategy.ɵfac=function TitleStrategy_Factory(t){return new(t||TitleStrategy)},TitleStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:TitleStrategy,factory:function(){return(0,core.inject)(DefaultTitleStrategy)},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](TitleStrategy,[{type:core.Injectable,args:[{providedIn:"root",useFactory:()=>(0,core.inject)(DefaultTitleStrategy)}]}],null,null);class DefaultTitleStrategy extends TitleStrategy{constructor(title){super(),this.title=title}updateTitle(snapshot){const title=this.buildTitle(snapshot);void 0!==title&&this.title.setTitle(title)}}DefaultTitleStrategy.ɵfac=function DefaultTitleStrategy_Factory(t){return new(t||DefaultTitleStrategy)(core["ɵɵinject"](platform_browser.Title))},DefaultTitleStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:DefaultTitleStrategy,factory:DefaultTitleStrategy.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](DefaultTitleStrategy,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:platform_browser.Title}]}),null);class RouteReuseStrategy{}RouteReuseStrategy.ɵfac=function RouteReuseStrategy_Factory(t){return new(t||RouteReuseStrategy)},RouteReuseStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:RouteReuseStrategy,factory:function(){return(0,core.inject)(DefaultRouteReuseStrategy)},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouteReuseStrategy,[{type:core.Injectable,args:[{providedIn:"root",useFactory:()=>(0,core.inject)(DefaultRouteReuseStrategy)}]}],null,null);class BaseRouteReuseStrategy{shouldDetach(route){return!1}store(route,detachedTree){}shouldAttach(route){return!1}retrieve(route){return null}shouldReuseRoute(future,curr){return future.routeConfig===curr.routeConfig}}class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy{}DefaultRouteReuseStrategy.ɵfac=function(){let ɵDefaultRouteReuseStrategy_BaseFactory;return function DefaultRouteReuseStrategy_Factory(t){return(ɵDefaultRouteReuseStrategy_BaseFactory||(ɵDefaultRouteReuseStrategy_BaseFactory=core["ɵɵgetInheritedFactory"](DefaultRouteReuseStrategy)))(t||DefaultRouteReuseStrategy)}}(),DefaultRouteReuseStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:DefaultRouteReuseStrategy,factory:DefaultRouteReuseStrategy.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](DefaultRouteReuseStrategy,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);const NG_DEV_MODE$3="undefined"==typeof ngDevMode||!!ngDevMode,ROUTER_CONFIGURATION=new core.InjectionToken(NG_DEV_MODE$3?"router config":"",{providedIn:"root",factory:()=>({})});class UrlHandlingStrategy{}UrlHandlingStrategy.ɵfac=function UrlHandlingStrategy_Factory(t){return new(t||UrlHandlingStrategy)},UrlHandlingStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:UrlHandlingStrategy,factory:function(){return(0,core.inject)(DefaultUrlHandlingStrategy)},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](UrlHandlingStrategy,[{type:core.Injectable,args:[{providedIn:"root",useFactory:()=>(0,core.inject)(DefaultUrlHandlingStrategy)}]}],null,null);class DefaultUrlHandlingStrategy{shouldProcessUrl(url){return!0}extract(url){return url}merge(newUrlPart,wholeUrl){return newUrlPart}}DefaultUrlHandlingStrategy.ɵfac=function DefaultUrlHandlingStrategy_Factory(t){return new(t||DefaultUrlHandlingStrategy)},DefaultUrlHandlingStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:DefaultUrlHandlingStrategy,factory:DefaultUrlHandlingStrategy.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](DefaultUrlHandlingStrategy,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);const NG_DEV_MODE$2="undefined"==typeof ngDevMode||!!ngDevMode;function defaultErrorHandler(error){throw error}function defaultMalformedUriErrorHandler(error,urlSerializer,url){return urlSerializer.parse("/")}const exactMatchOptions={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},subsetMatchOptions={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};class Router{get navigationId(){return this.navigationTransitions.navigationId}get browserPageId(){return this.location.getState()?.ɵrouterPageId}get events(){return this.navigationTransitions.events}constructor(){this.disposed=!1,this.currentPageId=0,this.console=(0,core.inject)(core["ɵConsole"]),this.isNgZoneEnabled=!1,this.options=(0,core.inject)(ROUTER_CONFIGURATION,{optional:!0})||{},this.errorHandler=this.options.errorHandler||defaultErrorHandler,this.malformedUriErrorHandler=this.options.malformedUriErrorHandler||defaultMalformedUriErrorHandler,this.navigated=!1,this.lastSuccessfulId=-1,this.urlHandlingStrategy=(0,core.inject)(UrlHandlingStrategy),this.routeReuseStrategy=(0,core.inject)(RouteReuseStrategy),this.urlCreationStrategy=(0,core.inject)(CreateUrlTreeStrategy),this.titleStrategy=(0,core.inject)(TitleStrategy),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.config=flatten((0,core.inject)(ROUTES,{optional:!0})??[]),this.navigationTransitions=(0,core.inject)(NavigationTransitions),this.urlSerializer=(0,core.inject)(UrlSerializer),this.location=(0,core.inject)(common.Location),this.isNgZoneEnabled=(0,core.inject)(core.NgZone)instanceof core.NgZone&&core.NgZone.isInAngularZone(),this.resetConfig(this.config),this.currentUrlTree=new UrlTree,this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=createEmptyState(this.currentUrlTree,null),this.navigationTransitions.setupNavigations(this).subscribe((t=>{this.lastSuccessfulId=t.id,this.currentPageId=t.targetPageId}),(e=>{this.console.warn(`Unhandled Navigation Error: ${e}`)}))}resetRootComponentType(rootComponentType){this.routerState.root.component=rootComponentType,this.navigationTransitions.rootComponentType=rootComponentType}initialNavigation(){if(this.setUpLocationChangeListener(),!this.navigationTransitions.hasRequestedNavigation){const state=this.location.getState();this.navigateToSyncWithBrowser(this.location.path(!0),"imperative",state)}}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe((event=>{const source="popstate"===event.type?"popstate":"hashchange";"popstate"===source&&setTimeout((()=>{this.navigateToSyncWithBrowser(event.url,source,event.state)}),0)})))}navigateToSyncWithBrowser(url,source,state){const extras={replaceUrl:!0},restoredState=state?.navigationId?state:null;if(state){const stateCopy={...state};delete stateCopy.navigationId,delete stateCopy.ɵrouterPageId,0!==Object.keys(stateCopy).length&&(extras.state=stateCopy)}const urlTree=this.parseUrl(url);this.scheduleNavigation(urlTree,source,restoredState,extras)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}resetConfig(config){NG_DEV_MODE$2&&validateConfig(config),this.config=config.map(standardizeConfig),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(commands,navigationExtras={}){const{relativeTo,queryParams,fragment,queryParamsHandling,preserveFragment}=navigationExtras,f=preserveFragment?this.currentUrlTree.fragment:fragment;let q=null;switch(queryParamsHandling){case"merge":q={...this.currentUrlTree.queryParams,...queryParams};break;case"preserve":q=this.currentUrlTree.queryParams;break;default:q=queryParams||null}return null!==q&&(q=this.removeEmptyProps(q)),this.urlCreationStrategy.createUrlTree(relativeTo,this.routerState,this.currentUrlTree,commands,q,f??null)}navigateByUrl(url,extras={skipLocationChange:!1}){NG_DEV_MODE$2&&(this.isNgZoneEnabled&&!core.NgZone.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?"),url instanceof UrlTree&&url._warnIfUsedForNavigation&&this.console.warn(url._warnIfUsedForNavigation));const urlTree=isUrlTree(url)?url:this.parseUrl(url),mergedTree=this.urlHandlingStrategy.merge(urlTree,this.rawUrlTree);return this.scheduleNavigation(mergedTree,"imperative",null,extras)}navigate(commands,extras={skipLocationChange:!1}){return function validateCommands(commands){for(let i=0;i{const value=params[key];return null!=value&&(result[key]=value),result}),{})}scheduleNavigation(rawUrl,source,restoredState,extras,priorPromise){if(this.disposed)return Promise.resolve(!1);let resolve,reject,promise,targetPageId;return priorPromise?(resolve=priorPromise.resolve,reject=priorPromise.reject,promise=priorPromise.promise):promise=new Promise(((res,rej)=>{resolve=res,reject=rej})),targetPageId="computed"===this.canceledNavigationResolution?restoredState&&restoredState.ɵrouterPageId?restoredState.ɵrouterPageId:extras.replaceUrl||extras.skipLocationChange?this.browserPageId??0:(this.browserPageId??0)+1:0,this.navigationTransitions.handleNavigationRequest({targetPageId,source,restoredState,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl,extras,resolve,reject,promise,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),promise.catch((e=>Promise.reject(e)))}setBrowserUrl(url,transition){const path=this.urlSerializer.serialize(url),state={...transition.extras.state,...this.generateNgRouterState(transition.id,transition.targetPageId)};this.location.isCurrentPathEqualTo(path)||transition.extras.replaceUrl?this.location.replaceState(path,"",state):this.location.go(path,"",state)}restoreHistory(transition,restoringFromCaughtError=!1){if("computed"===this.canceledNavigationResolution){const targetPagePosition=this.currentPageId-transition.targetPageId;("popstate"===transition.source||"eager"===this.urlUpdateStrategy||this.currentUrlTree===this.getCurrentNavigation()?.finalUrl)&&0!==targetPagePosition?this.location.historyGo(targetPagePosition):this.currentUrlTree===this.getCurrentNavigation()?.finalUrl&&0===targetPagePosition&&(this.resetState(transition),this.browserUrlTree=transition.currentUrlTree,this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(restoringFromCaughtError&&this.resetState(transition),this.resetUrlToCurrentUrlTree())}resetState(t){this.routerState=t.currentRouterState,this.currentUrlTree=t.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(navigationId,routerPageId){return"computed"===this.canceledNavigationResolution?{navigationId,ɵrouterPageId:routerPageId}:{navigationId}}}Router.ɵfac=function Router_Factory(t){return new(t||Router)},Router.ɵprov=core["ɵɵdefineInjectable"]({token:Router,factory:Router.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](Router,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[]}),null);class RouterLink{constructor(router,route,tabIndexAttribute,renderer,el,locationStrategy){this.router=router,this.route=route,this.tabIndexAttribute=tabIndexAttribute,this.renderer=renderer,this.el=el,this.locationStrategy=locationStrategy,this._preserveFragment=!1,this._skipLocationChange=!1,this._replaceUrl=!1,this.href=null,this.commands=null,this.onChanges=new Subject.x;const tagName=el.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===tagName||"area"===tagName,this.isAnchorElement?this.subscription=router.events.subscribe((s=>{s instanceof NavigationEnd&&this.updateHref()})):this.setTabIndexIfNotOnNativeEl("0")}set preserveFragment(preserveFragment){this._preserveFragment=(0,core["ɵcoerceToBoolean"])(preserveFragment)}get preserveFragment(){return this._preserveFragment}set skipLocationChange(skipLocationChange){this._skipLocationChange=(0,core["ɵcoerceToBoolean"])(skipLocationChange)}get skipLocationChange(){return this._skipLocationChange}set replaceUrl(replaceUrl){this._replaceUrl=(0,core["ɵcoerceToBoolean"])(replaceUrl)}get replaceUrl(){return this._replaceUrl}setTabIndexIfNotOnNativeEl(newTabIndex){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",newTabIndex)}ngOnChanges(changes){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(commands){null!=commands?(this.commands=Array.isArray(commands)?commands:[commands],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(button,ctrlKey,shiftKey,altKey,metaKey){if(null===this.urlTree)return!0;if(this.isAnchorElement){if(0!==button||ctrlKey||shiftKey||altKey||metaKey)return!0;if("string"==typeof this.target&&"_self"!=this.target)return!0}const extras={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state};return this.router.navigateByUrl(this.urlTree,extras),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){this.href=null!==this.urlTree&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(this.urlTree)):null;const sanitizedValue=null===this.href?null:(0,core["ɵɵsanitizeUrlOrResourceUrl"])(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",sanitizedValue)}applyAttributeValue(attrName,attrValue){const renderer=this.renderer,nativeElement=this.el.nativeElement;null!==attrValue?renderer.setAttribute(nativeElement,attrName,attrValue):renderer.removeAttribute(nativeElement,attrName)}get urlTree(){return null===this.commands?null:this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}}RouterLink.ɵfac=function RouterLink_Factory(t){return new(t||RouterLink)(core["ɵɵdirectiveInject"](Router),core["ɵɵdirectiveInject"](ActivatedRoute),core["ɵɵinjectAttribute"]("tabindex"),core["ɵɵdirectiveInject"](core.Renderer2),core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](common.LocationStrategy))},RouterLink.ɵdir=core["ɵɵdefineDirective"]({type:RouterLink,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function RouterLink_HostBindings(rf,ctx){1&rf&&core["ɵɵlistener"]("click",(function RouterLink_click_HostBindingHandler($event){return ctx.onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)})),2&rf&&core["ɵɵattribute"]("target",ctx.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",relativeTo:"relativeTo",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",routerLink:"routerLink"},standalone:!0,features:[core["ɵɵNgOnChangesFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterLink,[{type:core.Directive,args:[{selector:"[routerLink]",standalone:!0}]}],(function(){return[{type:Router},{type:ActivatedRoute},{type:void 0,decorators:[{type:core.Attribute,args:["tabindex"]}]},{type:core.Renderer2},{type:core.ElementRef},{type:common.LocationStrategy}]}),{target:[{type:core.HostBinding,args:["attr.target"]},{type:core.Input}],queryParams:[{type:core.Input}],fragment:[{type:core.Input}],queryParamsHandling:[{type:core.Input}],state:[{type:core.Input}],relativeTo:[{type:core.Input}],preserveFragment:[{type:core.Input}],skipLocationChange:[{type:core.Input}],replaceUrl:[{type:core.Input}],routerLink:[{type:core.Input}],onClick:[{type:core.HostListener,args:["click",["$event.button","$event.ctrlKey","$event.shiftKey","$event.altKey","$event.metaKey"]]}]});class RouterLinkActive{get isActive(){return this._isActive}constructor(router,element,renderer,cdr,link){this.router=router,this.element=element,this.renderer=renderer,this.cdr=cdr,this.link=link,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new core.EventEmitter,this.routerEventsSubscription=router.events.subscribe((s=>{s instanceof NavigationEnd&&this.update()}))}ngAfterContentInit(){(0,of.of)(this.links.changes,(0,of.of)(null)).pipe((0,mergeAll.J)()).subscribe((_=>{this.update(),this.subscribeToEachLinkOnChanges()}))}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();const allLinkChanges=[...this.links.toArray(),this.link].filter((link=>!!link)).map((link=>link.onChanges));this.linkInputChangesSubscription=(0,from.D)(allLinkChanges).pipe((0,mergeAll.J)()).subscribe((link=>{this._isActive!==this.isLinkActive(this.router)(link)&&this.update()}))}set routerLinkActive(data){const classes=Array.isArray(data)?data:data.split(" ");this.classes=classes.filter((c=>!!c))}ngOnChanges(changes){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){this.links&&this.router.navigated&&Promise.resolve().then((()=>{const hasActiveLinks=this.hasActiveLinks();this._isActive!==hasActiveLinks&&(this._isActive=hasActiveLinks,this.cdr.markForCheck(),this.classes.forEach((c=>{hasActiveLinks?this.renderer.addClass(this.element.nativeElement,c):this.renderer.removeClass(this.element.nativeElement,c)})),hasActiveLinks&&void 0!==this.ariaCurrentWhenActive?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this.isActiveChange.emit(hasActiveLinks))}))}isLinkActive(router){const options=function isActiveMatchOptions(options){return!!options.paths}(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return link=>!!link.urlTree&&router.isActive(link.urlTree,options)}hasActiveLinks(){const isActiveCheckFn=this.isLinkActive(this.router);return this.link&&isActiveCheckFn(this.link)||this.links.some(isActiveCheckFn)}}RouterLinkActive.ɵfac=function RouterLinkActive_Factory(t){return new(t||RouterLinkActive)(core["ɵɵdirectiveInject"](Router),core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](core.Renderer2),core["ɵɵdirectiveInject"](core.ChangeDetectorRef),core["ɵɵdirectiveInject"](RouterLink,8))},RouterLinkActive.ɵdir=core["ɵɵdefineDirective"]({type:RouterLinkActive,selectors:[["","routerLinkActive",""]],contentQueries:function RouterLinkActive_ContentQueries(rf,ctx,dirIndex){if(1&rf&&core["ɵɵcontentQuery"](dirIndex,RouterLink,5),2&rf){let _t;core["ɵɵqueryRefresh"](_t=core["ɵɵloadQuery"]())&&(ctx.links=_t)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[core["ɵɵNgOnChangesFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterLinkActive,[{type:core.Directive,args:[{selector:"[routerLinkActive]",exportAs:"routerLinkActive",standalone:!0}]}],(function(){return[{type:Router},{type:core.ElementRef},{type:core.Renderer2},{type:core.ChangeDetectorRef},{type:RouterLink,decorators:[{type:core.Optional}]}]}),{links:[{type:core.ContentChildren,args:[RouterLink,{descendants:!0}]}],routerLinkActiveOptions:[{type:core.Input}],ariaCurrentWhenActive:[{type:core.Input}],isActiveChange:[{type:core.Output}],routerLinkActive:[{type:core.Input}]});class PreloadingStrategy{}class PreloadAllModules{preload(route,fn){return fn().pipe((0,catchError.K)((()=>(0,of.of)(null))))}}PreloadAllModules.ɵfac=function PreloadAllModules_Factory(t){return new(t||PreloadAllModules)},PreloadAllModules.ɵprov=core["ɵɵdefineInjectable"]({token:PreloadAllModules,factory:PreloadAllModules.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](PreloadAllModules,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);class NoPreloading{preload(route,fn){return(0,of.of)(null)}}NoPreloading.ɵfac=function NoPreloading_Factory(t){return new(t||NoPreloading)},NoPreloading.ɵprov=core["ɵɵdefineInjectable"]({token:NoPreloading,factory:NoPreloading.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](NoPreloading,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);class RouterPreloader{constructor(router,compiler,injector,preloadingStrategy,loader){this.router=router,this.injector=injector,this.preloadingStrategy=preloadingStrategy,this.loader=loader}setUpPreloading(){this.subscription=this.router.events.pipe((0,filter.h)((e=>e instanceof NavigationEnd)),(0,concatMap.b)((()=>this.preload()))).subscribe((()=>{}))}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(injector,routes){const res=[];for(const route of routes){route.providers&&!route._injector&&(route._injector=(0,core.createEnvironmentInjector)(route.providers,injector,`Route: ${route.path}`));const injectorForCurrentRoute=route._injector??injector,injectorForChildren=route._loadedInjector??injectorForCurrentRoute;(route.loadChildren&&!route._loadedRoutes&&void 0===route.canLoad||route.loadComponent&&!route._loadedComponent)&&res.push(this.preloadConfig(injectorForCurrentRoute,route)),(route.children||route._loadedRoutes)&&res.push(this.processRoutes(injectorForChildren,route.children??route._loadedRoutes))}return(0,from.D)(res).pipe((0,mergeAll.J)())}preloadConfig(injector,route){return this.preloadingStrategy.preload(route,(()=>{let loadedChildren$;loadedChildren$=route.loadChildren&&void 0===route.canLoad?this.loader.loadChildren(injector,route):(0,of.of)(null);const recursiveLoadChildren$=loadedChildren$.pipe((0,mergeMap.z)((config=>null===config?(0,of.of)(void 0):(route._loadedRoutes=config.routes,route._loadedInjector=config.injector,this.processRoutes(config.injector??injector,config.routes)))));if(route.loadComponent&&!route._loadedComponent){const loadComponent$=this.loader.loadComponent(route);return(0,from.D)([recursiveLoadChildren$,loadComponent$]).pipe((0,mergeAll.J)())}return recursiveLoadChildren$}))}}RouterPreloader.ɵfac=function RouterPreloader_Factory(t){return new(t||RouterPreloader)(core["ɵɵinject"](Router),core["ɵɵinject"](core.Compiler),core["ɵɵinject"](core.EnvironmentInjector),core["ɵɵinject"](PreloadingStrategy),core["ɵɵinject"](RouterConfigLoader))},RouterPreloader.ɵprov=core["ɵɵdefineInjectable"]({token:RouterPreloader,factory:RouterPreloader.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterPreloader,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:Router},{type:core.Compiler},{type:core.EnvironmentInjector},{type:PreloadingStrategy},{type:RouterConfigLoader}]}),null);const ROUTER_SCROLLER=new core.InjectionToken("");class RouterScroller{constructor(urlSerializer,transitions,viewportScroller,zone,options={}){this.urlSerializer=urlSerializer,this.transitions=transitions,this.viewportScroller=viewportScroller,this.zone=zone,this.options=options,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},options.scrollPositionRestoration=options.scrollPositionRestoration||"disabled",options.anchorScrolling=options.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe((e=>{e instanceof NavigationStart?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof NavigationEnd&&(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment))}))}consumeScrollEvents(){return this.transitions.events.subscribe((e=>{e instanceof Scroll&&(e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))}))}scheduleScrollEvent(routerEvent,anchor){this.zone.runOutsideAngular((()=>{setTimeout((()=>{this.zone.run((()=>{this.transitions.events.next(new Scroll(routerEvent,"popstate"===this.lastSource?this.store[this.restoredId]:null,anchor))}))}),0)}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}}var NavigationResult;RouterScroller.ɵfac=function RouterScroller_Factory(t){core["ɵɵinvalidFactory"]()},RouterScroller.ɵprov=core["ɵɵdefineInjectable"]({token:RouterScroller,factory:RouterScroller.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterScroller,[{type:core.Injectable}],(function(){return[{type:UrlSerializer},{type:NavigationTransitions},{type:common.ViewportScroller},{type:core.NgZone},{type:void 0}]}),null),function(NavigationResult){NavigationResult[NavigationResult.COMPLETE=0]="COMPLETE",NavigationResult[NavigationResult.FAILED=1]="FAILED",NavigationResult[NavigationResult.REDIRECTING=2]="REDIRECTING"}(NavigationResult||(NavigationResult={}));const NG_DEV_MODE$1="undefined"==typeof ngDevMode||ngDevMode;function rootRoute(router){return router.routerState.root}function routerFeature(kind,providers){return{ɵkind:kind,ɵproviders:providers}}const ROUTER_IS_PROVIDED=new core.InjectionToken("",{providedIn:"root",factory:()=>!1});core.ENVIRONMENT_INITIALIZER;function getBootstrapListener(){const injector=(0,core.inject)(core.Injector);return bootstrappedComponentRef=>{const ref=injector.get(core.ApplicationRef);if(bootstrappedComponentRef!==ref.components[0])return;const router=injector.get(Router),bootstrapDone=injector.get(BOOTSTRAP_DONE);1===injector.get(INITIAL_NAVIGATION)&&router.initialNavigation(),injector.get(ROUTER_PRELOADER,null,core.InjectFlags.Optional)?.setUpPreloading(),injector.get(ROUTER_SCROLLER,null,core.InjectFlags.Optional)?.init(),router.resetRootComponentType(ref.componentTypes[0]),bootstrapDone.closed||(bootstrapDone.next(),bootstrapDone.complete(),bootstrapDone.unsubscribe())}}const BOOTSTRAP_DONE=new core.InjectionToken(NG_DEV_MODE$1?"bootstrap done indicator":"",{factory:()=>new Subject.x}),INITIAL_NAVIGATION=new core.InjectionToken(NG_DEV_MODE$1?"initial navigation":"",{providedIn:"root",factory:()=>1});function withEnabledBlockingInitialNavigation(){return routerFeature(2,[{provide:INITIAL_NAVIGATION,useValue:0},{provide:core.APP_INITIALIZER,multi:!0,deps:[core.Injector],useFactory:injector=>{const locationInitialized=injector.get(common.LOCATION_INITIALIZED,Promise.resolve());return()=>locationInitialized.then((()=>new Promise((resolve=>{const router=injector.get(Router),bootstrapDone=injector.get(BOOTSTRAP_DONE);!function afterNextNavigation(router,action){router.events.pipe((0,filter.h)((e=>e instanceof NavigationEnd||e instanceof NavigationCancel||e instanceof NavigationError||e instanceof NavigationSkipped)),(0,map.U)((e=>e instanceof NavigationEnd||e instanceof NavigationSkipped?NavigationResult.COMPLETE:e instanceof NavigationCancel&&(0===e.code||1===e.code)?NavigationResult.REDIRECTING:NavigationResult.FAILED)),(0,filter.h)((result=>result!==NavigationResult.REDIRECTING)),(0,take.q)(1)).subscribe((()=>{action()}))}(router,(()=>{resolve(!0)})),injector.get(NavigationTransitions).afterPreactivation=()=>(resolve(!0),bootstrapDone.closed?(0,of.of)(void 0):bootstrapDone),router.initialNavigation()}))))}}])}function withDebugTracing(){let providers=[];return providers=NG_DEV_MODE$1?[{provide:core.ENVIRONMENT_INITIALIZER,multi:!0,useFactory:()=>{const router=(0,core.inject)(Router);return()=>router.events.subscribe((e=>{console.group?.(`Router Event: ${e.constructor.name}`),console.log(function stringifyEvent(routerEvent){if(!("type"in routerEvent))return`Unknown Router Event: ${routerEvent.constructor.name}`;switch(routerEvent.type){case 14:return`ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path||""}')`;case 13:return`ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path||""}')`;case 12:return`ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path||""}')`;case 11:return`ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path||""}')`;case 8:return`GuardsCheckEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`;case 7:return`GuardsCheckStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;case 2:return`NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`;case 16:return`NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`;case 1:return`NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}')`;case 3:return`NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${routerEvent.error})`;case 0:return`NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`;case 6:return`ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;case 5:return`ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;case 10:return`RouteConfigLoadEnd(path: ${routerEvent.route.path})`;case 9:return`RouteConfigLoadStart(path: ${routerEvent.route.path})`;case 4:return`RoutesRecognized(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;case 15:const pos=routerEvent.position?`${routerEvent.position[0]}, ${routerEvent.position[1]}`:null;return`Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`}}(e)),console.log(e),console.groupEnd?.()}))}}]:[],routerFeature(1,providers)}const ROUTER_PRELOADER=new core.InjectionToken(NG_DEV_MODE$1?"router preloader":"");const NG_DEV_MODE="undefined"==typeof ngDevMode||ngDevMode,ROUTER_DIRECTIVES=[RouterOutlet,RouterLink,RouterLinkActive,ɵEmptyOutletComponent],ROUTER_FORROOT_GUARD=new core.InjectionToken(NG_DEV_MODE?"router duplicate forRoot guard":"ROUTER_FORROOT_GUARD"),ROUTER_PROVIDERS=[common.Location,{provide:UrlSerializer,useClass:DefaultUrlSerializer},Router,ChildrenOutletContexts,{provide:ActivatedRoute,useFactory:rootRoute,deps:[Router]},RouterConfigLoader,NG_DEV_MODE?{provide:ROUTER_IS_PROVIDED,useValue:!0}:[]];function routerNgProbeToken(){return new core.NgProbeToken("Router",Router)}class RouterModule{constructor(guard){}static forRoot(routes,config){return{ngModule:RouterModule,providers:[ROUTER_PROVIDERS,NG_DEV_MODE&&config?.enableTracing?withDebugTracing().ɵproviders:[],{provide:ROUTES,multi:!0,useValue:routes},{provide:ROUTER_FORROOT_GUARD,useFactory:provideForRootGuard,deps:[[Router,new core.Optional,new core.SkipSelf]]},{provide:ROUTER_CONFIGURATION,useValue:config||{}},config?.useHash?{provide:common.LocationStrategy,useClass:common.HashLocationStrategy}:{provide:common.LocationStrategy,useClass:common.PathLocationStrategy},{provide:ROUTER_SCROLLER,useFactory:()=>{const viewportScroller=(0,core.inject)(common.ViewportScroller),zone=(0,core.inject)(core.NgZone),config=(0,core.inject)(ROUTER_CONFIGURATION),transitions=(0,core.inject)(NavigationTransitions),urlSerializer=(0,core.inject)(UrlSerializer);return config.scrollOffset&&viewportScroller.setOffset(config.scrollOffset),new RouterScroller(urlSerializer,transitions,viewportScroller,zone,config)}},config?.preloadingStrategy?(preloadingStrategy=config.preloadingStrategy,routerFeature(0,[{provide:ROUTER_PRELOADER,useExisting:RouterPreloader},{provide:PreloadingStrategy,useExisting:preloadingStrategy}])).ɵproviders:[],{provide:core.NgProbeToken,multi:!0,useFactory:routerNgProbeToken},config?.initialNavigation?provideInitialNavigation(config):[],[{provide:ROUTER_INITIALIZER,useFactory:getBootstrapListener},{provide:core.APP_BOOTSTRAP_LISTENER,multi:!0,useExisting:ROUTER_INITIALIZER}]]};var preloadingStrategy}static forChild(routes){return{ngModule:RouterModule,providers:[{provide:ROUTES,multi:!0,useValue:routes}]}}}function provideForRootGuard(router){if(NG_DEV_MODE&&router)throw new core["ɵRuntimeError"](4007,"The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function provideInitialNavigation(config){return["disabled"===config.initialNavigation?routerFeature(3,[{provide:core.APP_INITIALIZER,multi:!0,useFactory:()=>{const router=(0,core.inject)(Router);return()=>{router.setUpLocationChangeListener()}}},{provide:INITIAL_NAVIGATION,useValue:2}]).ɵproviders:[],"enabledBlocking"===config.initialNavigation?withEnabledBlockingInitialNavigation().ɵproviders:[]]}RouterModule.ɵfac=function RouterModule_Factory(t){return new(t||RouterModule)(core["ɵɵinject"](ROUTER_FORROOT_GUARD,8))},RouterModule.ɵmod=core["ɵɵdefineNgModule"]({type:RouterModule,imports:[RouterOutlet,RouterLink,RouterLinkActive,ɵEmptyOutletComponent],exports:[RouterOutlet,RouterLink,RouterLinkActive,ɵEmptyOutletComponent]}),RouterModule.ɵinj=core["ɵɵdefineInjector"]({imports:[ɵEmptyOutletComponent]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterModule,[{type:core.NgModule,args:[{imports:ROUTER_DIRECTIVES,exports:ROUTER_DIRECTIVES}]}],(function(){return[{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[ROUTER_FORROOT_GUARD]}]}]}),null);const ROUTER_INITIALIZER=new core.InjectionToken(NG_DEV_MODE?"Router Initializer":"");new core.Version("15.2.6")},"./node_modules/rxjs/dist/esm5/internal/observable/defer.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{P:()=>defer});var _Observable__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),_innerFrom__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js");function defer(observableFactory){return new _Observable__WEBPACK_IMPORTED_MODULE_0__.y((function(subscriber){(0,_innerFrom__WEBPACK_IMPORTED_MODULE_1__.Xf)(observableFactory()).subscribe(subscriber)}))}}}]); \ No newline at end of file +/*! For license information please see 930.037fa429.iframe.bundle.js.LICENSE.txt */ +"use strict";(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[930],{"./node_modules/@angular/router/fesm2020/router.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{gz:()=>ActivatedRoute,F0:()=>Router});var core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),from=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/from.js"),of=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/of.js"),BehaviorSubject=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js"),EmptyError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"),combineLatest=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js"),concat=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/concat.js"),defer=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/defer.js"),pipe=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/util/pipe.js"),throwError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/throwError.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),empty=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/empty.js"),ConnectableObservable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"),Subject=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subject.js"),common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js"),switchMap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"),take=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/take.js"),startWith=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/startWith.js"),filter=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/filter.js"),mergeMap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"),first=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/first.js"),concatMap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/concatMap.js"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),catchError=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/catchError.js"),lift=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/util/lift.js"),OperatorSubscriber=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js");function scan(accumulator,seed){return(0,lift.e)(function scanInternals(accumulator,seed,hasSeed,emitOnNext,emitBeforeComplete){return function(source,subscriber){var hasState=hasSeed,state=seed,index=0;source.subscribe((0,OperatorSubscriber.x)(subscriber,(function(value){var i=index++;state=hasState?accumulator(state,value,i):(hasState=!0,value),emitOnNext&&subscriber.next(state)}),emitBeforeComplete&&function(){hasState&&subscriber.next(state),subscriber.complete()}))}}(accumulator,seed,arguments.length>=2,!0))}var tslib_es6=__webpack_require__("./node_modules/tslib/tslib.es6.js");function takeLast(count){return count<=0?function(){return empty.E}:(0,lift.e)((function(source,subscriber){var buffer=[];source.subscribe((0,OperatorSubscriber.x)(subscriber,(function(value){buffer.push(value),count=2;return function(source){return source.pipe(predicate?(0,filter.h)((function(v,i){return predicate(v,i,source)})):identity.y,takeLast(1),hasDefaultValue?(0,defaultIfEmpty.d)(defaultValue):(0,throwIfEmpty.T)((function(){return new EmptyError.K})))}}var takeWhile=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js"),mapTo=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/mapTo.js"),finalize=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/finalize.js"),refCount=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/refCount.js"),mergeAll=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"),platform_browser=__webpack_require__("./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs");const PRIMARY_OUTLET="primary",RouteTitleKey=Symbol("RouteTitle");class ParamsAsMap{constructor(params){this.params=params||{}}has(name){return Object.prototype.hasOwnProperty.call(this.params,name)}get(name){if(this.has(name)){const v=this.params[name];return Array.isArray(v)?v[0]:v}return null}getAll(name){if(this.has(name)){const v=this.params[name];return Array.isArray(v)?v:[v]}return[]}get keys(){return Object.keys(this.params)}}function convertToParamMap(params){return new ParamsAsMap(params)}function defaultUrlMatcher(segments,segmentGroup,route){const parts=route.path.split("/");if(parts.length>segments.length)return null;if("full"===route.pathMatch&&(segmentGroup.hasChildren()||parts.lengthbSorted[index]===val))}return a===b}function flatten(arr){return Array.prototype.concat.apply([],arr)}function router_last(a){return a.length>0?a[a.length-1]:null}function forEach(map,callback){for(const prop in map)map.hasOwnProperty(prop)&&callback(map[prop],prop)}function wrapIntoObservable(value){return(0,core["ɵisObservable"])(value)?value:(0,core["ɵisPromise"])(value)?(0,from.D)(Promise.resolve(value)):(0,of.of)(value)}const NG_DEV_MODE$b="undefined"==typeof ngDevMode||ngDevMode,pathCompareMap={exact:function equalSegmentGroups(container,containee,matrixParams){if(!equalPath(container.segments,containee.segments))return!1;if(!matrixParamsMatch(container.segments,containee.segments,matrixParams))return!1;if(container.numberOfChildren!==containee.numberOfChildren)return!1;for(const c in containee.children){if(!container.children[c])return!1;if(!equalSegmentGroups(container.children[c],containee.children[c],matrixParams))return!1}return!0},subset:containsSegmentGroup},paramCompareMap={exact:function equalParams(container,containee){return shallowEqual(container,containee)},subset:function containsParams(container,containee){return Object.keys(containee).length<=Object.keys(container).length&&Object.keys(containee).every((key=>equalArraysOrString(container[key],containee[key])))},ignored:()=>!0};function containsTree(container,containee,options){return pathCompareMap[options.paths](container.root,containee.root,options.matrixParams)&¶mCompareMap[options.queryParams](container.queryParams,containee.queryParams)&&!("exact"===options.fragment&&container.fragment!==containee.fragment)}function containsSegmentGroup(container,containee,matrixParams){return containsSegmentGroupHelper(container,containee,containee.segments,matrixParams)}function containsSegmentGroupHelper(container,containee,containeePaths,matrixParams){if(container.segments.length>containeePaths.length){const current=container.segments.slice(0,containeePaths.length);return!!equalPath(current,containeePaths)&&(!containee.hasChildren()&&!!matrixParamsMatch(current,containeePaths,matrixParams))}if(container.segments.length===containeePaths.length){if(!equalPath(container.segments,containeePaths))return!1;if(!matrixParamsMatch(container.segments,containeePaths,matrixParams))return!1;for(const c in containee.children){if(!container.children[c])return!1;if(!containsSegmentGroup(container.children[c],containee.children[c],matrixParams))return!1}return!0}{const current=containeePaths.slice(0,container.segments.length),next=containeePaths.slice(container.segments.length);return!!equalPath(container.segments,current)&&(!!matrixParamsMatch(container.segments,current,matrixParams)&&(!!container.children[PRIMARY_OUTLET]&&containsSegmentGroupHelper(container.children[PRIMARY_OUTLET],containee,next,matrixParams)))}}function matrixParamsMatch(containerPaths,containeePaths,options){return containeePaths.every(((containeeSegment,i)=>paramCompareMap[options](containerPaths[i].parameters,containeeSegment.parameters)))}class UrlTree{constructor(root=new UrlSegmentGroup([],{}),queryParams={},fragment=null){if(this.root=root,this.queryParams=queryParams,this.fragment=fragment,NG_DEV_MODE$b&&root.segments.length>0)throw new core["ɵRuntimeError"](4015,"The root `UrlSegmentGroup` should not contain `segments`. Instead, these segments belong in the `children` so they can be associated with a named outlet.")}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=convertToParamMap(this.queryParams)),this._queryParamMap}toString(){return DEFAULT_SERIALIZER.serialize(this)}}class UrlSegmentGroup{constructor(segments,children){this.segments=segments,this.children=children,this.parent=null,forEach(children,((v,k)=>v.parent=this))}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return serializePaths(this)}}class UrlSegment{constructor(path,parameters){this.path=path,this.parameters=parameters}get parameterMap(){return this._parameterMap||(this._parameterMap=convertToParamMap(this.parameters)),this._parameterMap}toString(){return serializePath(this)}}function equalPath(as,bs){return as.length===bs.length&&as.every(((a,i)=>a.path===bs[i].path))}class UrlSerializer{}UrlSerializer.ɵfac=function UrlSerializer_Factory(t){return new(t||UrlSerializer)},UrlSerializer.ɵprov=core["ɵɵdefineInjectable"]({token:UrlSerializer,factory:function(){return new DefaultUrlSerializer},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](UrlSerializer,[{type:core.Injectable,args:[{providedIn:"root",useFactory:()=>new DefaultUrlSerializer}]}],null,null);class DefaultUrlSerializer{parse(url){const p=new UrlParser(url);return new UrlTree(p.parseRootSegment(),p.parseQueryParams(),p.parseFragment())}serialize(tree){return`${`/${serializeSegment(tree.root,!0)}`}${function serializeQueryParams(params){const strParams=Object.keys(params).map((name=>{const value=params[name];return Array.isArray(value)?value.map((v=>`${encodeUriQuery(name)}=${encodeUriQuery(v)}`)).join("&"):`${encodeUriQuery(name)}=${encodeUriQuery(value)}`})).filter((s=>!!s));return strParams.length?`?${strParams.join("&")}`:""}(tree.queryParams)}${"string"==typeof tree.fragment?`#${function encodeUriFragment(s){return encodeURI(s)}(tree.fragment)}`:""}`}}const DEFAULT_SERIALIZER=new DefaultUrlSerializer;function serializePaths(segment){return segment.segments.map((p=>serializePath(p))).join("/")}function serializeSegment(segment,root){if(!segment.hasChildren())return serializePaths(segment);if(root){const primary=segment.children[PRIMARY_OUTLET]?serializeSegment(segment.children[PRIMARY_OUTLET],!1):"",children=[];return forEach(segment.children,((v,k)=>{k!==PRIMARY_OUTLET&&children.push(`${k}:${serializeSegment(v,!1)}`)})),children.length>0?`${primary}(${children.join("//")})`:primary}{const children=function mapChildrenIntoArray(segment,fn){let res=[];return forEach(segment.children,((child,childOutlet)=>{childOutlet===PRIMARY_OUTLET&&(res=res.concat(fn(child,childOutlet)))})),forEach(segment.children,((child,childOutlet)=>{childOutlet!==PRIMARY_OUTLET&&(res=res.concat(fn(child,childOutlet)))})),res}(segment,((v,k)=>k===PRIMARY_OUTLET?[serializeSegment(segment.children[PRIMARY_OUTLET],!1)]:[`${k}:${serializeSegment(v,!1)}`]));return 1===Object.keys(segment.children).length&&null!=segment.children[PRIMARY_OUTLET]?`${serializePaths(segment)}/${children[0]}`:`${serializePaths(segment)}/(${children.join("//")})`}}function encodeUriString(s){return encodeURIComponent(s).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function encodeUriQuery(s){return encodeUriString(s).replace(/%3B/gi,";")}function encodeUriSegment(s){return encodeUriString(s).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function decode(s){return decodeURIComponent(s)}function decodeQuery(s){return decode(s.replace(/\+/g,"%20"))}function serializePath(path){return`${encodeUriSegment(path.path)}${function serializeMatrixParams(params){return Object.keys(params).map((key=>`;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`)).join("")}(path.parameters)}`}const SEGMENT_RE=/^[^\/()?;=#]+/;function matchSegments(str){const match=str.match(SEGMENT_RE);return match?match[0]:""}const QUERY_PARAM_RE=/^[^=?&#]+/;const QUERY_PARAM_VALUE_RE=/^[^&#]+/;class UrlParser{constructor(url){this.url=url,this.remaining=url}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new UrlSegmentGroup([],{}):new UrlSegmentGroup([],this.parseChildren())}parseQueryParams(){const params={};if(this.consumeOptional("?"))do{this.parseQueryParam(params)}while(this.consumeOptional("&"));return params}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const segments=[];for(this.peekStartsWith("(")||segments.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),segments.push(this.parseSegment());let children={};this.peekStartsWith("/(")&&(this.capture("/"),children=this.parseParens(!0));let res={};return this.peekStartsWith("(")&&(res=this.parseParens(!1)),(segments.length>0||Object.keys(children).length>0)&&(res[PRIMARY_OUTLET]=new UrlSegmentGroup(segments,children)),res}parseSegment(){const path=matchSegments(this.remaining);if(""===path&&this.peekStartsWith(";"))throw new core["ɵRuntimeError"](4009,NG_DEV_MODE$b&&`Empty path url segment cannot have parameters: '${this.remaining}'.`);return this.capture(path),new UrlSegment(decode(path),this.parseMatrixParams())}parseMatrixParams(){const params={};for(;this.consumeOptional(";");)this.parseParam(params);return params}parseParam(params){const key=matchSegments(this.remaining);if(!key)return;this.capture(key);let value="";if(this.consumeOptional("=")){const valueMatch=matchSegments(this.remaining);valueMatch&&(value=valueMatch,this.capture(value))}params[decode(key)]=decode(value)}parseQueryParam(params){const key=function matchQueryParams(str){const match=str.match(QUERY_PARAM_RE);return match?match[0]:""}(this.remaining);if(!key)return;this.capture(key);let value="";if(this.consumeOptional("=")){const valueMatch=function matchUrlQueryParamValue(str){const match=str.match(QUERY_PARAM_VALUE_RE);return match?match[0]:""}(this.remaining);valueMatch&&(value=valueMatch,this.capture(value))}const decodedKey=decodeQuery(key),decodedVal=decodeQuery(value);if(params.hasOwnProperty(decodedKey)){let currentVal=params[decodedKey];Array.isArray(currentVal)||(currentVal=[currentVal],params[decodedKey]=currentVal),currentVal.push(decodedVal)}else params[decodedKey]=decodedVal}parseParens(allowPrimary){const segments={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const path=matchSegments(this.remaining),next=this.remaining[path.length];if("/"!==next&&")"!==next&&";"!==next)throw new core["ɵRuntimeError"](4010,NG_DEV_MODE$b&&`Cannot parse url '${this.url}'`);let outletName;path.indexOf(":")>-1?(outletName=path.slice(0,path.indexOf(":")),this.capture(outletName),this.capture(":")):allowPrimary&&(outletName=PRIMARY_OUTLET);const children=this.parseChildren();segments[outletName]=1===Object.keys(children).length?children[PRIMARY_OUTLET]:new UrlSegmentGroup([],children),this.consumeOptional("//")}return segments}peekStartsWith(str){return this.remaining.startsWith(str)}consumeOptional(str){return!!this.peekStartsWith(str)&&(this.remaining=this.remaining.substring(str.length),!0)}capture(str){if(!this.consumeOptional(str))throw new core["ɵRuntimeError"](4011,NG_DEV_MODE$b&&`Expected "${str}".`)}}function createRoot(rootCandidate){return rootCandidate.segments.length>0?new UrlSegmentGroup([],{[PRIMARY_OUTLET]:rootCandidate}):rootCandidate}function squashSegmentGroup(segmentGroup){const newChildren={};for(const childOutlet of Object.keys(segmentGroup.children)){const childCandidate=squashSegmentGroup(segmentGroup.children[childOutlet]);(childCandidate.segments.length>0||childCandidate.hasChildren())&&(newChildren[childOutlet]=childCandidate)}return function mergeTrivialChildren(s){if(1===s.numberOfChildren&&s.children[PRIMARY_OUTLET]){const c=s.children[PRIMARY_OUTLET];return new UrlSegmentGroup(s.segments.concat(c.segments),c.children)}return s}(new UrlSegmentGroup(segmentGroup.segments,newChildren))}function isUrlTree(v){return v instanceof UrlTree}const NG_DEV_MODE$a="undefined"==typeof ngDevMode||ngDevMode;function createSegmentGroupFromRoute(route){let targetGroup;const rootCandidate=function createSegmentGroupFromRouteRecursive(currentRoute){const childOutlets={};for(const childSnapshot of currentRoute.children){const root=createSegmentGroupFromRouteRecursive(childSnapshot);childOutlets[childSnapshot.outlet]=root}const segmentGroup=new UrlSegmentGroup(currentRoute.url,childOutlets);return currentRoute===route&&(targetGroup=segmentGroup),segmentGroup}(route.root),rootSegmentGroup=createRoot(rootCandidate);return targetGroup??rootSegmentGroup}function createUrlTreeFromSegmentGroup(relativeTo,commands,queryParams,fragment){let root=relativeTo;for(;root.parent;)root=root.parent;if(0===commands.length)return tree(root,root,root,queryParams,fragment);const nav=computeNavigation(commands);if(nav.toRoot())return tree(root,root,new UrlSegmentGroup([],{}),queryParams,fragment);const position=function findStartingPositionForTargetGroup(nav,root,target){if(nav.isAbsolute)return new Position(root,!0,0);if(!target)return new Position(root,!1,NaN);if(null===target.parent)return new Position(target,!0,0);const modifier=isMatrixParams(nav.commands[0])?0:1,index=target.segments.length-1+modifier;return createPositionApplyingDoubleDots(target,index,nav.numberOfDoubleDots)}(nav,root,relativeTo),newSegmentGroup=position.processChildren?updateSegmentGroupChildren(position.segmentGroup,position.index,nav.commands):updateSegmentGroup(position.segmentGroup,position.index,nav.commands);return tree(root,position.segmentGroup,newSegmentGroup,queryParams,fragment)}function createUrlTree(route,urlTree,commands,queryParams,fragment){if(0===commands.length)return tree(urlTree.root,urlTree.root,urlTree.root,queryParams,fragment);const nav=computeNavigation(commands);if(nav.toRoot())return tree(urlTree.root,urlTree.root,new UrlSegmentGroup([],{}),queryParams,fragment);return function createTreeUsingPathIndex(lastPathIndex){const startingPosition=function findStartingPosition(nav,tree,segmentGroup,lastPathIndex){if(nav.isAbsolute)return new Position(tree.root,!0,0);if(-1===lastPathIndex){const processChildren=segmentGroup===tree.root;return new Position(segmentGroup,processChildren,0)}const modifier=isMatrixParams(nav.commands[0])?0:1,index=lastPathIndex+modifier;return createPositionApplyingDoubleDots(segmentGroup,index,nav.numberOfDoubleDots)}(nav,urlTree,route.snapshot?._urlSegment,lastPathIndex),segmentGroup=startingPosition.processChildren?updateSegmentGroupChildren(startingPosition.segmentGroup,startingPosition.index,nav.commands):updateSegmentGroup(startingPosition.segmentGroup,startingPosition.index,nav.commands);return tree(urlTree.root,startingPosition.segmentGroup,segmentGroup,queryParams,fragment)}(route.snapshot?._lastPathIndex)}function isMatrixParams(command){return"object"==typeof command&&null!=command&&!command.outlets&&!command.segmentPath}function isCommandWithOutlets(command){return"object"==typeof command&&null!=command&&command.outlets}function tree(oldRoot,oldSegmentGroup,newSegmentGroup,queryParams,fragment){let rootCandidate,qp={};queryParams&&forEach(queryParams,((value,name)=>{qp[name]=Array.isArray(value)?value.map((v=>`${v}`)):`${value}`})),rootCandidate=oldRoot===oldSegmentGroup?newSegmentGroup:replaceSegment(oldRoot,oldSegmentGroup,newSegmentGroup);const newRoot=createRoot(squashSegmentGroup(rootCandidate));return new UrlTree(newRoot,qp,fragment)}function replaceSegment(current,oldSegment,newSegment){const children={};return forEach(current.children,((c,outletName)=>{children[outletName]=c===oldSegment?newSegment:replaceSegment(c,oldSegment,newSegment)})),new UrlSegmentGroup(current.segments,children)}class Navigation{constructor(isAbsolute,numberOfDoubleDots,commands){if(this.isAbsolute=isAbsolute,this.numberOfDoubleDots=numberOfDoubleDots,this.commands=commands,isAbsolute&&commands.length>0&&isMatrixParams(commands[0]))throw new core["ɵRuntimeError"](4003,NG_DEV_MODE$a&&"Root segment cannot have matrix parameters");const cmdWithOutlet=commands.find(isCommandWithOutlets);if(cmdWithOutlet&&cmdWithOutlet!==router_last(commands))throw new core["ɵRuntimeError"](4004,NG_DEV_MODE$a&&"{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}function computeNavigation(commands){if("string"==typeof commands[0]&&1===commands.length&&"/"===commands[0])return new Navigation(!0,0,commands);let numberOfDoubleDots=0,isAbsolute=!1;const res=commands.reduce(((res,cmd,cmdIdx)=>{if("object"==typeof cmd&&null!=cmd){if(cmd.outlets){const outlets={};return forEach(cmd.outlets,((commands,name)=>{outlets[name]="string"==typeof commands?commands.split("/"):commands})),[...res,{outlets}]}if(cmd.segmentPath)return[...res,cmd.segmentPath]}return"string"!=typeof cmd?[...res,cmd]:0===cmdIdx?(cmd.split("/").forEach(((urlPart,partIndex)=>{0==partIndex&&"."===urlPart||(0==partIndex&&""===urlPart?isAbsolute=!0:".."===urlPart?numberOfDoubleDots++:""!=urlPart&&res.push(urlPart))})),res):[...res,cmd]}),[]);return new Navigation(isAbsolute,numberOfDoubleDots,res)}class Position{constructor(segmentGroup,processChildren,index){this.segmentGroup=segmentGroup,this.processChildren=processChildren,this.index=index}}function createPositionApplyingDoubleDots(group,index,numberOfDoubleDots){let g=group,ci=index,dd=numberOfDoubleDots;for(;dd>ci;){if(dd-=ci,g=g.parent,!g)throw new core["ɵRuntimeError"](4005,NG_DEV_MODE$a&&"Invalid number of '../'");ci=g.segments.length}return new Position(g,!1,ci-dd)}function updateSegmentGroup(segmentGroup,startIndex,commands){if(segmentGroup||(segmentGroup=new UrlSegmentGroup([],{})),0===segmentGroup.segments.length&&segmentGroup.hasChildren())return updateSegmentGroupChildren(segmentGroup,startIndex,commands);const m=function prefixedWith(segmentGroup,startIndex,commands){let currentCommandIndex=0,currentPathIndex=startIndex;const noMatch={match:!1,pathIndex:0,commandIndex:0};for(;currentPathIndex=commands.length)return noMatch;const path=segmentGroup.segments[currentPathIndex],command=commands[currentCommandIndex];if(isCommandWithOutlets(command))break;const curr=`${command}`,next=currentCommandIndex0&&void 0===curr)break;if(curr&&next&&"object"==typeof next&&void 0===next.outlets){if(!compare(curr,next,path))return noMatch;currentCommandIndex+=2}else{if(!compare(curr,{},path))return noMatch;currentCommandIndex++}currentPathIndex++}return{match:!0,pathIndex:currentPathIndex,commandIndex:currentCommandIndex}}(segmentGroup,startIndex,commands),slicedCommands=commands.slice(m.commandIndex);if(m.match&&m.pathIndex{"string"==typeof commands&&(commands=[commands]),null!==commands&&(children[outlet]=updateSegmentGroup(segmentGroup.children[outlet],startIndex,commands))})),forEach(segmentGroup.children,((child,childOutlet)=>{void 0===outlets[childOutlet]&&(children[childOutlet]=child)})),new UrlSegmentGroup(segmentGroup.segments,children)}}function createNewSegmentGroup(segmentGroup,startIndex,commands){const paths=segmentGroup.segments.slice(0,startIndex);let i=0;for(;i{"string"==typeof commands&&(commands=[commands]),null!==commands&&(children[outlet]=createNewSegmentGroup(new UrlSegmentGroup([],{}),0,commands))})),children}function stringify(params){const res={};return forEach(params,((v,k)=>res[k]=`${v}`)),res}function compare(path,params,segment){return path==segment.path&&shallowEqual(params,segment.parameters)}class RouterEvent{constructor(id,url){this.id=id,this.url=url}}class NavigationStart extends RouterEvent{constructor(id,url,navigationTrigger="imperative",restoredState=null){super(id,url),this.type=0,this.navigationTrigger=navigationTrigger,this.restoredState=restoredState}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class NavigationEnd extends RouterEvent{constructor(id,url,urlAfterRedirects){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class NavigationCancel extends RouterEvent{constructor(id,url,reason,code){super(id,url),this.reason=reason,this.code=code,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class NavigationSkipped extends RouterEvent{constructor(id,url,reason,code){super(id,url),this.reason=reason,this.code=code,this.type=16}}class NavigationError extends RouterEvent{constructor(id,url,error,target){super(id,url),this.error=error,this.target=target,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class RoutesRecognized extends RouterEvent{constructor(id,url,urlAfterRedirects,state){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class GuardsCheckStart extends RouterEvent{constructor(id,url,urlAfterRedirects,state){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class GuardsCheckEnd extends RouterEvent{constructor(id,url,urlAfterRedirects,state,shouldActivate){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.shouldActivate=shouldActivate,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class ResolveStart extends RouterEvent{constructor(id,url,urlAfterRedirects,state){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ResolveEnd extends RouterEvent{constructor(id,url,urlAfterRedirects,state){super(id,url),this.urlAfterRedirects=urlAfterRedirects,this.state=state,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class RouteConfigLoadStart{constructor(route){this.route=route,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class RouteConfigLoadEnd{constructor(route){this.route=route,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class ChildActivationStart{constructor(snapshot){this.snapshot=snapshot,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ChildActivationEnd{constructor(snapshot){this.snapshot=snapshot,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ActivationStart{constructor(snapshot){this.snapshot=snapshot,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ActivationEnd{constructor(snapshot){this.snapshot=snapshot,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Scroll{constructor(routerEvent,position,anchor){this.routerEvent=routerEvent,this.position=position,this.anchor=anchor,this.type=15}toString(){const pos=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${pos}')`}}const NG_DEV_MODE$9="undefined"==typeof ngDevMode||ngDevMode;class LegacyCreateUrlTree{createUrlTree(relativeTo,currentState,currentUrlTree,commands,queryParams,fragment){const tree=createUrlTree(relativeTo||currentState.root,currentUrlTree,commands,queryParams,fragment);if(NG_DEV_MODE$9){const treeFromSnapshotStrategy=(new CreateUrlTreeUsingSnapshot).createUrlTree(relativeTo,currentState,currentUrlTree,commands,queryParams,fragment);if(treeFromSnapshotStrategy.toString()!==tree.toString()){let warningString=`The navigation to ${tree.toString()} will instead go to ${treeFromSnapshotStrategy.toString()} in an upcoming version of Angular.`;relativeTo&&(warningString+=" `relativeTo` might need to be removed from the `UrlCreationOptions`."),tree._warnIfUsedForNavigation=warningString}}return tree}}LegacyCreateUrlTree.ɵfac=function LegacyCreateUrlTree_Factory(t){return new(t||LegacyCreateUrlTree)},LegacyCreateUrlTree.ɵprov=core["ɵɵdefineInjectable"]({token:LegacyCreateUrlTree,factory:LegacyCreateUrlTree.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](LegacyCreateUrlTree,[{type:core.Injectable}],null,null);class CreateUrlTreeUsingSnapshot{createUrlTree(relativeTo,currentState,currentUrlTree,commands,queryParams,fragment){let relativeToUrlSegmentGroup;try{relativeToUrlSegmentGroup=createSegmentGroupFromRoute(relativeTo?relativeTo.snapshot:currentState.snapshot.root)}catch(e){"string"==typeof commands[0]&&commands[0].startsWith("/")||(commands=[]),relativeToUrlSegmentGroup=currentUrlTree.root}return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup,commands,queryParams,fragment)}}CreateUrlTreeUsingSnapshot.ɵfac=function CreateUrlTreeUsingSnapshot_Factory(t){return new(t||CreateUrlTreeUsingSnapshot)},CreateUrlTreeUsingSnapshot.ɵprov=core["ɵɵdefineInjectable"]({token:CreateUrlTreeUsingSnapshot,factory:CreateUrlTreeUsingSnapshot.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](CreateUrlTreeUsingSnapshot,[{type:core.Injectable}],null,null);class CreateUrlTreeStrategy{}CreateUrlTreeStrategy.ɵfac=function CreateUrlTreeStrategy_Factory(t){return new(t||CreateUrlTreeStrategy)},CreateUrlTreeStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:CreateUrlTreeStrategy,factory:function(t){return LegacyCreateUrlTree.ɵfac(t)},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](CreateUrlTreeStrategy,[{type:core.Injectable,args:[{providedIn:"root",useClass:LegacyCreateUrlTree}]}],null,null);class Tree{constructor(root){this._root=root}get root(){return this._root.value}parent(t){const p=this.pathFromRoot(t);return p.length>1?p[p.length-2]:null}children(t){const n=findNode(t,this._root);return n?n.children.map((t=>t.value)):[]}firstChild(t){const n=findNode(t,this._root);return n&&n.children.length>0?n.children[0].value:null}siblings(t){const p=findPath(t,this._root);if(p.length<2)return[];return p[p.length-2].children.map((c=>c.value)).filter((cc=>cc!==t))}pathFromRoot(t){return findPath(t,this._root).map((s=>s.value))}}function findNode(value,node){if(value===node.value)return node;for(const child of node.children){const node=findNode(value,child);if(node)return node}return null}function findPath(value,node){if(value===node.value)return[node];for(const child of node.children){const path=findPath(value,child);if(path.length)return path.unshift(node),path}return[]}class TreeNode{constructor(value,children){this.value=value,this.children=children}toString(){return`TreeNode(${this.value})`}}function nodeChildrenAsMap(node){const map={};return node&&node.children.forEach((child=>map[child.value.outlet]=child)),map}class RouterState extends Tree{constructor(root,snapshot){super(root),this.snapshot=snapshot,setRouterState(this,root)}toString(){return this.snapshot.toString()}}function createEmptyState(urlTree,rootComponent){const snapshot=function createEmptyStateSnapshot(urlTree,rootComponent){const emptyParams={},emptyData={},emptyQueryParams={},fragment="",activated=new ActivatedRouteSnapshot([],emptyParams,emptyQueryParams,fragment,emptyData,PRIMARY_OUTLET,rootComponent,null,urlTree.root,-1,{});return new RouterStateSnapshot("",new TreeNode(activated,[]))}(urlTree,rootComponent),emptyUrl=new BehaviorSubject.X([new UrlSegment("",{})]),emptyParams=new BehaviorSubject.X({}),emptyData=new BehaviorSubject.X({}),emptyQueryParams=new BehaviorSubject.X({}),fragment=new BehaviorSubject.X(""),activated=new ActivatedRoute(emptyUrl,emptyParams,emptyQueryParams,fragment,emptyData,PRIMARY_OUTLET,rootComponent,snapshot.root);return activated.snapshot=snapshot.root,new RouterState(new TreeNode(activated,[]),snapshot)}class ActivatedRoute{constructor(url,params,queryParams,fragment,data,outlet,component,futureSnapshot){this.url=url,this.params=params,this.queryParams=queryParams,this.fragment=fragment,this.data=data,this.outlet=outlet,this.component=component,this.title=this.data?.pipe((0,map.U)((d=>d[RouteTitleKey])))??(0,of.of)(void 0),this._futureSnapshot=futureSnapshot}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe((0,map.U)((p=>convertToParamMap(p))))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe((0,map.U)((p=>convertToParamMap(p))))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function inheritedParamsDataResolve(route,paramsInheritanceStrategy="emptyOnly"){const pathFromRoot=route.pathFromRoot;let inheritingStartingFrom=0;if("always"!==paramsInheritanceStrategy)for(inheritingStartingFrom=pathFromRoot.length-1;inheritingStartingFrom>=1;){const current=pathFromRoot[inheritingStartingFrom],parent=pathFromRoot[inheritingStartingFrom-1];if(current.routeConfig&&""===current.routeConfig.path)inheritingStartingFrom--;else{if(parent.component)break;inheritingStartingFrom--}}return function flattenInherited(pathFromRoot){return pathFromRoot.reduce(((res,curr)=>({params:{...res.params,...curr.params},data:{...res.data,...curr.data},resolve:{...curr.data,...res.resolve,...curr.routeConfig?.data,...curr._resolvedData}})),{params:{},data:{},resolve:{}})}(pathFromRoot.slice(inheritingStartingFrom))}class ActivatedRouteSnapshot{get title(){return this.data?.[RouteTitleKey]}constructor(url,params,queryParams,fragment,data,outlet,component,routeConfig,urlSegment,lastPathIndex,resolve){this.url=url,this.params=params,this.queryParams=queryParams,this.fragment=fragment,this.data=data,this.outlet=outlet,this.component=component,this.routeConfig=routeConfig,this._urlSegment=urlSegment,this._lastPathIndex=lastPathIndex,this._resolve=resolve}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=convertToParamMap(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=convertToParamMap(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map((segment=>segment.toString())).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class RouterStateSnapshot extends Tree{constructor(url,root){super(root),this.url=url,setRouterState(this,root)}toString(){return serializeNode(this._root)}}function setRouterState(state,node){node.value._routerState=state,node.children.forEach((c=>setRouterState(state,c)))}function serializeNode(node){const c=node.children.length>0?` { ${node.children.map(serializeNode).join(", ")} } `:"";return`${node.value}${c}`}function advanceActivatedRoute(route){if(route.snapshot){const currentSnapshot=route.snapshot,nextSnapshot=route._futureSnapshot;route.snapshot=nextSnapshot,shallowEqual(currentSnapshot.queryParams,nextSnapshot.queryParams)||route.queryParams.next(nextSnapshot.queryParams),currentSnapshot.fragment!==nextSnapshot.fragment&&route.fragment.next(nextSnapshot.fragment),shallowEqual(currentSnapshot.params,nextSnapshot.params)||route.params.next(nextSnapshot.params),function shallowEqualArrays(a,b){if(a.length!==b.length)return!1;for(let i=0;ishallowEqual(a.parameters,bs[i].parameters)))}(a.url,b.url),parentsMismatch=!a.parent!=!b.parent;return equalUrlParams&&!parentsMismatch&&(!a.parent||equalParamsAndUrlSegments(a.parent,b.parent))}function createNode(routeReuseStrategy,curr,prevState){if(prevState&&routeReuseStrategy.shouldReuseRoute(curr.value,prevState.value.snapshot)){const value=prevState.value;value._futureSnapshot=curr.value;const children=function createOrReuseChildren(routeReuseStrategy,curr,prevState){return curr.children.map((child=>{for(const p of prevState.children)if(routeReuseStrategy.shouldReuseRoute(child.value,p.value.snapshot))return createNode(routeReuseStrategy,child,p);return createNode(routeReuseStrategy,child)}))}(routeReuseStrategy,curr,prevState);return new TreeNode(value,children)}{if(routeReuseStrategy.shouldAttach(curr.value)){const detachedRouteHandle=routeReuseStrategy.retrieve(curr.value);if(null!==detachedRouteHandle){const tree=detachedRouteHandle.route;return tree.value._futureSnapshot=curr.value,tree.children=curr.children.map((c=>createNode(routeReuseStrategy,c))),tree}}const value=function createActivatedRoute(c){return new ActivatedRoute(new BehaviorSubject.X(c.url),new BehaviorSubject.X(c.params),new BehaviorSubject.X(c.queryParams),new BehaviorSubject.X(c.fragment),new BehaviorSubject.X(c.data),c.outlet,c.component,c)}(curr.value),children=curr.children.map((c=>createNode(routeReuseStrategy,c)));return new TreeNode(value,children)}}const NAVIGATION_CANCELING_ERROR="ngNavigationCancelingError";function redirectingNavigationError(urlSerializer,redirect){const{redirectTo,navigationBehaviorOptions}=isUrlTree(redirect)?{redirectTo:redirect,navigationBehaviorOptions:void 0}:redirect,error=navigationCancelingError(ngDevMode&&`Redirecting to "${urlSerializer.serialize(redirectTo)}"`,0,redirect);return error.url=redirectTo,error.navigationBehaviorOptions=navigationBehaviorOptions,error}function navigationCancelingError(message,code,redirectUrl){const error=new Error("NavigationCancelingError: "+(message||""));return error[NAVIGATION_CANCELING_ERROR]=!0,error.cancellationCode=code,redirectUrl&&(error.url=redirectUrl),error}function isRedirectingNavigationCancelingError$1(error){return isNavigationCancelingError$1(error)&&isUrlTree(error.url)}function isNavigationCancelingError$1(error){return error&&error[NAVIGATION_CANCELING_ERROR]}class OutletContext{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new ChildrenOutletContexts,this.attachRef=null}}class ChildrenOutletContexts{constructor(){this.contexts=new Map}onChildOutletCreated(childName,outlet){const context=this.getOrCreateContext(childName);context.outlet=outlet,this.contexts.set(childName,context)}onChildOutletDestroyed(childName){const context=this.getContext(childName);context&&(context.outlet=null,context.attachRef=null)}onOutletDeactivated(){const contexts=this.contexts;return this.contexts=new Map,contexts}onOutletReAttached(contexts){this.contexts=contexts}getOrCreateContext(childName){let context=this.getContext(childName);return context||(context=new OutletContext,this.contexts.set(childName,context)),context}getContext(childName){return this.contexts.get(childName)||null}}ChildrenOutletContexts.ɵfac=function ChildrenOutletContexts_Factory(t){return new(t||ChildrenOutletContexts)},ChildrenOutletContexts.ɵprov=core["ɵɵdefineInjectable"]({token:ChildrenOutletContexts,factory:ChildrenOutletContexts.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](ChildrenOutletContexts,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);const NG_DEV_MODE$8="undefined"==typeof ngDevMode||ngDevMode;class RouterOutlet{constructor(){this.activated=null,this._activatedRoute=null,this.name=PRIMARY_OUTLET,this.activateEvents=new core.EventEmitter,this.deactivateEvents=new core.EventEmitter,this.attachEvents=new core.EventEmitter,this.detachEvents=new core.EventEmitter,this.parentContexts=(0,core.inject)(ChildrenOutletContexts),this.location=(0,core.inject)(core.ViewContainerRef),this.changeDetector=(0,core.inject)(core.ChangeDetectorRef),this.environmentInjector=(0,core.inject)(core.EnvironmentInjector)}ngOnChanges(changes){if(changes.name){const{firstChange,previousValue}=changes.name;if(firstChange)return;this.isTrackedInParentContexts(previousValue)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(previousValue)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name)}isTrackedInParentContexts(outletName){return this.parentContexts.getContext(outletName)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const context=this.parentContexts.getContext(this.name);context?.route&&(context.attachRef?this.attach(context.attachRef,context.route):this.activateWith(context.route,context.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new core["ɵRuntimeError"](4012,NG_DEV_MODE$8&&"Outlet is not activated");return this.activated.instance}get activatedRoute(){if(!this.activated)throw new core["ɵRuntimeError"](4012,NG_DEV_MODE$8&&"Outlet is not activated");return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new core["ɵRuntimeError"](4012,NG_DEV_MODE$8&&"Outlet is not activated");this.location.detach();const cmp=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(cmp.instance),cmp}attach(ref,activatedRoute){this.activated=ref,this._activatedRoute=activatedRoute,this.location.insert(ref.hostView),this.attachEvents.emit(ref.instance)}deactivate(){if(this.activated){const c=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(c)}}activateWith(activatedRoute,resolverOrInjector){if(this.isActivated)throw new core["ɵRuntimeError"](4013,NG_DEV_MODE$8&&"Cannot activate an already activated outlet");this._activatedRoute=activatedRoute;const location=this.location,component=activatedRoute.snapshot.component,childContexts=this.parentContexts.getOrCreateContext(this.name).children,injector=new OutletInjector(activatedRoute,childContexts,location.injector);if(resolverOrInjector&&function isComponentFactoryResolver(item){return!!item.resolveComponentFactory}(resolverOrInjector)){const factory=resolverOrInjector.resolveComponentFactory(component);this.activated=location.createComponent(factory,location.length,injector)}else{const environmentInjector=resolverOrInjector??this.environmentInjector;this.activated=location.createComponent(component,{index:location.length,injector,environmentInjector})}this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}RouterOutlet.ɵfac=function RouterOutlet_Factory(t){return new(t||RouterOutlet)},RouterOutlet.ɵdir=core["ɵɵdefineDirective"]({type:RouterOutlet,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[core["ɵɵNgOnChangesFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterOutlet,[{type:core.Directive,args:[{selector:"router-outlet",exportAs:"outlet",standalone:!0}]}],null,{name:[{type:core.Input}],activateEvents:[{type:core.Output,args:["activate"]}],deactivateEvents:[{type:core.Output,args:["deactivate"]}],attachEvents:[{type:core.Output,args:["attach"]}],detachEvents:[{type:core.Output,args:["detach"]}]});class OutletInjector{constructor(route,childContexts,parent){this.route=route,this.childContexts=childContexts,this.parent=parent}get(token,notFoundValue){return token===ActivatedRoute?this.route:token===ChildrenOutletContexts?this.childContexts:this.parent.get(token,notFoundValue)}}class ɵEmptyOutletComponent{}function getOrCreateRouteInjectorIfNeeded(route,currentInjector){return route.providers&&!route._injector&&(route._injector=(0,core.createEnvironmentInjector)(route.providers,currentInjector,`Route: ${route.path}`)),route._injector??currentInjector}function validateConfig(config,parentPath="",requireStandaloneComponents=!1){for(let i=0;igetOutlet(r)===outletName));return sortedConfig.push(...routes.filter((r=>getOutlet(r)!==outletName))),sortedConfig}function getClosestRouteInjector(snapshot){if(!snapshot)return null;if(snapshot.routeConfig?._injector)return snapshot.routeConfig._injector;for(let s=snapshot.parent;s;s=s.parent){const route=s.routeConfig;if(route?._loadedInjector)return route._loadedInjector;if(route?._injector)return route._injector}return null}ɵEmptyOutletComponent.ɵfac=function ɵEmptyOutletComponent_Factory(t){return new(t||ɵEmptyOutletComponent)},ɵEmptyOutletComponent.ɵcmp=core["ɵɵdefineComponent"]({type:ɵEmptyOutletComponent,selectors:[["ng-component"]],standalone:!0,features:[core["ɵɵStandaloneFeature"]],decls:1,vars:0,template:function ɵEmptyOutletComponent_Template(rf,ctx){1&rf&&core["ɵɵelement"](0,"router-outlet")},dependencies:[RouterOutlet],encapsulation:2}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](ɵEmptyOutletComponent,[{type:core.Component,args:[{template:"",imports:[RouterOutlet],standalone:!0}]}],null,null);class ActivateRoutes{constructor(routeReuseStrategy,futureState,currState,forwardEvent){this.routeReuseStrategy=routeReuseStrategy,this.futureState=futureState,this.currState=currState,this.forwardEvent=forwardEvent}activate(parentContexts){const futureRoot=this.futureState._root,currRoot=this.currState?this.currState._root:null;this.deactivateChildRoutes(futureRoot,currRoot,parentContexts),advanceActivatedRoute(this.futureState.root),this.activateChildRoutes(futureRoot,currRoot,parentContexts)}deactivateChildRoutes(futureNode,currNode,contexts){const children=nodeChildrenAsMap(currNode);futureNode.children.forEach((futureChild=>{const childOutletName=futureChild.value.outlet;this.deactivateRoutes(futureChild,children[childOutletName],contexts),delete children[childOutletName]})),forEach(children,((v,childName)=>{this.deactivateRouteAndItsChildren(v,contexts)}))}deactivateRoutes(futureNode,currNode,parentContext){const future=futureNode.value,curr=currNode?currNode.value:null;if(future===curr)if(future.component){const context=parentContext.getContext(future.outlet);context&&this.deactivateChildRoutes(futureNode,currNode,context.children)}else this.deactivateChildRoutes(futureNode,currNode,parentContext);else curr&&this.deactivateRouteAndItsChildren(currNode,parentContext)}deactivateRouteAndItsChildren(route,parentContexts){route.value.component&&this.routeReuseStrategy.shouldDetach(route.value.snapshot)?this.detachAndStoreRouteSubtree(route,parentContexts):this.deactivateRouteAndOutlet(route,parentContexts)}detachAndStoreRouteSubtree(route,parentContexts){const context=parentContexts.getContext(route.value.outlet),contexts=context&&route.value.component?context.children:parentContexts,children=nodeChildrenAsMap(route);for(const childOutlet of Object.keys(children))this.deactivateRouteAndItsChildren(children[childOutlet],contexts);if(context&&context.outlet){const componentRef=context.outlet.detach(),contexts=context.children.onOutletDeactivated();this.routeReuseStrategy.store(route.value.snapshot,{componentRef,route,contexts})}}deactivateRouteAndOutlet(route,parentContexts){const context=parentContexts.getContext(route.value.outlet),contexts=context&&route.value.component?context.children:parentContexts,children=nodeChildrenAsMap(route);for(const childOutlet of Object.keys(children))this.deactivateRouteAndItsChildren(children[childOutlet],contexts);context&&(context.outlet&&(context.outlet.deactivate(),context.children.onOutletDeactivated()),context.attachRef=null,context.resolver=null,context.route=null)}activateChildRoutes(futureNode,currNode,contexts){const children=nodeChildrenAsMap(currNode);futureNode.children.forEach((c=>{this.activateRoutes(c,children[c.value.outlet],contexts),this.forwardEvent(new ActivationEnd(c.value.snapshot))})),futureNode.children.length&&this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot))}activateRoutes(futureNode,currNode,parentContexts){const future=futureNode.value,curr=currNode?currNode.value:null;if(advanceActivatedRoute(future),future===curr)if(future.component){const context=parentContexts.getOrCreateContext(future.outlet);this.activateChildRoutes(futureNode,currNode,context.children)}else this.activateChildRoutes(futureNode,currNode,parentContexts);else if(future.component){const context=parentContexts.getOrCreateContext(future.outlet);if(this.routeReuseStrategy.shouldAttach(future.snapshot)){const stored=this.routeReuseStrategy.retrieve(future.snapshot);this.routeReuseStrategy.store(future.snapshot,null),context.children.onOutletReAttached(stored.contexts),context.attachRef=stored.componentRef,context.route=stored.route.value,context.outlet&&context.outlet.attach(stored.componentRef,stored.route.value),advanceActivatedRoute(stored.route.value),this.activateChildRoutes(futureNode,null,context.children)}else{const injector=getClosestRouteInjector(future.snapshot),cmpFactoryResolver=injector?.get(core.ComponentFactoryResolver)??null;context.attachRef=null,context.route=future,context.resolver=cmpFactoryResolver,context.injector=injector,context.outlet&&context.outlet.activateWith(future,context.injector),this.activateChildRoutes(futureNode,null,context.children)}}else this.activateChildRoutes(futureNode,null,parentContexts)}}class CanActivate{constructor(path){this.path=path,this.route=this.path[this.path.length-1]}}class CanDeactivate{constructor(component,route){this.component=component,this.route=route}}function getAllRouteGuards(future,curr,parentContexts){const futureRoot=future._root;return getChildRouteGuards(futureRoot,curr?curr._root:null,parentContexts,[futureRoot.value])}function getTokenOrFunctionIdentity(tokenOrFunction,injector){const NOT_FOUND=Symbol(),result=injector.get(tokenOrFunction,NOT_FOUND);return result===NOT_FOUND?"function"!=typeof tokenOrFunction||(0,core["ɵisInjectable"])(tokenOrFunction)?injector.get(tokenOrFunction):tokenOrFunction:result}function getChildRouteGuards(futureNode,currNode,contexts,futurePath,checks={canDeactivateChecks:[],canActivateChecks:[]}){const prevChildren=nodeChildrenAsMap(currNode);return futureNode.children.forEach((c=>{!function getRouteGuards(futureNode,currNode,parentContexts,futurePath,checks={canDeactivateChecks:[],canActivateChecks:[]}){const future=futureNode.value,curr=currNode?currNode.value:null,context=parentContexts?parentContexts.getContext(futureNode.value.outlet):null;if(curr&&future.routeConfig===curr.routeConfig){const shouldRun=function shouldRunGuardsAndResolvers(curr,future,mode){if("function"==typeof mode)return mode(curr,future);switch(mode){case"pathParamsChange":return!equalPath(curr.url,future.url);case"pathParamsOrQueryParamsChange":return!equalPath(curr.url,future.url)||!shallowEqual(curr.queryParams,future.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!equalParamsAndUrlSegments(curr,future)||!shallowEqual(curr.queryParams,future.queryParams);default:return!equalParamsAndUrlSegments(curr,future)}}(curr,future,future.routeConfig.runGuardsAndResolvers);shouldRun?checks.canActivateChecks.push(new CanActivate(futurePath)):(future.data=curr.data,future._resolvedData=curr._resolvedData),future.component?getChildRouteGuards(futureNode,currNode,context?context.children:null,futurePath,checks):getChildRouteGuards(futureNode,currNode,parentContexts,futurePath,checks),shouldRun&&context&&context.outlet&&context.outlet.isActivated&&checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component,curr))}else curr&&deactivateRouteAndItsChildren(currNode,context,checks),checks.canActivateChecks.push(new CanActivate(futurePath)),future.component?getChildRouteGuards(futureNode,null,context?context.children:null,futurePath,checks):getChildRouteGuards(futureNode,null,parentContexts,futurePath,checks);return checks}(c,prevChildren[c.value.outlet],contexts,futurePath.concat([c.value]),checks),delete prevChildren[c.value.outlet]})),forEach(prevChildren,((v,k)=>deactivateRouteAndItsChildren(v,contexts.getContext(k),checks))),checks}function deactivateRouteAndItsChildren(route,context,checks){const children=nodeChildrenAsMap(route),r=route.value;forEach(children,((node,childName)=>{r.component?deactivateRouteAndItsChildren(node,context?context.children.getContext(childName):null,checks):deactivateRouteAndItsChildren(node,context,checks)})),r.component&&context&&context.outlet&&context.outlet.isActivated?checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component,r)):checks.canDeactivateChecks.push(new CanDeactivate(null,r))}function isFunction(v){return"function"==typeof v}function isEmptyError(e){return e instanceof EmptyError.K||"EmptyError"===e?.name}const INITIAL_VALUE=Symbol("INITIAL_VALUE");function prioritizedGuardValue(){return(0,switchMap.w)((obs=>(0,combineLatest.a)(obs.map((o=>o.pipe((0,take.q)(1),(0,startWith.O)(INITIAL_VALUE))))).pipe((0,map.U)((results=>{for(const result of results)if(!0!==result){if(result===INITIAL_VALUE)return INITIAL_VALUE;if(!1===result||result instanceof UrlTree)return result}return!0})),(0,filter.h)((item=>item!==INITIAL_VALUE)),(0,take.q)(1))))}function checkGuards(injector,forwardEvent){return(0,mergeMap.z)((t=>{const{targetSnapshot,currentSnapshot,guards:{canActivateChecks,canDeactivateChecks}}=t;return 0===canDeactivateChecks.length&&0===canActivateChecks.length?(0,of.of)({...t,guardsResult:!0}):function runCanDeactivateChecks(checks,futureRSS,currRSS,injector){return(0,from.D)(checks).pipe((0,mergeMap.z)((check=>function runCanDeactivate(component,currARS,currRSS,futureRSS,injector){const canDeactivate=currARS&&currARS.routeConfig?currARS.routeConfig.canDeactivate:null;if(!canDeactivate||0===canDeactivate.length)return(0,of.of)(!0);const canDeactivateObservables=canDeactivate.map((c=>{const closestInjector=getClosestRouteInjector(currARS)??injector,guard=getTokenOrFunctionIdentity(c,closestInjector);return wrapIntoObservable(function isCanDeactivate(guard){return guard&&isFunction(guard.canDeactivate)}(guard)?guard.canDeactivate(component,currARS,currRSS,futureRSS):closestInjector.runInContext((()=>guard(component,currARS,currRSS,futureRSS)))).pipe((0,first.P)())}));return(0,of.of)(canDeactivateObservables).pipe(prioritizedGuardValue())}(check.component,check.route,currRSS,futureRSS,injector))),(0,first.P)((result=>!0!==result),!0))}(canDeactivateChecks,targetSnapshot,currentSnapshot,injector).pipe((0,mergeMap.z)((canDeactivate=>canDeactivate&&function isBoolean(v){return"boolean"==typeof v}(canDeactivate)?function runCanActivateChecks(futureSnapshot,checks,injector,forwardEvent){return(0,from.D)(checks).pipe((0,concatMap.b)((check=>(0,concat.z)(function fireChildActivationStart(snapshot,forwardEvent){null!==snapshot&&forwardEvent&&forwardEvent(new ChildActivationStart(snapshot));return(0,of.of)(!0)}(check.route.parent,forwardEvent),function fireActivationStart(snapshot,forwardEvent){null!==snapshot&&forwardEvent&&forwardEvent(new ActivationStart(snapshot));return(0,of.of)(!0)}(check.route,forwardEvent),function runCanActivateChild(futureRSS,path,injector){const futureARS=path[path.length-1],canActivateChildGuardsMapped=path.slice(0,path.length-1).reverse().map((p=>function getCanActivateChild(p){const canActivateChild=p.routeConfig?p.routeConfig.canActivateChild:null;return canActivateChild&&0!==canActivateChild.length?{node:p,guards:canActivateChild}:null}(p))).filter((_=>null!==_)).map((d=>(0,defer.P)((()=>{const guardsMapped=d.guards.map((canActivateChild=>{const closestInjector=getClosestRouteInjector(d.node)??injector,guard=getTokenOrFunctionIdentity(canActivateChild,closestInjector);return wrapIntoObservable(function isCanActivateChild(guard){return guard&&isFunction(guard.canActivateChild)}(guard)?guard.canActivateChild(futureARS,futureRSS):closestInjector.runInContext((()=>guard(futureARS,futureRSS)))).pipe((0,first.P)())}));return(0,of.of)(guardsMapped).pipe(prioritizedGuardValue())}))));return(0,of.of)(canActivateChildGuardsMapped).pipe(prioritizedGuardValue())}(futureSnapshot,check.path,injector),function runCanActivate(futureRSS,futureARS,injector){const canActivate=futureARS.routeConfig?futureARS.routeConfig.canActivate:null;if(!canActivate||0===canActivate.length)return(0,of.of)(!0);const canActivateObservables=canActivate.map((canActivate=>(0,defer.P)((()=>{const closestInjector=getClosestRouteInjector(futureARS)??injector,guard=getTokenOrFunctionIdentity(canActivate,closestInjector);return wrapIntoObservable(function isCanActivate(guard){return guard&&isFunction(guard.canActivate)}(guard)?guard.canActivate(futureARS,futureRSS):closestInjector.runInContext((()=>guard(futureARS,futureRSS)))).pipe((0,first.P)())}))));return(0,of.of)(canActivateObservables).pipe(prioritizedGuardValue())}(futureSnapshot,check.route,injector)))),(0,first.P)((result=>!0!==result),!0))}(targetSnapshot,canActivateChecks,injector,forwardEvent):(0,of.of)(canDeactivate))),(0,map.U)((guardsResult=>({...t,guardsResult}))))}))}function runCanLoadGuards(injector,route,segments,urlSerializer){const canLoad=route.canLoad;if(void 0===canLoad||0===canLoad.length)return(0,of.of)(!0);const canLoadObservables=canLoad.map((injectionToken=>{const guard=getTokenOrFunctionIdentity(injectionToken,injector);return wrapIntoObservable(function isCanLoad(guard){return guard&&isFunction(guard.canLoad)}(guard)?guard.canLoad(route,segments):injector.runInContext((()=>guard(route,segments))))}));return(0,of.of)(canLoadObservables).pipe(prioritizedGuardValue(),redirectIfUrlTree(urlSerializer))}function redirectIfUrlTree(urlSerializer){return(0,pipe.z)((0,tap.b)((result=>{if(isUrlTree(result))throw redirectingNavigationError(urlSerializer,result)})),(0,map.U)((result=>!0===result)))}function runCanMatchGuards(injector,route,segments,urlSerializer){const canMatch=route.canMatch;if(!canMatch||0===canMatch.length)return(0,of.of)(!0);const canMatchObservables=canMatch.map((injectionToken=>{const guard=getTokenOrFunctionIdentity(injectionToken,injector);return wrapIntoObservable(function isCanMatch(guard){return guard&&isFunction(guard.canMatch)}(guard)?guard.canMatch(route,segments):injector.runInContext((()=>guard(route,segments))))}));return(0,of.of)(canMatchObservables).pipe(prioritizedGuardValue(),redirectIfUrlTree(urlSerializer))}const noMatch$1={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function matchWithChecks(segmentGroup,route,segments,injector,urlSerializer){const result=match(segmentGroup,route,segments);return result.matched?runCanMatchGuards(injector=getOrCreateRouteInjectorIfNeeded(route,injector),route,segments,urlSerializer).pipe((0,map.U)((v=>!0===v?result:{...noMatch$1}))):(0,of.of)(result)}function match(segmentGroup,route,segments){if(""===route.path)return"full"===route.pathMatch&&(segmentGroup.hasChildren()||segments.length>0)?{...noMatch$1}:{matched:!0,consumedSegments:[],remainingSegments:segments,parameters:{},positionalParamSegments:{}};const res=(route.matcher||defaultUrlMatcher)(segments,segmentGroup,route);if(!res)return{...noMatch$1};const posParams={};forEach(res.posParams,((v,k)=>{posParams[k]=v.path}));const parameters=res.consumed.length>0?{...posParams,...res.consumed[res.consumed.length-1].parameters}:posParams;return{matched:!0,consumedSegments:res.consumed,remainingSegments:segments.slice(res.consumed.length),parameters,positionalParamSegments:res.posParams??{}}}function split(segmentGroup,consumedSegments,slicedSegments,config){if(slicedSegments.length>0&&function containsEmptyPathMatchesWithNamedOutlets(segmentGroup,slicedSegments,routes){return routes.some((r=>emptyPathMatch(segmentGroup,slicedSegments,r)&&getOutlet(r)!==PRIMARY_OUTLET))}(segmentGroup,slicedSegments,config)){const s=new UrlSegmentGroup(consumedSegments,function createChildrenForEmptyPaths(segmentGroup,consumedSegments,routes,primarySegment){const res={};res[PRIMARY_OUTLET]=primarySegment,primarySegment._sourceSegment=segmentGroup,primarySegment._segmentIndexShift=consumedSegments.length;for(const r of routes)if(""===r.path&&getOutlet(r)!==PRIMARY_OUTLET){const s=new UrlSegmentGroup([],{});s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,res[getOutlet(r)]=s}return res}(segmentGroup,consumedSegments,config,new UrlSegmentGroup(slicedSegments,segmentGroup.children)));return s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,{segmentGroup:s,slicedSegments:[]}}if(0===slicedSegments.length&&function containsEmptyPathMatches(segmentGroup,slicedSegments,routes){return routes.some((r=>emptyPathMatch(segmentGroup,slicedSegments,r)))}(segmentGroup,slicedSegments,config)){const s=new UrlSegmentGroup(segmentGroup.segments,function addEmptyPathsToChildrenIfNeeded(segmentGroup,consumedSegments,slicedSegments,routes,children){const res={};for(const r of routes)if(emptyPathMatch(segmentGroup,slicedSegments,r)&&!children[getOutlet(r)]){const s=new UrlSegmentGroup([],{});s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,res[getOutlet(r)]=s}return{...children,...res}}(segmentGroup,consumedSegments,slicedSegments,config,segmentGroup.children));return s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,{segmentGroup:s,slicedSegments}}const s=new UrlSegmentGroup(segmentGroup.segments,segmentGroup.children);return s._sourceSegment=segmentGroup,s._segmentIndexShift=consumedSegments.length,{segmentGroup:s,slicedSegments}}function emptyPathMatch(segmentGroup,slicedSegments,r){return(!(segmentGroup.hasChildren()||slicedSegments.length>0)||"full"!==r.pathMatch)&&""===r.path}function isImmediateMatch(route,rawSegment,segments,outlet){return!!(getOutlet(route)===outlet||outlet!==PRIMARY_OUTLET&&emptyPathMatch(rawSegment,segments,route))&&("**"===route.path||match(rawSegment,route,segments).matched)}function noLeftoversInUrl(segmentGroup,segments,outlet){return 0===segments.length&&!segmentGroup.children[outlet]}const NG_DEV_MODE$7="undefined"==typeof ngDevMode||ngDevMode;class NoMatch$1{constructor(segmentGroup){this.segmentGroup=segmentGroup||null}}class AbsoluteRedirect{constructor(urlTree){this.urlTree=urlTree}}function noMatch(segmentGroup){return(0,throwError._)(new NoMatch$1(segmentGroup))}function absoluteRedirect(newTree){return(0,throwError._)(new AbsoluteRedirect(newTree))}class ApplyRedirects{constructor(injector,configLoader,urlSerializer,urlTree,config){this.injector=injector,this.configLoader=configLoader,this.urlSerializer=urlSerializer,this.urlTree=urlTree,this.config=config,this.allowRedirects=!0}apply(){const splitGroup=split(this.urlTree.root,[],[],this.config).segmentGroup,rootSegmentGroup=new UrlSegmentGroup(splitGroup.segments,splitGroup.children);return this.expandSegmentGroup(this.injector,this.config,rootSegmentGroup,PRIMARY_OUTLET).pipe((0,map.U)((rootSegmentGroup=>this.createUrlTree(squashSegmentGroup(rootSegmentGroup),this.urlTree.queryParams,this.urlTree.fragment)))).pipe((0,catchError.K)((e=>{if(e instanceof AbsoluteRedirect)return this.allowRedirects=!1,this.match(e.urlTree);if(e instanceof NoMatch$1)throw this.noMatchError(e);throw e})))}match(tree){return this.expandSegmentGroup(this.injector,this.config,tree.root,PRIMARY_OUTLET).pipe((0,map.U)((rootSegmentGroup=>this.createUrlTree(squashSegmentGroup(rootSegmentGroup),tree.queryParams,tree.fragment)))).pipe((0,catchError.K)((e=>{if(e instanceof NoMatch$1)throw this.noMatchError(e);throw e})))}noMatchError(e){return new core["ɵRuntimeError"](4002,NG_DEV_MODE$7&&`Cannot match any routes. URL Segment: '${e.segmentGroup}'`)}createUrlTree(rootCandidate,queryParams,fragment){const root=createRoot(rootCandidate);return new UrlTree(root,queryParams,fragment)}expandSegmentGroup(injector,routes,segmentGroup,outlet){return 0===segmentGroup.segments.length&&segmentGroup.hasChildren()?this.expandChildren(injector,routes,segmentGroup).pipe((0,map.U)((children=>new UrlSegmentGroup([],children)))):this.expandSegment(injector,segmentGroup,routes,segmentGroup.segments,outlet,!0)}expandChildren(injector,routes,segmentGroup){const childOutlets=[];for(const child of Object.keys(segmentGroup.children))"primary"===child?childOutlets.unshift(child):childOutlets.push(child);return(0,from.D)(childOutlets).pipe((0,concatMap.b)((childOutlet=>{const child=segmentGroup.children[childOutlet],sortedRoutes=sortByMatchingOutlets(routes,childOutlet);return this.expandSegmentGroup(injector,sortedRoutes,child,childOutlet).pipe((0,map.U)((s=>({segment:s,outlet:childOutlet}))))})),scan(((children,expandedChild)=>(children[expandedChild.outlet]=expandedChild.segment,children)),{}),last())}expandSegment(injector,segmentGroup,routes,segments,outlet,allowRedirects){return(0,from.D)(routes).pipe((0,concatMap.b)((r=>this.expandSegmentAgainstRoute(injector,segmentGroup,routes,r,segments,outlet,allowRedirects).pipe((0,catchError.K)((e=>{if(e instanceof NoMatch$1)return(0,of.of)(null);throw e}))))),(0,first.P)((s=>!!s)),(0,catchError.K)(((e,_)=>{if(isEmptyError(e))return noLeftoversInUrl(segmentGroup,segments,outlet)?(0,of.of)(new UrlSegmentGroup([],{})):noMatch(segmentGroup);throw e})))}expandSegmentAgainstRoute(injector,segmentGroup,routes,route,paths,outlet,allowRedirects){return isImmediateMatch(route,segmentGroup,paths,outlet)?void 0===route.redirectTo?this.matchSegmentAgainstRoute(injector,segmentGroup,route,paths,outlet):allowRedirects&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(injector,segmentGroup,routes,route,paths,outlet):noMatch(segmentGroup):noMatch(segmentGroup)}expandSegmentAgainstRouteUsingRedirect(injector,segmentGroup,routes,route,segments,outlet){return"**"===route.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(injector,routes,route,outlet):this.expandRegularSegmentAgainstRouteUsingRedirect(injector,segmentGroup,routes,route,segments,outlet)}expandWildCardWithParamsAgainstRouteUsingRedirect(injector,routes,route,outlet){const newTree=this.applyRedirectCommands([],route.redirectTo,{});return route.redirectTo.startsWith("/")?absoluteRedirect(newTree):this.lineralizeSegments(route,newTree).pipe((0,mergeMap.z)((newSegments=>{const group=new UrlSegmentGroup(newSegments,{});return this.expandSegment(injector,group,routes,newSegments,outlet,!1)})))}expandRegularSegmentAgainstRouteUsingRedirect(injector,segmentGroup,routes,route,segments,outlet){const{matched,consumedSegments,remainingSegments,positionalParamSegments}=match(segmentGroup,route,segments);if(!matched)return noMatch(segmentGroup);const newTree=this.applyRedirectCommands(consumedSegments,route.redirectTo,positionalParamSegments);return route.redirectTo.startsWith("/")?absoluteRedirect(newTree):this.lineralizeSegments(route,newTree).pipe((0,mergeMap.z)((newSegments=>this.expandSegment(injector,segmentGroup,routes,newSegments.concat(remainingSegments),outlet,!1))))}matchSegmentAgainstRoute(injector,rawSegmentGroup,route,segments,outlet){if("**"===route.path){if(injector=getOrCreateRouteInjectorIfNeeded(route,injector),route.loadChildren){return(route._loadedRoutes?(0,of.of)({routes:route._loadedRoutes,injector:route._loadedInjector}):this.configLoader.loadChildren(injector,route)).pipe((0,map.U)((cfg=>(route._loadedRoutes=cfg.routes,route._loadedInjector=cfg.injector,new UrlSegmentGroup(segments,{})))))}return(0,of.of)(new UrlSegmentGroup(segments,{}))}return matchWithChecks(rawSegmentGroup,route,segments,injector,this.urlSerializer).pipe((0,switchMap.w)((({matched,consumedSegments,remainingSegments})=>{if(!matched)return noMatch(rawSegmentGroup);injector=route._injector??injector;return this.getChildConfig(injector,route,segments).pipe((0,mergeMap.z)((routerConfig=>{const childInjector=routerConfig.injector??injector,childConfig=routerConfig.routes,{segmentGroup:splitSegmentGroup,slicedSegments}=split(rawSegmentGroup,consumedSegments,remainingSegments,childConfig),segmentGroup=new UrlSegmentGroup(splitSegmentGroup.segments,splitSegmentGroup.children);if(0===slicedSegments.length&&segmentGroup.hasChildren()){return this.expandChildren(childInjector,childConfig,segmentGroup).pipe((0,map.U)((children=>new UrlSegmentGroup(consumedSegments,children))))}if(0===childConfig.length&&0===slicedSegments.length)return(0,of.of)(new UrlSegmentGroup(consumedSegments,{}));const matchedOnOutlet=getOutlet(route)===outlet;return this.expandSegment(childInjector,segmentGroup,childConfig,slicedSegments,matchedOnOutlet?PRIMARY_OUTLET:outlet,!0).pipe((0,map.U)((cs=>new UrlSegmentGroup(consumedSegments.concat(cs.segments),cs.children))))})))})))}getChildConfig(injector,route,segments){return route.children?(0,of.of)({routes:route.children,injector}):route.loadChildren?void 0!==route._loadedRoutes?(0,of.of)({routes:route._loadedRoutes,injector:route._loadedInjector}):runCanLoadGuards(injector,route,segments,this.urlSerializer).pipe((0,mergeMap.z)((shouldLoadResult=>shouldLoadResult?this.configLoader.loadChildren(injector,route).pipe((0,tap.b)((cfg=>{route._loadedRoutes=cfg.routes,route._loadedInjector=cfg.injector}))):function canLoadFails(route){return(0,throwError._)(navigationCancelingError(NG_DEV_MODE$7&&`Cannot load children because the guard of the route "path: '${route.path}'" returned false`,3))}(route)))):(0,of.of)({routes:[],injector})}lineralizeSegments(route,urlTree){let res=[],c=urlTree.root;for(;;){if(res=res.concat(c.segments),0===c.numberOfChildren)return(0,of.of)(res);if(c.numberOfChildren>1||!c.children[PRIMARY_OUTLET])return redirectTo=route.redirectTo,(0,throwError._)(new core["ɵRuntimeError"](4e3,NG_DEV_MODE$7&&`Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`));c=c.children[PRIMARY_OUTLET]}var redirectTo}applyRedirectCommands(segments,redirectTo,posParams){return this.applyRedirectCreateUrlTree(redirectTo,this.urlSerializer.parse(redirectTo),segments,posParams)}applyRedirectCreateUrlTree(redirectTo,urlTree,segments,posParams){const newRoot=this.createSegmentGroup(redirectTo,urlTree.root,segments,posParams);return new UrlTree(newRoot,this.createQueryParams(urlTree.queryParams,this.urlTree.queryParams),urlTree.fragment)}createQueryParams(redirectToParams,actualParams){const res={};return forEach(redirectToParams,((v,k)=>{if("string"==typeof v&&v.startsWith(":")){const sourceName=v.substring(1);res[k]=actualParams[sourceName]}else res[k]=v})),res}createSegmentGroup(redirectTo,group,segments,posParams){const updatedSegments=this.createSegments(redirectTo,group.segments,segments,posParams);let children={};return forEach(group.children,((child,name)=>{children[name]=this.createSegmentGroup(redirectTo,child,segments,posParams)})),new UrlSegmentGroup(updatedSegments,children)}createSegments(redirectTo,redirectToSegments,actualSegments,posParams){return redirectToSegments.map((s=>s.path.startsWith(":")?this.findPosParam(redirectTo,s,posParams):this.findOrReturn(s,actualSegments)))}findPosParam(redirectTo,redirectToUrlSegment,posParams){const pos=posParams[redirectToUrlSegment.path.substring(1)];if(!pos)throw new core["ɵRuntimeError"](4001,NG_DEV_MODE$7&&`Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);return pos}findOrReturn(redirectToUrlSegment,actualSegments){let idx=0;for(const s of actualSegments){if(s.path===redirectToUrlSegment.path)return actualSegments.splice(idx),s;idx++}return redirectToUrlSegment}}function applyRedirects(environmentInjector,configLoader,urlSerializer,config){return(0,switchMap.w)((t=>function applyRedirects$1(injector,configLoader,urlSerializer,urlTree,config){return new ApplyRedirects(injector,configLoader,urlSerializer,urlTree,config).apply()}(environmentInjector,configLoader,urlSerializer,t.extractedUrl,config).pipe((0,map.U)((urlAfterRedirects=>({...t,urlAfterRedirects}))))))}const NG_DEV_MODE$6="undefined"==typeof ngDevMode||!!ngDevMode;class NoMatch{}function recognize$1(injector,rootComponentType,config,urlTree,url,urlSerializer,paramsInheritanceStrategy="emptyOnly"){return new Recognizer(injector,rootComponentType,config,urlTree,url,paramsInheritanceStrategy,urlSerializer).recognize().pipe((0,switchMap.w)((result=>null===result?function newObservableError(e){return new Observable.y((obs=>obs.error(e)))}(new NoMatch):(0,of.of)(result))))}class Recognizer{constructor(injector,rootComponentType,config,urlTree,url,paramsInheritanceStrategy,urlSerializer){this.injector=injector,this.rootComponentType=rootComponentType,this.config=config,this.urlTree=urlTree,this.url=url,this.paramsInheritanceStrategy=paramsInheritanceStrategy,this.urlSerializer=urlSerializer}recognize(){const rootSegmentGroup=split(this.urlTree.root,[],[],this.config.filter((c=>void 0===c.redirectTo))).segmentGroup;return this.processSegmentGroup(this.injector,this.config,rootSegmentGroup,PRIMARY_OUTLET).pipe((0,map.U)((children=>{if(null===children)return null;const root=new ActivatedRouteSnapshot([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},PRIMARY_OUTLET,this.rootComponentType,null,this.urlTree.root,-1,{}),rootNode=new TreeNode(root,children),routeState=new RouterStateSnapshot(this.url,rootNode);return this.inheritParamsAndData(routeState._root),routeState})))}inheritParamsAndData(routeNode){const route=routeNode.value,i=inheritedParamsDataResolve(route,this.paramsInheritanceStrategy);route.params=Object.freeze(i.params),route.data=Object.freeze(i.data),routeNode.children.forEach((n=>this.inheritParamsAndData(n)))}processSegmentGroup(injector,config,segmentGroup,outlet){return 0===segmentGroup.segments.length&&segmentGroup.hasChildren()?this.processChildren(injector,config,segmentGroup):this.processSegment(injector,config,segmentGroup,segmentGroup.segments,outlet)}processChildren(injector,config,segmentGroup){return(0,from.D)(Object.keys(segmentGroup.children)).pipe((0,concatMap.b)((childOutlet=>{const child=segmentGroup.children[childOutlet],sortedConfig=sortByMatchingOutlets(config,childOutlet);return this.processSegmentGroup(injector,sortedConfig,child,childOutlet)})),scan(((children,outletChildren)=>children&&outletChildren?(children.push(...outletChildren),children):null)),(0,takeWhile.o)((children=>null!==children)),(0,defaultIfEmpty.d)(null),last(),(0,map.U)((children=>{if(null===children)return null;const mergedChildren=mergeEmptyPathMatches(children);return NG_DEV_MODE$6&&function checkOutletNameUniqueness(nodes){const names={};nodes.forEach((n=>{const routeWithSameOutletName=names[n.value.outlet];if(routeWithSameOutletName){const p=routeWithSameOutletName.url.map((s=>s.toString())).join("/"),c=n.value.url.map((s=>s.toString())).join("/");throw new core["ɵRuntimeError"](4006,NG_DEV_MODE$6&&`Two segments cannot have the same outlet name: '${p}' and '${c}'.`)}names[n.value.outlet]=n.value}))}(mergedChildren),function sortActivatedRouteSnapshots(nodes){nodes.sort(((a,b)=>a.value.outlet===PRIMARY_OUTLET?-1:b.value.outlet===PRIMARY_OUTLET?1:a.value.outlet.localeCompare(b.value.outlet)))}(mergedChildren),mergedChildren})))}processSegment(injector,routes,segmentGroup,segments,outlet){return(0,from.D)(routes).pipe((0,concatMap.b)((r=>this.processSegmentAgainstRoute(r._injector??injector,r,segmentGroup,segments,outlet))),(0,first.P)((x=>!!x)),(0,catchError.K)((e=>{if(isEmptyError(e))return noLeftoversInUrl(segmentGroup,segments,outlet)?(0,of.of)([]):(0,of.of)(null);throw e})))}processSegmentAgainstRoute(injector,route,rawSegment,segments,outlet){if(route.redirectTo||!isImmediateMatch(route,rawSegment,segments,outlet))return(0,of.of)(null);let matchResult;if("**"===route.path){const params=segments.length>0?router_last(segments).parameters:{},pathIndexShift=getPathIndexShift(rawSegment)+segments.length,snapshot=new ActivatedRouteSnapshot(segments,params,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,getData(route),getOutlet(route),route.component??route._loadedComponent??null,route,getSourceSegmentGroup(rawSegment),pathIndexShift,getResolve(route));matchResult=(0,of.of)({snapshot,consumedSegments:[],remainingSegments:[]})}else matchResult=matchWithChecks(rawSegment,route,segments,injector,this.urlSerializer).pipe((0,map.U)((({matched,consumedSegments,remainingSegments,parameters})=>{if(!matched)return null;const pathIndexShift=getPathIndexShift(rawSegment)+consumedSegments.length;return{snapshot:new ActivatedRouteSnapshot(consumedSegments,parameters,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,getData(route),getOutlet(route),route.component??route._loadedComponent??null,route,getSourceSegmentGroup(rawSegment),pathIndexShift,getResolve(route)),consumedSegments,remainingSegments}})));return matchResult.pipe((0,switchMap.w)((result=>{if(null===result)return(0,of.of)(null);const{snapshot,consumedSegments,remainingSegments}=result;injector=route._injector??injector;const childInjector=route._loadedInjector??injector,childConfig=function getChildConfig(route){if(route.children)return route.children;if(route.loadChildren)return route._loadedRoutes;return[]}(route),{segmentGroup,slicedSegments}=split(rawSegment,consumedSegments,remainingSegments,childConfig.filter((c=>void 0===c.redirectTo)));if(0===slicedSegments.length&&segmentGroup.hasChildren())return this.processChildren(childInjector,childConfig,segmentGroup).pipe((0,map.U)((children=>null===children?null:[new TreeNode(snapshot,children)])));if(0===childConfig.length&&0===slicedSegments.length)return(0,of.of)([new TreeNode(snapshot,[])]);const matchedOnOutlet=getOutlet(route)===outlet;return this.processSegment(childInjector,childConfig,segmentGroup,slicedSegments,matchedOnOutlet?PRIMARY_OUTLET:outlet).pipe((0,map.U)((children=>null===children?null:[new TreeNode(snapshot,children)])))})))}}function hasEmptyPathConfig(node){const config=node.value.routeConfig;return config&&""===config.path&&void 0===config.redirectTo}function mergeEmptyPathMatches(nodes){const result=[],mergedNodes=new Set;for(const node of nodes){if(!hasEmptyPathConfig(node)){result.push(node);continue}const duplicateEmptyPathNode=result.find((resultNode=>node.value.routeConfig===resultNode.value.routeConfig));void 0!==duplicateEmptyPathNode?(duplicateEmptyPathNode.children.push(...node.children),mergedNodes.add(duplicateEmptyPathNode)):result.push(node)}for(const mergedNode of mergedNodes){const mergedChildren=mergeEmptyPathMatches(mergedNode.children);result.push(new TreeNode(mergedNode.value,mergedChildren))}return result.filter((n=>!mergedNodes.has(n)))}function getSourceSegmentGroup(segmentGroup){let s=segmentGroup;for(;s._sourceSegment;)s=s._sourceSegment;return s}function getPathIndexShift(segmentGroup){let s=segmentGroup,res=s._segmentIndexShift??0;for(;s._sourceSegment;)s=s._sourceSegment,res+=s._segmentIndexShift??0;return res-1}function getData(route){return route.data||{}}function getResolve(route){return route.resolve||{}}function resolveData(paramsInheritanceStrategy,injector){return(0,mergeMap.z)((t=>{const{targetSnapshot,guards:{canActivateChecks}}=t;if(!canActivateChecks.length)return(0,of.of)(t);let canActivateChecksResolved=0;return(0,from.D)(canActivateChecks).pipe((0,concatMap.b)((check=>function runResolve(futureARS,futureRSS,paramsInheritanceStrategy,injector){const config=futureARS.routeConfig,resolve=futureARS._resolve;void 0===config?.title||hasStaticTitle(config)||(resolve[RouteTitleKey]=config.title);return function resolveNode(resolve,futureARS,futureRSS,injector){const keys=function getDataKeys(obj){return[...Object.keys(obj),...Object.getOwnPropertySymbols(obj)]}(resolve);if(0===keys.length)return(0,of.of)({});const data={};return(0,from.D)(keys).pipe((0,mergeMap.z)((key=>function getResolver(injectionToken,futureARS,futureRSS,injector){const closestInjector=getClosestRouteInjector(futureARS)??injector,resolver=getTokenOrFunctionIdentity(injectionToken,closestInjector),resolverValue=resolver.resolve?resolver.resolve(futureARS,futureRSS):closestInjector.runInContext((()=>resolver(futureARS,futureRSS)));return wrapIntoObservable(resolverValue)}(resolve[key],futureARS,futureRSS,injector).pipe((0,first.P)(),(0,tap.b)((value=>{data[key]=value}))))),takeLast(1),(0,mapTo.h)(data),(0,catchError.K)((e=>isEmptyError(e)?empty.E:(0,throwError._)(e))))}(resolve,futureARS,futureRSS,injector).pipe((0,map.U)((resolvedData=>(futureARS._resolvedData=resolvedData,futureARS.data=inheritedParamsDataResolve(futureARS,paramsInheritanceStrategy).resolve,config&&hasStaticTitle(config)&&(futureARS.data[RouteTitleKey]=config.title),null))))}(check.route,targetSnapshot,paramsInheritanceStrategy,injector))),(0,tap.b)((()=>canActivateChecksResolved++)),takeLast(1),(0,mergeMap.z)((_=>canActivateChecksResolved===canActivateChecks.length?(0,of.of)(t):empty.E)))}))}function hasStaticTitle(config){return"string"==typeof config.title||null===config.title}function switchTap(next){return(0,switchMap.w)((v=>{const nextResult=next(v);return nextResult?(0,from.D)(nextResult).pipe((0,map.U)((()=>v))):(0,of.of)(v)}))}const NG_DEV_MODE$5="undefined"==typeof ngDevMode||!!ngDevMode,ROUTES=new core.InjectionToken("ROUTES");class RouterConfigLoader{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=(0,core.inject)(core.Compiler)}loadComponent(route){if(this.componentLoaders.get(route))return this.componentLoaders.get(route);if(route._loadedComponent)return(0,of.of)(route._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(route);const loadRunner=wrapIntoObservable(route.loadComponent()).pipe((0,map.U)(maybeUnwrapDefaultExport),(0,tap.b)((component=>{this.onLoadEndListener&&this.onLoadEndListener(route),NG_DEV_MODE$5&&assertStandalone(route.path??"",component),route._loadedComponent=component})),(0,finalize.x)((()=>{this.componentLoaders.delete(route)}))),loader=new ConnectableObservable.c(loadRunner,(()=>new Subject.x)).pipe((0,refCount.x)());return this.componentLoaders.set(route,loader),loader}loadChildren(parentInjector,route){if(this.childrenLoaders.get(route))return this.childrenLoaders.get(route);if(route._loadedRoutes)return(0,of.of)({routes:route._loadedRoutes,injector:route._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(route);const loadRunner=this.loadModuleFactoryOrRoutes(route.loadChildren).pipe((0,map.U)((factoryOrRoutes=>{let injector,rawRoutes;this.onLoadEndListener&&this.onLoadEndListener(route);let requireStandaloneComponents=!1;Array.isArray(factoryOrRoutes)?(rawRoutes=factoryOrRoutes,requireStandaloneComponents=!0):(injector=factoryOrRoutes.create(parentInjector).injector,rawRoutes=flatten(injector.get(ROUTES,[],core.InjectFlags.Self|core.InjectFlags.Optional)));const routes=rawRoutes.map(standardizeConfig);return NG_DEV_MODE$5&&validateConfig(routes,route.path,requireStandaloneComponents),{routes,injector}})),(0,finalize.x)((()=>{this.childrenLoaders.delete(route)}))),loader=new ConnectableObservable.c(loadRunner,(()=>new Subject.x)).pipe((0,refCount.x)());return this.childrenLoaders.set(route,loader),loader}loadModuleFactoryOrRoutes(loadChildren){return wrapIntoObservable(loadChildren()).pipe((0,map.U)(maybeUnwrapDefaultExport),(0,mergeMap.z)((t=>t instanceof core.NgModuleFactory||Array.isArray(t)?(0,of.of)(t):(0,from.D)(this.compiler.compileModuleAsync(t)))))}}function maybeUnwrapDefaultExport(input){return function isWrappedDefaultExport(value){return value&&"object"==typeof value&&"default"in value}(input)?input.default:input}RouterConfigLoader.ɵfac=function RouterConfigLoader_Factory(t){return new(t||RouterConfigLoader)},RouterConfigLoader.ɵprov=core["ɵɵdefineInjectable"]({token:RouterConfigLoader,factory:RouterConfigLoader.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterConfigLoader,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);const NG_DEV_MODE$4="undefined"==typeof ngDevMode||!!ngDevMode;class NavigationTransitions{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.lastSuccessfulNavigation=null,this.events=new Subject.x,this.configLoader=(0,core.inject)(RouterConfigLoader),this.environmentInjector=(0,core.inject)(core.EnvironmentInjector),this.urlSerializer=(0,core.inject)(UrlSerializer),this.rootContexts=(0,core.inject)(ChildrenOutletContexts),this.navigationId=0,this.afterPreactivation=()=>(0,of.of)(void 0),this.rootComponentType=null;this.configLoader.onLoadEndListener=r=>this.events.next(new RouteConfigLoadEnd(r)),this.configLoader.onLoadStartListener=r=>this.events.next(new RouteConfigLoadStart(r))}complete(){this.transitions?.complete()}handleNavigationRequest(request){const id=++this.navigationId;this.transitions?.next({...this.transitions.value,...request,id})}setupNavigations(router){return this.transitions=new BehaviorSubject.X({id:0,targetPageId:0,currentUrlTree:router.currentUrlTree,currentRawUrl:router.currentUrlTree,extractedUrl:router.urlHandlingStrategy.extract(router.currentUrlTree),urlAfterRedirects:router.urlHandlingStrategy.extract(router.currentUrlTree),rawUrl:router.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:"imperative",restoredState:null,currentSnapshot:router.routerState.snapshot,targetSnapshot:null,currentRouterState:router.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe((0,filter.h)((t=>0!==t.id)),(0,map.U)((t=>({...t,extractedUrl:router.urlHandlingStrategy.extract(t.rawUrl)}))),(0,switchMap.w)((overallTransitionState=>{let completed=!1,errored=!1;return(0,of.of)(overallTransitionState).pipe((0,tap.b)((t=>{this.currentNavigation={id:t.id,initialUrl:t.rawUrl,extractedUrl:t.extractedUrl,trigger:t.source,extras:t.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}})),(0,switchMap.w)((t=>{const browserUrlTree=router.browserUrlTree.toString(),urlTransition=!router.navigated||t.extractedUrl.toString()!==browserUrlTree||browserUrlTree!==router.currentUrlTree.toString(),onSameUrlNavigation=t.extras.onSameUrlNavigation??router.onSameUrlNavigation;if(!urlTransition&&"reload"!==onSameUrlNavigation){const reason=NG_DEV_MODE$4?`Navigation to ${t.rawUrl} was ignored because it is the same as the current Router URL.`:"";return this.events.next(new NavigationSkipped(t.id,router.serializeUrl(overallTransitionState.rawUrl),reason,0)),router.rawUrlTree=t.rawUrl,t.resolve(null),empty.E}if(router.urlHandlingStrategy.shouldProcessUrl(t.rawUrl))return isBrowserTriggeredNavigation(t.source)&&(router.browserUrlTree=t.extractedUrl),(0,of.of)(t).pipe((0,switchMap.w)((t=>{const transition=this.transitions?.getValue();return this.events.next(new NavigationStart(t.id,this.urlSerializer.serialize(t.extractedUrl),t.source,t.restoredState)),transition!==this.transitions?.getValue()?empty.E:Promise.resolve(t)})),applyRedirects(this.environmentInjector,this.configLoader,this.urlSerializer,router.config),(0,tap.b)((t=>{this.currentNavigation={...this.currentNavigation,finalUrl:t.urlAfterRedirects},overallTransitionState.urlAfterRedirects=t.urlAfterRedirects})),function recognize(injector,rootComponentType,config,serializer,paramsInheritanceStrategy){return(0,mergeMap.z)((t=>recognize$1(injector,rootComponentType,config,t.urlAfterRedirects,serializer.serialize(t.urlAfterRedirects),serializer,paramsInheritanceStrategy).pipe((0,map.U)((targetSnapshot=>({...t,targetSnapshot}))))))}(this.environmentInjector,this.rootComponentType,router.config,this.urlSerializer,router.paramsInheritanceStrategy),(0,tap.b)((t=>{if(overallTransitionState.targetSnapshot=t.targetSnapshot,"eager"===router.urlUpdateStrategy){if(!t.extras.skipLocationChange){const rawUrl=router.urlHandlingStrategy.merge(t.urlAfterRedirects,t.rawUrl);router.setBrowserUrl(rawUrl,t)}router.browserUrlTree=t.urlAfterRedirects}const routesRecognized=new RoutesRecognized(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot);this.events.next(routesRecognized)})));if(urlTransition&&router.urlHandlingStrategy.shouldProcessUrl(router.rawUrlTree)){const{id,extractedUrl,source,restoredState,extras}=t,navStart=new NavigationStart(id,this.urlSerializer.serialize(extractedUrl),source,restoredState);this.events.next(navStart);const targetSnapshot=createEmptyState(extractedUrl,this.rootComponentType).snapshot;return overallTransitionState={...t,targetSnapshot,urlAfterRedirects:extractedUrl,extras:{...extras,skipLocationChange:!1,replaceUrl:!1}},(0,of.of)(overallTransitionState)}{const reason=NG_DEV_MODE$4?`Navigation was ignored because the UrlHandlingStrategy indicated neither the current URL ${router.rawUrlTree} nor target URL ${t.rawUrl} should be processed.`:"";return this.events.next(new NavigationSkipped(t.id,router.serializeUrl(overallTransitionState.extractedUrl),reason,1)),router.rawUrlTree=t.rawUrl,t.resolve(null),empty.E}})),(0,tap.b)((t=>{const guardsStart=new GuardsCheckStart(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot);this.events.next(guardsStart)})),(0,map.U)((t=>overallTransitionState={...t,guards:getAllRouteGuards(t.targetSnapshot,t.currentSnapshot,this.rootContexts)})),checkGuards(this.environmentInjector,(evt=>this.events.next(evt))),(0,tap.b)((t=>{if(overallTransitionState.guardsResult=t.guardsResult,isUrlTree(t.guardsResult))throw redirectingNavigationError(this.urlSerializer,t.guardsResult);const guardsEnd=new GuardsCheckEnd(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);this.events.next(guardsEnd)})),(0,filter.h)((t=>!!t.guardsResult||(router.restoreHistory(t),this.cancelNavigationTransition(t,"",3),!1))),switchTap((t=>{if(t.guards.canActivateChecks.length)return(0,of.of)(t).pipe((0,tap.b)((t=>{const resolveStart=new ResolveStart(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot);this.events.next(resolveStart)})),(0,switchMap.w)((t=>{let dataResolved=!1;return(0,of.of)(t).pipe(resolveData(router.paramsInheritanceStrategy,this.environmentInjector),(0,tap.b)({next:()=>dataResolved=!0,complete:()=>{dataResolved||(router.restoreHistory(t),this.cancelNavigationTransition(t,NG_DEV_MODE$4?"At least one route resolver didn't emit any value.":"",2))}}))})),(0,tap.b)((t=>{const resolveEnd=new ResolveEnd(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(t.urlAfterRedirects),t.targetSnapshot);this.events.next(resolveEnd)})))})),switchTap((t=>{const loadComponents=route=>{const loaders=[];route.routeConfig?.loadComponent&&!route.routeConfig._loadedComponent&&loaders.push(this.configLoader.loadComponent(route.routeConfig).pipe((0,tap.b)((loadedComponent=>{route.component=loadedComponent})),(0,map.U)((()=>{}))));for(const child of route.children)loaders.push(...loadComponents(child));return loaders};return(0,combineLatest.a)(loadComponents(t.targetSnapshot.root)).pipe((0,defaultIfEmpty.d)(),(0,take.q)(1))})),switchTap((()=>this.afterPreactivation())),(0,map.U)((t=>{const targetRouterState=function createRouterState(routeReuseStrategy,curr,prevState){const root=createNode(routeReuseStrategy,curr._root,prevState?prevState._root:void 0);return new RouterState(root,curr)}(router.routeReuseStrategy,t.targetSnapshot,t.currentRouterState);return overallTransitionState={...t,targetRouterState}})),(0,tap.b)((t=>{router.currentUrlTree=t.urlAfterRedirects,router.rawUrlTree=router.urlHandlingStrategy.merge(t.urlAfterRedirects,t.rawUrl),router.routerState=t.targetRouterState,"deferred"===router.urlUpdateStrategy&&(t.extras.skipLocationChange||router.setBrowserUrl(router.rawUrlTree,t),router.browserUrlTree=t.urlAfterRedirects)})),(rootContexts=this.rootContexts,routeReuseStrategy=router.routeReuseStrategy,forwardEvent=evt=>this.events.next(evt),(0,map.U)((t=>(new ActivateRoutes(routeReuseStrategy,t.targetRouterState,t.currentRouterState,forwardEvent).activate(rootContexts),t)))),(0,take.q)(1),(0,tap.b)({next:t=>{completed=!0,this.lastSuccessfulNavigation=this.currentNavigation,router.navigated=!0,this.events.next(new NavigationEnd(t.id,this.urlSerializer.serialize(t.extractedUrl),this.urlSerializer.serialize(router.currentUrlTree))),router.titleStrategy?.updateTitle(t.targetRouterState.snapshot),t.resolve(!0)},complete:()=>{completed=!0}}),(0,finalize.x)((()=>{if(!completed&&!errored){const cancelationReason=NG_DEV_MODE$4?`Navigation ID ${overallTransitionState.id} is not equal to the current navigation id ${this.navigationId}`:"";this.cancelNavigationTransition(overallTransitionState,cancelationReason,1)}this.currentNavigation?.id===overallTransitionState.id&&(this.currentNavigation=null)})),(0,catchError.K)((e=>{if(errored=!0,isNavigationCancelingError$1(e)){isRedirectingNavigationCancelingError$1(e)||(router.navigated=!0,router.restoreHistory(overallTransitionState,!0));const navCancel=new NavigationCancel(overallTransitionState.id,this.urlSerializer.serialize(overallTransitionState.extractedUrl),e.message,e.cancellationCode);if(this.events.next(navCancel),isRedirectingNavigationCancelingError$1(e)){const mergedTree=router.urlHandlingStrategy.merge(e.url,router.rawUrlTree),extras={skipLocationChange:overallTransitionState.extras.skipLocationChange,replaceUrl:"eager"===router.urlUpdateStrategy||isBrowserTriggeredNavigation(overallTransitionState.source)};router.scheduleNavigation(mergedTree,"imperative",null,extras,{resolve:overallTransitionState.resolve,reject:overallTransitionState.reject,promise:overallTransitionState.promise})}else overallTransitionState.resolve(!1)}else{router.restoreHistory(overallTransitionState,!0);const navError=new NavigationError(overallTransitionState.id,this.urlSerializer.serialize(overallTransitionState.extractedUrl),e,overallTransitionState.targetSnapshot??void 0);this.events.next(navError);try{overallTransitionState.resolve(router.errorHandler(e))}catch(ee){overallTransitionState.reject(ee)}}return empty.E})));var rootContexts,routeReuseStrategy,forwardEvent})))}cancelNavigationTransition(t,reason,code){const navCancel=new NavigationCancel(t.id,this.urlSerializer.serialize(t.extractedUrl),reason,code);this.events.next(navCancel),t.resolve(!1)}}function isBrowserTriggeredNavigation(source){return"imperative"!==source}NavigationTransitions.ɵfac=function NavigationTransitions_Factory(t){return new(t||NavigationTransitions)},NavigationTransitions.ɵprov=core["ɵɵdefineInjectable"]({token:NavigationTransitions,factory:NavigationTransitions.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](NavigationTransitions,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[]}),null);class TitleStrategy{buildTitle(snapshot){let pageTitle,route=snapshot.root;for(;void 0!==route;)pageTitle=this.getResolvedTitleForRoute(route)??pageTitle,route=route.children.find((child=>child.outlet===PRIMARY_OUTLET));return pageTitle}getResolvedTitleForRoute(snapshot){return snapshot.data[RouteTitleKey]}}TitleStrategy.ɵfac=function TitleStrategy_Factory(t){return new(t||TitleStrategy)},TitleStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:TitleStrategy,factory:function(){return(0,core.inject)(DefaultTitleStrategy)},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](TitleStrategy,[{type:core.Injectable,args:[{providedIn:"root",useFactory:()=>(0,core.inject)(DefaultTitleStrategy)}]}],null,null);class DefaultTitleStrategy extends TitleStrategy{constructor(title){super(),this.title=title}updateTitle(snapshot){const title=this.buildTitle(snapshot);void 0!==title&&this.title.setTitle(title)}}DefaultTitleStrategy.ɵfac=function DefaultTitleStrategy_Factory(t){return new(t||DefaultTitleStrategy)(core["ɵɵinject"](platform_browser.Title))},DefaultTitleStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:DefaultTitleStrategy,factory:DefaultTitleStrategy.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](DefaultTitleStrategy,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:platform_browser.Title}]}),null);class RouteReuseStrategy{}RouteReuseStrategy.ɵfac=function RouteReuseStrategy_Factory(t){return new(t||RouteReuseStrategy)},RouteReuseStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:RouteReuseStrategy,factory:function(){return(0,core.inject)(DefaultRouteReuseStrategy)},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouteReuseStrategy,[{type:core.Injectable,args:[{providedIn:"root",useFactory:()=>(0,core.inject)(DefaultRouteReuseStrategy)}]}],null,null);class BaseRouteReuseStrategy{shouldDetach(route){return!1}store(route,detachedTree){}shouldAttach(route){return!1}retrieve(route){return null}shouldReuseRoute(future,curr){return future.routeConfig===curr.routeConfig}}class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy{}DefaultRouteReuseStrategy.ɵfac=function(){let ɵDefaultRouteReuseStrategy_BaseFactory;return function DefaultRouteReuseStrategy_Factory(t){return(ɵDefaultRouteReuseStrategy_BaseFactory||(ɵDefaultRouteReuseStrategy_BaseFactory=core["ɵɵgetInheritedFactory"](DefaultRouteReuseStrategy)))(t||DefaultRouteReuseStrategy)}}(),DefaultRouteReuseStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:DefaultRouteReuseStrategy,factory:DefaultRouteReuseStrategy.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](DefaultRouteReuseStrategy,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);const NG_DEV_MODE$3="undefined"==typeof ngDevMode||!!ngDevMode,ROUTER_CONFIGURATION=new core.InjectionToken(NG_DEV_MODE$3?"router config":"",{providedIn:"root",factory:()=>({})});class UrlHandlingStrategy{}UrlHandlingStrategy.ɵfac=function UrlHandlingStrategy_Factory(t){return new(t||UrlHandlingStrategy)},UrlHandlingStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:UrlHandlingStrategy,factory:function(){return(0,core.inject)(DefaultUrlHandlingStrategy)},providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](UrlHandlingStrategy,[{type:core.Injectable,args:[{providedIn:"root",useFactory:()=>(0,core.inject)(DefaultUrlHandlingStrategy)}]}],null,null);class DefaultUrlHandlingStrategy{shouldProcessUrl(url){return!0}extract(url){return url}merge(newUrlPart,wholeUrl){return newUrlPart}}DefaultUrlHandlingStrategy.ɵfac=function DefaultUrlHandlingStrategy_Factory(t){return new(t||DefaultUrlHandlingStrategy)},DefaultUrlHandlingStrategy.ɵprov=core["ɵɵdefineInjectable"]({token:DefaultUrlHandlingStrategy,factory:DefaultUrlHandlingStrategy.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](DefaultUrlHandlingStrategy,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);const NG_DEV_MODE$2="undefined"==typeof ngDevMode||!!ngDevMode;function defaultErrorHandler(error){throw error}function defaultMalformedUriErrorHandler(error,urlSerializer,url){return urlSerializer.parse("/")}const exactMatchOptions={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},subsetMatchOptions={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};class Router{get navigationId(){return this.navigationTransitions.navigationId}get browserPageId(){return this.location.getState()?.ɵrouterPageId}get events(){return this.navigationTransitions.events}constructor(){this.disposed=!1,this.currentPageId=0,this.console=(0,core.inject)(core["ɵConsole"]),this.isNgZoneEnabled=!1,this.options=(0,core.inject)(ROUTER_CONFIGURATION,{optional:!0})||{},this.errorHandler=this.options.errorHandler||defaultErrorHandler,this.malformedUriErrorHandler=this.options.malformedUriErrorHandler||defaultMalformedUriErrorHandler,this.navigated=!1,this.lastSuccessfulId=-1,this.urlHandlingStrategy=(0,core.inject)(UrlHandlingStrategy),this.routeReuseStrategy=(0,core.inject)(RouteReuseStrategy),this.urlCreationStrategy=(0,core.inject)(CreateUrlTreeStrategy),this.titleStrategy=(0,core.inject)(TitleStrategy),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.config=flatten((0,core.inject)(ROUTES,{optional:!0})??[]),this.navigationTransitions=(0,core.inject)(NavigationTransitions),this.urlSerializer=(0,core.inject)(UrlSerializer),this.location=(0,core.inject)(common.Location),this.isNgZoneEnabled=(0,core.inject)(core.NgZone)instanceof core.NgZone&&core.NgZone.isInAngularZone(),this.resetConfig(this.config),this.currentUrlTree=new UrlTree,this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=createEmptyState(this.currentUrlTree,null),this.navigationTransitions.setupNavigations(this).subscribe((t=>{this.lastSuccessfulId=t.id,this.currentPageId=t.targetPageId}),(e=>{this.console.warn(`Unhandled Navigation Error: ${e}`)}))}resetRootComponentType(rootComponentType){this.routerState.root.component=rootComponentType,this.navigationTransitions.rootComponentType=rootComponentType}initialNavigation(){if(this.setUpLocationChangeListener(),!this.navigationTransitions.hasRequestedNavigation){const state=this.location.getState();this.navigateToSyncWithBrowser(this.location.path(!0),"imperative",state)}}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe((event=>{const source="popstate"===event.type?"popstate":"hashchange";"popstate"===source&&setTimeout((()=>{this.navigateToSyncWithBrowser(event.url,source,event.state)}),0)})))}navigateToSyncWithBrowser(url,source,state){const extras={replaceUrl:!0},restoredState=state?.navigationId?state:null;if(state){const stateCopy={...state};delete stateCopy.navigationId,delete stateCopy.ɵrouterPageId,0!==Object.keys(stateCopy).length&&(extras.state=stateCopy)}const urlTree=this.parseUrl(url);this.scheduleNavigation(urlTree,source,restoredState,extras)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}resetConfig(config){NG_DEV_MODE$2&&validateConfig(config),this.config=config.map(standardizeConfig),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(commands,navigationExtras={}){const{relativeTo,queryParams,fragment,queryParamsHandling,preserveFragment}=navigationExtras,f=preserveFragment?this.currentUrlTree.fragment:fragment;let q=null;switch(queryParamsHandling){case"merge":q={...this.currentUrlTree.queryParams,...queryParams};break;case"preserve":q=this.currentUrlTree.queryParams;break;default:q=queryParams||null}return null!==q&&(q=this.removeEmptyProps(q)),this.urlCreationStrategy.createUrlTree(relativeTo,this.routerState,this.currentUrlTree,commands,q,f??null)}navigateByUrl(url,extras={skipLocationChange:!1}){NG_DEV_MODE$2&&(this.isNgZoneEnabled&&!core.NgZone.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?"),url instanceof UrlTree&&url._warnIfUsedForNavigation&&this.console.warn(url._warnIfUsedForNavigation));const urlTree=isUrlTree(url)?url:this.parseUrl(url),mergedTree=this.urlHandlingStrategy.merge(urlTree,this.rawUrlTree);return this.scheduleNavigation(mergedTree,"imperative",null,extras)}navigate(commands,extras={skipLocationChange:!1}){return function validateCommands(commands){for(let i=0;i{const value=params[key];return null!=value&&(result[key]=value),result}),{})}scheduleNavigation(rawUrl,source,restoredState,extras,priorPromise){if(this.disposed)return Promise.resolve(!1);let resolve,reject,promise,targetPageId;return priorPromise?(resolve=priorPromise.resolve,reject=priorPromise.reject,promise=priorPromise.promise):promise=new Promise(((res,rej)=>{resolve=res,reject=rej})),targetPageId="computed"===this.canceledNavigationResolution?restoredState&&restoredState.ɵrouterPageId?restoredState.ɵrouterPageId:extras.replaceUrl||extras.skipLocationChange?this.browserPageId??0:(this.browserPageId??0)+1:0,this.navigationTransitions.handleNavigationRequest({targetPageId,source,restoredState,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl,extras,resolve,reject,promise,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),promise.catch((e=>Promise.reject(e)))}setBrowserUrl(url,transition){const path=this.urlSerializer.serialize(url),state={...transition.extras.state,...this.generateNgRouterState(transition.id,transition.targetPageId)};this.location.isCurrentPathEqualTo(path)||transition.extras.replaceUrl?this.location.replaceState(path,"",state):this.location.go(path,"",state)}restoreHistory(transition,restoringFromCaughtError=!1){if("computed"===this.canceledNavigationResolution){const targetPagePosition=this.currentPageId-transition.targetPageId;("popstate"===transition.source||"eager"===this.urlUpdateStrategy||this.currentUrlTree===this.getCurrentNavigation()?.finalUrl)&&0!==targetPagePosition?this.location.historyGo(targetPagePosition):this.currentUrlTree===this.getCurrentNavigation()?.finalUrl&&0===targetPagePosition&&(this.resetState(transition),this.browserUrlTree=transition.currentUrlTree,this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(restoringFromCaughtError&&this.resetState(transition),this.resetUrlToCurrentUrlTree())}resetState(t){this.routerState=t.currentRouterState,this.currentUrlTree=t.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(navigationId,routerPageId){return"computed"===this.canceledNavigationResolution?{navigationId,ɵrouterPageId:routerPageId}:{navigationId}}}Router.ɵfac=function Router_Factory(t){return new(t||Router)},Router.ɵprov=core["ɵɵdefineInjectable"]({token:Router,factory:Router.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](Router,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[]}),null);class RouterLink{constructor(router,route,tabIndexAttribute,renderer,el,locationStrategy){this.router=router,this.route=route,this.tabIndexAttribute=tabIndexAttribute,this.renderer=renderer,this.el=el,this.locationStrategy=locationStrategy,this._preserveFragment=!1,this._skipLocationChange=!1,this._replaceUrl=!1,this.href=null,this.commands=null,this.onChanges=new Subject.x;const tagName=el.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===tagName||"area"===tagName,this.isAnchorElement?this.subscription=router.events.subscribe((s=>{s instanceof NavigationEnd&&this.updateHref()})):this.setTabIndexIfNotOnNativeEl("0")}set preserveFragment(preserveFragment){this._preserveFragment=(0,core["ɵcoerceToBoolean"])(preserveFragment)}get preserveFragment(){return this._preserveFragment}set skipLocationChange(skipLocationChange){this._skipLocationChange=(0,core["ɵcoerceToBoolean"])(skipLocationChange)}get skipLocationChange(){return this._skipLocationChange}set replaceUrl(replaceUrl){this._replaceUrl=(0,core["ɵcoerceToBoolean"])(replaceUrl)}get replaceUrl(){return this._replaceUrl}setTabIndexIfNotOnNativeEl(newTabIndex){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",newTabIndex)}ngOnChanges(changes){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(commands){null!=commands?(this.commands=Array.isArray(commands)?commands:[commands],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(button,ctrlKey,shiftKey,altKey,metaKey){if(null===this.urlTree)return!0;if(this.isAnchorElement){if(0!==button||ctrlKey||shiftKey||altKey||metaKey)return!0;if("string"==typeof this.target&&"_self"!=this.target)return!0}const extras={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state};return this.router.navigateByUrl(this.urlTree,extras),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){this.href=null!==this.urlTree&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(this.urlTree)):null;const sanitizedValue=null===this.href?null:(0,core["ɵɵsanitizeUrlOrResourceUrl"])(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",sanitizedValue)}applyAttributeValue(attrName,attrValue){const renderer=this.renderer,nativeElement=this.el.nativeElement;null!==attrValue?renderer.setAttribute(nativeElement,attrName,attrValue):renderer.removeAttribute(nativeElement,attrName)}get urlTree(){return null===this.commands?null:this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}}RouterLink.ɵfac=function RouterLink_Factory(t){return new(t||RouterLink)(core["ɵɵdirectiveInject"](Router),core["ɵɵdirectiveInject"](ActivatedRoute),core["ɵɵinjectAttribute"]("tabindex"),core["ɵɵdirectiveInject"](core.Renderer2),core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](common.LocationStrategy))},RouterLink.ɵdir=core["ɵɵdefineDirective"]({type:RouterLink,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function RouterLink_HostBindings(rf,ctx){1&rf&&core["ɵɵlistener"]("click",(function RouterLink_click_HostBindingHandler($event){return ctx.onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)})),2&rf&&core["ɵɵattribute"]("target",ctx.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",relativeTo:"relativeTo",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",routerLink:"routerLink"},standalone:!0,features:[core["ɵɵNgOnChangesFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterLink,[{type:core.Directive,args:[{selector:"[routerLink]",standalone:!0}]}],(function(){return[{type:Router},{type:ActivatedRoute},{type:void 0,decorators:[{type:core.Attribute,args:["tabindex"]}]},{type:core.Renderer2},{type:core.ElementRef},{type:common.LocationStrategy}]}),{target:[{type:core.HostBinding,args:["attr.target"]},{type:core.Input}],queryParams:[{type:core.Input}],fragment:[{type:core.Input}],queryParamsHandling:[{type:core.Input}],state:[{type:core.Input}],relativeTo:[{type:core.Input}],preserveFragment:[{type:core.Input}],skipLocationChange:[{type:core.Input}],replaceUrl:[{type:core.Input}],routerLink:[{type:core.Input}],onClick:[{type:core.HostListener,args:["click",["$event.button","$event.ctrlKey","$event.shiftKey","$event.altKey","$event.metaKey"]]}]});class RouterLinkActive{get isActive(){return this._isActive}constructor(router,element,renderer,cdr,link){this.router=router,this.element=element,this.renderer=renderer,this.cdr=cdr,this.link=link,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new core.EventEmitter,this.routerEventsSubscription=router.events.subscribe((s=>{s instanceof NavigationEnd&&this.update()}))}ngAfterContentInit(){(0,of.of)(this.links.changes,(0,of.of)(null)).pipe((0,mergeAll.J)()).subscribe((_=>{this.update(),this.subscribeToEachLinkOnChanges()}))}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();const allLinkChanges=[...this.links.toArray(),this.link].filter((link=>!!link)).map((link=>link.onChanges));this.linkInputChangesSubscription=(0,from.D)(allLinkChanges).pipe((0,mergeAll.J)()).subscribe((link=>{this._isActive!==this.isLinkActive(this.router)(link)&&this.update()}))}set routerLinkActive(data){const classes=Array.isArray(data)?data:data.split(" ");this.classes=classes.filter((c=>!!c))}ngOnChanges(changes){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){this.links&&this.router.navigated&&Promise.resolve().then((()=>{const hasActiveLinks=this.hasActiveLinks();this._isActive!==hasActiveLinks&&(this._isActive=hasActiveLinks,this.cdr.markForCheck(),this.classes.forEach((c=>{hasActiveLinks?this.renderer.addClass(this.element.nativeElement,c):this.renderer.removeClass(this.element.nativeElement,c)})),hasActiveLinks&&void 0!==this.ariaCurrentWhenActive?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this.isActiveChange.emit(hasActiveLinks))}))}isLinkActive(router){const options=function isActiveMatchOptions(options){return!!options.paths}(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return link=>!!link.urlTree&&router.isActive(link.urlTree,options)}hasActiveLinks(){const isActiveCheckFn=this.isLinkActive(this.router);return this.link&&isActiveCheckFn(this.link)||this.links.some(isActiveCheckFn)}}RouterLinkActive.ɵfac=function RouterLinkActive_Factory(t){return new(t||RouterLinkActive)(core["ɵɵdirectiveInject"](Router),core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](core.Renderer2),core["ɵɵdirectiveInject"](core.ChangeDetectorRef),core["ɵɵdirectiveInject"](RouterLink,8))},RouterLinkActive.ɵdir=core["ɵɵdefineDirective"]({type:RouterLinkActive,selectors:[["","routerLinkActive",""]],contentQueries:function RouterLinkActive_ContentQueries(rf,ctx,dirIndex){if(1&rf&&core["ɵɵcontentQuery"](dirIndex,RouterLink,5),2&rf){let _t;core["ɵɵqueryRefresh"](_t=core["ɵɵloadQuery"]())&&(ctx.links=_t)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[core["ɵɵNgOnChangesFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterLinkActive,[{type:core.Directive,args:[{selector:"[routerLinkActive]",exportAs:"routerLinkActive",standalone:!0}]}],(function(){return[{type:Router},{type:core.ElementRef},{type:core.Renderer2},{type:core.ChangeDetectorRef},{type:RouterLink,decorators:[{type:core.Optional}]}]}),{links:[{type:core.ContentChildren,args:[RouterLink,{descendants:!0}]}],routerLinkActiveOptions:[{type:core.Input}],ariaCurrentWhenActive:[{type:core.Input}],isActiveChange:[{type:core.Output}],routerLinkActive:[{type:core.Input}]});class PreloadingStrategy{}class PreloadAllModules{preload(route,fn){return fn().pipe((0,catchError.K)((()=>(0,of.of)(null))))}}PreloadAllModules.ɵfac=function PreloadAllModules_Factory(t){return new(t||PreloadAllModules)},PreloadAllModules.ɵprov=core["ɵɵdefineInjectable"]({token:PreloadAllModules,factory:PreloadAllModules.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](PreloadAllModules,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);class NoPreloading{preload(route,fn){return(0,of.of)(null)}}NoPreloading.ɵfac=function NoPreloading_Factory(t){return new(t||NoPreloading)},NoPreloading.ɵprov=core["ɵɵdefineInjectable"]({token:NoPreloading,factory:NoPreloading.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](NoPreloading,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);class RouterPreloader{constructor(router,compiler,injector,preloadingStrategy,loader){this.router=router,this.injector=injector,this.preloadingStrategy=preloadingStrategy,this.loader=loader}setUpPreloading(){this.subscription=this.router.events.pipe((0,filter.h)((e=>e instanceof NavigationEnd)),(0,concatMap.b)((()=>this.preload()))).subscribe((()=>{}))}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(injector,routes){const res=[];for(const route of routes){route.providers&&!route._injector&&(route._injector=(0,core.createEnvironmentInjector)(route.providers,injector,`Route: ${route.path}`));const injectorForCurrentRoute=route._injector??injector,injectorForChildren=route._loadedInjector??injectorForCurrentRoute;(route.loadChildren&&!route._loadedRoutes&&void 0===route.canLoad||route.loadComponent&&!route._loadedComponent)&&res.push(this.preloadConfig(injectorForCurrentRoute,route)),(route.children||route._loadedRoutes)&&res.push(this.processRoutes(injectorForChildren,route.children??route._loadedRoutes))}return(0,from.D)(res).pipe((0,mergeAll.J)())}preloadConfig(injector,route){return this.preloadingStrategy.preload(route,(()=>{let loadedChildren$;loadedChildren$=route.loadChildren&&void 0===route.canLoad?this.loader.loadChildren(injector,route):(0,of.of)(null);const recursiveLoadChildren$=loadedChildren$.pipe((0,mergeMap.z)((config=>null===config?(0,of.of)(void 0):(route._loadedRoutes=config.routes,route._loadedInjector=config.injector,this.processRoutes(config.injector??injector,config.routes)))));if(route.loadComponent&&!route._loadedComponent){const loadComponent$=this.loader.loadComponent(route);return(0,from.D)([recursiveLoadChildren$,loadComponent$]).pipe((0,mergeAll.J)())}return recursiveLoadChildren$}))}}RouterPreloader.ɵfac=function RouterPreloader_Factory(t){return new(t||RouterPreloader)(core["ɵɵinject"](Router),core["ɵɵinject"](core.Compiler),core["ɵɵinject"](core.EnvironmentInjector),core["ɵɵinject"](PreloadingStrategy),core["ɵɵinject"](RouterConfigLoader))},RouterPreloader.ɵprov=core["ɵɵdefineInjectable"]({token:RouterPreloader,factory:RouterPreloader.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterPreloader,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:Router},{type:core.Compiler},{type:core.EnvironmentInjector},{type:PreloadingStrategy},{type:RouterConfigLoader}]}),null);const ROUTER_SCROLLER=new core.InjectionToken("");class RouterScroller{constructor(urlSerializer,transitions,viewportScroller,zone,options={}){this.urlSerializer=urlSerializer,this.transitions=transitions,this.viewportScroller=viewportScroller,this.zone=zone,this.options=options,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},options.scrollPositionRestoration=options.scrollPositionRestoration||"disabled",options.anchorScrolling=options.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe((e=>{e instanceof NavigationStart?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof NavigationEnd&&(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment))}))}consumeScrollEvents(){return this.transitions.events.subscribe((e=>{e instanceof Scroll&&(e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))}))}scheduleScrollEvent(routerEvent,anchor){this.zone.runOutsideAngular((()=>{setTimeout((()=>{this.zone.run((()=>{this.transitions.events.next(new Scroll(routerEvent,"popstate"===this.lastSource?this.store[this.restoredId]:null,anchor))}))}),0)}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}}var NavigationResult;RouterScroller.ɵfac=function RouterScroller_Factory(t){core["ɵɵinvalidFactory"]()},RouterScroller.ɵprov=core["ɵɵdefineInjectable"]({token:RouterScroller,factory:RouterScroller.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterScroller,[{type:core.Injectable}],(function(){return[{type:UrlSerializer},{type:NavigationTransitions},{type:common.ViewportScroller},{type:core.NgZone},{type:void 0}]}),null),function(NavigationResult){NavigationResult[NavigationResult.COMPLETE=0]="COMPLETE",NavigationResult[NavigationResult.FAILED=1]="FAILED",NavigationResult[NavigationResult.REDIRECTING=2]="REDIRECTING"}(NavigationResult||(NavigationResult={}));const NG_DEV_MODE$1="undefined"==typeof ngDevMode||ngDevMode;function rootRoute(router){return router.routerState.root}function routerFeature(kind,providers){return{ɵkind:kind,ɵproviders:providers}}const ROUTER_IS_PROVIDED=new core.InjectionToken("",{providedIn:"root",factory:()=>!1});core.ENVIRONMENT_INITIALIZER;function getBootstrapListener(){const injector=(0,core.inject)(core.Injector);return bootstrappedComponentRef=>{const ref=injector.get(core.ApplicationRef);if(bootstrappedComponentRef!==ref.components[0])return;const router=injector.get(Router),bootstrapDone=injector.get(BOOTSTRAP_DONE);1===injector.get(INITIAL_NAVIGATION)&&router.initialNavigation(),injector.get(ROUTER_PRELOADER,null,core.InjectFlags.Optional)?.setUpPreloading(),injector.get(ROUTER_SCROLLER,null,core.InjectFlags.Optional)?.init(),router.resetRootComponentType(ref.componentTypes[0]),bootstrapDone.closed||(bootstrapDone.next(),bootstrapDone.complete(),bootstrapDone.unsubscribe())}}const BOOTSTRAP_DONE=new core.InjectionToken(NG_DEV_MODE$1?"bootstrap done indicator":"",{factory:()=>new Subject.x}),INITIAL_NAVIGATION=new core.InjectionToken(NG_DEV_MODE$1?"initial navigation":"",{providedIn:"root",factory:()=>1});function withEnabledBlockingInitialNavigation(){return routerFeature(2,[{provide:INITIAL_NAVIGATION,useValue:0},{provide:core.APP_INITIALIZER,multi:!0,deps:[core.Injector],useFactory:injector=>{const locationInitialized=injector.get(common.LOCATION_INITIALIZED,Promise.resolve());return()=>locationInitialized.then((()=>new Promise((resolve=>{const router=injector.get(Router),bootstrapDone=injector.get(BOOTSTRAP_DONE);!function afterNextNavigation(router,action){router.events.pipe((0,filter.h)((e=>e instanceof NavigationEnd||e instanceof NavigationCancel||e instanceof NavigationError||e instanceof NavigationSkipped)),(0,map.U)((e=>e instanceof NavigationEnd||e instanceof NavigationSkipped?NavigationResult.COMPLETE:e instanceof NavigationCancel&&(0===e.code||1===e.code)?NavigationResult.REDIRECTING:NavigationResult.FAILED)),(0,filter.h)((result=>result!==NavigationResult.REDIRECTING)),(0,take.q)(1)).subscribe((()=>{action()}))}(router,(()=>{resolve(!0)})),injector.get(NavigationTransitions).afterPreactivation=()=>(resolve(!0),bootstrapDone.closed?(0,of.of)(void 0):bootstrapDone),router.initialNavigation()}))))}}])}function withDebugTracing(){let providers=[];return providers=NG_DEV_MODE$1?[{provide:core.ENVIRONMENT_INITIALIZER,multi:!0,useFactory:()=>{const router=(0,core.inject)(Router);return()=>router.events.subscribe((e=>{console.group?.(`Router Event: ${e.constructor.name}`),console.log(function stringifyEvent(routerEvent){if(!("type"in routerEvent))return`Unknown Router Event: ${routerEvent.constructor.name}`;switch(routerEvent.type){case 14:return`ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path||""}')`;case 13:return`ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path||""}')`;case 12:return`ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path||""}')`;case 11:return`ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path||""}')`;case 8:return`GuardsCheckEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`;case 7:return`GuardsCheckStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;case 2:return`NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`;case 16:return`NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`;case 1:return`NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}')`;case 3:return`NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${routerEvent.error})`;case 0:return`NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`;case 6:return`ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;case 5:return`ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;case 10:return`RouteConfigLoadEnd(path: ${routerEvent.route.path})`;case 9:return`RouteConfigLoadStart(path: ${routerEvent.route.path})`;case 4:return`RoutesRecognized(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;case 15:const pos=routerEvent.position?`${routerEvent.position[0]}, ${routerEvent.position[1]}`:null;return`Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`}}(e)),console.log(e),console.groupEnd?.()}))}}]:[],routerFeature(1,providers)}const ROUTER_PRELOADER=new core.InjectionToken(NG_DEV_MODE$1?"router preloader":"");const NG_DEV_MODE="undefined"==typeof ngDevMode||ngDevMode,ROUTER_DIRECTIVES=[RouterOutlet,RouterLink,RouterLinkActive,ɵEmptyOutletComponent],ROUTER_FORROOT_GUARD=new core.InjectionToken(NG_DEV_MODE?"router duplicate forRoot guard":"ROUTER_FORROOT_GUARD"),ROUTER_PROVIDERS=[common.Location,{provide:UrlSerializer,useClass:DefaultUrlSerializer},Router,ChildrenOutletContexts,{provide:ActivatedRoute,useFactory:rootRoute,deps:[Router]},RouterConfigLoader,NG_DEV_MODE?{provide:ROUTER_IS_PROVIDED,useValue:!0}:[]];function routerNgProbeToken(){return new core.NgProbeToken("Router",Router)}class RouterModule{constructor(guard){}static forRoot(routes,config){return{ngModule:RouterModule,providers:[ROUTER_PROVIDERS,NG_DEV_MODE&&config?.enableTracing?withDebugTracing().ɵproviders:[],{provide:ROUTES,multi:!0,useValue:routes},{provide:ROUTER_FORROOT_GUARD,useFactory:provideForRootGuard,deps:[[Router,new core.Optional,new core.SkipSelf]]},{provide:ROUTER_CONFIGURATION,useValue:config||{}},config?.useHash?{provide:common.LocationStrategy,useClass:common.HashLocationStrategy}:{provide:common.LocationStrategy,useClass:common.PathLocationStrategy},{provide:ROUTER_SCROLLER,useFactory:()=>{const viewportScroller=(0,core.inject)(common.ViewportScroller),zone=(0,core.inject)(core.NgZone),config=(0,core.inject)(ROUTER_CONFIGURATION),transitions=(0,core.inject)(NavigationTransitions),urlSerializer=(0,core.inject)(UrlSerializer);return config.scrollOffset&&viewportScroller.setOffset(config.scrollOffset),new RouterScroller(urlSerializer,transitions,viewportScroller,zone,config)}},config?.preloadingStrategy?(preloadingStrategy=config.preloadingStrategy,routerFeature(0,[{provide:ROUTER_PRELOADER,useExisting:RouterPreloader},{provide:PreloadingStrategy,useExisting:preloadingStrategy}])).ɵproviders:[],{provide:core.NgProbeToken,multi:!0,useFactory:routerNgProbeToken},config?.initialNavigation?provideInitialNavigation(config):[],[{provide:ROUTER_INITIALIZER,useFactory:getBootstrapListener},{provide:core.APP_BOOTSTRAP_LISTENER,multi:!0,useExisting:ROUTER_INITIALIZER}]]};var preloadingStrategy}static forChild(routes){return{ngModule:RouterModule,providers:[{provide:ROUTES,multi:!0,useValue:routes}]}}}function provideForRootGuard(router){if(NG_DEV_MODE&&router)throw new core["ɵRuntimeError"](4007,"The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function provideInitialNavigation(config){return["disabled"===config.initialNavigation?routerFeature(3,[{provide:core.APP_INITIALIZER,multi:!0,useFactory:()=>{const router=(0,core.inject)(Router);return()=>{router.setUpLocationChangeListener()}}},{provide:INITIAL_NAVIGATION,useValue:2}]).ɵproviders:[],"enabledBlocking"===config.initialNavigation?withEnabledBlockingInitialNavigation().ɵproviders:[]]}RouterModule.ɵfac=function RouterModule_Factory(t){return new(t||RouterModule)(core["ɵɵinject"](ROUTER_FORROOT_GUARD,8))},RouterModule.ɵmod=core["ɵɵdefineNgModule"]({type:RouterModule,imports:[RouterOutlet,RouterLink,RouterLinkActive,ɵEmptyOutletComponent],exports:[RouterOutlet,RouterLink,RouterLinkActive,ɵEmptyOutletComponent]}),RouterModule.ɵinj=core["ɵɵdefineInjector"]({imports:[ɵEmptyOutletComponent]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](RouterModule,[{type:core.NgModule,args:[{imports:ROUTER_DIRECTIVES,exports:ROUTER_DIRECTIVES}]}],(function(){return[{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[ROUTER_FORROOT_GUARD]}]}]}),null);const ROUTER_INITIALIZER=new core.InjectionToken(NG_DEV_MODE?"Router Initializer":"");new core.Version("15.2.6")}}]); \ No newline at end of file diff --git a/storybook/components-behavioral/930.6fda4f3b.iframe.bundle.js.LICENSE.txt b/storybook/components-behavioral/930.037fa429.iframe.bundle.js.LICENSE.txt similarity index 100% rename from storybook/components-behavioral/930.6fda4f3b.iframe.bundle.js.LICENSE.txt rename to storybook/components-behavioral/930.037fa429.iframe.bundle.js.LICENSE.txt diff --git a/storybook/components-behavioral/648.8bab75c5.iframe.bundle.js b/storybook/components-behavioral/948.defe7b1d.iframe.bundle.js similarity index 98% rename from storybook/components-behavioral/648.8bab75c5.iframe.bundle.js rename to storybook/components-behavioral/948.defe7b1d.iframe.bundle.js index 58feba968..2700361c2 100644 --- a/storybook/components-behavioral/648.8bab75c5.iframe.bundle.js +++ b/storybook/components-behavioral/948.defe7b1d.iframe.bundle.js @@ -1,2 +1,2 @@ -/*! For license information please see 648.8bab75c5.iframe.bundle.js.LICENSE.txt */ -"use strict";(self.webpackChunkhra_ui=self.webpackChunkhra_ui||[]).push([[648],{"./node_modules/@angular/cdk/fesm2020/a11y.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{rt:()=>A11yModule,kH:()=>CdkMonitorFocus,Em:()=>FocusKeyManager,tE:()=>FocusMonitor,qV:()=>FocusTrapFactory,qm:()=>HighContrastModeDetector,ic:()=>InteractivityChecker,X6:()=>isFakeMousedownFromScreenReader,yG:()=>isFakeTouchstartFromScreenReader});var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),platform=__webpack_require__("./node_modules/@angular/cdk/fesm2020/platform.mjs"),Subject=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subject.js"),Subscription=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subscription.js"),BehaviorSubject=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js"),of=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/of.js"),keycodes=__webpack_require__("./node_modules/@angular/cdk/fesm2020/keycodes.mjs"),tap=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/tap.js"),debounceTime=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js"),filter=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/filter.js"),map=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/map.js"),take=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/take.js"),skip=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/skip.js"),distinctUntilChanged=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js"),takeUntil=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js"),coercion=__webpack_require__("./node_modules/@angular/cdk/fesm2020/coercion.mjs"),observers=__webpack_require__("./node_modules/@angular/cdk/fesm2020/observers.mjs"),combineLatest=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js"),concat=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/observable/concat.js"),Observable=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),startWith=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/startWith.js");class LayoutModule{}LayoutModule.ɵfac=function LayoutModule_Factory(t){return new(t||LayoutModule)},LayoutModule.ɵmod=core["ɵɵdefineNgModule"]({type:LayoutModule}),LayoutModule.ɵinj=core["ɵɵdefineInjector"]({}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](LayoutModule,[{type:core.NgModule,args:[{}]}],null,null);const mediaQueriesForWebkitCompatibility=new Set;let mediaQueryStyleNode;class MediaMatcher{constructor(_platform){this._platform=_platform,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):noopMatchMedia}matchMedia(query){return(this._platform.WEBKIT||this._platform.BLINK)&&function createEmptyStyleRule(query){if(mediaQueriesForWebkitCompatibility.has(query))return;try{mediaQueryStyleNode||(mediaQueryStyleNode=document.createElement("style"),mediaQueryStyleNode.setAttribute("type","text/css"),document.head.appendChild(mediaQueryStyleNode)),mediaQueryStyleNode.sheet&&(mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`,0),mediaQueriesForWebkitCompatibility.add(query))}catch(e){console.error(e)}}(query),this._matchMedia(query)}}function noopMatchMedia(query){return{matches:"all"===query||""===query,media:query,addListener:()=>{},removeListener:()=>{}}}MediaMatcher.ɵfac=function MediaMatcher_Factory(t){return new(t||MediaMatcher)(core["ɵɵinject"](platform.t4))},MediaMatcher.ɵprov=core["ɵɵdefineInjectable"]({token:MediaMatcher,factory:MediaMatcher.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MediaMatcher,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:platform.t4}]}),null);class BreakpointObserver{constructor(_mediaMatcher,_zone){this._mediaMatcher=_mediaMatcher,this._zone=_zone,this._queries=new Map,this._destroySubject=new Subject.x}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(value){return splitQueries((0,coercion.Eq)(value)).some((mediaQuery=>this._registerQuery(mediaQuery).mql.matches))}observe(value){const observables=splitQueries((0,coercion.Eq)(value)).map((query=>this._registerQuery(query).observable));let stateObservable=(0,combineLatest.a)(observables);return stateObservable=(0,concat.z)(stateObservable.pipe((0,take.q)(1)),stateObservable.pipe((0,skip.T)(1),(0,debounceTime.b)(0))),stateObservable.pipe((0,map.U)((breakpointStates=>{const response={matches:!1,breakpoints:{}};return breakpointStates.forEach((({matches,query})=>{response.matches=response.matches||matches,response.breakpoints[query]=matches})),response})))}_registerQuery(query){if(this._queries.has(query))return this._queries.get(query);const mql=this._mediaMatcher.matchMedia(query),output={observable:new Observable.y((observer=>{const handler=e=>this._zone.run((()=>observer.next(e)));return mql.addListener(handler),()=>{mql.removeListener(handler)}})).pipe((0,startWith.O)(mql),(0,map.U)((({matches})=>({query,matches}))),(0,takeUntil.R)(this._destroySubject)),mql};return this._queries.set(query,output),output}}function splitQueries(queries){return queries.map((query=>query.split(","))).reduce(((a1,a2)=>a1.concat(a2))).map((query=>query.trim()))}BreakpointObserver.ɵfac=function BreakpointObserver_Factory(t){return new(t||BreakpointObserver)(core["ɵɵinject"](MediaMatcher),core["ɵɵinject"](core.NgZone))},BreakpointObserver.ɵprov=core["ɵɵdefineInjectable"]({token:BreakpointObserver,factory:BreakpointObserver.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](BreakpointObserver,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:MediaMatcher},{type:core.NgZone}]}),null);function getAriaReferenceIds(el,attr){return(el.getAttribute(attr)||"").match(/\S+/g)||[]}let nextId=0;class AriaDescriber{constructor(_document,_platform){this._platform=_platform,this._messageRegistry=new Map,this._messagesContainer=null,this._id=""+nextId++,this._document=_document,this._id=(0,core.inject)(core.APP_ID)+"-"+nextId++}describe(hostElement,message,role){if(!this._canBeDescribed(hostElement,message))return;const key=getKey(message,role);"string"!=typeof message?(setMessageId(message,this._id),this._messageRegistry.set(key,{messageElement:message,referenceCount:0})):this._messageRegistry.has(key)||this._createMessageElement(message,role),this._isElementDescribedByMessage(hostElement,key)||this._addMessageReference(hostElement,key)}removeDescription(hostElement,message,role){if(!message||!this._isElementNode(hostElement))return;const key=getKey(message,role);if(this._isElementDescribedByMessage(hostElement,key)&&this._removeMessageReference(hostElement,key),"string"==typeof message){const registeredMessage=this._messageRegistry.get(key);registeredMessage&&0===registeredMessage.referenceCount&&this._deleteMessageElement(key)}0===this._messagesContainer?.childNodes.length&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){const describedElements=this._document.querySelectorAll(`[cdk-describedby-host="${this._id}"]`);for(let i=0;i0!=id.indexOf("cdk-describedby-message")));element.setAttribute("aria-describedby",originalReferenceIds.join(" "))}_addMessageReference(element,key){const registeredMessage=this._messageRegistry.get(key);!function addAriaReferencedId(el,attr,id){const ids=getAriaReferenceIds(el,attr);ids.some((existingId=>existingId.trim()==id.trim()))||(ids.push(id.trim()),el.setAttribute(attr,ids.join(" ")))}(element,"aria-describedby",registeredMessage.messageElement.id),element.setAttribute("cdk-describedby-host",this._id),registeredMessage.referenceCount++}_removeMessageReference(element,key){const registeredMessage=this._messageRegistry.get(key);registeredMessage.referenceCount--,function removeAriaReferencedId(el,attr,id){const filteredIds=getAriaReferenceIds(el,attr).filter((val=>val!=id.trim()));filteredIds.length?el.setAttribute(attr,filteredIds.join(" ")):el.removeAttribute(attr)}(element,"aria-describedby",registeredMessage.messageElement.id),element.removeAttribute("cdk-describedby-host")}_isElementDescribedByMessage(element,key){const referenceIds=getAriaReferenceIds(element,"aria-describedby"),registeredMessage=this._messageRegistry.get(key),messageId=registeredMessage&®isteredMessage.messageElement.id;return!!messageId&&-1!=referenceIds.indexOf(messageId)}_canBeDescribed(element,message){if(!this._isElementNode(element))return!1;if(message&&"object"==typeof message)return!0;const trimmedMessage=null==message?"":`${message}`.trim(),ariaLabel=element.getAttribute("aria-label");return!!trimmedMessage&&(!ariaLabel||ariaLabel.trim()!==trimmedMessage)}_isElementNode(element){return element.nodeType===this._document.ELEMENT_NODE}}function getKey(message,role){return"string"==typeof message?`${role||""}/${message}`:message}function setMessageId(element,serviceId){element.id||(element.id=`cdk-describedby-message-${serviceId}-${nextId++}`)}AriaDescriber.ɵfac=function AriaDescriber_Factory(t){return new(t||AriaDescriber)(core["ɵɵinject"](common.DOCUMENT),core["ɵɵinject"](platform.t4))},AriaDescriber.ɵprov=core["ɵɵdefineInjectable"]({token:AriaDescriber,factory:AriaDescriber.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](AriaDescriber,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:void 0,decorators:[{type:core.Inject,args:[common.DOCUMENT]}]},{type:platform.t4}]}),null);class ListKeyManager{constructor(_items){this._items=_items,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new Subject.x,this._typeaheadSubscription=Subscription.w0.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=item=>item.disabled,this._pressedLetters=[],this.tabOut=new Subject.x,this.change=new Subject.x,_items instanceof core.QueryList&&(this._itemChangesSubscription=_items.changes.subscribe((newItems=>{if(this._activeItem){const newIndex=newItems.toArray().indexOf(this._activeItem);newIndex>-1&&newIndex!==this._activeItemIndex&&(this._activeItemIndex=newIndex)}})))}skipPredicate(predicate){return this._skipPredicateFn=predicate,this}withWrap(shouldWrap=!0){return this._wrap=shouldWrap,this}withVerticalOrientation(enabled=!0){return this._vertical=enabled,this}withHorizontalOrientation(direction){return this._horizontal=direction,this}withAllowedModifierKeys(keys){return this._allowedModifierKeys=keys,this}withTypeAhead(debounceInterval=200){if(("undefined"==typeof ngDevMode||ngDevMode)&&this._items.length&&this._items.some((item=>"function"!=typeof item.getLabel)))throw Error("ListKeyManager items in typeahead mode must implement the `getLabel` method.");return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe((0,tap.b)((letter=>this._pressedLetters.push(letter))),(0,debounceTime.b)(debounceInterval),(0,filter.h)((()=>this._pressedLetters.length>0)),(0,map.U)((()=>this._pressedLetters.join("")))).subscribe((inputString=>{const items=this._getItemsArray();for(let i=1;i!event[modifier]||this._allowedModifierKeys.indexOf(modifier)>-1));switch(keyCode){case keycodes.Mf:return void this.tabOut.next();case keycodes.JH:if(this._vertical&&isModifierAllowed){this.setNextItemActive();break}return;case keycodes.LH:if(this._vertical&&isModifierAllowed){this.setPreviousItemActive();break}return;case keycodes.SV:if(this._horizontal&&isModifierAllowed){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case keycodes.oh:if(this._horizontal&&isModifierAllowed){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case keycodes.Sd:if(this._homeAndEnd&&isModifierAllowed){this.setFirstItemActive();break}return;case keycodes.uR:if(this._homeAndEnd&&isModifierAllowed){this.setLastItemActive();break}return;case keycodes.Ku:if(this._pageUpAndDown.enabled&&isModifierAllowed){const targetIndex=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(targetIndex>0?targetIndex:0,1);break}return;case keycodes.VM:if(this._pageUpAndDown.enabled&&isModifierAllowed){const targetIndex=this._activeItemIndex+this._pageUpAndDown.delta,itemsLength=this._getItemsArray().length;this._setActiveItemByIndex(targetIndex=keycodes.A&&keyCode<=keycodes.Z||keyCode>=keycodes.xE&&keyCode<=keycodes.aO)&&this._letterKeyStream.next(String.fromCharCode(keyCode))))}this._pressedLetters=[],event.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._items.length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(item){const itemArray=this._getItemsArray(),index="number"==typeof item?item:itemArray.indexOf(item),activeItem=itemArray[index];this._activeItem=null==activeItem?null:activeItem,this._activeItemIndex=index}destroy(){this._typeaheadSubscription.unsubscribe(),this._itemChangesSubscription?.unsubscribe(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(delta){this._wrap?this._setActiveInWrapMode(delta):this._setActiveInDefaultMode(delta)}_setActiveInWrapMode(delta){const items=this._getItemsArray();for(let i=1;i<=items.length;i++){const index=(this._activeItemIndex+delta*i+items.length)%items.length,item=items[index];if(!this._skipPredicateFn(item))return void this.setActiveItem(index)}}_setActiveInDefaultMode(delta){this._setActiveItemByIndex(this._activeItemIndex+delta,delta)}_setActiveItemByIndex(index,fallbackDelta){const items=this._getItemsArray();if(items[index]){for(;this._skipPredicateFn(items[index]);)if(!items[index+=fallbackDelta])return;this.setActiveItem(index)}}_getItemsArray(){return this._items instanceof core.QueryList?this._items.toArray():this._items}}class FocusKeyManager extends ListKeyManager{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(origin){return this._origin=origin,this}setActiveItem(item){super.setActiveItem(item),this.activeItem&&this.activeItem.focus(this._origin)}}class InteractivityChecker{constructor(_platform){this._platform=_platform}isDisabled(element){return element.hasAttribute("disabled")}isVisible(element){return function hasGeometry(element){return!!(element.offsetWidth||element.offsetHeight||"function"==typeof element.getClientRects&&element.getClientRects().length)}(element)&&"visible"===getComputedStyle(element).visibility}isTabbable(element){if(!this._platform.isBrowser)return!1;const frameElement=function getFrameElement(window){try{return window.frameElement}catch{return null}}(function getWindow(node){return node.ownerDocument&&node.ownerDocument.defaultView||window}(element));if(frameElement){if(-1===getTabIndexValue(frameElement))return!1;if(!this.isVisible(frameElement))return!1}let nodeName=element.nodeName.toLowerCase(),tabIndexValue=getTabIndexValue(element);return element.hasAttribute("contenteditable")?-1!==tabIndexValue:"iframe"!==nodeName&&"object"!==nodeName&&(!(this._platform.WEBKIT&&this._platform.IOS&&!function isPotentiallyTabbableIOS(element){let nodeName=element.nodeName.toLowerCase(),inputType="input"===nodeName&&element.type;return"text"===inputType||"password"===inputType||"select"===nodeName||"textarea"===nodeName}(element))&&("audio"===nodeName?!!element.hasAttribute("controls")&&-1!==tabIndexValue:"video"===nodeName?-1!==tabIndexValue&&(null!==tabIndexValue||(this._platform.FIREFOX||element.hasAttribute("controls"))):element.tabIndex>=0))}isFocusable(element,config){return function isPotentiallyFocusable(element){if(function isHiddenInput(element){return function isInputElement(element){return"input"==element.nodeName.toLowerCase()}(element)&&"hidden"==element.type}(element))return!1;return function isNativeFormElement(element){let nodeName=element.nodeName.toLowerCase();return"input"===nodeName||"select"===nodeName||"button"===nodeName||"textarea"===nodeName}(element)||function isAnchorWithHref(element){return function isAnchorElement(element){return"a"==element.nodeName.toLowerCase()}(element)&&element.hasAttribute("href")}(element)||element.hasAttribute("contenteditable")||hasValidTabIndex(element)}(element)&&!this.isDisabled(element)&&(config?.ignoreVisibility||this.isVisible(element))}}function hasValidTabIndex(element){if(!element.hasAttribute("tabindex")||void 0===element.tabIndex)return!1;let tabIndex=element.getAttribute("tabindex");return!(!tabIndex||isNaN(parseInt(tabIndex,10)))}function getTabIndexValue(element){if(!hasValidTabIndex(element))return null;const tabIndex=parseInt(element.getAttribute("tabindex")||"",10);return isNaN(tabIndex)?-1:tabIndex}InteractivityChecker.ɵfac=function InteractivityChecker_Factory(t){return new(t||InteractivityChecker)(core["ɵɵinject"](platform.t4))},InteractivityChecker.ɵprov=core["ɵɵdefineInjectable"]({token:InteractivityChecker,factory:InteractivityChecker.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](InteractivityChecker,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:platform.t4}]}),null);class FocusTrap{get enabled(){return this._enabled}set enabled(value){this._enabled=value,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(value,this._startAnchor),this._toggleAnchorTabIndex(value,this._endAnchor))}constructor(_element,_checker,_ngZone,_document,deferAnchors=!1){this._element=_element,this._checker=_checker,this._ngZone=_ngZone,this._document=_document,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,deferAnchors||this.attachAnchors()}destroy(){const startAnchor=this._startAnchor,endAnchor=this._endAnchor;startAnchor&&(startAnchor.removeEventListener("focus",this.startAnchorListener),startAnchor.remove()),endAnchor&&(endAnchor.removeEventListener("focus",this.endAnchorListener),endAnchor.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular((()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))})),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(options){return new Promise((resolve=>{this._executeOnStable((()=>resolve(this.focusInitialElement(options))))}))}focusFirstTabbableElementWhenReady(options){return new Promise((resolve=>{this._executeOnStable((()=>resolve(this.focusFirstTabbableElement(options))))}))}focusLastTabbableElementWhenReady(options){return new Promise((resolve=>{this._executeOnStable((()=>resolve(this.focusLastTabbableElement(options))))}))}_getRegionBoundary(bound){const markers=this._element.querySelectorAll(`[cdk-focus-region-${bound}], [cdkFocusRegion${bound}], [cdk-focus-${bound}]`);if("undefined"==typeof ngDevMode||ngDevMode)for(let i=0;i=0;i--){const tabbableChild=children[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(children[i]):null;if(tabbableChild)return tabbableChild}return null}_createAnchor(){const anchor=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,anchor),anchor.classList.add("cdk-visually-hidden"),anchor.classList.add("cdk-focus-trap-anchor"),anchor.setAttribute("aria-hidden","true"),anchor}_toggleAnchorTabIndex(isEnabled,anchor){isEnabled?anchor.setAttribute("tabindex","0"):anchor.removeAttribute("tabindex")}toggleAnchors(enabled){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(enabled,this._startAnchor),this._toggleAnchorTabIndex(enabled,this._endAnchor))}_executeOnStable(fn){this._ngZone.isStable?fn():this._ngZone.onStable.pipe((0,take.q)(1)).subscribe(fn)}}class FocusTrapFactory{constructor(_checker,_ngZone,_document){this._checker=_checker,this._ngZone=_ngZone,this._document=_document}create(element,deferCaptureElements=!1){return new FocusTrap(element,this._checker,this._ngZone,this._document,deferCaptureElements)}}FocusTrapFactory.ɵfac=function FocusTrapFactory_Factory(t){return new(t||FocusTrapFactory)(core["ɵɵinject"](InteractivityChecker),core["ɵɵinject"](core.NgZone),core["ɵɵinject"](common.DOCUMENT))},FocusTrapFactory.ɵprov=core["ɵɵdefineInjectable"]({token:FocusTrapFactory,factory:FocusTrapFactory.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](FocusTrapFactory,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:InteractivityChecker},{type:core.NgZone},{type:void 0,decorators:[{type:core.Inject,args:[common.DOCUMENT]}]}]}),null);class CdkTrapFocus{get enabled(){return this.focusTrap.enabled}set enabled(value){this.focusTrap.enabled=(0,coercion.Ig)(value)}get autoCapture(){return this._autoCapture}set autoCapture(value){this._autoCapture=(0,coercion.Ig)(value)}constructor(_elementRef,_focusTrapFactory,_document){this._elementRef=_elementRef,this._focusTrapFactory=_focusTrapFactory,this._previouslyFocusedElement=null,this.focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement,!0)}ngOnDestroy(){this.focusTrap.destroy(),this._previouslyFocusedElement&&(this._previouslyFocusedElement.focus(),this._previouslyFocusedElement=null)}ngAfterContentInit(){this.focusTrap.attachAnchors(),this.autoCapture&&this._captureFocus()}ngDoCheck(){this.focusTrap.hasAttached()||this.focusTrap.attachAnchors()}ngOnChanges(changes){const autoCaptureChange=changes.autoCapture;autoCaptureChange&&!autoCaptureChange.firstChange&&this.autoCapture&&this.focusTrap.hasAttached()&&this._captureFocus()}_captureFocus(){this._previouslyFocusedElement=(0,platform.ht)(),this.focusTrap.focusInitialElementWhenReady()}}CdkTrapFocus.ɵfac=function CdkTrapFocus_Factory(t){return new(t||CdkTrapFocus)(core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](FocusTrapFactory),core["ɵɵdirectiveInject"](common.DOCUMENT))},CdkTrapFocus.ɵdir=core["ɵɵdefineDirective"]({type:CdkTrapFocus,selectors:[["","cdkTrapFocus",""]],inputs:{enabled:["cdkTrapFocus","enabled"],autoCapture:["cdkTrapFocusAutoCapture","autoCapture"]},exportAs:["cdkTrapFocus"],features:[core["ɵɵNgOnChangesFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](CdkTrapFocus,[{type:core.Directive,args:[{selector:"[cdkTrapFocus]",exportAs:"cdkTrapFocus"}]}],(function(){return[{type:core.ElementRef},{type:FocusTrapFactory},{type:void 0,decorators:[{type:core.Inject,args:[common.DOCUMENT]}]}]}),{enabled:[{type:core.Input,args:["cdkTrapFocus"]}],autoCapture:[{type:core.Input,args:["cdkTrapFocusAutoCapture"]}]});class ConfigurableFocusTrap extends FocusTrap{get enabled(){return this._enabled}set enabled(value){this._enabled=value,this._enabled?this._focusTrapManager.register(this):this._focusTrapManager.deregister(this)}constructor(_element,_checker,_ngZone,_document,_focusTrapManager,_inertStrategy,config){super(_element,_checker,_ngZone,_document,config.defer),this._focusTrapManager=_focusTrapManager,this._inertStrategy=_inertStrategy,this._focusTrapManager.register(this)}destroy(){this._focusTrapManager.deregister(this),super.destroy()}_enable(){this._inertStrategy.preventFocus(this),this.toggleAnchors(!0)}_disable(){this._inertStrategy.allowFocus(this),this.toggleAnchors(!1)}}const FOCUS_TRAP_INERT_STRATEGY=new core.InjectionToken("FOCUS_TRAP_INERT_STRATEGY");class EventListenerFocusTrapInertStrategy{constructor(){this._listener=null}preventFocus(focusTrap){this._listener&&focusTrap._document.removeEventListener("focus",this._listener,!0),this._listener=e=>this._trapFocus(focusTrap,e),focusTrap._ngZone.runOutsideAngular((()=>{focusTrap._document.addEventListener("focus",this._listener,!0)}))}allowFocus(focusTrap){this._listener&&(focusTrap._document.removeEventListener("focus",this._listener,!0),this._listener=null)}_trapFocus(focusTrap,event){const target=event.target,focusTrapRoot=focusTrap._element;!target||focusTrapRoot.contains(target)||target.closest?.("div.cdk-overlay-pane")||setTimeout((()=>{focusTrap.enabled&&!focusTrapRoot.contains(focusTrap._document.activeElement)&&focusTrap.focusFirstTabbableElement()}))}}class FocusTrapManager{constructor(){this._focusTrapStack=[]}register(focusTrap){this._focusTrapStack=this._focusTrapStack.filter((ft=>ft!==focusTrap));let stack=this._focusTrapStack;stack.length&&stack[stack.length-1]._disable(),stack.push(focusTrap),focusTrap._enable()}deregister(focusTrap){focusTrap._disable();const stack=this._focusTrapStack,i=stack.indexOf(focusTrap);-1!==i&&(stack.splice(i,1),stack.length&&stack[stack.length-1]._enable())}}FocusTrapManager.ɵfac=function FocusTrapManager_Factory(t){return new(t||FocusTrapManager)},FocusTrapManager.ɵprov=core["ɵɵdefineInjectable"]({token:FocusTrapManager,factory:FocusTrapManager.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](FocusTrapManager,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);class ConfigurableFocusTrapFactory{constructor(_checker,_ngZone,_focusTrapManager,_document,_inertStrategy){this._checker=_checker,this._ngZone=_ngZone,this._focusTrapManager=_focusTrapManager,this._document=_document,this._inertStrategy=_inertStrategy||new EventListenerFocusTrapInertStrategy}create(element,config={defer:!1}){let configObject;return configObject="boolean"==typeof config?{defer:config}:config,new ConfigurableFocusTrap(element,this._checker,this._ngZone,this._document,this._focusTrapManager,this._inertStrategy,configObject)}}function isFakeMousedownFromScreenReader(event){return 0===event.buttons||0===event.offsetX&&0===event.offsetY}function isFakeTouchstartFromScreenReader(event){const touch=event.touches&&event.touches[0]||event.changedTouches&&event.changedTouches[0];return!(!touch||-1!==touch.identifier||null!=touch.radiusX&&1!==touch.radiusX||null!=touch.radiusY&&1!==touch.radiusY)}ConfigurableFocusTrapFactory.ɵfac=function ConfigurableFocusTrapFactory_Factory(t){return new(t||ConfigurableFocusTrapFactory)(core["ɵɵinject"](InteractivityChecker),core["ɵɵinject"](core.NgZone),core["ɵɵinject"](FocusTrapManager),core["ɵɵinject"](common.DOCUMENT),core["ɵɵinject"](FOCUS_TRAP_INERT_STRATEGY,8))},ConfigurableFocusTrapFactory.ɵprov=core["ɵɵdefineInjectable"]({token:ConfigurableFocusTrapFactory,factory:ConfigurableFocusTrapFactory.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](ConfigurableFocusTrapFactory,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:InteractivityChecker},{type:core.NgZone},{type:FocusTrapManager},{type:void 0,decorators:[{type:core.Inject,args:[common.DOCUMENT]}]},{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[FOCUS_TRAP_INERT_STRATEGY]}]}]}),null);const INPUT_MODALITY_DETECTOR_OPTIONS=new core.InjectionToken("cdk-input-modality-detector-options"),INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS={ignoreKeys:[keycodes.zL,keycodes.jx,keycodes.b2,keycodes.MW,keycodes.JU]},modalityEventListenerOptions=(0,platform.i$)({passive:!0,capture:!0});class InputModalityDetector{get mostRecentModality(){return this._modality.value}constructor(_platform,ngZone,document,options){this._platform=_platform,this._mostRecentTarget=null,this._modality=new BehaviorSubject.X(null),this._lastTouchMs=0,this._onKeydown=event=>{this._options?.ignoreKeys?.some((keyCode=>keyCode===event.keyCode))||(this._modality.next("keyboard"),this._mostRecentTarget=(0,platform.sA)(event))},this._onMousedown=event=>{Date.now()-this._lastTouchMs<650||(this._modality.next(isFakeMousedownFromScreenReader(event)?"keyboard":"mouse"),this._mostRecentTarget=(0,platform.sA)(event))},this._onTouchstart=event=>{isFakeTouchstartFromScreenReader(event)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=(0,platform.sA)(event))},this._options={...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,...options},this.modalityDetected=this._modality.pipe((0,skip.T)(1)),this.modalityChanged=this.modalityDetected.pipe((0,distinctUntilChanged.x)()),_platform.isBrowser&&ngZone.runOutsideAngular((()=>{document.addEventListener("keydown",this._onKeydown,modalityEventListenerOptions),document.addEventListener("mousedown",this._onMousedown,modalityEventListenerOptions),document.addEventListener("touchstart",this._onTouchstart,modalityEventListenerOptions)}))}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,modalityEventListenerOptions),document.removeEventListener("mousedown",this._onMousedown,modalityEventListenerOptions),document.removeEventListener("touchstart",this._onTouchstart,modalityEventListenerOptions))}}InputModalityDetector.ɵfac=function InputModalityDetector_Factory(t){return new(t||InputModalityDetector)(core["ɵɵinject"](platform.t4),core["ɵɵinject"](core.NgZone),core["ɵɵinject"](common.DOCUMENT),core["ɵɵinject"](INPUT_MODALITY_DETECTOR_OPTIONS,8))},InputModalityDetector.ɵprov=core["ɵɵdefineInjectable"]({token:InputModalityDetector,factory:InputModalityDetector.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](InputModalityDetector,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:platform.t4},{type:core.NgZone},{type:Document,decorators:[{type:core.Inject,args:[common.DOCUMENT]}]},{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[INPUT_MODALITY_DETECTOR_OPTIONS]}]}]}),null);const LIVE_ANNOUNCER_ELEMENT_TOKEN=new core.InjectionToken("liveAnnouncerElement",{providedIn:"root",factory:function LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY(){return null}});const LIVE_ANNOUNCER_DEFAULT_OPTIONS=new core.InjectionToken("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let uniqueIds=0;class LiveAnnouncer{constructor(elementToken,_ngZone,_document,_defaultOptions){this._ngZone=_ngZone,this._defaultOptions=_defaultOptions,this._document=_document,this._liveElement=elementToken||this._createLiveElement()}announce(message,...args){const defaultOptions=this._defaultOptions;let politeness,duration;return 1===args.length&&"number"==typeof args[0]?duration=args[0]:[politeness,duration]=args,this.clear(),clearTimeout(this._previousTimeout),politeness||(politeness=defaultOptions&&defaultOptions.politeness?defaultOptions.politeness:"polite"),null==duration&&defaultOptions&&(duration=defaultOptions.duration),this._liveElement.setAttribute("aria-live",politeness),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular((()=>(this._currentPromise||(this._currentPromise=new Promise((resolve=>this._currentResolve=resolve))),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout((()=>{this._liveElement.textContent=message,"number"==typeof duration&&(this._previousTimeout=setTimeout((()=>this.clear()),duration)),this._currentResolve(),this._currentPromise=this._currentResolve=void 0}),100),this._currentPromise)))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const previousElements=this._document.getElementsByClassName("cdk-live-announcer-element"),liveEl=this._document.createElement("div");for(let i=0;i .cdk-overlay-container [aria-modal="true"]');for(let i=0;ithis._contentObserver.observe(this._elementRef).subscribe((()=>{const elementText=this._elementRef.nativeElement.textContent;elementText!==this._previousAnnouncedText&&(this._liveAnnouncer.announce(elementText,this._politeness,this.duration),this._previousAnnouncedText=elementText)})))))}constructor(_elementRef,_liveAnnouncer,_contentObserver,_ngZone){this._elementRef=_elementRef,this._liveAnnouncer=_liveAnnouncer,this._contentObserver=_contentObserver,this._ngZone=_ngZone,this._politeness="polite"}ngOnDestroy(){this._subscription&&this._subscription.unsubscribe()}}CdkAriaLive.ɵfac=function CdkAriaLive_Factory(t){return new(t||CdkAriaLive)(core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](LiveAnnouncer),core["ɵɵdirectiveInject"](observers.yq),core["ɵɵdirectiveInject"](core.NgZone))},CdkAriaLive.ɵdir=core["ɵɵdefineDirective"]({type:CdkAriaLive,selectors:[["","cdkAriaLive",""]],inputs:{politeness:["cdkAriaLive","politeness"],duration:["cdkAriaLiveDuration","duration"]},exportAs:["cdkAriaLive"]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](CdkAriaLive,[{type:core.Directive,args:[{selector:"[cdkAriaLive]",exportAs:"cdkAriaLive"}]}],(function(){return[{type:core.ElementRef},{type:LiveAnnouncer},{type:observers.yq},{type:core.NgZone}]}),{politeness:[{type:core.Input,args:["cdkAriaLive"]}],duration:[{type:core.Input,args:["cdkAriaLiveDuration"]}]});const FOCUS_MONITOR_DEFAULT_OPTIONS=new core.InjectionToken("cdk-focus-monitor-default-options"),captureEventListenerOptions=(0,platform.i$)({passive:!0,capture:!0});class FocusMonitor{constructor(_ngZone,_platform,_inputModalityDetector,document,options){this._ngZone=_ngZone,this._platform=_platform,this._inputModalityDetector=_inputModalityDetector,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout((()=>this._windowFocused=!1))},this._stopInputModalityDetector=new Subject.x,this._rootNodeFocusAndBlurListener=event=>{for(let element=(0,platform.sA)(event);element;element=element.parentElement)"focus"===event.type?this._onFocus(event,element):this._onBlur(event,element)},this._document=document,this._detectionMode=options?.detectionMode||0}monitor(element,checkChildren=!1){const nativeElement=(0,coercion.fI)(element);if(!this._platform.isBrowser||1!==nativeElement.nodeType)return(0,of.of)(null);const rootNode=(0,platform.kV)(nativeElement)||this._getDocument(),cachedInfo=this._elementInfo.get(nativeElement);if(cachedInfo)return checkChildren&&(cachedInfo.checkChildren=!0),cachedInfo.subject;const info={checkChildren,subject:new Subject.x,rootNode};return this._elementInfo.set(nativeElement,info),this._registerGlobalListeners(info),info.subject}stopMonitoring(element){const nativeElement=(0,coercion.fI)(element),elementInfo=this._elementInfo.get(nativeElement);elementInfo&&(elementInfo.subject.complete(),this._setClasses(nativeElement),this._elementInfo.delete(nativeElement),this._removeGlobalListeners(elementInfo))}focusVia(element,origin,options){const nativeElement=(0,coercion.fI)(element);nativeElement===this._getDocument().activeElement?this._getClosestElementsInfo(nativeElement).forEach((([currentElement,info])=>this._originChanged(currentElement,origin,info))):(this._setOrigin(origin),"function"==typeof nativeElement.focus&&nativeElement.focus(options))}ngOnDestroy(){this._elementInfo.forEach(((_info,element)=>this.stopMonitoring(element)))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(focusEventTarget){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(focusEventTarget)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:focusEventTarget&&this._isLastInteractionFromInputLabel(focusEventTarget)?"mouse":"program"}_shouldBeAttributedToTouch(focusEventTarget){return 1===this._detectionMode||!!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(element,origin){element.classList.toggle("cdk-focused",!!origin),element.classList.toggle("cdk-touch-focused","touch"===origin),element.classList.toggle("cdk-keyboard-focused","keyboard"===origin),element.classList.toggle("cdk-mouse-focused","mouse"===origin),element.classList.toggle("cdk-program-focused","program"===origin)}_setOrigin(origin,isFromInteraction=!1){this._ngZone.runOutsideAngular((()=>{if(this._origin=origin,this._originFromTouchInteraction="touch"===origin&&isFromInteraction,0===this._detectionMode){clearTimeout(this._originTimeoutId);const ms=this._originFromTouchInteraction?650:1;this._originTimeoutId=setTimeout((()=>this._origin=null),ms)}}))}_onFocus(event,element){const elementInfo=this._elementInfo.get(element),focusEventTarget=(0,platform.sA)(event);elementInfo&&(elementInfo.checkChildren||element===focusEventTarget)&&this._originChanged(element,this._getFocusOrigin(focusEventTarget),elementInfo)}_onBlur(event,element){const elementInfo=this._elementInfo.get(element);!elementInfo||elementInfo.checkChildren&&event.relatedTarget instanceof Node&&element.contains(event.relatedTarget)||(this._setClasses(element),this._emitOrigin(elementInfo,null))}_emitOrigin(info,origin){info.subject.observers.length&&this._ngZone.run((()=>info.subject.next(origin)))}_registerGlobalListeners(elementInfo){if(!this._platform.isBrowser)return;const rootNode=elementInfo.rootNode,rootNodeFocusListeners=this._rootNodeFocusListenerCount.get(rootNode)||0;rootNodeFocusListeners||this._ngZone.runOutsideAngular((()=>{rootNode.addEventListener("focus",this._rootNodeFocusAndBlurListener,captureEventListenerOptions),rootNode.addEventListener("blur",this._rootNodeFocusAndBlurListener,captureEventListenerOptions)})),this._rootNodeFocusListenerCount.set(rootNode,rootNodeFocusListeners+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular((()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)})),this._inputModalityDetector.modalityDetected.pipe((0,takeUntil.R)(this._stopInputModalityDetector)).subscribe((modality=>{this._setOrigin(modality,!0)})))}_removeGlobalListeners(elementInfo){const rootNode=elementInfo.rootNode;if(this._rootNodeFocusListenerCount.has(rootNode)){const rootNodeFocusListeners=this._rootNodeFocusListenerCount.get(rootNode);rootNodeFocusListeners>1?this._rootNodeFocusListenerCount.set(rootNode,rootNodeFocusListeners-1):(rootNode.removeEventListener("focus",this._rootNodeFocusAndBlurListener,captureEventListenerOptions),rootNode.removeEventListener("blur",this._rootNodeFocusAndBlurListener,captureEventListenerOptions),this._rootNodeFocusListenerCount.delete(rootNode))}if(! --this._monitoredElementCount){this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId)}}_originChanged(element,origin,elementInfo){this._setClasses(element,origin),this._emitOrigin(elementInfo,origin),this._lastFocusOrigin=origin}_getClosestElementsInfo(element){const results=[];return this._elementInfo.forEach(((info,currentElement)=>{(currentElement===element||info.checkChildren&¤tElement.contains(element))&&results.push([currentElement,info])})),results}_isLastInteractionFromInputLabel(focusEventTarget){const{_mostRecentTarget:mostRecentTarget,mostRecentModality}=this._inputModalityDetector;if("mouse"!==mostRecentModality||!mostRecentTarget||mostRecentTarget===focusEventTarget||"INPUT"!==focusEventTarget.nodeName&&"TEXTAREA"!==focusEventTarget.nodeName||focusEventTarget.disabled)return!1;const labels=focusEventTarget.labels;if(labels)for(let i=0;i{this._focusOrigin=origin,this.cdkFocusChange.emit(origin)}))}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription&&this._monitorSubscription.unsubscribe()}}CdkMonitorFocus.ɵfac=function CdkMonitorFocus_Factory(t){return new(t||CdkMonitorFocus)(core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](FocusMonitor))},CdkMonitorFocus.ɵdir=core["ɵɵdefineDirective"]({type:CdkMonitorFocus,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](CdkMonitorFocus,[{type:core.Directive,args:[{selector:"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]",exportAs:"cdkMonitorFocus"}]}],(function(){return[{type:core.ElementRef},{type:FocusMonitor}]}),{cdkFocusChange:[{type:core.Output}]});class HighContrastModeDetector{constructor(_platform,document){this._platform=_platform,this._document=document,this._breakpointSubscription=(0,core.inject)(BreakpointObserver).observe("(forced-colors: active)").subscribe((()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())}))}getHighContrastMode(){if(!this._platform.isBrowser)return 0;const testElement=this._document.createElement("div");testElement.style.backgroundColor="rgb(1,2,3)",testElement.style.position="absolute",this._document.body.appendChild(testElement);const documentWindow=this._document.defaultView||window,computedStyle=documentWindow&&documentWindow.getComputedStyle?documentWindow.getComputedStyle(testElement):null,computedColor=(computedStyle&&computedStyle.backgroundColor||"").replace(/ /g,"");switch(testElement.remove(),computedColor){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return 2;case"rgb(255,255,255)":case"rgb(255,250,239)":return 1}return 0}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const bodyClasses=this._document.body.classList;bodyClasses.remove("cdk-high-contrast-active","cdk-high-contrast-black-on-white","cdk-high-contrast-white-on-black"),this._hasCheckedHighContrastMode=!0;const mode=this.getHighContrastMode();1===mode?bodyClasses.add("cdk-high-contrast-active","cdk-high-contrast-black-on-white"):2===mode&&bodyClasses.add("cdk-high-contrast-active","cdk-high-contrast-white-on-black")}}}HighContrastModeDetector.ɵfac=function HighContrastModeDetector_Factory(t){return new(t||HighContrastModeDetector)(core["ɵɵinject"](platform.t4),core["ɵɵinject"](common.DOCUMENT))},HighContrastModeDetector.ɵprov=core["ɵɵdefineInjectable"]({token:HighContrastModeDetector,factory:HighContrastModeDetector.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](HighContrastModeDetector,[{type:core.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:platform.t4},{type:void 0,decorators:[{type:core.Inject,args:[common.DOCUMENT]}]}]}),null);class A11yModule{constructor(highContrastModeDetector){highContrastModeDetector._applyBodyHighContrastModeCssClasses()}}A11yModule.ɵfac=function A11yModule_Factory(t){return new(t||A11yModule)(core["ɵɵinject"](HighContrastModeDetector))},A11yModule.ɵmod=core["ɵɵdefineNgModule"]({type:A11yModule,declarations:[CdkAriaLive,CdkTrapFocus,CdkMonitorFocus],imports:[observers.Q8],exports:[CdkAriaLive,CdkTrapFocus,CdkMonitorFocus]}),A11yModule.ɵinj=core["ɵɵdefineInjector"]({imports:[observers.Q8]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](A11yModule,[{type:core.NgModule,args:[{imports:[observers.Q8],declarations:[CdkAriaLive,CdkTrapFocus,CdkMonitorFocus],exports:[CdkAriaLive,CdkTrapFocus,CdkMonitorFocus]}]}],(function(){return[{type:HighContrastModeDetector}]}),null)},"./node_modules/@angular/cdk/fesm2020/observers.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{Q8:()=>ObserversModule,wD:()=>CdkObserveContent,yq:()=>ContentObserver});var _angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/cdk/fesm2020/coercion.mjs"),_angular_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),rxjs__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Observable.js"),rxjs__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subject.js"),rxjs_operators__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js");class MutationObserverFactory{create(callback){return"undefined"==typeof MutationObserver?null:new MutationObserver(callback)}}MutationObserverFactory.ɵfac=function MutationObserverFactory_Factory(t){return new(t||MutationObserverFactory)},MutationObserverFactory.ɵprov=_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({token:MutationObserverFactory,factory:MutationObserverFactory.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MutationObserverFactory,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable,args:[{providedIn:"root"}]}],null,null);class ContentObserver{constructor(_mutationObserverFactory){this._mutationObserverFactory=_mutationObserverFactory,this._observedElements=new Map}ngOnDestroy(){this._observedElements.forEach(((_,element)=>this._cleanupObserver(element)))}observe(elementOrRef){const element=(0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_1__.fI)(elementOrRef);return new rxjs__WEBPACK_IMPORTED_MODULE_2__.y((observer=>{const subscription=this._observeElement(element).subscribe(observer);return()=>{subscription.unsubscribe(),this._unobserveElement(element)}}))}_observeElement(element){if(this._observedElements.has(element))this._observedElements.get(element).count++;else{const stream=new rxjs__WEBPACK_IMPORTED_MODULE_3__.x,observer=this._mutationObserverFactory.create((mutations=>stream.next(mutations)));observer&&observer.observe(element,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(element,{observer,stream,count:1})}return this._observedElements.get(element).stream}_unobserveElement(element){this._observedElements.has(element)&&(this._observedElements.get(element).count--,this._observedElements.get(element).count||this._cleanupObserver(element))}_cleanupObserver(element){if(this._observedElements.has(element)){const{observer,stream}=this._observedElements.get(element);observer&&observer.disconnect(),stream.complete(),this._observedElements.delete(element)}}}ContentObserver.ɵfac=function ContentObserver_Factory(t){return new(t||ContentObserver)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](MutationObserverFactory))},ContentObserver.ɵprov=_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({token:ContentObserver,factory:ContentObserver.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](ContentObserver,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable,args:[{providedIn:"root"}]}],(function(){return[{type:MutationObserverFactory}]}),null);class CdkObserveContent{get disabled(){return this._disabled}set disabled(value){this._disabled=(0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_1__.Ig)(value),this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(value){this._debounce=(0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_1__.su)(value),this._subscribe()}constructor(_contentObserver,_elementRef,_ngZone){this._contentObserver=_contentObserver,this._elementRef=_elementRef,this._ngZone=_ngZone,this.event=new _angular_core__WEBPACK_IMPORTED_MODULE_0__.EventEmitter,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){this._currentSubscription||this.disabled||this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const stream=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular((()=>{this._currentSubscription=(this.debounce?stream.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_4__.b)(this.debounce)):stream).subscribe(this.event)}))}_unsubscribe(){this._currentSubscription?.unsubscribe()}}CdkObserveContent.ɵfac=function CdkObserveContent_Factory(t){return new(t||CdkObserveContent)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](ContentObserver),_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef),_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone))},CdkObserveContent.ɵdir=_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({type:CdkObserveContent,selectors:[["","cdkObserveContent",""]],inputs:{disabled:["cdkObserveContentDisabled","disabled"],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](CdkObserveContent,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive,args:[{selector:"[cdkObserveContent]",exportAs:"cdkObserveContent"}]}],(function(){return[{type:ContentObserver},{type:_angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef},{type:_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone}]}),{event:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_0__.Output,args:["cdkObserveContent"]}],disabled:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input,args:["cdkObserveContentDisabled"]}],debounce:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input}]});class ObserversModule{}ObserversModule.ɵfac=function ObserversModule_Factory(t){return new(t||ObserversModule)},ObserversModule.ɵmod=_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({type:ObserversModule,declarations:[CdkObserveContent],exports:[CdkObserveContent]}),ObserversModule.ɵinj=_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({providers:[MutationObserverFactory]}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](ObserversModule,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgModule,args:[{exports:[CdkObserveContent],declarations:[CdkObserveContent],providers:[MutationObserverFactory]}]}],null,null)},"./node_modules/@angular/material/fesm2020/button.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{ot:()=>MatButtonModule});var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@angular/cdk/fesm2020/platform.mjs"),_angular_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@angular/cdk/fesm2020/a11y.mjs"),_angular_material_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@angular/material/fesm2020/core.mjs"),_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@angular/cdk/fesm2020/coercion.mjs");const _c0=["mat-button",""],_c1=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],_c2=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],_c4=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}",_c5=["mat-fab",""],_c6=["mat-mini-fab",""],_c7='.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-fab{position:relative;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;user-select:none;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-fab .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-fab[hidden]{display:none}.mdc-fab::-moz-focus-inner{padding:0;border:0}.mdc-fab .mdc-fab__focus-ring{position:absolute}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n )}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{border-color:CanvasText}}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{border-color:CanvasText}}.mdc-fab:active,.mdc-fab:focus{outline:none}.mdc-fab:hover{cursor:pointer}.mdc-fab>svg{width:100%}.mdc-fab--mini{width:40px;height:40px}.mdc-fab--extended{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mdc-fab--extended .mdc-fab__ripple{border-radius:24px}.mdc-fab--extended .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mdc-fab--extended .mdc-fab__icon,.mdc-fab--extended .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mdc-fab--extended .mdc-fab__label+.mdc-fab__icon,.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mdc-fab--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-fab--touch .mdc-fab__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-fab::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-fab::before{border-color:CanvasText}}.mdc-fab__label{justify-content:flex-start;text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden;overflow-y:visible}.mdc-fab__icon{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mdc-fab .mdc-fab__icon{display:inline-flex;align-items:center;justify-content:center}.mdc-fab--exited{transform:scale(0);opacity:0;transition:opacity 15ms linear 150ms,transform 180ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab--exited .mdc-fab__icon{transform:scale(0);transition:transform 135ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab .mdc-fab__icon{width:24px;height:24px;font-size:24px}.mdc-fab:not(.mdc-fab--extended){border-radius:50%}.mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:50%}.mat-mdc-fab,.mat-mdc-mini-fab{-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--mdc-fab-container-color, transparent);box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);color:var(--mat-mdc-fab-color, inherit);flex-shrink:0}.mat-mdc-fab .mat-mdc-button-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-fab .mat-ripple-element,.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-fab .mdc-button__label,.mat-mdc-mini-fab .mdc-button__label{z-index:1}.mat-mdc-fab .mat-mdc-focus-indicator,.mat-mdc-mini-fab .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab:focus .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-fab .mat-mdc-button-touch-target,.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-fab._mat-animation-noopable,.mat-mdc-mini-fab._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab:not(:disabled) .mdc-fab__icon,.mat-mdc-mini-fab:not(:disabled) .mdc-fab__icon{color:var(--mdc-fab-icon-color, inherit)}.mat-mdc-fab:not(.mdc-fab--extended),.mat-mdc-mini-fab:not(.mdc-fab--extended){border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple,.mat-mdc-mini-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:hover,.mat-mdc-fab:focus,.mat-mdc-mini-fab:hover,.mat-mdc-mini-fab:focus{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:active,.mat-mdc-fab:focus:active,.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12)}.mat-mdc-fab[disabled],.mat-mdc-mini-fab[disabled]{cursor:default;pointer-events:none;box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-mini-fab:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}.mat-mdc-fab .mat-icon,.mat-mdc-fab .material-icons,.mat-mdc-mini-fab .mat-icon,.mat-mdc-mini-fab .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-extended-fab{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mat-mdc-extended-fab .mdc-fab__ripple{border-radius:24px}.mat-mdc-extended-fab .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons,.mat-mdc-extended-fab>.mat-icon[dir=rtl],.mat-mdc-extended-fab>.material-icons[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-extended-fab .mdc-button__label+.material-icons[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}',_c8=["mat-icon-button",""],MAT_BUTTON_INPUTS=["disabled","disableRipple","color"],MAT_BUTTON_HOST={"[attr.disabled]":"disabled || null","[class._mat-animation-noopable]":'_animationMode === "NoopAnimations"',"[class.mat-unthemed]":"!color","[class.mat-mdc-button-base]":"true"},HOST_SELECTOR_MDC_CLASS_PAIR=[{selector:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{selector:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{selector:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{selector:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{selector:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{selector:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{selector:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],_MatButtonMixin=(0,_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.pj)((0,_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.Id)((0,_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.Kr)(class{constructor(_elementRef){this._elementRef=_elementRef}})));class MatButtonBase extends _MatButtonMixin{constructor(elementRef,_platform,_ngZone,_animationMode){super(elementRef),this._platform=_platform,this._ngZone=_ngZone,this._animationMode=_animationMode,this._focusMonitor=(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.inject)(_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_2__.tE),this._isFab=!1;const classList=elementRef.nativeElement.classList;for(const pair of HOST_SELECTOR_MDC_CLASS_PAIR)this._hasHostAttributes(pair.selector)&&pair.mdcClasses.forEach((className=>{classList.add(className)}))}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}focus(_origin="program",options){_origin?this._focusMonitor.focusVia(this._elementRef.nativeElement,_origin,options):this._elementRef.nativeElement.focus(options)}_hasHostAttributes(...attributes){return attributes.some((attribute=>this._elementRef.nativeElement.hasAttribute(attribute)))}_isRippleDisabled(){return this.disableRipple||this.disabled}}MatButtonBase.ɵfac=function MatButtonBase_Factory(t){_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵinvalidFactory"]()},MatButtonBase.ɵdir=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineDirective"]({type:MatButtonBase,viewQuery:function MatButtonBase_Query(rf,ctx){if(1&rf&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵviewQuery"](_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG,5),2&rf){let _t;_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵqueryRefresh"](_t=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵloadQuery"]())&&(ctx.ripple=_t.first)}},features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatButtonBase,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Directive}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0}]}),{ripple:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ViewChild,args:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG]}]});const MAT_ANCHOR_INPUTS=["disabled","disableRipple","color","tabIndex"],MAT_ANCHOR_HOST={"[attr.disabled]":"disabled || null","[class._mat-animation-noopable]":'_animationMode === "NoopAnimations"',"[attr.tabindex]":"disabled ? -1 : tabIndex","[attr.aria-disabled]":"disabled.toString()","[class.mat-unthemed]":"!color","[class.mat-mdc-button-base]":"true"};class MatAnchorBase extends MatButtonBase{constructor(elementRef,platform,ngZone,animationMode){super(elementRef,platform,ngZone,animationMode),this._haltDisabledEvents=event=>{this.disabled&&(event.preventDefault(),event.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular((()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)}))}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}}MatAnchorBase.ɵfac=function MatAnchorBase_Factory(t){_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵinvalidFactory"]()},MatAnchorBase.ɵdir=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineDirective"]({type:MatAnchorBase,features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatAnchorBase,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Directive}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0}]}),null);class MatButton extends MatButtonBase{constructor(elementRef,platform,ngZone,animationMode){super(elementRef,platform,ngZone,animationMode)}}MatButton.ɵfac=function MatButton_Factory(t){return new(t||MatButton)(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE,8))},MatButton.ɵcmp=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineComponent"]({type:MatButton,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:7,hostBindings:function MatButton_HostBindings(rf,ctx){2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵattribute"]("disabled",ctx.disabled||null),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("_mat-animation-noopable","NoopAnimations"===ctx._animationMode)("mat-unthemed",!ctx.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]],attrs:_c0,ngContentSelectors:_c2,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function MatButton_Template(rf,ctx){1&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojectionDef"](_c1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](0,"span",0),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementStart"](2,"span",1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](3,1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementEnd"](),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](4,2),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](5,"span",2)(6,"span",3)(7,"span",4)),2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("mdc-button__ripple",!ctx._isFab)("mdc-fab__ripple",ctx._isFab),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵadvance"](6),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵproperty"]("matRippleDisabled",ctx._isRippleDisabled())("matRippleTrigger",ctx._elementRef.nativeElement))},dependencies:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatButton,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component,args:[{selector:"\n button[mat-button], button[mat-raised-button], button[mat-flat-button],\n button[mat-stroked-button]\n ",inputs:MAT_BUTTON_INPUTS,host:MAT_BUTTON_HOST,exportAs:"matButton",encapsulation:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ViewEncapsulation.None,changeDetection:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ChangeDetectionStrategy.OnPush,template:'\n\n\n\n\n\n\n\n\n\n\x3c!--\n The indicator can\'t be directly on the button, because MDC uses ::before for high contrast\n indication and it can\'t be on the ripple, because it has a border radius and overflow: hidden.\n--\x3e\n\n\n\n\n\n',styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"]}]}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE]}]}]}),null);class MatAnchor extends MatAnchorBase{constructor(elementRef,platform,ngZone,animationMode){super(elementRef,platform,ngZone,animationMode)}}MatAnchor.ɵfac=function MatAnchor_Factory(t){return new(t||MatAnchor)(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE,8))},MatAnchor.ɵcmp=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineComponent"]({type:MatAnchor,selectors:[["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostVars:9,hostBindings:function MatAnchor_HostBindings(rf,ctx){2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵattribute"]("disabled",ctx.disabled||null)("tabindex",ctx.disabled?-1:ctx.tabIndex)("aria-disabled",ctx.disabled.toString()),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("_mat-animation-noopable","NoopAnimations"===ctx._animationMode)("mat-unthemed",!ctx.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]],attrs:_c0,ngContentSelectors:_c2,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function MatAnchor_Template(rf,ctx){1&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojectionDef"](_c1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](0,"span",0),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementStart"](2,"span",1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](3,1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementEnd"](),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](4,2),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](5,"span",2)(6,"span",3)(7,"span",4)),2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("mdc-button__ripple",!ctx._isFab)("mdc-fab__ripple",ctx._isFab),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵadvance"](6),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵproperty"]("matRippleDisabled",ctx._isRippleDisabled())("matRippleTrigger",ctx._elementRef.nativeElement))},dependencies:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',_c4],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatAnchor,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component,args:[{selector:"a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]",exportAs:"matButton, matAnchor",host:MAT_ANCHOR_HOST,inputs:MAT_ANCHOR_INPUTS,encapsulation:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ViewEncapsulation.None,changeDetection:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ChangeDetectionStrategy.OnPush,template:'\n\n\n\n\n\n\n\n\n\n\x3c!--\n The indicator can\'t be directly on the button, because MDC uses ::before for high contrast\n indication and it can\'t be on the ripple, because it has a border radius and overflow: hidden.\n--\x3e\n\n\n\n\n\n',styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"]}]}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE]}]}]}),null);const MAT_FAB_DEFAULT_OPTIONS=new _angular_core__WEBPACK_IMPORTED_MODULE_1__.InjectionToken("mat-mdc-fab-default-options",{providedIn:"root",factory:MAT_FAB_DEFAULT_OPTIONS_FACTORY});function MAT_FAB_DEFAULT_OPTIONS_FACTORY(){return{color:"accent"}}const defaults={color:"accent"};let buttonInputs=[...MAT_ANCHOR_INPUTS,"extended"];class MatFabButton extends MatButtonBase{get extended(){return this._extended}set extended(value){this._extended=(0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_4__.Ig)(value)}constructor(elementRef,platform,ngZone,animationMode,_options){super(elementRef,platform,ngZone,animationMode),this._options=_options,this._isFab=!0,this._options=this._options||defaults,this.color=this.defaultColor=this._options.color||defaults.color}}MatFabButton.ɵfac=function MatFabButton_Factory(t){return new(t||MatFabButton)(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE,8),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](MAT_FAB_DEFAULT_OPTIONS,8))},MatFabButton.ɵcmp=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineComponent"]({type:MatFabButton,selectors:[["button","mat-fab",""]],hostVars:11,hostBindings:function MatFabButton_HostBindings(rf,ctx){2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵattribute"]("disabled",ctx.disabled||null),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("_mat-animation-noopable","NoopAnimations"===ctx._animationMode)("mat-unthemed",!ctx.color)("mat-mdc-button-base",!0)("mdc-fab--extended",ctx.extended)("mat-mdc-extended-fab",ctx.extended))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex",extended:"extended"},exportAs:["matButton"],features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]],attrs:_c5,ngContentSelectors:_c2,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function MatFabButton_Template(rf,ctx){1&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojectionDef"](_c1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](0,"span",0),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementStart"](2,"span",1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](3,1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementEnd"](),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](4,2),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](5,"span",2)(6,"span",3)(7,"span",4)),2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("mdc-button__ripple",!ctx._isFab)("mdc-fab__ripple",ctx._isFab),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵadvance"](6),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵproperty"]("matRippleDisabled",ctx._isRippleDisabled())("matRippleTrigger",ctx._elementRef.nativeElement))},dependencies:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-fab{position:relative;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;user-select:none;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-fab .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-fab[hidden]{display:none}.mdc-fab::-moz-focus-inner{padding:0;border:0}.mdc-fab .mdc-fab__focus-ring{position:absolute}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n )}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{border-color:CanvasText}}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{border-color:CanvasText}}.mdc-fab:active,.mdc-fab:focus{outline:none}.mdc-fab:hover{cursor:pointer}.mdc-fab>svg{width:100%}.mdc-fab--mini{width:40px;height:40px}.mdc-fab--extended{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mdc-fab--extended .mdc-fab__ripple{border-radius:24px}.mdc-fab--extended .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mdc-fab--extended .mdc-fab__icon,.mdc-fab--extended .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mdc-fab--extended .mdc-fab__label+.mdc-fab__icon,.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mdc-fab--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-fab--touch .mdc-fab__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-fab::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-fab::before{border-color:CanvasText}}.mdc-fab__label{justify-content:flex-start;text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden;overflow-y:visible}.mdc-fab__icon{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mdc-fab .mdc-fab__icon{display:inline-flex;align-items:center;justify-content:center}.mdc-fab--exited{transform:scale(0);opacity:0;transition:opacity 15ms linear 150ms,transform 180ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab--exited .mdc-fab__icon{transform:scale(0);transition:transform 135ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab .mdc-fab__icon{width:24px;height:24px;font-size:24px}.mdc-fab:not(.mdc-fab--extended){border-radius:50%}.mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:50%}.mat-mdc-fab,.mat-mdc-mini-fab{-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--mdc-fab-container-color, transparent);box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);color:var(--mat-mdc-fab-color, inherit);flex-shrink:0}.mat-mdc-fab .mat-mdc-button-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-fab .mat-ripple-element,.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-fab .mdc-button__label,.mat-mdc-mini-fab .mdc-button__label{z-index:1}.mat-mdc-fab .mat-mdc-focus-indicator,.mat-mdc-mini-fab .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab:focus .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-fab .mat-mdc-button-touch-target,.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-fab._mat-animation-noopable,.mat-mdc-mini-fab._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab:not(:disabled) .mdc-fab__icon,.mat-mdc-mini-fab:not(:disabled) .mdc-fab__icon{color:var(--mdc-fab-icon-color, inherit)}.mat-mdc-fab:not(.mdc-fab--extended),.mat-mdc-mini-fab:not(.mdc-fab--extended){border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple,.mat-mdc-mini-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:hover,.mat-mdc-fab:focus,.mat-mdc-mini-fab:hover,.mat-mdc-mini-fab:focus{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:active,.mat-mdc-fab:focus:active,.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12)}.mat-mdc-fab[disabled],.mat-mdc-mini-fab[disabled]{cursor:default;pointer-events:none;box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-mini-fab:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}.mat-mdc-fab .mat-icon,.mat-mdc-fab .material-icons,.mat-mdc-mini-fab .mat-icon,.mat-mdc-mini-fab .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-extended-fab{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mat-mdc-extended-fab .mdc-fab__ripple{border-radius:24px}.mat-mdc-extended-fab .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons,.mat-mdc-extended-fab>.mat-icon[dir=rtl],.mat-mdc-extended-fab>.material-icons[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-extended-fab .mdc-button__label+.material-icons[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}'],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatFabButton,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component,args:[{selector:"button[mat-fab]",inputs:buttonInputs,host:{...MAT_BUTTON_HOST,"[class.mdc-fab--extended]":"extended","[class.mat-mdc-extended-fab]":"extended"},exportAs:"matButton",encapsulation:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ViewEncapsulation.None,changeDetection:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ChangeDetectionStrategy.OnPush,template:'\n\n\n\n\n\n\n\n\n\n\x3c!--\n The indicator can\'t be directly on the button, because MDC uses ::before for high contrast\n indication and it can\'t be on the ripple, because it has a border radius and overflow: hidden.\n--\x3e\n\n\n\n\n\n',styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-fab{position:relative;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;user-select:none;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-fab .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-fab[hidden]{display:none}.mdc-fab::-moz-focus-inner{padding:0;border:0}.mdc-fab .mdc-fab__focus-ring{position:absolute}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n )}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{border-color:CanvasText}}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{border-color:CanvasText}}.mdc-fab:active,.mdc-fab:focus{outline:none}.mdc-fab:hover{cursor:pointer}.mdc-fab>svg{width:100%}.mdc-fab--mini{width:40px;height:40px}.mdc-fab--extended{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mdc-fab--extended .mdc-fab__ripple{border-radius:24px}.mdc-fab--extended .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mdc-fab--extended .mdc-fab__icon,.mdc-fab--extended .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mdc-fab--extended .mdc-fab__label+.mdc-fab__icon,.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mdc-fab--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-fab--touch .mdc-fab__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-fab::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-fab::before{border-color:CanvasText}}.mdc-fab__label{justify-content:flex-start;text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden;overflow-y:visible}.mdc-fab__icon{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mdc-fab .mdc-fab__icon{display:inline-flex;align-items:center;justify-content:center}.mdc-fab--exited{transform:scale(0);opacity:0;transition:opacity 15ms linear 150ms,transform 180ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab--exited .mdc-fab__icon{transform:scale(0);transition:transform 135ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab .mdc-fab__icon{width:24px;height:24px;font-size:24px}.mdc-fab:not(.mdc-fab--extended){border-radius:50%}.mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:50%}.mat-mdc-fab,.mat-mdc-mini-fab{-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--mdc-fab-container-color, transparent);box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);color:var(--mat-mdc-fab-color, inherit);flex-shrink:0}.mat-mdc-fab .mat-mdc-button-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-fab .mat-ripple-element,.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-fab .mdc-button__label,.mat-mdc-mini-fab .mdc-button__label{z-index:1}.mat-mdc-fab .mat-mdc-focus-indicator,.mat-mdc-mini-fab .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab:focus .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-fab .mat-mdc-button-touch-target,.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-fab._mat-animation-noopable,.mat-mdc-mini-fab._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab:not(:disabled) .mdc-fab__icon,.mat-mdc-mini-fab:not(:disabled) .mdc-fab__icon{color:var(--mdc-fab-icon-color, inherit)}.mat-mdc-fab:not(.mdc-fab--extended),.mat-mdc-mini-fab:not(.mdc-fab--extended){border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple,.mat-mdc-mini-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:hover,.mat-mdc-fab:focus,.mat-mdc-mini-fab:hover,.mat-mdc-mini-fab:focus{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:active,.mat-mdc-fab:focus:active,.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12)}.mat-mdc-fab[disabled],.mat-mdc-mini-fab[disabled]{cursor:default;pointer-events:none;box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-mini-fab:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}.mat-mdc-fab .mat-icon,.mat-mdc-fab .material-icons,.mat-mdc-mini-fab .mat-icon,.mat-mdc-mini-fab .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-extended-fab{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mat-mdc-extended-fab .mdc-fab__ripple{border-radius:24px}.mat-mdc-extended-fab .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons,.mat-mdc-extended-fab>.mat-icon[dir=rtl],.mat-mdc-extended-fab>.material-icons[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-extended-fab .mdc-button__label+.material-icons[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}']}]}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE]}]},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[MAT_FAB_DEFAULT_OPTIONS]}]}]}),null);class MatMiniFabButton extends MatButtonBase{constructor(elementRef,platform,ngZone,animationMode,_options){super(elementRef,platform,ngZone,animationMode),this._options=_options,this._isFab=!0,this._options=this._options||defaults,this.color=this.defaultColor=this._options.color||defaults.color}}MatMiniFabButton.ɵfac=function MatMiniFabButton_Factory(t){return new(t||MatMiniFabButton)(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE,8),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](MAT_FAB_DEFAULT_OPTIONS,8))},MatMiniFabButton.ɵcmp=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineComponent"]({type:MatMiniFabButton,selectors:[["button","mat-mini-fab",""]],hostVars:7,hostBindings:function MatMiniFabButton_HostBindings(rf,ctx){2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵattribute"]("disabled",ctx.disabled||null),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("_mat-animation-noopable","NoopAnimations"===ctx._animationMode)("mat-unthemed",!ctx.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]],attrs:_c6,ngContentSelectors:_c2,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function MatMiniFabButton_Template(rf,ctx){1&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojectionDef"](_c1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](0,"span",0),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementStart"](2,"span",1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](3,1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementEnd"](),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](4,2),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](5,"span",2)(6,"span",3)(7,"span",4)),2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("mdc-button__ripple",!ctx._isFab)("mdc-fab__ripple",ctx._isFab),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵadvance"](6),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵproperty"]("matRippleDisabled",ctx._isRippleDisabled())("matRippleTrigger",ctx._elementRef.nativeElement))},dependencies:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG],styles:[_c7],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatMiniFabButton,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component,args:[{selector:"button[mat-mini-fab]",inputs:MAT_BUTTON_INPUTS,host:MAT_BUTTON_HOST,exportAs:"matButton",encapsulation:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ViewEncapsulation.None,changeDetection:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ChangeDetectionStrategy.OnPush,template:'\n\n\n\n\n\n\n\n\n\n\x3c!--\n The indicator can\'t be directly on the button, because MDC uses ::before for high contrast\n indication and it can\'t be on the ripple, because it has a border radius and overflow: hidden.\n--\x3e\n\n\n\n\n\n',styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-fab{position:relative;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;user-select:none;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-fab .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-fab[hidden]{display:none}.mdc-fab::-moz-focus-inner{padding:0;border:0}.mdc-fab .mdc-fab__focus-ring{position:absolute}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n )}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{border-color:CanvasText}}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{border-color:CanvasText}}.mdc-fab:active,.mdc-fab:focus{outline:none}.mdc-fab:hover{cursor:pointer}.mdc-fab>svg{width:100%}.mdc-fab--mini{width:40px;height:40px}.mdc-fab--extended{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mdc-fab--extended .mdc-fab__ripple{border-radius:24px}.mdc-fab--extended .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mdc-fab--extended .mdc-fab__icon,.mdc-fab--extended .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mdc-fab--extended .mdc-fab__label+.mdc-fab__icon,.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mdc-fab--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-fab--touch .mdc-fab__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-fab::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-fab::before{border-color:CanvasText}}.mdc-fab__label{justify-content:flex-start;text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden;overflow-y:visible}.mdc-fab__icon{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mdc-fab .mdc-fab__icon{display:inline-flex;align-items:center;justify-content:center}.mdc-fab--exited{transform:scale(0);opacity:0;transition:opacity 15ms linear 150ms,transform 180ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab--exited .mdc-fab__icon{transform:scale(0);transition:transform 135ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab .mdc-fab__icon{width:24px;height:24px;font-size:24px}.mdc-fab:not(.mdc-fab--extended){border-radius:50%}.mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:50%}.mat-mdc-fab,.mat-mdc-mini-fab{-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--mdc-fab-container-color, transparent);box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);color:var(--mat-mdc-fab-color, inherit);flex-shrink:0}.mat-mdc-fab .mat-mdc-button-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-fab .mat-ripple-element,.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-fab .mdc-button__label,.mat-mdc-mini-fab .mdc-button__label{z-index:1}.mat-mdc-fab .mat-mdc-focus-indicator,.mat-mdc-mini-fab .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab:focus .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-fab .mat-mdc-button-touch-target,.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-fab._mat-animation-noopable,.mat-mdc-mini-fab._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab:not(:disabled) .mdc-fab__icon,.mat-mdc-mini-fab:not(:disabled) .mdc-fab__icon{color:var(--mdc-fab-icon-color, inherit)}.mat-mdc-fab:not(.mdc-fab--extended),.mat-mdc-mini-fab:not(.mdc-fab--extended){border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple,.mat-mdc-mini-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:hover,.mat-mdc-fab:focus,.mat-mdc-mini-fab:hover,.mat-mdc-mini-fab:focus{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:active,.mat-mdc-fab:focus:active,.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12)}.mat-mdc-fab[disabled],.mat-mdc-mini-fab[disabled]{cursor:default;pointer-events:none;box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-mini-fab:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}.mat-mdc-fab .mat-icon,.mat-mdc-fab .material-icons,.mat-mdc-mini-fab .mat-icon,.mat-mdc-mini-fab .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-extended-fab{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mat-mdc-extended-fab .mdc-fab__ripple{border-radius:24px}.mat-mdc-extended-fab .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons,.mat-mdc-extended-fab>.mat-icon[dir=rtl],.mat-mdc-extended-fab>.material-icons[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-extended-fab .mdc-button__label+.material-icons[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}']}]}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE]}]},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[MAT_FAB_DEFAULT_OPTIONS]}]}]}),null);class MatFabAnchor extends MatAnchor{get extended(){return this._extended}set extended(value){this._extended=(0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_4__.Ig)(value)}constructor(elementRef,platform,ngZone,animationMode,_options){super(elementRef,platform,ngZone,animationMode),this._options=_options,this._isFab=!0,this._options=this._options||defaults,this.color=this.defaultColor=this._options.color||defaults.color}}MatFabAnchor.ɵfac=function MatFabAnchor_Factory(t){return new(t||MatFabAnchor)(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE,8),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](MAT_FAB_DEFAULT_OPTIONS,8))},MatFabAnchor.ɵcmp=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineComponent"]({type:MatFabAnchor,selectors:[["a","mat-fab",""]],hostVars:13,hostBindings:function MatFabAnchor_HostBindings(rf,ctx){2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵattribute"]("disabled",ctx.disabled||null)("tabindex",ctx.disabled?-1:ctx.tabIndex)("aria-disabled",ctx.disabled.toString()),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("_mat-animation-noopable","NoopAnimations"===ctx._animationMode)("mat-unthemed",!ctx.color)("mat-mdc-button-base",!0)("mdc-fab--extended",ctx.extended)("mat-mdc-extended-fab",ctx.extended))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex",extended:"extended"},exportAs:["matButton","matAnchor"],features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]],attrs:_c5,ngContentSelectors:_c2,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function MatFabAnchor_Template(rf,ctx){1&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojectionDef"](_c1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](0,"span",0),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementStart"](2,"span",1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](3,1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementEnd"](),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](4,2),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](5,"span",2)(6,"span",3)(7,"span",4)),2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("mdc-button__ripple",!ctx._isFab)("mdc-fab__ripple",ctx._isFab),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵadvance"](6),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵproperty"]("matRippleDisabled",ctx._isRippleDisabled())("matRippleTrigger",ctx._elementRef.nativeElement))},dependencies:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG],styles:[_c7],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatFabAnchor,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component,args:[{selector:"a[mat-fab]",inputs:buttonInputs,host:{...MAT_ANCHOR_HOST,"[class.mdc-fab--extended]":"extended","[class.mat-mdc-extended-fab]":"extended"},exportAs:"matButton, matAnchor",encapsulation:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ViewEncapsulation.None,changeDetection:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ChangeDetectionStrategy.OnPush,template:'\n\n\n\n\n\n\n\n\n\n\x3c!--\n The indicator can\'t be directly on the button, because MDC uses ::before for high contrast\n indication and it can\'t be on the ripple, because it has a border radius and overflow: hidden.\n--\x3e\n\n\n\n\n\n',styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-fab{position:relative;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;user-select:none;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-fab .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-fab[hidden]{display:none}.mdc-fab::-moz-focus-inner{padding:0;border:0}.mdc-fab .mdc-fab__focus-ring{position:absolute}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n )}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{border-color:CanvasText}}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{border-color:CanvasText}}.mdc-fab:active,.mdc-fab:focus{outline:none}.mdc-fab:hover{cursor:pointer}.mdc-fab>svg{width:100%}.mdc-fab--mini{width:40px;height:40px}.mdc-fab--extended{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mdc-fab--extended .mdc-fab__ripple{border-radius:24px}.mdc-fab--extended .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mdc-fab--extended .mdc-fab__icon,.mdc-fab--extended .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mdc-fab--extended .mdc-fab__label+.mdc-fab__icon,.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mdc-fab--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-fab--touch .mdc-fab__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-fab::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-fab::before{border-color:CanvasText}}.mdc-fab__label{justify-content:flex-start;text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden;overflow-y:visible}.mdc-fab__icon{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mdc-fab .mdc-fab__icon{display:inline-flex;align-items:center;justify-content:center}.mdc-fab--exited{transform:scale(0);opacity:0;transition:opacity 15ms linear 150ms,transform 180ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab--exited .mdc-fab__icon{transform:scale(0);transition:transform 135ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab .mdc-fab__icon{width:24px;height:24px;font-size:24px}.mdc-fab:not(.mdc-fab--extended){border-radius:50%}.mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:50%}.mat-mdc-fab,.mat-mdc-mini-fab{-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--mdc-fab-container-color, transparent);box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);color:var(--mat-mdc-fab-color, inherit);flex-shrink:0}.mat-mdc-fab .mat-mdc-button-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-fab .mat-ripple-element,.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-fab .mdc-button__label,.mat-mdc-mini-fab .mdc-button__label{z-index:1}.mat-mdc-fab .mat-mdc-focus-indicator,.mat-mdc-mini-fab .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab:focus .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-fab .mat-mdc-button-touch-target,.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-fab._mat-animation-noopable,.mat-mdc-mini-fab._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab:not(:disabled) .mdc-fab__icon,.mat-mdc-mini-fab:not(:disabled) .mdc-fab__icon{color:var(--mdc-fab-icon-color, inherit)}.mat-mdc-fab:not(.mdc-fab--extended),.mat-mdc-mini-fab:not(.mdc-fab--extended){border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple,.mat-mdc-mini-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:hover,.mat-mdc-fab:focus,.mat-mdc-mini-fab:hover,.mat-mdc-mini-fab:focus{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:active,.mat-mdc-fab:focus:active,.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12)}.mat-mdc-fab[disabled],.mat-mdc-mini-fab[disabled]{cursor:default;pointer-events:none;box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-mini-fab:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}.mat-mdc-fab .mat-icon,.mat-mdc-fab .material-icons,.mat-mdc-mini-fab .mat-icon,.mat-mdc-mini-fab .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-extended-fab{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mat-mdc-extended-fab .mdc-fab__ripple{border-radius:24px}.mat-mdc-extended-fab .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons,.mat-mdc-extended-fab>.mat-icon[dir=rtl],.mat-mdc-extended-fab>.material-icons[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-extended-fab .mdc-button__label+.material-icons[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}']}]}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE]}]},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[MAT_FAB_DEFAULT_OPTIONS]}]}]}),null);class MatMiniFabAnchor extends MatAnchor{constructor(elementRef,platform,ngZone,animationMode,_options){super(elementRef,platform,ngZone,animationMode),this._options=_options,this._isFab=!0,this._options=this._options||defaults,this.color=this.defaultColor=this._options.color||defaults.color}}MatMiniFabAnchor.ɵfac=function MatMiniFabAnchor_Factory(t){return new(t||MatMiniFabAnchor)(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE,8),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](MAT_FAB_DEFAULT_OPTIONS,8))},MatMiniFabAnchor.ɵcmp=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineComponent"]({type:MatMiniFabAnchor,selectors:[["a","mat-mini-fab",""]],hostVars:9,hostBindings:function MatMiniFabAnchor_HostBindings(rf,ctx){2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵattribute"]("disabled",ctx.disabled||null)("tabindex",ctx.disabled?-1:ctx.tabIndex)("aria-disabled",ctx.disabled.toString()),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("_mat-animation-noopable","NoopAnimations"===ctx._animationMode)("mat-unthemed",!ctx.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]],attrs:_c6,ngContentSelectors:_c2,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function MatMiniFabAnchor_Template(rf,ctx){1&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojectionDef"](_c1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](0,"span",0),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementStart"](2,"span",1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](3,1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementEnd"](),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](4,2),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](5,"span",2)(6,"span",3)(7,"span",4)),2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("mdc-button__ripple",!ctx._isFab)("mdc-fab__ripple",ctx._isFab),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵadvance"](6),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵproperty"]("matRippleDisabled",ctx._isRippleDisabled())("matRippleTrigger",ctx._elementRef.nativeElement))},dependencies:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG],styles:[_c7],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatMiniFabAnchor,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component,args:[{selector:"a[mat-mini-fab]",inputs:MAT_ANCHOR_INPUTS,host:MAT_ANCHOR_HOST,exportAs:"matButton, matAnchor",encapsulation:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ViewEncapsulation.None,changeDetection:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ChangeDetectionStrategy.OnPush,template:'\n\n\n\n\n\n\n\n\n\n\x3c!--\n The indicator can\'t be directly on the button, because MDC uses ::before for high contrast\n indication and it can\'t be on the ripple, because it has a border radius and overflow: hidden.\n--\x3e\n\n\n\n\n\n',styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-fab{position:relative;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;user-select:none;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-fab .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-fab[hidden]{display:none}.mdc-fab::-moz-focus-inner{padding:0;border:0}.mdc-fab .mdc-fab__focus-ring{position:absolute}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n )}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{border-color:CanvasText}}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{border-color:CanvasText}}.mdc-fab:active,.mdc-fab:focus{outline:none}.mdc-fab:hover{cursor:pointer}.mdc-fab>svg{width:100%}.mdc-fab--mini{width:40px;height:40px}.mdc-fab--extended{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mdc-fab--extended .mdc-fab__ripple{border-radius:24px}.mdc-fab--extended .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mdc-fab--extended .mdc-fab__icon,.mdc-fab--extended .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mdc-fab--extended .mdc-fab__label+.mdc-fab__icon,.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mdc-fab--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-fab--touch .mdc-fab__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-fab::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-fab::before{border-color:CanvasText}}.mdc-fab__label{justify-content:flex-start;text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden;overflow-y:visible}.mdc-fab__icon{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mdc-fab .mdc-fab__icon{display:inline-flex;align-items:center;justify-content:center}.mdc-fab--exited{transform:scale(0);opacity:0;transition:opacity 15ms linear 150ms,transform 180ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab--exited .mdc-fab__icon{transform:scale(0);transition:transform 135ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab .mdc-fab__icon{width:24px;height:24px;font-size:24px}.mdc-fab:not(.mdc-fab--extended){border-radius:50%}.mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:50%}.mat-mdc-fab,.mat-mdc-mini-fab{-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--mdc-fab-container-color, transparent);box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);color:var(--mat-mdc-fab-color, inherit);flex-shrink:0}.mat-mdc-fab .mat-mdc-button-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-fab .mat-ripple-element,.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-fab .mdc-button__label,.mat-mdc-mini-fab .mdc-button__label{z-index:1}.mat-mdc-fab .mat-mdc-focus-indicator,.mat-mdc-mini-fab .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab:focus .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-fab .mat-mdc-button-touch-target,.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-fab._mat-animation-noopable,.mat-mdc-mini-fab._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab:not(:disabled) .mdc-fab__icon,.mat-mdc-mini-fab:not(:disabled) .mdc-fab__icon{color:var(--mdc-fab-icon-color, inherit)}.mat-mdc-fab:not(.mdc-fab--extended),.mat-mdc-mini-fab:not(.mdc-fab--extended){border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple,.mat-mdc-mini-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:var(--mdc-fab-container-shape, 50%)}.mat-mdc-fab:hover,.mat-mdc-fab:focus,.mat-mdc-mini-fab:hover,.mat-mdc-mini-fab:focus{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:active,.mat-mdc-fab:focus:active,.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12)}.mat-mdc-fab[disabled],.mat-mdc-mini-fab[disabled]{cursor:default;pointer-events:none;box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-fab:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-mini-fab:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}.mat-mdc-fab .mat-icon,.mat-mdc-fab .material-icons,.mat-mdc-mini-fab .mat-icon,.mat-mdc-mini-fab .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-extended-fab{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mat-mdc-extended-fab .mdc-fab__ripple{border-radius:24px}.mat-mdc-extended-fab .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon,.mat-mdc-extended-fab .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons,.mat-mdc-extended-fab>.mat-icon[dir=rtl],.mat-mdc-extended-fab>.material-icons[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-extended-fab .mdc-button__label+.material-icons[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}']}]}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE]}]},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[MAT_FAB_DEFAULT_OPTIONS]}]}]}),null);class MatIconButton extends MatButtonBase{constructor(elementRef,platform,ngZone,animationMode){super(elementRef,platform,ngZone,animationMode)}}MatIconButton.ɵfac=function MatIconButton_Factory(t){return new(t||MatIconButton)(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE,8))},MatIconButton.ɵcmp=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineComponent"]({type:MatIconButton,selectors:[["button","mat-icon-button",""]],hostVars:7,hostBindings:function MatIconButton_HostBindings(rf,ctx){2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵattribute"]("disabled",ctx.disabled||null),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("_mat-animation-noopable","NoopAnimations"===ctx._animationMode)("mat-unthemed",!ctx.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]],attrs:_c8,ngContentSelectors:["*"],decls:5,vars:3,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function MatIconButton_Template(rf,ctx){1&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojectionDef"](),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](0,"span",0),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](2,"span",1)(3,"span",2)(4,"span",3)),2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵadvance"](3),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵproperty"]("matRippleDisabled",ctx._isRippleDisabled())("matRippleCentered",!0)("matRippleTrigger",ctx._elementRef.nativeElement))},dependencies:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',_c4],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatIconButton,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component,args:[{selector:"button[mat-icon-button]",inputs:MAT_BUTTON_INPUTS,host:MAT_BUTTON_HOST,exportAs:"matButton",encapsulation:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ViewEncapsulation.None,changeDetection:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ChangeDetectionStrategy.OnPush,template:'\n\n\n\n\x3c!--\n The indicator can\'t be directly on the button, because MDC uses ::before for high contrast\n indication and it can\'t be on the ripple, because it has a border radius and overflow: hidden.\n--\x3e\n\n\n\n\n\n',styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"]}]}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE]}]}]}),null);class MatIconAnchor extends MatAnchorBase{constructor(elementRef,platform,ngZone,animationMode){super(elementRef,platform,ngZone,animationMode)}}MatIconAnchor.ɵfac=function MatIconAnchor_Factory(t){return new(t||MatIconAnchor)(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE,8))},MatIconAnchor.ɵcmp=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineComponent"]({type:MatIconAnchor,selectors:[["a","mat-icon-button",""]],hostVars:9,hostBindings:function MatIconAnchor_HostBindings(rf,ctx){2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵattribute"]("disabled",ctx.disabled||null)("tabindex",ctx.disabled?-1:ctx.tabIndex)("aria-disabled",ctx.disabled.toString()),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("_mat-animation-noopable","NoopAnimations"===ctx._animationMode)("mat-unthemed",!ctx.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵInheritDefinitionFeature"]],attrs:_c8,ngContentSelectors:_c2,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function MatIconAnchor_Template(rf,ctx){1&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojectionDef"](_c1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](0,"span",0),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementStart"](2,"span",1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](3,1),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelementEnd"](),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵprojection"](4,2),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵelement"](5,"span",2)(6,"span",3)(7,"span",4)),2&rf&&(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵclassProp"]("mdc-button__ripple",!ctx._isFab)("mdc-fab__ripple",ctx._isFab),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵadvance"](6),_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵproperty"]("matRippleDisabled",ctx._isRippleDisabled())("matRippleTrigger",ctx._elementRef.nativeElement))},dependencies:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.wG],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',_c4],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatIconAnchor,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Component,args:[{selector:"a[mat-icon-button]",inputs:MAT_ANCHOR_INPUTS,host:MAT_ANCHOR_HOST,exportAs:"matButton, matAnchor",encapsulation:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ViewEncapsulation.None,changeDetection:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ChangeDetectionStrategy.OnPush,template:'\n\n\n\n\n\n\n\n\n\n\x3c!--\n The indicator can\'t be directly on the button, because MDC uses ::before for high contrast\n indication and it can\'t be on the ripple, because it has a border radius and overflow: hidden.\n--\x3e\n\n\n\n\n\n',styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"]}]}],(function(){return[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.ElementRef},{type:_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__.t4},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgZone},{type:void 0,decorators:[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Optional},{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject,args:[_angular_core__WEBPACK_IMPORTED_MODULE_1__.ANIMATION_MODULE_TYPE]}]}]}),null);class MatButtonModule{}MatButtonModule.ɵfac=function MatButtonModule_Factory(t){return new(t||MatButtonModule)},MatButtonModule.ɵmod=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineNgModule"]({type:MatButtonModule,declarations:[MatAnchor,MatButton,MatIconAnchor,MatMiniFabAnchor,MatMiniFabButton,MatIconButton,MatFabAnchor,MatFabButton],imports:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.BQ,_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.si],exports:[MatAnchor,MatButton,MatIconAnchor,MatIconButton,MatMiniFabAnchor,MatMiniFabButton,MatFabAnchor,MatFabButton,_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.BQ]}),MatButtonModule.ɵinj=_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineInjector"]({imports:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.BQ,_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.si,_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.BQ]}),("undefined"==typeof ngDevMode||ngDevMode)&&_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](MatButtonModule,[{type:_angular_core__WEBPACK_IMPORTED_MODULE_1__.NgModule,args:[{imports:[_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.BQ,_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.si],exports:[MatAnchor,MatButton,MatIconAnchor,MatIconButton,MatMiniFabAnchor,MatMiniFabButton,MatFabAnchor,MatFabButton,_angular_material_core__WEBPACK_IMPORTED_MODULE_0__.BQ],declarations:[MatAnchor,MatButton,MatIconAnchor,MatMiniFabAnchor,MatMiniFabButton,MatIconButton,MatFabAnchor,MatFabButton]}]}],null,null)},"./node_modules/@angular/material/fesm2020/core.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{rD:()=>ErrorStateMatcher,Y2:()=>MAT_RIPPLE_GLOBAL_OPTIONS,BQ:()=>MatCommonModule,us:()=>MatPseudoCheckboxModule,wG:()=>MatRipple,si:()=>MatRippleModule,IR:()=>RippleRenderer,pj:()=>mixinColor,Kr:()=>mixinDisableRipple,Id:()=>mixinDisabled,FD:()=>mixinErrorState,sb:()=>mixinTabIndex});var core=__webpack_require__("./node_modules/@angular/core/fesm2020/core.mjs"),a11y=__webpack_require__("./node_modules/@angular/cdk/fesm2020/a11y.mjs"),bidi=__webpack_require__("./node_modules/@angular/cdk/fesm2020/bidi.mjs");const VERSION=new core.Version("15.2.6");var common=__webpack_require__("./node_modules/@angular/common/fesm2020/common.mjs"),fesm2020_platform=__webpack_require__("./node_modules/@angular/cdk/fesm2020/platform.mjs"),coercion=__webpack_require__("./node_modules/@angular/cdk/fesm2020/coercion.mjs"),Subject=__webpack_require__("./node_modules/rxjs/dist/esm5/internal/Subject.js"),keycodes=__webpack_require__("./node_modules/@angular/cdk/fesm2020/keycodes.mjs");const _c0=["*",[["mat-option"],["ng-container"]]],_c2=["text"];function MatOption_mat_pseudo_checkbox_0_Template(rf,ctx){if(1&rf&&core["ɵɵelement"](0,"mat-pseudo-checkbox",6),2&rf){const ctx_r0=core["ɵɵnextContext"]();core["ɵɵproperty"]("state",ctx_r0.selected?"checked":"unchecked")("disabled",ctx_r0.disabled)}}function MatOption_mat_pseudo_checkbox_5_Template(rf,ctx){if(1&rf&&core["ɵɵelement"](0,"mat-pseudo-checkbox",7),2&rf){const ctx_r2=core["ɵɵnextContext"]();core["ɵɵproperty"]("disabled",ctx_r2.disabled)}}function MatOption_span_6_Template(rf,ctx){if(1&rf&&(core["ɵɵelementStart"](0,"span",8),core["ɵɵtext"](1),core["ɵɵelementEnd"]()),2&rf){const ctx_r3=core["ɵɵnextContext"]();core["ɵɵadvance"](1),core["ɵɵtextInterpolate1"]("(",ctx_r3.group.label,")")}}const _c3=[[["mat-icon"]],"*"],core_VERSION=new core.Version("15.2.6");class AnimationCurves{}AnimationCurves.STANDARD_CURVE="cubic-bezier(0.4,0.0,0.2,1)",AnimationCurves.DECELERATION_CURVE="cubic-bezier(0.0,0.0,0.2,1)",AnimationCurves.ACCELERATION_CURVE="cubic-bezier(0.4,0.0,1,1)",AnimationCurves.SHARP_CURVE="cubic-bezier(0.4,0.0,0.6,1)";class AnimationDurations{}AnimationDurations.COMPLEX="375ms",AnimationDurations.ENTERING="225ms",AnimationDurations.EXITING="195ms";const MATERIAL_SANITY_CHECKS=new core.InjectionToken("mat-sanity-checks",{providedIn:"root",factory:function MATERIAL_SANITY_CHECKS_FACTORY(){return!0}});class MatCommonModule{constructor(highContrastModeDetector,_sanityChecks,_document){if(this._sanityChecks=_sanityChecks,this._document=_document,this._hasDoneGlobalChecks=!1,highContrastModeDetector._applyBodyHighContrastModeCssClasses(),!this._hasDoneGlobalChecks&&(this._hasDoneGlobalChecks=!0,"undefined"==typeof ngDevMode||ngDevMode)){const platform=(0,core.inject)(fesm2020_platform.t4,{optional:!0});this._checkIsEnabled("doctype")&&function _checkDoctypeIsDefined(doc){doc.doctype||console.warn("Current document does not have a doctype. This may cause some Angular Material components not to behave as expected.")}(this._document),this._checkIsEnabled("theme")&&function _checkThemeIsPresent(doc,isBrowser){if(!doc.body||!isBrowser)return;const testElement=doc.createElement("div");testElement.classList.add("mat-theme-loaded-marker"),doc.body.appendChild(testElement);const computedStyle=getComputedStyle(testElement);computedStyle&&"none"!==computedStyle.display&&console.warn("Could not find Angular Material core theme. Most Material components may not work as expected. For more info refer to the theming guide: https://material.angular.io/guide/theming");testElement.remove()}(this._document,!!platform?.isBrowser),this._checkIsEnabled("version")&&function _checkCdkVersionMatch(){core_VERSION.full!==VERSION.full&&console.warn("The Angular Material version ("+core_VERSION.full+") does not match the Angular CDK version ("+VERSION.full+").\nPlease ensure the versions of these two packages exactly match.")}()}}_checkIsEnabled(name){return!(0,fesm2020_platform.Oy)()&&("boolean"==typeof this._sanityChecks?this._sanityChecks:!!this._sanityChecks[name])}}function mixinDisabled(base){return class extends base{get disabled(){return this._disabled}set disabled(value){this._disabled=(0,coercion.Ig)(value)}constructor(...args){super(...args),this._disabled=!1}}}function mixinColor(base,defaultColor){return class extends base{get color(){return this._color}set color(value){const colorPalette=value||this.defaultColor;colorPalette!==this._color&&(this._color&&this._elementRef.nativeElement.classList.remove(`mat-${this._color}`),colorPalette&&this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`),this._color=colorPalette)}constructor(...args){super(...args),this.defaultColor=defaultColor,this.color=defaultColor}}}function mixinDisableRipple(base){return class extends base{get disableRipple(){return this._disableRipple}set disableRipple(value){this._disableRipple=(0,coercion.Ig)(value)}constructor(...args){super(...args),this._disableRipple=!1}}}function mixinTabIndex(base,defaultTabIndex=0){return class extends base{get tabIndex(){return this.disabled?-1:this._tabIndex}set tabIndex(value){this._tabIndex=null!=value?(0,coercion.su)(value):this.defaultTabIndex}constructor(...args){super(...args),this._tabIndex=defaultTabIndex,this.defaultTabIndex=defaultTabIndex}}}function mixinErrorState(base){return class extends base{updateErrorState(){const oldState=this.errorState,parent=this._parentFormGroup||this._parentForm,matcher=this.errorStateMatcher||this._defaultErrorStateMatcher,control=this.ngControl?this.ngControl.control:null,newState=matcher.isErrorState(control,parent);newState!==oldState&&(this.errorState=newState,this.stateChanges.next())}constructor(...args){super(...args),this.errorState=!1}}}MatCommonModule.ɵfac=function MatCommonModule_Factory(t){return new(t||MatCommonModule)(core["ɵɵinject"](a11y.qm),core["ɵɵinject"](MATERIAL_SANITY_CHECKS,8),core["ɵɵinject"](common.DOCUMENT))},MatCommonModule.ɵmod=core["ɵɵdefineNgModule"]({type:MatCommonModule,imports:[bidi.vT],exports:[bidi.vT]}),MatCommonModule.ɵinj=core["ɵɵdefineInjector"]({imports:[bidi.vT,bidi.vT]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatCommonModule,[{type:core.NgModule,args:[{imports:[bidi.vT],exports:[bidi.vT]}]}],(function(){return[{type:a11y.qm},{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[MATERIAL_SANITY_CHECKS]}]},{type:Document,decorators:[{type:core.Inject,args:[common.DOCUMENT]}]}]}),null);const MAT_DATE_LOCALE=new core.InjectionToken("MAT_DATE_LOCALE",{providedIn:"root",factory:function MAT_DATE_LOCALE_FACTORY(){return(0,core.inject)(core.LOCALE_ID)}});class DateAdapter{constructor(){this._localeChanges=new Subject.x,this.localeChanges=this._localeChanges}getValidDateOrNull(obj){return this.isDateInstance(obj)&&this.isValid(obj)?obj:null}deserialize(value){return null==value||this.isDateInstance(value)&&this.isValid(value)?value:this.invalid()}setLocale(locale){this.locale=locale,this._localeChanges.next()}compareDate(first,second){return this.getYear(first)-this.getYear(second)||this.getMonth(first)-this.getMonth(second)||this.getDate(first)-this.getDate(second)}sameDate(first,second){if(first&&second){let firstValid=this.isValid(first),secondValid=this.isValid(second);return firstValid&&secondValid?!this.compareDate(first,second):firstValid==secondValid}return first==second}clampDate(date,min,max){return min&&this.compareDate(date,min)<0?min:max&&this.compareDate(date,max)>0?max:date}}const MAT_DATE_FORMATS=new core.InjectionToken("mat-date-formats"),ISO_8601_REGEX=/^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|(?:(?:\+|-)\d{2}:\d{2}))?)?$/;function range(length,valueFunction){const valuesArray=Array(length);for(let i=0;ithis._format(dtf,new Date(2017,i,1))))}getDateNames(){const dtf=new Intl.DateTimeFormat(this.locale,{day:"numeric",timeZone:"utc"});return range(31,(i=>this._format(dtf,new Date(2017,0,i+1))))}getDayOfWeekNames(style){const dtf=new Intl.DateTimeFormat(this.locale,{weekday:style,timeZone:"utc"});return range(7,(i=>this._format(dtf,new Date(2017,0,i+1))))}getYearName(date){const dtf=new Intl.DateTimeFormat(this.locale,{year:"numeric",timeZone:"utc"});return this._format(dtf,date)}getFirstDayOfWeek(){return 0}getNumDaysInMonth(date){return this.getDate(this._createDateWithOverflow(this.getYear(date),this.getMonth(date)+1,0))}clone(date){return new Date(date.getTime())}createDate(year,month,date){if("undefined"==typeof ngDevMode||ngDevMode){if(month<0||month>11)throw Error(`Invalid month index "${month}". Month index has to be between 0 and 11.`);if(date<1)throw Error(`Invalid date "${date}". Date has to be greater than 0.`)}let result=this._createDateWithOverflow(year,month,date);if(result.getMonth()!=month&&("undefined"==typeof ngDevMode||ngDevMode))throw Error(`Invalid date "${date}" for month with index "${month}".`);return result}today(){return new Date}parse(value,parseFormat){return"number"==typeof value?new Date(value):value?new Date(Date.parse(value)):null}format(date,displayFormat){if(!this.isValid(date))throw Error("NativeDateAdapter: Cannot format invalid date.");const dtf=new Intl.DateTimeFormat(this.locale,{...displayFormat,timeZone:"utc"});return this._format(dtf,date)}addCalendarYears(date,years){return this.addCalendarMonths(date,12*years)}addCalendarMonths(date,months){let newDate=this._createDateWithOverflow(this.getYear(date),this.getMonth(date)+months,this.getDate(date));return this.getMonth(newDate)!=((this.getMonth(date)+months)%12+12)%12&&(newDate=this._createDateWithOverflow(this.getYear(newDate),this.getMonth(newDate),0)),newDate}addCalendarDays(date,days){return this._createDateWithOverflow(this.getYear(date),this.getMonth(date),this.getDate(date)+days)}toIso8601(date){return[date.getUTCFullYear(),this._2digit(date.getUTCMonth()+1),this._2digit(date.getUTCDate())].join("-")}deserialize(value){if("string"==typeof value){if(!value)return null;if(ISO_8601_REGEX.test(value)){let date=new Date(value);if(this.isValid(date))return date}}return super.deserialize(value)}isDateInstance(obj){return obj instanceof Date}isValid(date){return!isNaN(date.getTime())}invalid(){return new Date(NaN)}_createDateWithOverflow(year,month,date){const d=new Date;return d.setFullYear(year,month,date),d.setHours(0,0,0,0),d}_2digit(n){return("00"+n).slice(-2)}_format(dtf,date){const d=new Date;return d.setUTCFullYear(date.getFullYear(),date.getMonth(),date.getDate()),d.setUTCHours(date.getHours(),date.getMinutes(),date.getSeconds(),date.getMilliseconds()),dtf.format(d)}}NativeDateAdapter.ɵfac=function NativeDateAdapter_Factory(t){return new(t||NativeDateAdapter)(core["ɵɵinject"](MAT_DATE_LOCALE,8),core["ɵɵinject"](fesm2020_platform.t4))},NativeDateAdapter.ɵprov=core["ɵɵdefineInjectable"]({token:NativeDateAdapter,factory:NativeDateAdapter.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](NativeDateAdapter,[{type:core.Injectable}],(function(){return[{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[MAT_DATE_LOCALE]}]},{type:fesm2020_platform.t4}]}),null);const MAT_NATIVE_DATE_FORMATS={parse:{dateInput:null},display:{dateInput:{year:"numeric",month:"numeric",day:"numeric"},monthYearLabel:{year:"numeric",month:"short"},dateA11yLabel:{year:"numeric",month:"long",day:"numeric"},monthYearA11yLabel:{year:"numeric",month:"long"}}};class NativeDateModule{}NativeDateModule.ɵfac=function NativeDateModule_Factory(t){return new(t||NativeDateModule)},NativeDateModule.ɵmod=core["ɵɵdefineNgModule"]({type:NativeDateModule}),NativeDateModule.ɵinj=core["ɵɵdefineInjector"]({providers:[{provide:DateAdapter,useClass:NativeDateAdapter}]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](NativeDateModule,[{type:core.NgModule,args:[{providers:[{provide:DateAdapter,useClass:NativeDateAdapter}]}]}],null,null);class MatNativeDateModule{}MatNativeDateModule.ɵfac=function MatNativeDateModule_Factory(t){return new(t||MatNativeDateModule)},MatNativeDateModule.ɵmod=core["ɵɵdefineNgModule"]({type:MatNativeDateModule,imports:[NativeDateModule]}),MatNativeDateModule.ɵinj=core["ɵɵdefineInjector"]({providers:[{provide:MAT_DATE_FORMATS,useValue:MAT_NATIVE_DATE_FORMATS}],imports:[NativeDateModule]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatNativeDateModule,[{type:core.NgModule,args:[{imports:[NativeDateModule],providers:[{provide:MAT_DATE_FORMATS,useValue:MAT_NATIVE_DATE_FORMATS}]}]}],null,null);class ShowOnDirtyErrorStateMatcher{isErrorState(control,form){return!!(control&&control.invalid&&(control.dirty||form&&form.submitted))}}ShowOnDirtyErrorStateMatcher.ɵfac=function ShowOnDirtyErrorStateMatcher_Factory(t){return new(t||ShowOnDirtyErrorStateMatcher)},ShowOnDirtyErrorStateMatcher.ɵprov=core["ɵɵdefineInjectable"]({token:ShowOnDirtyErrorStateMatcher,factory:ShowOnDirtyErrorStateMatcher.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](ShowOnDirtyErrorStateMatcher,[{type:core.Injectable}],null,null);class ErrorStateMatcher{isErrorState(control,form){return!!(control&&control.invalid&&(control.touched||form&&form.submitted))}}ErrorStateMatcher.ɵfac=function ErrorStateMatcher_Factory(t){return new(t||ErrorStateMatcher)},ErrorStateMatcher.ɵprov=core["ɵɵdefineInjectable"]({token:ErrorStateMatcher,factory:ErrorStateMatcher.ɵfac,providedIn:"root"}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](ErrorStateMatcher,[{type:core.Injectable,args:[{providedIn:"root"}]}],null,null);class MatLine{}MatLine.ɵfac=function MatLine_Factory(t){return new(t||MatLine)},MatLine.ɵdir=core["ɵɵdefineDirective"]({type:MatLine,selectors:[["","mat-line",""],["","matLine",""]],hostAttrs:[1,"mat-line"]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatLine,[{type:core.Directive,args:[{selector:"[mat-line], [matLine]",host:{class:"mat-line"}}]}],null,null);class MatLineModule{}MatLineModule.ɵfac=function MatLineModule_Factory(t){return new(t||MatLineModule)},MatLineModule.ɵmod=core["ɵɵdefineNgModule"]({type:MatLineModule,declarations:[MatLine],imports:[MatCommonModule],exports:[MatLine,MatCommonModule]}),MatLineModule.ɵinj=core["ɵɵdefineInjector"]({imports:[MatCommonModule,MatCommonModule]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatLineModule,[{type:core.NgModule,args:[{imports:[MatCommonModule],exports:[MatLine,MatCommonModule],declarations:[MatLine]}]}],null,null);class RippleRef{constructor(_renderer,element,config,_animationForciblyDisabledThroughCss=!1){this._renderer=_renderer,this.element=element,this.config=config,this._animationForciblyDisabledThroughCss=_animationForciblyDisabledThroughCss,this.state=3}fadeOut(){this._renderer.fadeOutRipple(this)}}const passiveCapturingEventOptions$1=(0,fesm2020_platform.i$)({passive:!0,capture:!0});const defaultRippleAnimationConfig={enterDuration:225,exitDuration:150},passiveCapturingEventOptions=(0,fesm2020_platform.i$)({passive:!0,capture:!0}),pointerDownEvents=["mousedown","touchstart"],pointerUpEvents=["mouseup","mouseleave","touchend","touchcancel"];class RippleRenderer{constructor(_target,_ngZone,elementOrElementRef,_platform){this._target=_target,this._ngZone=_ngZone,this._platform=_platform,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,_platform.isBrowser&&(this._containerElement=(0,coercion.fI)(elementOrElementRef))}fadeInRipple(x,y,config={}){const containerRect=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),animationConfig={...defaultRippleAnimationConfig,...config.animation};config.centered&&(x=containerRect.left+containerRect.width/2,y=containerRect.top+containerRect.height/2);const radius=config.radius||function distanceToFurthestCorner(x,y,rect){const distX=Math.max(Math.abs(x-rect.left),Math.abs(x-rect.right)),distY=Math.max(Math.abs(y-rect.top),Math.abs(y-rect.bottom));return Math.sqrt(distX*distX+distY*distY)}(x,y,containerRect),offsetX=x-containerRect.left,offsetY=y-containerRect.top,enterDuration=animationConfig.enterDuration,ripple=document.createElement("div");ripple.classList.add("mat-ripple-element"),ripple.style.left=offsetX-radius+"px",ripple.style.top=offsetY-radius+"px",ripple.style.height=2*radius+"px",ripple.style.width=2*radius+"px",null!=config.color&&(ripple.style.backgroundColor=config.color),ripple.style.transitionDuration=`${enterDuration}ms`,this._containerElement.appendChild(ripple);const computedStyles=window.getComputedStyle(ripple),userTransitionProperty=computedStyles.transitionProperty,userTransitionDuration=computedStyles.transitionDuration,animationForciblyDisabledThroughCss="none"===userTransitionProperty||"0s"===userTransitionDuration||"0s, 0s"===userTransitionDuration||0===containerRect.width&&0===containerRect.height,rippleRef=new RippleRef(this,ripple,config,animationForciblyDisabledThroughCss);ripple.style.transform="scale3d(1, 1, 1)",rippleRef.state=0,config.persistent||(this._mostRecentTransientRipple=rippleRef);let eventListeners=null;return animationForciblyDisabledThroughCss||!enterDuration&&!animationConfig.exitDuration||this._ngZone.runOutsideAngular((()=>{const onTransitionEnd=()=>this._finishRippleTransition(rippleRef),onTransitionCancel=()=>this._destroyRipple(rippleRef);ripple.addEventListener("transitionend",onTransitionEnd),ripple.addEventListener("transitioncancel",onTransitionCancel),eventListeners={onTransitionEnd,onTransitionCancel}})),this._activeRipples.set(rippleRef,eventListeners),!animationForciblyDisabledThroughCss&&enterDuration||this._finishRippleTransition(rippleRef),rippleRef}fadeOutRipple(rippleRef){if(2===rippleRef.state||3===rippleRef.state)return;const rippleEl=rippleRef.element,animationConfig={...defaultRippleAnimationConfig,...rippleRef.config.animation};rippleEl.style.transitionDuration=`${animationConfig.exitDuration}ms`,rippleEl.style.opacity="0",rippleRef.state=2,!rippleRef._animationForciblyDisabledThroughCss&&animationConfig.exitDuration||this._finishRippleTransition(rippleRef)}fadeOutAll(){this._getActiveRipples().forEach((ripple=>ripple.fadeOut()))}fadeOutAllNonPersistent(){this._getActiveRipples().forEach((ripple=>{ripple.config.persistent||ripple.fadeOut()}))}setupTriggerEvents(elementOrElementRef){const element=(0,coercion.fI)(elementOrElementRef);this._platform.isBrowser&&element&&element!==this._triggerElement&&(this._removeTriggerEvents(),this._triggerElement=element,pointerDownEvents.forEach((type=>{RippleRenderer._eventManager.addHandler(this._ngZone,type,element,this)})))}handleEvent(event){"mousedown"===event.type?this._onMousedown(event):"touchstart"===event.type?this._onTouchStart(event):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular((()=>{pointerUpEvents.forEach((type=>{this._triggerElement.addEventListener(type,this,passiveCapturingEventOptions)}))})),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(rippleRef){0===rippleRef.state?this._startFadeOutTransition(rippleRef):2===rippleRef.state&&this._destroyRipple(rippleRef)}_startFadeOutTransition(rippleRef){const isMostRecentTransientRipple=rippleRef===this._mostRecentTransientRipple,{persistent}=rippleRef.config;rippleRef.state=1,persistent||isMostRecentTransientRipple&&this._isPointerDown||rippleRef.fadeOut()}_destroyRipple(rippleRef){const eventListeners=this._activeRipples.get(rippleRef)??null;this._activeRipples.delete(rippleRef),this._activeRipples.size||(this._containerRect=null),rippleRef===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),rippleRef.state=3,null!==eventListeners&&(rippleRef.element.removeEventListener("transitionend",eventListeners.onTransitionEnd),rippleRef.element.removeEventListener("transitioncancel",eventListeners.onTransitionCancel)),rippleRef.element.remove()}_onMousedown(event){const isFakeMousedown=(0,a11y.X6)(event),isSyntheticEvent=this._lastTouchStartEvent&&Date.now(){const isVisible=1===ripple.state||ripple.config.terminateOnPointerUp&&0===ripple.state;!ripple.config.persistent&&isVisible&&ripple.fadeOut()})))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const trigger=this._triggerElement;trigger&&(pointerDownEvents.forEach((type=>RippleRenderer._eventManager.removeHandler(type,trigger,this))),this._pointerUpEventsRegistered&&pointerUpEvents.forEach((type=>trigger.removeEventListener(type,this,passiveCapturingEventOptions))))}}RippleRenderer._eventManager=new class RippleEventManager{constructor(){this._events=new Map,this._delegateEventHandler=event=>{const target=(0,fesm2020_platform.sA)(event);target&&this._events.get(event.type)?.forEach(((handlers,element)=>{(element===target||element.contains(target))&&handlers.forEach((handler=>handler.handleEvent(event)))}))}}addHandler(ngZone,name,element,handler){const handlersForEvent=this._events.get(name);if(handlersForEvent){const handlersForElement=handlersForEvent.get(element);handlersForElement?handlersForElement.add(handler):handlersForEvent.set(element,new Set([handler]))}else this._events.set(name,new Map([[element,new Set([handler])]])),ngZone.runOutsideAngular((()=>{document.addEventListener(name,this._delegateEventHandler,passiveCapturingEventOptions$1)}))}removeHandler(name,element,handler){const handlersForEvent=this._events.get(name);if(!handlersForEvent)return;const handlersForElement=handlersForEvent.get(element);handlersForElement&&(handlersForElement.delete(handler),0===handlersForElement.size&&handlersForEvent.delete(element),0===handlersForEvent.size&&(this._events.delete(name),document.removeEventListener(name,this._delegateEventHandler,passiveCapturingEventOptions$1)))}};const MAT_RIPPLE_GLOBAL_OPTIONS=new core.InjectionToken("mat-ripple-global-options");class MatRipple{get disabled(){return this._disabled}set disabled(value){value&&this.fadeOutAllNonPersistent(),this._disabled=value,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(trigger){this._trigger=trigger,this._setupTriggerEventsIfEnabled()}constructor(_elementRef,ngZone,platform,globalOptions,_animationMode){this._elementRef=_elementRef,this._animationMode=_animationMode,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=globalOptions||{},this._rippleRenderer=new RippleRenderer(this,ngZone,_elementRef,platform)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(configOrX,y=0,config){return"number"==typeof configOrX?this._rippleRenderer.fadeInRipple(configOrX,y,{...this.rippleConfig,...config}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...configOrX})}}MatRipple.ɵfac=function MatRipple_Factory(t){return new(t||MatRipple)(core["ɵɵdirectiveInject"](core.ElementRef),core["ɵɵdirectiveInject"](core.NgZone),core["ɵɵdirectiveInject"](fesm2020_platform.t4),core["ɵɵdirectiveInject"](MAT_RIPPLE_GLOBAL_OPTIONS,8),core["ɵɵdirectiveInject"](core.ANIMATION_MODULE_TYPE,8))},MatRipple.ɵdir=core["ɵɵdefineDirective"]({type:MatRipple,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function MatRipple_HostBindings(rf,ctx){2&rf&&core["ɵɵclassProp"]("mat-ripple-unbounded",ctx.unbounded)},inputs:{color:["matRippleColor","color"],unbounded:["matRippleUnbounded","unbounded"],centered:["matRippleCentered","centered"],radius:["matRippleRadius","radius"],animation:["matRippleAnimation","animation"],disabled:["matRippleDisabled","disabled"],trigger:["matRippleTrigger","trigger"]},exportAs:["matRipple"]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatRipple,[{type:core.Directive,args:[{selector:"[mat-ripple], [matRipple]",exportAs:"matRipple",host:{class:"mat-ripple","[class.mat-ripple-unbounded]":"unbounded"}}]}],(function(){return[{type:core.ElementRef},{type:core.NgZone},{type:fesm2020_platform.t4},{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[MAT_RIPPLE_GLOBAL_OPTIONS]}]},{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[core.ANIMATION_MODULE_TYPE]}]}]}),{color:[{type:core.Input,args:["matRippleColor"]}],unbounded:[{type:core.Input,args:["matRippleUnbounded"]}],centered:[{type:core.Input,args:["matRippleCentered"]}],radius:[{type:core.Input,args:["matRippleRadius"]}],animation:[{type:core.Input,args:["matRippleAnimation"]}],disabled:[{type:core.Input,args:["matRippleDisabled"]}],trigger:[{type:core.Input,args:["matRippleTrigger"]}]});class MatRippleModule{}MatRippleModule.ɵfac=function MatRippleModule_Factory(t){return new(t||MatRippleModule)},MatRippleModule.ɵmod=core["ɵɵdefineNgModule"]({type:MatRippleModule,declarations:[MatRipple],imports:[MatCommonModule],exports:[MatRipple,MatCommonModule]}),MatRippleModule.ɵinj=core["ɵɵdefineInjector"]({imports:[MatCommonModule,MatCommonModule]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatRippleModule,[{type:core.NgModule,args:[{imports:[MatCommonModule],exports:[MatRipple,MatCommonModule],declarations:[MatRipple]}]}],null,null);class MatPseudoCheckbox{constructor(_animationMode){this._animationMode=_animationMode,this.state="unchecked",this.disabled=!1,this.appearance="full"}}MatPseudoCheckbox.ɵfac=function MatPseudoCheckbox_Factory(t){return new(t||MatPseudoCheckbox)(core["ɵɵdirectiveInject"](core.ANIMATION_MODULE_TYPE,8))},MatPseudoCheckbox.ɵcmp=core["ɵɵdefineComponent"]({type:MatPseudoCheckbox,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function MatPseudoCheckbox_HostBindings(rf,ctx){2&rf&&core["ɵɵclassProp"]("mat-pseudo-checkbox-indeterminate","indeterminate"===ctx.state)("mat-pseudo-checkbox-checked","checked"===ctx.state)("mat-pseudo-checkbox-disabled",ctx.disabled)("mat-pseudo-checkbox-minimal","minimal"===ctx.appearance)("mat-pseudo-checkbox-full","full"===ctx.appearance)("_mat-animation-noopable","NoopAnimations"===ctx._animationMode)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},decls:0,vars:0,template:function MatPseudoCheckbox_Template(rf,ctx){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-full{border:2px solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}'],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatPseudoCheckbox,[{type:core.Component,args:[{encapsulation:core.ViewEncapsulation.None,changeDetection:core.ChangeDetectionStrategy.OnPush,selector:"mat-pseudo-checkbox",template:"",host:{class:"mat-pseudo-checkbox","[class.mat-pseudo-checkbox-indeterminate]":'state === "indeterminate"',"[class.mat-pseudo-checkbox-checked]":'state === "checked"',"[class.mat-pseudo-checkbox-disabled]":"disabled","[class.mat-pseudo-checkbox-minimal]":'appearance === "minimal"',"[class.mat-pseudo-checkbox-full]":'appearance === "full"',"[class._mat-animation-noopable]":'_animationMode === "NoopAnimations"'},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-full{border:2px solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}']}]}],(function(){return[{type:void 0,decorators:[{type:core.Optional},{type:core.Inject,args:[core.ANIMATION_MODULE_TYPE]}]}]}),{state:[{type:core.Input}],disabled:[{type:core.Input}],appearance:[{type:core.Input}]});class MatPseudoCheckboxModule{}MatPseudoCheckboxModule.ɵfac=function MatPseudoCheckboxModule_Factory(t){return new(t||MatPseudoCheckboxModule)},MatPseudoCheckboxModule.ɵmod=core["ɵɵdefineNgModule"]({type:MatPseudoCheckboxModule,declarations:[MatPseudoCheckbox],imports:[MatCommonModule],exports:[MatPseudoCheckbox]}),MatPseudoCheckboxModule.ɵinj=core["ɵɵdefineInjector"]({imports:[MatCommonModule]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatPseudoCheckboxModule,[{type:core.NgModule,args:[{imports:[MatCommonModule],exports:[MatPseudoCheckbox],declarations:[MatPseudoCheckbox]}]}],null,null);const MAT_OPTION_PARENT_COMPONENT=new core.InjectionToken("MAT_OPTION_PARENT_COMPONENT"),_MatOptgroupMixinBase=mixinDisabled(class{});let _uniqueOptgroupIdCounter=0;class _MatOptgroupBase extends _MatOptgroupMixinBase{constructor(parent){super(),this._labelId="mat-optgroup-label-"+_uniqueOptgroupIdCounter++,this._inert=parent?.inertGroups??!1}}_MatOptgroupBase.ɵfac=function _MatOptgroupBase_Factory(t){return new(t||_MatOptgroupBase)(core["ɵɵdirectiveInject"](MAT_OPTION_PARENT_COMPONENT,8))},_MatOptgroupBase.ɵdir=core["ɵɵdefineDirective"]({type:_MatOptgroupBase,inputs:{label:"label"},features:[core["ɵɵInheritDefinitionFeature"]]}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](_MatOptgroupBase,[{type:core.Directive}],(function(){return[{type:void 0,decorators:[{type:core.Inject,args:[MAT_OPTION_PARENT_COMPONENT]},{type:core.Optional}]}]}),{label:[{type:core.Input}]});const MAT_OPTGROUP=new core.InjectionToken("MatOptgroup");class MatOptgroup extends _MatOptgroupBase{}MatOptgroup.ɵfac=function(){let ɵMatOptgroup_BaseFactory;return function MatOptgroup_Factory(t){return(ɵMatOptgroup_BaseFactory||(ɵMatOptgroup_BaseFactory=core["ɵɵgetInheritedFactory"](MatOptgroup)))(t||MatOptgroup)}}(),MatOptgroup.ɵcmp=core["ɵɵdefineComponent"]({type:MatOptgroup,selectors:[["mat-optgroup"]],hostAttrs:[1,"mat-mdc-optgroup"],hostVars:3,hostBindings:function MatOptgroup_HostBindings(rf,ctx){2&rf&&core["ɵɵattribute"]("role",ctx._inert?null:"group")("aria-disabled",ctx._inert?null:ctx.disabled.toString())("aria-labelledby",ctx._inert?null:ctx._labelId)},inputs:{disabled:"disabled"},exportAs:["matOptgroup"],features:[core["ɵɵProvidersFeature"]([{provide:MAT_OPTGROUP,useExisting:MatOptgroup}]),core["ɵɵInheritDefinitionFeature"]],ngContentSelectors:["*","mat-option, ng-container"],decls:5,vars:4,consts:[["aria-hidden","true",1,"mat-mdc-optgroup-label",3,"id"],[1,"mdc-list-item__primary-text"]],template:function MatOptgroup_Template(rf,ctx){1&rf&&(core["ɵɵprojectionDef"](_c0),core["ɵɵelementStart"](0,"span",0)(1,"span",1),core["ɵɵtext"](2),core["ɵɵprojection"](3),core["ɵɵelementEnd"]()(),core["ɵɵprojection"](4,1)),2&rf&&(core["ɵɵclassProp"]("mdc-list-item--disabled",ctx.disabled),core["ɵɵproperty"]("id",ctx._labelId),core["ɵɵadvance"](2),core["ɵɵtextInterpolate1"]("",ctx.label," "))},styles:[".mat-mdc-optgroup-label{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;min-height:48px}.mat-mdc-optgroup-label:focus{outline:none}[dir=rtl] .mat-mdc-optgroup-label,.mat-mdc-optgroup-label[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-optgroup-label.mdc-list-item--disabled{opacity:.38}.mat-mdc-optgroup-label .mdc-list-item__primary-text{white-space:normal}"],encapsulation:2,changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&core["ɵsetClassMetadata"](MatOptgroup,[{type:core.Component,args:[{selector:"mat-optgroup",exportAs:"matOptgroup",encapsulation:core.ViewEncapsulation.None,changeDetection:core.ChangeDetectionStrategy.OnPush,inputs:["disabled"],host:{class:"mat-mdc-optgroup","[attr.role]":'_inert ? null : "group"',"[attr.aria-disabled]":"_inert ? null : disabled.toString()","[attr.aria-labelledby]":"_inert ? null : _labelId"},providers:[{provide:MAT_OPTGROUP,useExisting:MatOptgroup}],template:'