add changes

This commit is contained in:
AD2025
2025-12-29 22:23:30 +02:00
commit 45429a7f3a
75 changed files with 157 additions and 0 deletions

4
chunk-2MUIW2M6.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-37GOEORY.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-3GOV5KJM.js Normal file
View File

@@ -0,0 +1 @@
var i={production:!0,apiUrl:"https://quzapi.fitsyncclinic.com/api",apiTimeout:3e4,cacheTimeout:3e5,enableLogging:!1,appName:"Interview Quiz Application",appVersion:"1.0.0"};export{i as a};

1
chunk-3L3FXYGZ.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-3NOMFGTV.js Normal file
View File

@@ -0,0 +1 @@
import{u as h,w as f}from"./chunk-COFYR5MX.js";import{Ec as P,_ as b,a as u,b as o,ca as p,ta as d}from"./chunk-2MUIW2M6.js";var l=class m{constructor(r,e){this.router=r;this.route=e}calculatePaginationState(r){let{currentPage:e,pageSize:a,totalItems:n}=r,t=Math.ceil(n/a)||1,i=Math.max(1,Math.min(e,t)),g=(i-1)*a+1,s=Math.min(i*a,n),c=i>1,v=i<t;return{currentPage:i,itemsPerPage:a,totalItems:n,totalPages:t,startIndex:g,endIndex:s,hasNextPage:v,hasPreviousPage:c}}calculatePageNumbers(r,e,a=5){if(e<=a)return Array.from({length:e},(s,c)=>c+1);let n=[],t=Math.floor(a/2);n.push(1);let i=Math.max(2,r-t),g=Math.min(e-1,r+t);r<=t+1?g=Math.min(e-1,a-1):r>=e-t&&(i=Math.max(2,e-a+2)),i>2&&n.push("...");for(let s=i;s<=g;s++)n.push(s);return g<e-1&&n.push("..."),e>1&&n.push(e),n}updateUrlQueryParams(r,e,a=!0){let n=a?u({},this.route.snapshot.queryParams):{};n.page=r,e&&(n.pageSize=e),this.router.navigate([],{relativeTo:this.route,queryParams:n,queryParamsHandling:a?"merge":"replace"})}getPaginationFromUrl(r=10){let e=this.route.snapshot.queryParams,a=parseInt(e.page)||1,n=parseInt(e.pageSize)||r;return{page:Math.max(1,a),pageSize:Math.max(1,n)}}createPaginationManager(r){let e=d(r),a=P(()=>this.calculatePaginationState(e())),n=P(()=>this.calculatePageNumbers(a().currentPage,a().totalPages,5));return{config:e,state:a,pageNumbers:n,setPage:t=>{e.update(i=>o(u({},i),{currentPage:t}))},setPageSize:t=>{e.update(i=>o(u({},i),{pageSize:t,currentPage:1}))},setTotalItems:t=>{e.update(i=>o(u({},i),{totalItems:t}))},nextPage:()=>{a().hasNextPage&&e.update(t=>o(u({},t),{currentPage:t.currentPage+1}))},prevPage:()=>{a().hasPreviousPage&&e.update(t=>o(u({},t),{currentPage:t.currentPage-1}))},firstPage:()=>{e.update(t=>o(u({},t),{currentPage:1}))},lastPage:()=>{e.update(t=>o(u({},t),{currentPage:a().totalPages}))}}}getPaginatedItems(r,e,a){let n=(e-1)*a,t=n+a;return r.slice(n,t)}static \u0275fac=function(e){return new(e||m)(p(f),p(h))};static \u0275prov=b({token:m,factory:m.\u0275fac,providedIn:"root"})};export{l as a};

1
chunk-3QWAVQEA.js Normal file

File diff suppressed because one or more lines are too long

0
chunk-3RK6DDJD.js Normal file
View File

1
chunk-4E7NWUSO.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-52JZ5I3Y.js Normal file
View File

@@ -0,0 +1 @@
import{_ as e,a as n,b as r,ta as d}from"./chunk-2MUIW2M6.js";var u=class s{toastsSignal=d([]);toasts=this.toastsSignal.asReadonly();defaultDuration=5e3;toastIdCounter=0;constructor(){}success(t,i){this.show({type:"success",message:t,duration:i||this.defaultDuration})}error(t,i){this.show({type:"error",message:t,duration:i||this.defaultDuration})}warning(t,i){this.show({type:"warning",message:t,duration:i||this.defaultDuration})}info(t,i){this.show({type:"info",message:t,duration:i||this.defaultDuration})}showWithAction(t,i,o,a="info",c){this.show({type:a,message:t,duration:c||1e4,action:{label:i,callback:o}})}show(t){let i=`toast-${++this.toastIdCounter}`,o=r(n({},t),{id:i});this.toastsSignal.update(a=>[...a,o]),t.duration&&t.duration>0&&setTimeout(()=>this.remove(i),t.duration)}remove(t){this.toastsSignal.update(i=>i.filter(o=>o.id!==t))}removeAll(){this.toastsSignal.set([])}static \u0275fac=function(i){return new(i||s)};static \u0275prov=e({token:s,factory:s.\u0275fac,providedIn:"root"})};export{u as a};

1
chunk-5DTRLD2T.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-5WBSN65X.js Normal file
View File

@@ -0,0 +1,2 @@
import{a as h,b as T,d as I,e as b,f as y,g as O}from"./chunk-YWCH6MM5.js";import{Aa as v,j as M,wa as _,ya as D,za as x}from"./chunk-COFYR5MX.js";import{Db as s,Eb as f,Jb as C,Kb as i,Lb as o,Xb as c,Za as n,Zb as u,da as r,lc as a,mc as d,nc as m,ob as p}from"./chunk-2MUIW2M6.js";function A(l,g){if(l&1&&(i(0,"mat-icon"),a(1),o()),l&2){let e=u();n(),d(e.data.icon)}}var P=class l{data=r(T);dialogRef=r(h);onConfirm(){this.dialogRef.close(!0)}onCancel(){this.dialogRef.close(!1)}static \u0275fac=function(e){return new(e||l)};static \u0275cmp=p({type:l,selectors:[["app-confirm-dialog"]],decls:12,vars:6,consts:[[2,"padding","10px"],["mat-dialog-title",""],["align","end"],["mat-button","",3,"click"],["mat-raised-button","",3,"click","color"]],template:function(e,t){e&1&&(i(0,"div",0)(1,"h2",1),s(2,A,2,1,"mat-icon"),a(3),o(),i(4,"mat-dialog-content")(5,"p"),a(6),o()(),i(7,"mat-dialog-actions",2)(8,"button",3),c("click",function(){return t.onCancel()}),a(9),o(),i(10,"button",4),c("click",function(){return t.onConfirm()}),a(11),o()()()),e&2&&(n(2),f(t.data.icon?2:-1),n(),m(" ",t.data.title,`
`),n(3),d(t.data.message),n(3),m(" ",t.data.cancelText||"Cancel"," "),n(),C("color",t.data.confirmColor||"primary"),n(),m(" ",t.data.confirmText||"Confirm"," "))},dependencies:[M,O,I,y,b,D,_,v,x],styles:["h2[mat-dialog-title][_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin:0}h2[mat-dialog-title][_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:24px;width:24px;height:24px}mat-dialog-content[_ngcontent-%COMP%]{padding:1rem 0}mat-dialog-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:1rem;line-height:1.5}mat-dialog-actions[_ngcontent-%COMP%]{padding:1rem 0 0;margin:0;gap:.5rem}"]})};export{P as a};

2
chunk-5WV5P2FL.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-66PBOFKL.js Normal file
View File

@@ -0,0 +1 @@
import{b as h}from"./chunk-M5XZ5N2D.js";import{_ as g,i as f}from"./chunk-2MUIW2M6.js";var p=(()=>{class r{_listeners=[];notify(t,s){for(let n of this._listeners)n(t,s)}listen(t){return this._listeners.push(t),()=>{this._listeners=this._listeners.filter(s=>t!==s)}}ngOnDestroy(){this._listeners=[]}static \u0275fac=function(s){return new(s||r)};static \u0275prov=g({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();var d=class{applyChanges(e,t,s,n,i){e.forEachOperation((c,a,_)=>{let l,o;if(c.previousIndex==null){let m=s(c,a,_);l=t.createEmbeddedView(m.templateRef,m.context,m.index),o=h.INSERTED}else _==null?(t.remove(a),o=h.REMOVED):(l=t.get(a),t.move(l,_),o=h.MOVED);i&&i({context:l?.context,operation:o,record:c})})}detach(){}};var u=class{_multiple;_emitChanges;compareWith;_selection=new Set;_deselectedToEmit=[];_selectedToEmit=[];_selected;get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}changed=new f;constructor(e=!1,t,s=!0,n){this._multiple=e,this._emitChanges=s,this.compareWith=n,t&&t.length&&(e?t.forEach(i=>this._markSelected(i)):this._markSelected(t[0]),this._selectedToEmit.length=0)}select(...e){this._verifyValueAssignment(e),e.forEach(s=>this._markSelected(s));let t=this._hasQueuedChanges();return this._emitChangeEvent(),t}deselect(...e){this._verifyValueAssignment(e),e.forEach(s=>this._unmarkSelected(s));let t=this._hasQueuedChanges();return this._emitChangeEvent(),t}setSelection(...e){this._verifyValueAssignment(e);let t=this.selected,s=new Set(e.map(i=>this._getConcreteValue(i)));e.forEach(i=>this._markSelected(i)),t.filter(i=>!s.has(this._getConcreteValue(i,s))).forEach(i=>this._unmarkSelected(i));let n=this._hasQueuedChanges();return this._emitChangeEvent(),n}toggle(e){return this.isSelected(e)?this.deselect(e):this.select(e)}clear(e=!0){this._unmarkAll();let t=this._hasQueuedChanges();return e&&this._emitChangeEvent(),t}isSelected(e){return this._selection.has(this._getConcreteValue(e))}isEmpty(){return this._selection.size===0}hasValue(){return!this.isEmpty()}sort(e){this._multiple&&this.selected&&this._selected.sort(e)}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(e){e=this._getConcreteValue(e),this.isSelected(e)||(this._multiple||this._unmarkAll(),this.isSelected(e)||this._selection.add(e),this._emitChanges&&this._selectedToEmit.push(e))}_unmarkSelected(e){e=this._getConcreteValue(e),this.isSelected(e)&&(this._selection.delete(e),this._emitChanges&&this._deselectedToEmit.push(e))}_unmarkAll(){this.isEmpty()||this._selection.forEach(e=>this._unmarkSelected(e))}_verifyValueAssignment(e){e.length>1&&this._multiple}_hasQueuedChanges(){return!!(this._deselectedToEmit.length||this._selectedToEmit.length)}_getConcreteValue(e,t){if(this.compareWith){t=t??this._selection;for(let s of t)if(this.compareWith(e,s))return s;return e}else return e}};export{p as a,d as b,u as c};

4
chunk-6NRCTHHS.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-6XFHITFY.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-7XDVX5KB.js Normal file
View File

@@ -0,0 +1 @@
import{i as a}from"./chunk-EGL4ZKWQ.js";import{R as i,ea as t}from"./chunk-COFYR5MX.js";import{$ as e,pb as r}from"./chunk-2MUIW2M6.js";var g=(()=>{class o{static \u0275fac=function(m){return new(m||o)};static \u0275mod=r({type:o});static \u0275inj=e({imports:[t,i,a,t]})}return o})();export{g as a};

2
chunk-7YTCZJV6.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-B4CGVF35.js Normal file
View File

@@ -0,0 +1 @@
import{a as i}from"./chunk-NIBVQDYD.js";import{l as n}from"./chunk-LLJSP5R2.js";import{d as m}from"./chunk-HMKN2VB2.js";import{W as p,ea as t}from"./chunk-COFYR5MX.js";import{$ as e,pb as r}from"./chunk-2MUIW2M6.js";var T=(()=>{class o{static \u0275fac=function(l){return new(l||o)};static \u0275mod=r({type:o});static \u0275inj=e({providers:[i],imports:[p,n,t,t,m]})}return o})();export{T as a};

1
chunk-BBCMZBMA.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-BGIV2LA3.js Normal file

File diff suppressed because one or more lines are too long

3
chunk-CAFW6QNR.js Normal file

File diff suppressed because one or more lines are too long

11
chunk-COFYR5MX.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-CTXOKINH.js Normal file
View File

@@ -0,0 +1,2 @@
import{ea as a,ga as o}from"./chunk-COFYR5MX.js";import{$ as n,Cb as l,jc as v,ob as d,pb as s}from"./chunk-2MUIW2M6.js";var u=(()=>{class t{get vertical(){return this._vertical}set vertical(i){this._vertical=o(i)}_vertical=!1;get inset(){return this._inset}set inset(i){this._inset=o(i)}_inset=!1;static \u0275fac=function(e){return new(e||t)};static \u0275cmp=d({type:t,selectors:[["mat-divider"]],hostAttrs:["role","separator",1,"mat-divider"],hostVars:7,hostBindings:function(e,r){e&2&&(l("aria-orientation",r.vertical?"vertical":"horizontal"),v("mat-divider-vertical",r.vertical)("mat-divider-horizontal",!r.vertical)("mat-divider-inset",r.inset))},inputs:{vertical:"vertical",inset:"inset"},decls:0,vars:0,template:function(e,r){},styles:[`.mat-divider{display:block;margin:0;border-top-style:solid;border-top-color:var(--mat-divider-color, var(--mat-sys-outline-variant));border-top-width:var(--mat-divider-width, 1px)}.mat-divider.mat-divider-vertical{border-top:0;border-right-style:solid;border-right-color:var(--mat-divider-color, var(--mat-sys-outline-variant));border-right-width:var(--mat-divider-width, 1px)}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}
`],encapsulation:2,changeDetection:0})}return t})(),f=(()=>{class t{static \u0275fac=function(e){return new(e||t)};static \u0275mod=s({type:t});static \u0275inj=n({imports:[a,a]})}return t})();export{u as a,f as b};

2
chunk-DBIJIYNZ.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-DS2WJYIM.js Normal file

File diff suppressed because one or more lines are too long

4
chunk-E645CZY6.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-EGL4ZKWQ.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-FETAVRDH.js Normal file

File diff suppressed because one or more lines are too long

9
chunk-GBWD7IPI.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-GIRDLTGV.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-GMUETU5N.js Normal file
View File

@@ -0,0 +1 @@
import{a as D}from"./chunk-3GOV5KJM.js";import{a as S}from"./chunk-TPLZKWZ7.js";import{a as b}from"./chunk-GPI43RSU.js";import{a as f}from"./chunk-52JZ5I3Y.js";import{n as m}from"./chunk-COFYR5MX.js";import{D as s,Ec as y,Q as C,W as i,_ as v,a as g,b as h,da as o,n as d,o as p,r as u,ta as n}from"./chunk-2MUIW2M6.js";var E=class l{http=o(m);toastService=o(f);authService=o(S);guestService=o(b);API_URL=`${D.apiUrl}/categories`;CACHE_TTL=3600*1e3;categoriesState=n([]);selectedCategoryState=n(null);loadingState=n(!1);errorState=n(null);categoriesCache=null;categoryDetailsCache=new Map;categories=this.categoriesState.asReadonly();selectedCategory=this.selectedCategoryState.asReadonly();isLoading=this.loadingState.asReadonly();error=this.errorState.asReadonly();filteredCategories=y(()=>{let t=this.categoriesState();return this.guestService.guestState().isGuest,t});categoriesByDisplayOrder=y(()=>[...this.filteredCategories()].sort((t,e)=>{let a=t.displayOrder??999,r=e.displayOrder??999;return a!==r?a-r:t.name.localeCompare(e.name)}));getCategories(t=!1){return!t&&this.categoriesCache&&this.isCacheValid(this.categoriesCache.timestamp)?(this.categoriesState.set(this.categoriesCache.data),d(this.categoriesCache.data)):(this.loadingState.set(!0),this.errorState.set(null),this.http.get(this.API_URL).pipe(u(e=>e.data),i(e=>{this.categoriesCache={data:e,timestamp:Date.now()},console.log(e),this.categoriesState.set(e),this.loadingState.set(!1)}),s(e=>this.handleError(e,"Failed to load categories")),C(1)))}getCategoryById(t,e=!1){let a=this.categoryDetailsCache.get(t);return!e&&a&&this.isCacheValid(a.timestamp)?(this.selectedCategoryState.set(a.data),d(a.data)):(this.loadingState.set(!0),this.errorState.set(null),this.http.get(`${this.API_URL}/${t}`).pipe(u(r=>{let{category:R,questionPreview:w,stats:c}=r.data;return h(g({},R),{questionPreview:w,stats:h(g({},c),{averageScore:c.averageAccuracy}),difficultyBreakdown:c.questionsByDifficulty})}),i(r=>{this.categoryDetailsCache.set(t,{data:r,timestamp:Date.now()}),this.selectedCategoryState.set(r),this.loadingState.set(!1)}),s(r=>r.status===404?this.handleError(r,"Category not found"):r.status===403?this.handleError(r,"This category is not accessible in guest mode"):this.handleError(r,"Failed to load category details")),C(1)))}createCategory(t){return this.loadingState.set(!0),this.errorState.set(null),this.http.post(this.API_URL,t).pipe(i(e=>{this.toastService.success("Category created successfully"),this.invalidateCategoriesCache(),this.loadingState.set(!1)}),s(e=>e.status===401||e.status===403?this.handleError(e,"You do not have permission to create categories"):this.handleError(e,"Failed to create category")))}updateCategory(t,e){return this.loadingState.set(!0),this.errorState.set(null),this.http.put(`${this.API_URL}/${t}`,e).pipe(i(a=>{this.toastService.success("Category updated successfully"),this.invalidateCategoriesCache(),this.categoryDetailsCache.delete(t),this.loadingState.set(!1)}),s(a=>a.status===404?this.handleError(a,"Category not found"):a.status===401||a.status===403?this.handleError(a,"You do not have permission to update categories"):this.handleError(a,"Failed to update category")))}deleteCategory(t){return this.loadingState.set(!0),this.errorState.set(null),this.http.delete(`${this.API_URL}/${t}`).pipe(i(()=>{this.toastService.success("Category deleted successfully"),this.invalidateCategoriesCache(),this.categoryDetailsCache.delete(t);let e=this.categoriesState();this.categoriesState.set(e.filter(a=>a.id!==t)),this.loadingState.set(!1)}),s(e=>e.status===404?this.handleError(e,"Category not found"):e.status===401||e.status===403?this.handleError(e,"You do not have permission to delete categories"):this.handleError(e,"Failed to delete category")))}searchCategories(t){if(!t.trim())return this.filteredCategories();let e=t.toLowerCase();return this.filteredCategories().filter(a=>a.name.toLowerCase().includes(e)||a.description.toLowerCase().includes(e))}clearSelectedCategory(){this.selectedCategoryState.set(null)}invalidateCategoriesCache(){this.categoriesCache=null}invalidateCategoryCache(t){this.categoryDetailsCache.delete(t)}clearAllCaches(){this.categoriesCache=null,this.categoryDetailsCache.clear()}isCacheValid(t){return Date.now()-t<this.CACHE_TTL}handleError(t,e){console.error("CategoryService Error:",t);let a=t.error?.message||e;return this.errorState.set(a),this.loadingState.set(!1),this.toastService.error(a),p(()=>t)}static \u0275fac=function(e){return new(e||l)};static \u0275prov=v({token:l,factory:l.\u0275fac,providedIn:"root"})};export{E as a};

1
chunk-GPI43RSU.js Normal file
View File

@@ -0,0 +1 @@
import{a as m,b as v}from"./chunk-RC3JXGN6.js";import{a as E}from"./chunk-52JZ5I3Y.js";import{n as p,w as d}from"./chunk-COFYR5MX.js";import{D as a,W as n,_ as S,a as i,b as r,da as u,o,ta as h}from"./chunk-2MUIW2M6.js";var I=class g{http=u(p);storageService=u(v);toastService=u(E);router=u(d);API_URL=`${m.apiUrl}/guest`;GUEST_TOKEN_KEY="guest_token";GUEST_ID_KEY="guest_id";DEVICE_ID_KEY="device_id";SESSION_EXPIRY_HOURS=24;guestStateSignal=h({session:null,isGuest:this.hasActiveGuestSession(),isLoading:!1,error:null,quizLimit:null});guestState=this.guestStateSignal.asReadonly();startSession(){this.setLoading(!0);let e=this.getOrCreateDeviceId();return this.http.post(`${this.API_URL}/start-session`,{deviceId:e}).pipe(n(t=>{this.storageService.setItem(this.GUEST_ID_KEY,t.data.guestId),this.storageService.setGuestToken(t.data.sessionToken),this.guestStateSignal.update(s=>r(i({},s),{session:t.data,isGuest:!0,isLoading:!1,error:null})),this.toastService.success("Welcome! You're browsing as a guest.")}),a(t=>(this.setError("Failed to start guest session"),this.toastService.error("Unable to start guest session. Please try again."),o(()=>t))))}getSession(e){return this.setLoading(!0),this.http.get(`${this.API_URL}/session/${e}`).pipe(n(t=>{this.guestStateSignal.update(s=>r(i({},s),{session:t,isGuest:!0,isLoading:!1,error:null}))}),a(t=>(t.status===404?(this.clearGuestSession(),this.toastService.warning("Guest session expired. Please start a new session.")):this.setError("Failed to fetch guest session"),o(()=>t))))}getQuizLimit(){return this.setLoading(!0),this.http.get(`${this.API_URL}/quiz-limit`).pipe(n(e=>{this.guestStateSignal.update(t=>r(i({},t),{quizLimit:e,isLoading:!1,error:null}))}),a(e=>(this.setError("Failed to fetch quiz limit"),o(()=>e))))}convertToUser(e,t){return this.setLoading(!0),this.http.post(`${this.API_URL}/convert`,i({guestSessionId:e},t)).pipe(n(()=>{this.clearGuestSession(),this.toastService.success("Guest data successfully migrated to your account!")}),a(s=>(this.setError("Failed to convert guest session"),o(()=>s))))}getOrCreateDeviceId(){let e=this.storageService.getItem(this.DEVICE_ID_KEY);return e||(e=this.generateUUID(),this.storageService.setItem(this.DEVICE_ID_KEY,e)),e}generateUUID(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}hasActiveGuestSession(){let e=this.storageService.getItem(this.GUEST_TOKEN_KEY),t=this.storageService.getItem(this.GUEST_ID_KEY);return!!(e&&t)}getGuestToken(){return this.storageService.getItem(this.GUEST_TOKEN_KEY)}getGuestId(){return this.storageService.getItem(this.GUEST_ID_KEY)}isSessionExpired(){let e=this.guestState().session;if(!e)return!0;let t=new Date(e.createdAt);return(new Date().getTime()-t.getTime())/(1e3*60*60)>=this.SESSION_EXPIRY_HOURS}clearGuestSession(){this.storageService.removeItem(this.GUEST_TOKEN_KEY),this.storageService.removeItem(this.GUEST_ID_KEY),this.guestStateSignal.update(e=>r(i({},e),{session:null,isGuest:!1,isLoading:!1,error:null,quizLimit:null}))}setLoading(e){this.guestStateSignal.update(t=>r(i({},t),{isLoading:e}))}setError(e){this.guestStateSignal.update(t=>r(i({},t),{isLoading:!1,error:e}))}hasReachedQuizLimit(){let e=this.guestState().quizLimit;return e?e.quizzesRemaining<=0:!1}getTimeRemaining(){let e=this.guestState().session;if(!e)return"0h 0m";let t=new Date(e.createdAt),s=new Date(t.getTime()+this.SESSION_EXPIRY_HOURS*60*60*1e3),c=new Date,l=s.getTime()-c.getTime();if(l<=0)return"0h 0m";let f=Math.floor(l/(1e3*60*60)),x=Math.floor(l%(1e3*60*60)/(1e3*60));return`${f}h ${x}m`}static \u0275fac=function(t){return new(t||g)};static \u0275prov=S({token:g,factory:g.\u0275fac,providedIn:"root"})};export{I as a};

1
chunk-GWD5A44H.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-GYQ7OXTP.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-HMKN2VB2.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-IRVPX2IZ.js Normal file
View File

@@ -0,0 +1 @@
import{U as r,da as o,f as n,oa as s}from"./chunk-2MUIW2M6.js";function w(t){t||(t=o(s));let i=new n(e=>{if(t.destroyed){e.next();return}return t.onDestroy(e.next.bind(e))});return e=>e.pipe(r(i))}export{w as a};

1
chunk-J3LCK77D.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-L5RFXRXA.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-LA37G65K.js Normal file
View File

@@ -0,0 +1 @@
import{a as U}from"./chunk-3GOV5KJM.js";import{a as y}from"./chunk-TPLZKWZ7.js";import{b as v}from"./chunk-RC3JXGN6.js";import{a as S}from"./chunk-52JZ5I3Y.js";import{n as f,w as m}from"./chunk-COFYR5MX.js";import{D as d,Ec as n,W as h,_ as b,a as c,da as r,n as g,ta as i}from"./chunk-2MUIW2M6.js";var D=class l{http=r(f);router=r(m);toastService=r(S);authService=r(y);storageService=r(v);API_URL=`${U.apiUrl}/users`;CACHE_TTL=300*1e3;dashboardState=i(null);historyState=i(null);isLoading=i(!1);error=i(null);dashboardCache=new Map;totalQuizzes=n(()=>this.dashboardState()?.data.stats.totalQuizzes||0);overallAccuracy=n(()=>this.dashboardState()?.data.stats.overallAccuracy||0);currentStreak=n(()=>this.dashboardState()?.data.stats.currentStreak||0);getDashboard(t,s=!1){if(!s){let e=this.dashboardCache.get(t);if(e&&Date.now()-e.timestamp<this.CACHE_TTL)return this.dashboardState.set(e.data),g(e.data)}return this.isLoading.set(!0),this.error.set(null),this.http.get(`${this.API_URL}/${t}/dashboard`).pipe(h(e=>{this.dashboardState.set(e),this.dashboardCache.set(t,{data:e,timestamp:Date.now()}),this.isLoading.set(!1)}),d(e=>{throw console.error("Error fetching dashboard:",e),this.error.set(e.error?.message||"Failed to load dashboard"),this.isLoading.set(!1),e.status===401?(this.toastService.error("Please log in to view your dashboard"),this.router.navigate(["/login"])):this.toastService.error("Failed to load dashboard data"),e}))}getHistory(t,s=1,e=10,o,u="date"){this.isLoading.set(!0),this.error.set(null);let p={page:s,limit:e,sortBy:u};return o&&(p.category=o),this.http.get(`${this.API_URL}/${t}/history`,{params:p}).pipe(h(a=>{this.historyState.set(a),this.isLoading.set(!1)}),d(a=>{throw console.error("Error fetching history:",a),this.error.set(a.error?.message||"Failed to load quiz history"),this.isLoading.set(!1),a.status===401?(this.toastService.error("Please log in to view your history"),this.router.navigate(["/login"])):this.toastService.error("Failed to load quiz history"),a}))}updateProfile(t,s){return this.isLoading.set(!0),this.error.set(null),this.http.put(`${this.API_URL}/${t}`,s).pipe(h(e=>{let o=this.authService.getCurrentUser();if(o&&e.data?.user){let u=c(c({},o),e.data.user);this.storageService.setUserData(u)}this.isLoading.set(!1),this.toastService.success("Profile updated successfully"),this.dashboardCache.delete(t)}),d(e=>{throw console.error("Error updating profile:",e),this.error.set(e.error?.message||"Failed to update profile"),this.isLoading.set(!1),e.status===401?this.toastService.error("Please log in to update your profile"):e.status===409?this.toastService.error("Email or username already exists"):this.toastService.error("Failed to update profile"),e}))}clearCache(){this.dashboardCache.clear(),this.dashboardState.set(null),this.historyState.set(null),this.error.set(null)}isDashboardEmpty(){let t=this.dashboardState();return t?t.data.stats.totalQuizzes===0:!0}static \u0275fac=function(s){return new(s||l)};static \u0275prov=b({token:l,factory:l.\u0275fac,providedIn:"root"})};export{D as a};

1
chunk-LJBPTG23.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-LLJSP5R2.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-LQYVBPUL.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-M5XZ5N2D.js Normal file
View File

@@ -0,0 +1 @@
import{ba as s,h as c}from"./chunk-2MUIW2M6.js";function h(t){return t&&typeof t.connect=="function"&&!(t instanceof c)}var i=(function(t){return t[t.REPLACED=0]="REPLACED",t[t.INSERTED=1]="INSERTED",t[t.MOVED=2]="MOVED",t[t.REMOVED=3]="REMOVED",t})(i||{}),E=new s("_ViewRepeater");export{h as a,i as b,E as c};

1
chunk-ML2D4U27.js Normal file

File diff suppressed because one or more lines are too long

0
chunk-MS4AQ6UA.js Normal file
View File

2
chunk-N6VRXIQE.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-N73CTY2C.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-NIBVQDYD.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-NYYADJNO.js Normal file
View File

@@ -0,0 +1,2 @@
import{ea as d,oa as n}from"./chunk-COFYR5MX.js";import{$ as c,jc as s,ob as r,pb as i}from"./chunk-2MUIW2M6.js";var p=(()=>{class e{_animationsDisabled=n();state="unchecked";disabled=!1;appearance="full";constructor(){}static \u0275fac=function(t){return new(t||e)};static \u0275cmp=r({type:e,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(t,o){t&2&&s("mat-pseudo-checkbox-indeterminate",o.state==="indeterminate")("mat-pseudo-checkbox-checked",o.state==="checked")("mat-pseudo-checkbox-disabled",o.disabled)("mat-pseudo-checkbox-minimal",o.appearance==="minimal")("mat-pseudo-checkbox-full",o.appearance==="full")("_mat-animation-noopable",o._animationsDisabled)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},decls:0,vars:0,template:function(t,o){},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-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-minimal-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-pseudo-checkbox-full-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-pseudo-checkbox-full-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-pseudo-checkbox-full-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-full-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-pseudo-checkbox-full-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-full-disabled-selected-checkmark-color, var(--mat-sys-surface))}.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})}return e})();var h=(()=>{class e{static \u0275fac=function(t){return new(t||e)};static \u0275mod=i({type:e});static \u0275inj=c({imports:[d]})}return e})();export{p as a,h as b};

1
chunk-OI7I342H.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-OSQNZFMB.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-P3ICZX4Q.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-PCQ5ZI2S.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-R3PUHZUP.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-RC3JXGN6.js Normal file
View File

@@ -0,0 +1 @@
import{_ as i}from"./chunk-2MUIW2M6.js";var s=class r{TOKEN_KEY="auth_token";GUEST_TOKEN_KEY="guest_token";USER_KEY="user_data";THEME_KEY="app_theme";REMEMBER_ME_KEY="remember_me";constructor(){}getItem(t){return localStorage.getItem(t)}setItem(t,e,n=!0){localStorage.setItem(t,e)}getToken(){return this.getItem(this.TOKEN_KEY)}setToken(t,e=!0){this.setItem(this.TOKEN_KEY,t,e),this.setItem(this.REMEMBER_ME_KEY,e.toString(),!0)}clearToken(){this.removeItem(this.TOKEN_KEY)}getGuestToken(){return this.getItem(this.GUEST_TOKEN_KEY)}setGuestToken(t){this.setItem(this.GUEST_TOKEN_KEY,t)}clearGuestToken(){this.removeItem(this.GUEST_TOKEN_KEY)}getUserData(){let t=this.getItem(this.USER_KEY);if(!t||t==="undefined"||t==="null")return null;try{return JSON.parse(t)}catch(e){return console.error("Error parsing user data:",e),null}}setUserData(t,e=!0){this.setItem(this.USER_KEY,JSON.stringify(t),e)}clearUserData(){this.removeItem(this.USER_KEY)}getTheme(){return this.getItem(this.THEME_KEY)||"light"}setTheme(t){this.setItem(this.THEME_KEY,t,!0)}getRememberMe(){return this.getItem(this.REMEMBER_ME_KEY)==="true"}clearAll(){this.clearToken(),this.clearGuestToken(),this.clearUserData()}isAuthenticated(){return!!this.getToken()}isGuest(){return!this.getToken()&&!!this.getGuestToken()}removeItem(t){localStorage.removeItem(t)}static \u0275fac=function(e){return new(e||r)};static \u0275prov=i({token:r,factory:r.\u0275fac,providedIn:"root"})};var E={production:!0,apiUrl:"https://quzapi.fitsyncclinic.com/api",apiTimeout:3e4,cacheTimeout:3e5,enableLogging:!1,appName:"Interview Quiz Application",appVersion:"1.0.0"};export{E as a,s as b};

1
chunk-RDQGS2XZ.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-RMZSWKDH.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-RQ4AYGDA.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-SDNKCAUU.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-T6TXUSUP.js Normal file
View File

@@ -0,0 +1 @@
import{b as c}from"./chunk-RC3JXGN6.js";import{a as d}from"./chunk-52JZ5I3Y.js";import{w as l}from"./chunk-COFYR5MX.js";import{Fc as s,_ as i,da as o,ta as r}from"./chunk-2MUIW2M6.js";var g=class a{loadingSignal=r(!1);loadingMessageSignal=r("");loadingCountSignal=r(0);isLoading=this.loadingSignal.asReadonly();loadingMessage=this.loadingMessageSignal.asReadonly();constructor(){}start(e="Loading..."){this.loadingCountSignal.update(t=>t+1),this.loadingMessageSignal.set(e),this.loadingSignal.set(!0)}stop(){this.loadingCountSignal.update(e=>{let t=Math.max(0,e-1);return t===0&&(this.loadingSignal.set(!1),this.loadingMessageSignal.set("")),t})}stopAll(){this.loadingCountSignal.set(0),this.loadingSignal.set(!1),this.loadingMessageSignal.set("")}getLoadingState(){return this.loadingSignal()}static \u0275fac=function(t){return new(t||a)};static \u0275prov=i({token:a,factory:a.\u0275fac,providedIn:"root"})};var m=class a{THEME_KEY="app-theme";storageService=o(c);themeSignal=r(this.getInitialTheme());theme=this.themeSignal.asReadonly();constructor(){this.applyTheme(this.themeSignal()),s(()=>{let e=this.themeSignal();this.applyTheme(e),this.storageService.setTheme(e)}),this.watchSystemThemePreference()}getInitialTheme(){let e=this.storageService.getTheme();return e||(typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")}applyTheme(e){if(typeof document<"u"){let t=document.body;e==="dark"?(t.classList.add("dark-theme"),t.classList.remove("light-theme")):(t.classList.add("light-theme"),t.classList.remove("dark-theme")),document.documentElement.style.colorScheme=e}}watchSystemThemePreference(){typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",t=>{this.storageService.getTheme()||this.setTheme(t.matches?"dark":"light")})}setTheme(e){this.themeSignal.set(e)}toggleTheme(){let e=this.themeSignal();this.setTheme(e==="light"?"dark":"light")}isDarkMode(){return this.themeSignal()==="dark"}resetToSystemPreference(){if(localStorage.removeItem(this.THEME_KEY),typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)").matches;this.setTheme(e?"dark":"light")}else this.setTheme("light")}static \u0275fac=function(t){return new(t||a)};static \u0275prov=i({token:a,factory:a.\u0275fac,providedIn:"root"})};var u=class a{toastService=o(d);router=o(l);handleError(e){console.error("Global error caught:",e),this.logErrorToExternalService(e);let t="An unexpected error occurred. Please try again.",n=!1;if(e instanceof Error&&(e.message.includes("ChunkLoadError")||e.message.includes("Loading chunk")?t="Failed to load application resources. Please refresh the page.":e.message.includes("Network")?t="Network error. Please check your internet connection.":e.name==="TypeError"&&(t="A technical error occurred. Our team has been notified.",n=!0)),e?.status)switch(e.status){case 0:t="Cannot connect to server. Please check your internet connection.";break;case 401:t="Session expired. Please login again.",this.router.navigate(["/login"]);return;case 403:t="You do not have permission to perform this action.";break;case 404:t="The requested resource was not found.";break;case 500:case 502:case 503:t="Server error. Please try again later.",n=!0;break;default:t=`An error occurred (${e.status}). Please try again.`}this.toastService.error(t,8e3),n&&!this.router.url.includes("/error")&&this.router.navigate(["/error"],{queryParams:{message:t,timestamp:Date.now()}})}logErrorToExternalService(e){let t={message:e?.message||"Unknown error",stack:e?.stack,timestamp:new Date().toISOString(),url:window.location.href,userAgent:navigator.userAgent};console.log("Error logged:",t)}static \u0275fac=function(t){return new(t||a)};static \u0275prov=i({token:a,factory:a.\u0275fac,providedIn:"root"})};export{g as a,m as b,u as c};

5
chunk-TAS7XC6E.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-TDFJQLRV.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-TPLZKWZ7.js Normal file
View File

@@ -0,0 +1 @@
import{a as m,b as f}from"./chunk-RC3JXGN6.js";import{a as A}from"./chunk-52JZ5I3Y.js";import{n as v,w as S}from"./chunk-COFYR5MX.js";import{D as r,W as i,_ as d,a as c,b as g,da as o,o as s,ta as p}from"./chunk-2MUIW2M6.js";var b=class u{http=o(v);storageService=o(f);toastService=o(A);router=o(S);API_URL=`${m.apiUrl}/auth`;authStateSignal=p({user:this.storageService.getUserData(),isAuthenticated:this.storageService.isAuthenticated(),isLoading:!1,error:null});authState=this.authStateSignal.asReadonly();register(e,t,l,n){this.setLoading(!0);let h={username:e,email:t,password:l,guestSessionId:n};return this.http.post(`${this.API_URL}/register`,h).pipe(i(a=>{this.storageService.setToken(a.data.token,!0),this.storageService.setUserData(a.data.user),n&&this.storageService.clearGuestToken(),this.updateAuthState(a.data.user,null);let U=a.migratedStats?`Welcome ${a.data.user.username}! Your guest progress has been saved.`:`Welcome ${a.data.user.username}! Your account has been created.`;this.toastService.success(U),this.router.navigate(["/categories"])}),r(a=>(this.handleAuthError(a),s(()=>a))))}login(e,t,l=!1,n="/categories"){this.setLoading(!0);let h={email:e,password:t};return this.http.post(`${this.API_URL}/login`,h).pipe(i(a=>{console.log(a.data.user),this.storageService.setToken(a.data.token,l),this.storageService.setUserData(a.data.user),this.storageService.clearGuestToken(),this.updateAuthState(a.data.user,null),this.toastService.success(`Welcome back, ${a.data.user.username}!`),this.router.navigate([n])}),r(a=>(this.handleAuthError(a),s(()=>a))))}logout(){return this.setLoading(!0),this.http.post(`${this.API_URL}/logout`,{}).pipe(i(()=>{this.storageService.clearAll(),this.authStateSignal.set({user:null,isAuthenticated:!1,isLoading:!1,error:null}),this.toastService.success("You have been logged out successfully."),this.router.navigate(["/login"])}),r(e=>(this.storageService.clearAll(),this.authStateSignal.set({user:null,isAuthenticated:!1,isLoading:!1,error:null}),this.router.navigate(["/login"]),s(()=>e))))}verifyToken(){return this.storageService.getToken()?(this.setLoading(!0),this.http.get(`${this.API_URL}/verify`).pipe(i(t=>{t.success&&t.data.user?(this.storageService.setUserData(t.data.user),this.updateAuthState(t.data.user,null)):this.clearAuth()}),r(t=>(this.clearAuth(),s(()=>t))))):(this.authStateSignal.update(t=>g(c({},t),{isAuthenticated:!1,user:null})),s(()=>new Error("No token found")))}clearAuth(){this.storageService.clearToken(),this.storageService.clearUserData(),this.authStateSignal.set({user:null,isAuthenticated:!1,isLoading:!1,error:null})}updateAuthState(e,t){this.authStateSignal.set({user:e,isAuthenticated:!!e,isLoading:!1,error:t})}setLoading(e){this.authStateSignal.update(t=>g(c({},t),{isLoading:e}))}handleAuthError(e){let t="An error occurred. Please try again.";e.status===400?t="Invalid input. Please check your information.":e.status===401?t="Invalid email or password.":e.status===409?t=e.error?.message||"Email or username already exists.":e.status===429?t="Too many attempts. Please try again later.":e.status===0&&(t="Unable to connect to server. Please check your internet connection."),this.updateAuthState(null,t),this.toastService.error(t)}getCurrentUser(){return this.authStateSignal().user}isAuthenticated(){return this.authStateSignal().isAuthenticated}isAdmin(){return this.getCurrentUser()?.role==="admin"}static \u0275fac=function(t){return new(t||u)};static \u0275prov=d({token:u,factory:u.\u0275fac,providedIn:"root"})};export{b as a};

1
chunk-UI3TKFHU.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-UIJLH2NR.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-UKR5XEO6.js Normal file

File diff suppressed because one or more lines are too long

2
chunk-VX6WCCL3.js Normal file
View File

@@ -0,0 +1,2 @@
import{$b as o,_b as l,jc as r,ob as a}from"./chunk-2MUIW2M6.js";var d=["mat-internal-form-field",""],m=["*"],g=(()=>{class i{labelPosition;static \u0275fac=function(t){return new(t||i)};static \u0275cmp=a({type:i,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(t,n){t&2&&r("mdc-form-field--align-end",n.labelPosition==="before")},inputs:{labelPosition:"labelPosition"},attrs:d,ngContentSelectors:m,decls:1,vars:0,template:function(t,n){t&1&&(l(),o(0))},styles:[`.mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}
`],encapsulation:2,changeDetection:0})}return i})();export{g as a};

16
chunk-WHX74LXP.js Normal file

File diff suppressed because one or more lines are too long

1
chunk-WI5CBSGS.js Normal file
View File

@@ -0,0 +1 @@
import{Fc as s,_ as g,ta as a}from"./chunk-2MUIW2M6.js";var c=class n{constructor(){}createPersistedSignal(e,t){let r=localStorage.getItem(e),l=r?JSON.parse(r):t,o=a(l);return s(()=>{let i=o();localStorage.setItem(e,JSON.stringify(i))}),o}createSessionSignal(e,t){let r=sessionStorage.getItem(e),l=r?JSON.parse(r):t,o=a(l);return s(()=>{let i=o();sessionStorage.setItem(e,JSON.stringify(i))}),o}createLoadingSignal(){return a(!1)}createErrorSignal(){return a(null)}clearPersistedState(e){localStorage.removeItem(e),sessionStorage.removeItem(e)}static \u0275fac=function(t){return new(t||n)};static \u0275prov=g({token:n,factory:n.\u0275fac,providedIn:"root"})};

2
chunk-YTKR22CH.js Normal file

File diff suppressed because one or more lines are too long

3
chunk-YWCH6MM5.js Normal file

File diff suppressed because one or more lines are too long

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

15
index.html Normal file

File diff suppressed because one or more lines are too long

3
main-6K3FPUHG.js Normal file

File diff suppressed because one or more lines are too long

1
styles-NQP6VIMQ.css Normal file

File diff suppressed because one or more lines are too long