1import{a as jt}from"./chunk-MPTMOGZD.js";import{b as ze,c as Ht,f as Ie,i as Bt}from"./chunk-P4VI2AZH.js";import{a as de}from"./chunk-QMIFKY76.js";import{a as j}from"./chunk-DZNOTXXT.js";import{c as Se,e as Pe,i as ke,t as Te,v as Oe}from"./chunk-HQOHKGXN.js";import{a as Tt,b as Ot,c as Et,d as B,e as zt,f as ae}from"./chunk-6O5CZLGM.js";import{B as Rt,D as Dt,G as Vt,P as At,Q as Ft,R as Nt,T as Ee,v as It,w as Lt}from"./chunk-E62MEM74.js";import"./chunk-QCMGR4AV.js";import{b as ft,d as _t,e as vt,f as bt,h as yt,i as xt,j as we,k as Ct,l as Mt,m as wt,o as St,p as z,q as re,r as Pt,s as kt,t as H}from"./chunk-7Z6M46HO.js";import{$ as I,$a as rt,$b as te,Ab as pt,Bb as Be,C as Je,Cb as je,Cc as ut,D as De,Db as i,Ea as ve,Eb as a,F as Ve,Fb as f,G as Ae,Gb as L,H as J,Hb as R,I as G,Ib as X,J as Ye,Jb as b,Jc as gt,Kb as u,Kc as Ce,Lb as c,Lc as M,M as A,Mb as ct,Mc as ht,N as Ke,Nb as Q,Nc as ie,Qb as P,Rb as k,Sb as T,Sc as x,T as Ze,Tb as ye,Ub as d,Uc as Me,Va as Y,Vb as C,W as pe,Wa as N,Wb as D,Xb as xe,Y as Xe,_a as Fe,_b as ee,a as he,ab as l,ac as oe,ca as et,db as at,e as le,ea as ce,eb as Ne,ec as ne,f as Re,fa as v,ha as tt,jb as y,k as Ge,kc as E,na as g,nb as m,oa as h,oc as dt,pc as mt,qb as be,ra as fe,sb as He,t as Qe,tb as st,u as $,ub as p,v as qe,va as _e,wa as ot,wb as K,wc as O,xa as nt,xb as Z,y as V,yb as lt,za as it}from"./chunk-QN5QKGAF.js";var ue="Service workers are disabled or not supported by this browser";function go(t){return De(()=>qe(new Error(t)))}var se=class{serviceWorker;worker;registration;events;constructor(r){if(this.serviceWorker=r,!r)this.worker=this.events=this.registration=go(ue);else{let o=Ve(r,"controllerchange").pipe(V(()=>r.controller)),n=De(()=>$(r.controller)),s=Je(n,o);this.worker=s.pipe(G(W=>!!W)),this.registration=this.worker.pipe(pe(()=>r.getRegistration()));let q=Ve(r,"message").pipe(V(W=>W.data)).pipe(G(W=>W&&W.type)).pipe(Ze());q.connect(),this.events=q}}postMessage(r,e){return this.worker.pipe(A(1),Xe(o=>{o.postMessage(he({action:r},e))})).toPromise().then(()=>{})}postMessageWithOperation(r,e,o){let n=this.waitForOperationCompleted(o),s=this.postMessage(r,e);return Promise.all([s,n]).then(([,_])=>_)}generateNonce(){return Math.round(Math.random()*1e7)}eventsOfType(r){let e;return typeof r=="string"?e=o=>o.type===r:e=o=>r.includes(o.type),this.events.pipe(G(e))}nextEventOfType(r){return this.eventsOfType(r).pipe(A(1))}waitForOperationCompleted(r){return this.eventsOfType("OPERATION_COMPLETED").pipe(G(e=>e.nonce===r),A(1),V(e=>{if(e.result!==void 0)return e.result;throw new Error(e.error)})).toPromise()}get isEnabled(){return!!this.serviceWorker}},ho=(()=>{class t{sw;messages;notificationClicks;subscription;get isEnabled(){return this.sw.isEnabled}pushManager=null;subscriptionChanges=new Ge;constructor(e){if(this.sw=e,!e.isEnabled){this.messages=J,this.notificationClicks=J,this.subscription=J;return}this.messages=this.sw.eventsOfType("PUSH").pipe(V(n=>n.data)),this.notificationClicks=this.sw.eventsOfType("NOTIFICATION_CLICK").pipe(V(n=>n.data)),this.pushManager=this.sw.registration.pipe(V(n=>n.pushManager));let o=this.pushManager.pipe(pe(n=>n.getSubscription()));this.subscription=Ae(o,this.subscriptionChanges)}requestSubscription(e){if(!this.sw.isEnabled||this.pushManager===null)return Promise.reject(new Error(ue));let o={userVisibleOnly:!0},n=this.decodeBase64(e.serverPublicKey.replace(/_/g,"/").replace(/-/g,"+")),s=new Uint8Array(new ArrayBuffer(n.length));for(let _=0;_<n.length;_++)s[_]=n.charCodeAt(_);return o.applicationServerKey=s,this.pushManager.pipe(pe(_=>_.subscribe(o)),A(1)).toPromise().then(_=>(this.subscriptionChanges.next(_),_))}unsubscribe(){if(!this.sw.isEnabled)return Promise.reject(new Error(ue));let e=o=>{if(o===null)throw new Error("Not subscribed to push notifications.");return o.unsubscribe().then(n=>{if(!n)throw new Error("Unsubscribe failed!");this.subscriptionChanges.next(null)})};return this.subscription.pipe(A(1),pe(e)).toPromise()}decodeBase64(e){return atob(e)}static \u0275fac=function(o){return new(o||t)(ce(se))};static \u0275prov=I({token:t,factory:t.\u0275fac})}return t})(),Ue=(()=>{class t{sw;versionUpdates;unrecoverable;get isEnabled(){return this.sw.isEnabled}constructor(e){if(this.sw=e,!e.isEnabled){this.versionUpdates=J,this.unrecoverable=J;return}this.versionUpdates=this.sw.eventsOfType(["VERSION_DETECTED","VERSION_INSTALLATION_FAILED","VERSION_READY","NO_NEW_VERSION_DETECTED"]),this.unrecoverable=this.sw.eventsOfType("UNRECOVERABLE_STATE")}checkForUpdate(){if(!this.sw.isEnabled)return Promise.reject(new Error(ue));let e=this.sw.generateNonce();return this.sw.postMessageWithOperation("CHECK_FOR_UPDATES",{nonce:e},e)}activateUpdate(){if(!this.sw.isEnabled)return Promise.reject(new Error(ue));let e=this.sw.generateNonce();return this.sw.postMessageWithOperation("ACTIVATE_UPDATE",{nonce:e},e)}static \u0275fac=function(o){return new(o||t)(ce(se))};static \u0275prov=I({token:t,factory:t.\u0275fac})}return t})();var Ut=new et("");function fo(t,r,e){return()=>
1{if(!("serviceWorker"in navigator&&e.enabled!==!1))return;let o=t.get(ot),n=t.get(He);o.runOutsideAngular(()=>{let _=navigator.serviceWorker,w=()=>_.controller?.postMessage({action:"INITIALIZE"});_.addEventListener("controllerchange",w),n.onDestroy(()=>{_.removeEventListener("controllerchange",w)})});let s;if(typeof e.registrationStrategy=="function")s=e.registrationStrategy();else{let[_,...w]=(e.registrationStrategy||"registerWhenStable:30000").split(":");switch(_){case"registerImmediately":s=$(null);break;case"registerWithDelay":s=Wt(+w[0]||0);break;case"registerWhenStable":let U=Qe(t.get(He).whenStable());s=w[0]?Ae(U,Wt(+w[0])):U;break;default:throw new Error(`Unknown ServiceWorker registration strategy: ${e.registrationStrategy}`)}}o.runOutsideAngular(()=>s.pipe(A(1)).subscribe(()=>navigator.serviceWorker.register(r,{scope:e.scope}).catch(_=>console.error("Service worker registration failed with:",_))))}}function Wt(t){return $(null).pipe(Ke(t))}function _o(t){return new se(t.enabled!==!1?navigator.serviceWorker:void 0)}var me=class{enabled;scope;registrationStrategy};function $t(t,r={}){return tt([ho,Ue,{provide:Ut,useValue:t},{provide:me,useValue:r},{provide:se,useFactory:_o,deps:[me]},{provide:be,useFactory:fo,deps:[fe,Ut,me],multi:!0}])}var vo=(t,r)=>({$implicit:t,dismiss:r});function bo(t,r){t&1&&X(0)}function yo(t,r){if(t&1&&(L(0),m(1,bo,1,0,"ng-container",2),R()),t&2){let e=c();l(),p("ngTemplateOutlet",e.customTemplate)("ngTemplateOutletContext",ne(2,vo,e.toast,e.dismiss.bind(e)))}}function xo(t,r){if(t&1){let e=b();i(0,"div",3)(1,"div",4),f(2,"i",5),i(3,"strong",6),d(4),a(),i(5,"button",7),u("click",function(){g(e);let n=c();return h(n.dismiss())}),a()(),f(6,"div",8),a()}if(t&2){let e=c();p("ngClass",e.getToastClasses()),l(2),p("ngClass",e.getIconClass()),l(2),C(e.toast.title||e.getDefaultTitle()),l(2),p("innerHTML",e.toast.message,Y)}}var Gt=(()=>{class t{constructor(){this.dismissed=new _e}ngOnInit(){}dismiss(){this.dismissed.emit(this.toast.id)}getIcon(){switch(this.toast.type){case"success":return"\u2713";case"error":return"\u{1F6E1}";case"info":return"\u2139";case"warning":return"\u26A0";case"brand":return"";default:return""}}getToastClasses(){let e="toast show";switch(this.toast.type){case"success":return`${e} text-bg-success`;case"error":return`${e} text-bg-danger`;case"warning":return`${e} text-bg-warning`;case"info":return`${e} text-bg-info`;default:return e}}getIconClass(){let e="fas";switch(this.toast.type){case"success":return`${e} fa-check-circle`;case"error":return`${e} fa-exclamation-circle`;case"warning":return`${e} fa-exclamation-triangle`;case"info":return`${e} fa-info-circle`;default:return`${e} fa-info-circle`}}getDefaultTitle(){switch(this.toast.type){case"success":return"Success";case"error":return"Error";case"warning":return"Warning";case"info":return"Information";default:return"Notification"}}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-shell-toast"]],inputs:{toast:"toast",customTemplate:"customTemplate"},outputs:{dismissed:"dismissed"},decls:3,vars:2,consts:[["defaultTemplate",""],[4,"ngIf","ngIfElse"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["role","alert",1,"toast",3,"ngClass"],[1,"toast-header"],[1,"me-2",3,"ngClass"],[1,"me-auto"],["type","button",1,"btn-close",3,"click"],[1,"toast-body",3,"innerHTML"]],template:function(o,n){if(o&1&&m(0,yo,2,5,"ng-container",1)(1,xo,7,4,"ng-template",null,0,E),o&2){let s=ye(2);p("ngIf",n.customTemplate)("ngIfElse",s)}},dependencies:[x,gt,M,ie],styles:[".toast[_ngcontent-%COMP%]{min-width:300px;margin:10px 0}"]})}}return t})();var Co=(t,r)=>r.id;function Mo(t,r){if(t&1){let e=b();i(0,"app-shell-toast",2),u("dismissed",function(n){g(e);let s=c(2);return h(s.toastService.dismiss(n))}),a()}if(t&2){let e=r.$implicit,o=c(2);p("toast",e)("customTemplate",o.getCustomTemplate(e.type))}}function wo(t,r){if(t&1&&(i(0,"div"),Be(1,Mo,1,2,"app-shell-toast",1,Co),a()),t&2){let e=r.$implicit,o=c();lt("toast-container toast-",e,""),K("mobile-layout",o.layoutService.isMobile()),l(),je(o.getToastsForPosition(e))}}var Qt=(()=>{class t{constructor(){this.customTemplates={},this.toastService=v(Ot),this.layoutService=v(B),this.toasts=this.toastService.toasts$,this.positions=["top-right","top-left","bottom-right","bottom-left"]}getToastsForPosition(e){return this.toasts().filter(o=>(o.position||"top-right")===e)}getCustomTemplate(e){return this.customTemplates[e]}trackByToastId(e,o){return o.id}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-shell-toast-container"]],inputs:{customTemplates:"customTemplates"},decls:2,vars:0,consts:[[3,"class","mobile-layout"],[3,"toast","customTemplate"],[3,"dismissed","toast","customTemplate"]],template:function(o,n){o&1&&Be(0,wo,3,5,"div",0,pt),o&2&&je(n.positions)},dependencies:[x,Gt],styles:[".toast-container[_ngcontent-%COMP%]{position:fixed;z-index:99999;max-width:100%;pointer-events:none;text-shadow:none}.toast-top-right[_ngcontent-%COMP%]{top:1rem;right:1rem}.toast-top-left[_ngcontent-%COMP%]{top:1rem;left:1rem}.toast-bottom-right[_ngcontent-%COMP%]{bottom:1rem;right:1rem}.toast-bottom-left[_ngcontent-%COMP%]{bottom:1rem;left:1rem}.toast-container[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{pointer-events:auto}.toast-container.mobile-layout[_ngcontent-%COMP%]{max-width:calc(100vw - 1rem)}.toast-container.mobile-layout.toast-top-right[_ngcontent-%COMP%], .toast-container.mobile-layout.toast-bottom-right[_ngcontent-%COMP%]{right:.5rem}.toast-container.mobile-layout.toast-top-left[_ngcontent-%COMP%], .toast-container.mobile-layout.toast-bottom-left[_ngcontent-%COMP%]{left:.5rem}.toast-container.mobile-layout.toast-top-right[_ngcontent-%COMP%], .toast-container.mobile-layout.toast-top-left[_ngcontent-%COMP%]{top:.5rem}.toast-container.mobile-layout.toast-bottom-right[_ngcontent-%COMP%], .toast-container.mobile-layout.toast-bottom-left[_ngcontent-%COMP%]{bottom:.5rem}.toast-container.mobile-layout[_ngcontent-%COMP%] .toast{max-width:calc(100vw - 1rem);width:auto;min-width:250px}.toast-container[_ngcontent-%COMP%] *[_ngcontent-%COMP%]{box-shadow:none!important}.toast-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:brown}"]})}}return t})();var Po=["messageInput"],ko=(t,r)=>({modalService:t,data:r});function To(t,r){if(t&1){let e=b();i(0,"button",14),u("click",function(){g(e);let n=c(3);return h(n.modalService.closeModal())}),a()}}function Oo(t,r){if(t&1){let e=b();i(0,"button",15),u("click",function(){g(e);let n=c(3);return h(n.modalService.dismiss())}),d(1),a()}if(t&2){let e=c(3);Z("btn "+(e.getGenericData().dismissClass||"btn-secondary")),l(),D(" ",e.getGenericData().dismissText||"Cancel"," ")}}function Eo(t,r){if(t&1){let e=b();i(0,"button",15),u("click",function(){g(e);let n=c(3);return h(n.modalService.confirm())}),d(1),a()}if(t&2){let e=c(3);Z("btn "+(e.getGenericData().confirmClass||"btn-primary")),l(),D(" ",e.getGenericData().confirmText," ")}}function zo(t,r){if(t&1&&(L(0),i(1,"div",8)(2,"h4",9),d(3),a(),m(4,To,1,0,"button",10),a(),f(5,"div",11),i(6,"div",12),m(7,Oo,2,3,"button",13)(8,Eo,2,3,"button",13),a(),R()),t&2){let e=c(2);l(2),p("id","modal-title-"+e.modalId),l(),D(" ",e.getGenericData().title," "),l(),p("ngIf",e.getGenericData().showClose!==!1),l(),p("innerHTML",e.getGenericData().body,Y),l(2),p("ngIf",e.getGenericData().showDismiss!==!1),l(),p("ngIf",e.getGenericData().confirmText)}}function Io(t,r){if(t&1){let e=b();i(0,"div",12)(1,"button",15),u("click",function(){g(e);let n=c(3);return h(n.modalService.confirm())}),d(2),a(),i(3,"button",19),u("click",function(){g(e);let n=c(3);return h(n.modalService.dismiss())}),d(4),a()()}if(t&2){let e=c(3);l(),Z("btn btn-"+(e.getConfirmationData().confirmClass||"primary")),l(),D(" ",e.getConfirmationData().confirmText||"Confirm"," "),l(2),D(" ",e.getConfirmationData().cancelText||"Cancel"," ")}}function Lo(t,r){if(t&1){let e=b();i(0,"div",12)(1,"button",20),u("click",function(){g(e);let n=c(3);return h(n.modalService.confirm())}),d(2," OK "),a()()}}function Ro(t,r){if(t&1&&(L(0),i(1,"div",8)(2,"h5",16),d(3),a()(),i(4,"div",17)(5,"p"),d(6),a()(),m(7,Io,5,4,"div",18)(8,Lo,3,0,"div",18),R()),t&2){let e=c(2);l(3),C(e.getConfirmationData().title),l(3),C(e.getConfirmationData().body),l(),p("ngIf",!e.getConfirmationData().isInfo),l(),p("ngIf",e.getConfirmationData().isInfo)}}function Do(t,r){if(t&1){let e=b();L(0),i(1,"div",8)(2,"h5",16),d(3),a()(),i(4,"div",17)(5,"div",21)(6,"textarea",22,0),oe("ngModelChange",function(n){g(e);let s=c(2);return te(s.messageText,n)||(s.messageText=n),h(n)}),d(8," "),a(),i(9,"small",23),d(10),a()()(),i(11,"div",12)(12,"button",24),u("click",function(){g(e);let n=c(2);return h(n.sendMessage())}),f(13,"i",25),d(14," Send "),a(),i(15,"button",19),u("click",function(){g(e);let n=c(2);return h(n.modalService.dismiss())}),d(16," Cancel "),a()(),R()}if(t&2){let e=c(2);l(3),C(e.getMessageData().title||"Send Message to Spectators"),l(3),p("placeholder",e.getMessageData().placeholder||"Enter your message..."),ee("ngModel",e.messageText),p("maxlength",e.getMessageData().maxLength||200),l(4),xe("",e.messageText.length,"/",e.getMessageData().maxLength||200," characters"),l(2),p("disabled",!e.messageText.trim())}}function Vo(t,r){t&1&&X(0)}function Ao(t,r){if(t&1&&(L(0),m(1,Vo,1,0,"ng-container",26),R()),t&2){let e=c(2);l(),p("ngTemplateOutlet",e.customTemplates[e.modalType()])("ngTemplateOutletContext",ne(2,ko,e.modalService,e.modalData()))}}function Fo(t,r){if(t&1){let e=b();i(0,"div",8)(1,"h5",16),d(2),a(),i(3,"button",14),u("click",function(){g(e);let n=c(3);return h(n.modalService.closeModal())}),a()()}if(t&2){let e=c(3);l(2),C(e.getImageData().title)}}function No(t,r){if(t&1){let e=b();i(0,"div",12)(1,"button",19),u("click",function(){g(e);let n=c(3);return h(n.modalService.closeModal())}),d(2," Close "),a()()}}function Ho(t,r){if(t&1){let e=b();L(0),m(1,Fo,4,1,"div",27),i(2,"div",28)(3,"img",29),u("click",function(){g(e);let n=c(2);return h(n.modalService.closeModal())}),a()(),m(4,No,3,0,"div",18),R()}if(t&2){let e=c(2);l(),p("ngIf",e.getImageData().title),l(2),p("src",e.getImageData().src,N)("alt",e.getImageData().alt||"Screenshot"),l(),p("ngIf",!e.getImageData().title)}}function Bo(t,r){if(t&1){let e=b();i(0,"div",2)(1,"div",3),u("click",function(){g(e);let n=c();return h(n.onBackdropClick())}),a(),i(2,"div",4)(3,"div",5)(4,"div",6),m(5,zo,9,6,"ng-container",7)(6,Ro,9,4,"ng-container",7)(7,Do,17,7,"ng-container",7)(8,Ao,2,5,"ng-container",7)(9,Ho,5,4,"ng-container",7),a()()()()}if(t&2){let e=c();l(2),st("aria-labelledby","modal-title-"+e.modalId),l(),K("modal-sm",e.isConfirmationModal()||e.isMessageModal())("modal-lg",e.hasCustomTemplate())("modal-xl",e.isImageModal()),l(2),p("ngIf",e.isGenericModal()),l(),p("ngIf",e.isConfirmationModal()),l(),p("ngIf",e.isMessageModal()),l(),p("ngIf",e.hasCustomTemplate()),l(),p("ngIf",e.isImageModal())}}var Le=(()=>{class t{constructor(){this.customTemplates={},this.modalService=v(Et),this.modalId=Math.random().toString(36).substr(2,9),this.messageText="",this.isOpen=O(()=>this.modalService.modal().isOpen),this.modalType=O(()=>this.modalService.modal().type),this.modalData=O(()=>this.modalService.modal().data),this.isGenericModal=O(()=>this.modalType()==="generic"),this.isConfirmationModal=O(()=>this.modalType()==="confirmation"),this.isMessageModal=O(()=>this.modalType()==="message"),this.isImageModal=O(()=>this.modalType()==="image"),this.hasCustomTemplate=O(()=>!!this.customTemplates[this.modalType()]),this.getGenericData=O(()=>this.modalData()),this.getConfirmationData=O(()=>this.modalData()),this.getMessageData=O(()=>this.modalData()),this.getImageData=O(()=>this.modalData())}ngAfterViewChecked(){this.isMessageModal()&&this.isOpen()&&this.messageInput&&setTimeout(()=>{this.messageInput?.nativeElement.focus()},100)}sendMessage(){this.messageText.trim()&&(this.modalService.confirm(this.messageText.trim()),this.messageText="")}formatDate(e){if(!e)return"";let n=Math.abs(new Date().getTime()-e.getTime()),s=Math.ceil(n/(1e3*60*60*24));return s===0?"Today":s===1?"Yesterday":s<7?`${s} days ago`:e.toLocaleDateString()}onBackdropClick(){let e=this.modalData();this.isGenericModal()&&e?.showClose!==!1?this.modalService.closeModal():this.isGenericModal()||this.modalService.closeModal()}onEscapeKey(e){if(this.isOpen()){let o=this.modalData();this.isGenericModal()&&o?.showClose!==!1?this.modalService.closeModal():this.isGenericModal()||this.modalService.closeModal()}}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-shell-modal"]],viewQuery:function(o,n){if(o&1&&P(Po,5),o&2){let s;k(s=T())&&(n.messageInput=s.first)}},hostBindings:function(o,n){o&1&&u("keydown.escape",function(_){return n.onEscapeKey(_)},!1,rt)},inputs:{customTemplates:"customTemplates"},decls:1,vars:1,consts:[["messageInput",""],["class","modal-portal",4,"ngIf"],[1,"modal-portal"],[1,"modal-backdrop","fade","show",3,"click"],["tabindex","-1","role","dialog","aria-hidden","false",1,"modal","fade","show","d-block"],["role","document",1,"modal-dialog"],[1,"modal-content"],[4,"ngIf"],[1,"modal-header"],[1,"modal-title",3,"id"],["type","button","class","btn-close","aria-label","Close",3,"click",4,"ngIf"],[1,"modal-body","text-center",3,"innerHTML"],[1,"modal-footer"],["type","button",3,"class","click",4,"ngIf"],["type","button","aria-label","Close",1,"btn-close",3,"click"],["type","button",3,"click"],[1,"modal-title"],[1,"modal-body"],["class","modal-footer",4,"ngIf"],["type","button",1,"btn","btn-secondary",3,"click"],["type","button",1,"btn","btn-primary",3,"click"],[1,"form-group"],["rows","3",1,"form-control",3,"ngModelChange","placeholder","ngModel","maxlength"],[1,"form-text"],["type","button",1,"btn","btn-success",3,"click","disabled"],[1,"fa","fa-paper-plane"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["class","modal-header",4,"ngIf"],[1,"modal-body","text-center","image-modal-body"],[1,"img-fluid","modal-image",3,"click","
1src","alt"]],template:function(o,n){o&1&&m(0,Bo,10,12,"div",1),o&2&&p("ngIf",n.isOpen())},dependencies:[x,M,ie,Oe,Se,Pe,Te,ke],styles:[".modal-portal[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:30000;pointer-events:none}.modal[_ngcontent-%COMP%]{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:30001;pointer-events:auto}.modal-backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:30000;pointer-events:auto}.image-modal-body[_ngcontent-%COMP%]{padding:0}.modal-image[_ngcontent-%COMP%]{max-width:100%;max-height:90vh;cursor:pointer}.modal-xl[_ngcontent-%COMP%] .modal-content[_ngcontent-%COMP%]{max-width:95vw;max-height:95vh}.modal-xl[_ngcontent-%COMP%] .image-modal-body[_ngcontent-%COMP%]{padding:.5rem;max-height:90vh;display:flex;align-items:center;justify-content:center}"]})}}return t})();var jo=[[["","slot","center"]],"*",[["","slot","top"]],[["","slot","left"]],[["","slot","right"]],[["","slot","bottom"]]],Uo=["[slot=center]","*","[slot=top]","[slot=left]","[slot=right]","[slot=bottom]"];function Wo(t,r){if(t&1){let e=b();i(0,"div",11),u("mousedown",function(n){g(e);let s=c(2);return h(s.startResizeVertical("top",n))}),a()}}function $o(t,r){if(t&1&&(i(0,"div",9),Q(1,2),m(2,Wo,1,0,"div",10),a()),t&2){let e=c();l(2),p("ngIf",e.isPanelResizable("top")&&!e.isMobile())}}function Go(t,r){if(t&1){let e=b();i(0,"div",14),u("mousedown",function(n){g(e);let s=c(2);return h(s.startResize("left",n))}),a()}}function Qo(t,r){if(t&1&&(i(0,"div",12),Q(1,3),m(2,Go,1,0,"div",13),a()),t&2){let e=c();l(2),p("ngIf",e.isPanelResizable("left")&&!e.isMobile())}}function qo(t,r){if(t&1){let e=b();i(0,"button",15),u("click",function(){g(e);let n=c();return h(n.toggleFloatingLeft())}),f(1,"i",16),a()}}function Jo(t,r){if(t&1){let e=b();i(0,"button",17),u("click",function(){g(e);let n=c();return h(n.toggleFloatingRight())}),f(1,"i",16),a()}}function Yo(t,r){if(t&1){let e=b();i(0,"div",20),u("mousedown",function(n){g(e);let s=c(2);return h(s.startResize("right",n))}),a()}}function Ko(t,r){if(t&1&&(i(0,"div",18),m(1,Yo,1,0,"div",19),Q(2,4),a()),t&2){let e=c();l(),p("ngIf",e.isPanelResizable("right")&&!e.isMobile())}}function Zo(t,r){if(t&1){let e=b();i(0,"div",23),u("mousedown",function(n){g(e);let s=c(2);return h(s.startResizeVertical("bottom",n))}),a()}}function Xo(t,r){if(t&1&&(i(0,"div",21),m(1,Zo,1,0,"div",22),Q(2,5),a()),t&2){let e=c();l(),p("ngIf",e.isPanelResizable("bottom")&&!e.isMobile())}}var qt=(()=>{class t{constructor(){this.layoutService=v(B),this.router=v(z),this.enableLoadingIndicator=!0,this.customToastTemplates={},this.enableResizing=!1,this.routerSubscription=new Re,this.layoutSubscription=new Re,this.resizing=!1,this.resizePanel="",this.startX=0,this.startY=0,this.startWidth=0,this.startHeight=0,this.onResizeBound=this.onResize.bind(this),this.onResizeVerticalBound=this.onResizeVertical.bind(this),this.stopResizeBound=this.stopResize.bind(this),this.preventSelectionBound=this.preventSelection.bind(this)}ngOnInit(){this.setupGlobalNavigationLoading(),this.setupLayoutStyles(),this.setupResizing(),typeof requestAnimationFrame<"u"&&(this.layoutSubscription=this.layoutService.layoutState$.subscribe(()=>{requestAnimationFrame(()=>{this.setupLayoutStyles()})}))}setupResizing(){this.enableResizing&&this.layoutService.setAllPanelsResizable(!0)}shouldShowFloatingLeftHamburger(){let e=this.layoutService.leftPanel(),o=this.layoutService.topPanel(),n=this.getWindowWidth()<=this.layoutService.layoutMobileBreakpoint;return e.enabled&&(n?e.togglableMobile:e.togglableDesktop)&&(!o.enabled||!(n?o.visibleMobile:o.visibleDesktop))}shouldShowFloatingRightHamburger(){let e=this.layoutService.rightPanel(),o=this.layoutService.topPanel(),n=this.getWindowWidth()<=this.layoutService.layoutMobileBreakpoint;return e.enabled&&(n?e.togglableMobile:e.togglableDesktop)&&(!o.enabled||!(n?o.visibleMobile:o.visibleDesktop))}getWindowWidth(){return typeof window<"u"?window.innerWidth:1200}toggleLeftMobile(){this.layoutService.toggleMobileLeftMenu()}toggleRightMobile(){this.layoutService.toggleMobileRightMenu()}toggleFloatingLeft(){this.getWindowWidth()<=this.layoutService.layoutMobileBreakpoint?this.layoutService.leftPanel().displacesMobile?this.layoutService.togglePanelVisibility("left",!0):this.layoutService.toggleMobileLeftMenu():this.layoutService.togglePanelVisibility("left",!1)}toggleFloatingRight(){this.getWindowWidth()<=this.layoutService.layoutMobileBreakpoint?this.layoutService.rightPanel().displacesMobile?this.layoutService.togglePanelVisibility("right",!0):this.layoutService.toggleMobileRightMenu():this.layoutService.togglePanelVisibility("right",!1)}isMobile(){return this.getWindowWidth()<=this.layoutService.layoutMobileBreakpoint}isResizeEnabled(){return this.enableResizing}
1hasFloatingHamburger(){return this.shouldShowFloatingLeftHamburger()||this.shouldShowFloatingRightHamburger()}isPanelResizable(e){let o=this.isResizeEnabled(),n=this.layoutService.isPanelResizable(e);return o&&n}startResize(e,o){this.resizing=!0,this.resizePanel=e,this.startX=o.clientX,this.resizeHandle=o.target;let n=this.resizeHandle.closest(".layout-panel");this.startWidth=n.offsetWidth,this.resizeHandle.classList.add("dragging"),document.body.style.cursor="ew-resize",document.addEventListener("mousemove",this.onResizeBound,{passive:!1}),document.addEventListener("mouseup",this.stopResizeBound),document.addEventListener("selectstart",this.preventSelectionBound),o.preventDefault(),o.stopPropagation()}startResizeVertical(e,o){this.resizing=!0,this.resizePanel=e,this.startY=o.clientY,this.resizeHandle=o.target;let n=this.resizeHandle.closest(".layout-panel");this.startHeight=n.offsetHeight,this.resizeHandle.classList.add("dragging"),document.body.style.cursor="ns-resize",document.addEventListener("mousemove",this.onResizeVerticalBound,{passive:!1}),document.addEventListener("mouseup",this.stopResizeBound),document.addEventListener("selectstart",this.preventSelectionBound),o.preventDefault(),o.stopPropagation()}onResize(e){if(!this.resizing)return;e.preventDefault(),e.stopPropagation();let o=e.clientX-this.startX,n=this.startWidth+(this.resizePanel==="right"?-o:o),s=this.layoutService.getPanelConstraints(this.resizePanel);n=Math.max(s.min,Math.min(s.max,n)),this.layoutService.updatePanel(this.resizePanel,{widthDesktop:`${n}px`}),document.documentElement.style.setProperty(`--layout-${this.resizePanel}-width-desktop`,`${n}px`),this.layoutService.savePanelSize(this.resizePanel,n,!0)}onResizeVertical(e){if(!this.resizing)return;e.preventDefault(),e.stopPropagation();let o=e.clientY-this.startY,n=this.startHeight+(this.resizePanel==="top"?o:-o),s=this.layoutService.getPanelConstraints(this.resizePanel);n=Math.max(s.min,Math.min(s.max,n)),this.layoutService.updatePanel(this.resizePanel,{heightDesktop:`${n}px`}),document.documentElement.style.setProperty(`--layout-${this.resizePanel}-height`,`${n}px`),this.layoutService.savePanelSize(this.resizePanel,n,!1)}stopResize(){this.resizing=!1,this.resizeHandle&&this.resizeHandle.classList.remove("dragging"),document.body.style.cursor="",document.removeEventListener("mousemove",this.onResizeBound),document.removeEventListener("mousemove",this.onResizeVerticalBound),document.removeEventListener("mouseup",this.stopResizeBound),document.removeEventListener("selectstart",this.preventSelectionBound),this.resizeHandle=void 0}preventSelection(e){e.preventDefault()}setupLayoutStyles(){if(typeof document<"u")try{let e=this.layoutService.leftPanel(),o=this.layoutService.rightPanel(),n=this.layoutService.topPanel(),s=this.layoutService.bottomPanel(),_={"--layout-left-width-desktop":e.widthDesktop,"--layout-left-width-mobile":e.widthMobile,"--layout-right-width-desktop":o.widthDesktop,"--layout-right-width-mobile":o.widthMobile,"--layout-top-height":n.heightDesktop,"--layout-bottom-height":s.heightDesktop};Object.entries(_).forEach(([uo,$e])=>{$e&&document.documentElement.style.setProperty(uo,$e)});let w=document.querySelector(".layout-panel.layout-left"),U=document.querySelector(".layout-panel.layout-right"),q=document.querySelector(".layout-panel.layout-top"),W=document.querySelector(".layout-panel.layout-bottom");document.documentElement.style.setProperty("--layout-left-width-desktop",e.widthDesktop),document.documentElement.style.setProperty("--layout-right-width-desktop",o.widthDesktop),document.documentElement.style.setProperty("--layout-top-height-desktop",n.heightDesktop),document.documentElement.style.setProperty("--layout-bottom-height-desktop",s.heightDesktop)}catch(e){console.error("Error setting up layout styles:",e)}}ngOnDestroy(){this.routerSubscription.unsubscribe(),this.layoutSubscription.unsubscribe()}setupGlobalNavigationLoading(){this.enableLoadingIndicator&&this.routerSubscription.add(this.router.events.subscribe(e=>{e instanceof we||e instanceof Ct||e instanceof Mt||e instanceof wt}))}getLayoutClasses(){let e=["layout-container"],o=this.getWindowWidth()<=this.layoutService.layoutMobileBreakpoint;if(this.layoutService.isLeftVisible()){e.push("panel-left-visible");let n=this.layoutService.leftPanel();!o&&!n.displacesDesktop?e.push("panel-left-no-displace"):o&&n.displacesMobile&&e.push("panel-left-displace-mobile")}if(this.layoutService.isRightVisible()){e.push("panel-right-visible");let n=this.layoutService.rightPanel();!o&&!n.displacesDesktop?e.push("panel-right-no-displace"):o&&n.displacesMobile&&e.push("panel-right-displace-mobile")}return this.layoutService.isTopVisible()&&e.push("panel-top-visible"),this.layoutService.isBottomVisible()&&e.push("panel-bottom-visible"),this.layoutService.isMobileLeftMenuOpen()&&e.push("mobile-left-
1open"),this.layoutService.isMobileRightMenuOpen()&&e.push("mobile-right-open"),e}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-shell-layout"]],inputs:{enableLoadingIndicator:"enableLoadingIndicator",customToastTemplates:"customToastTemplates",enableResizing:"enableResizing"},ngContentSelectors:Uo,decls:13,vars:11,consts:[["class","layout-panel layout-top",4,"ngIf"],[1,"middle-content-row"],["class","layout-panel layout-left",4,"ngIf"],[1,"layout-panel","layout-center"],["class","floating-hamburger floating-left-hamburger",3,"click",4,"ngIf"],["class","floating-hamburger floating-right-hamburger",3,"click",4,"ngIf"],["class","layout-panel layout-right",4,"ngIf"],["class","layout-panel layout-bottom",4,"ngIf"],[3,"customTemplates"],[1,"layout-panel","layout-top"],["class","resize-handle resize-handle-bottom",3,"mousedown",4,"ngIf"],[1,"resize-handle","resize-handle-bottom",3,"mousedown"],[1,"layout-panel","layout-left"],["class","resize-handle resize-handle-right",3,"mousedown",4,"ngIf"],[1,"resize-handle","resize-handle-right",3,"mousedown"],[1,"floating-hamburger","floating-left-hamburger",3,"click"],[1,"fas","fa-bars"],[1,"floating-hamburger","floating-right-hamburger",3,"click"],[1,"layout-panel","layout-right"],["class","resize-handle resize-handle-left",3,"mousedown",4,"ngIf"],[1,"resize-handle","resize-handle-left",3,"mousedown"],[1,"layout-panel","layout-bottom"],["class","resize-handle resize-handle-top",3,"mousedown",4,"ngIf"],[1,"resize-handle","resize-handle-top",3,"mousedown"]],template:function(o,n){o&1&&(ct(jo),i(0,"div"),m(1,$o,3,1,"div",0),i(2,"div",1),m(3,Qo,3,1,"div",2),i(4,"div",3),m(5,qo,2,0,"button",4)(6,Jo,2,0,"button",5),Q(7),Q(8,1),a(),m(9,Ko,3,1,"div",6),a(),m(10,Xo,3,1,"div",7),f(11,"app-shell-modal"),a(),f(12,"app-shell-toast-container",8)),o&2&&(Z(n.getLayoutClasses().join(" ")),l(),p("ngIf",n.layoutService.isTopVisible()),l(2),p("ngIf",n.layoutService.isLeftVisible()),l(),K("has-floating-hamburger",n.hasFloatingHamburger()),l(),p("ngIf",n.shouldShowFloatingLeftHamburger()),l(),p("ngIf",n.shouldShowFloatingRightHamburger()),l(3),p("ngIf",n.layoutService.isRightVisible()),l(),p("ngIf",n.layoutService.isBottomVisible()),l(2),p("customTemplates",n.customToastTemplates))},dependencies:[x,M,H,Qt,Le],styles:['[_ngcontent-%COMP%]:root{--color-primary: #007bff;--color-secondary: #6c757d;--color-success: #28a745;--color-info: #17a2b8;--color-warning: #ffc107;--color-danger: #dc3545;--color-light: #f8f9fa;--color-dark: #343a40;--color-white: #ffffff;--color-black: #000000;--color-gray-100: #f8f9fa;--color-gray-200: #e9ecef;--color-gray-300: #dee2e6;--color-gray-400: #ced4da;--color-gray-500: #adb5bd;--color-gray-600: #6c757d;--color-gray-700: #495057;--color-gray-800: #343a40;--color-gray-900: #212529;--text-color: #212529;--text-muted: #6c757d;--text-white: #ffffff;--text-light: #f8f9fa;--body-bg: #ffffff;--surface-bg: #ffffff;--card-bg: #ffffff;--modal-bg: #ffffff;--border-color: #dee2e6;--border-light: #e9ecef;--border-dark: #adb5bd;--link-color: #007bff;--link-hover: #0056b3;--navbar-bg: #f8f9fa;--navbar-color: #212529;--dropdown-bg: #ffffff;--dropdown-border: #dee2e6;--dropdown-link-color: #212529;--dropdown-link-hover-bg: #f8f9fa;--btn-default-color: #212529;--btn-default-bg: #ffffff;--btn-default-border: #dee2e6;--input-bg: #ffffff;--input-color: #495057;--input-border: #ced4da;--input-focus-border: #80bdff;--input-placeholder-color: #6c757d;--table-bg: transparent;--table-accent-bg: #f8f9fa;--table-hover-bg: #f5f5f5;--table-border-color: #dee2e6;--spacer: 1rem;--spacer-xs: calc(var(--spacer) * .25);--spacer-sm: calc(var(--spacer) * .5);--spacer-md: var(--spacer);--spacer-lg: calc(var(--spacer) * 1.5);--spacer-xl: calc(var(--spacer) * 3);--border-radius: .375rem;--border-radius-sm: .25rem;--border-radius-lg: .5rem;--border-radius-xl: 1rem;--border-radius-pill: 50rem;--font-family-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif;--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-size-root: 16px;--font-size-base: 1rem;--font-size-sm: .875rem;--font-size-lg: 1.25rem;--line-height-base: 1.5;--font-weight-lighter: lighter;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-bolder: bolder;
1--box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, .075);--zindex-dropdown: 1000;--zindex-sticky: 1020;--zindex-fixed: 1030;--zindex-modal-backdrop: 1040;--zindex-offcanvas: 1045;--zindex-modal: 1050;--zindex-popover: 1070;--zindex-tooltip: 1080;--zindex-toast: 1090;--transition-base: all .2s ease-in-out;--transition-fade: opacity .15s linear;--transition-collapse: height .35s ease}[_ngcontent-%COMP%]:root{--breakpoint-xs: 576px;--breakpoint-sm: 768px;--breakpoint-md: 992px;--breakpoint-lg: 1200px;--breakpoint-xl: 1400px;--layout-mobile-max: var(--breakpoint-md);--layout-desktop-min: calc(var(--breakpoint-md) + 1px);--layout-tablet-max: var(--breakpoint-lg)}.cdk-overlay-container[_ngcontent-%COMP%]{z-index:10000!important}.layout-panel[_ngcontent-%COMP%]{display:flex;flex-direction:column;overflow:hidden}.layout-panel.layout-left[_ngcontent-%COMP%], .layout-panel.layout-right[_ngcontent-%COMP%]{flex-direction:column;justify-content:flex-start}.layout-panel.layout-left[_ngcontent-%COMP%]{width:var(--layout-left-width-desktop, 90px);background:transparent;padding:0;margin:0;height:100%;min-height:100vh;flex-shrink:0;overflow-y:auto;overflow-x:visible;contain:none;z-index:10;position:relative}@media (max-width: 992px){.layout-panel.layout-left[_ngcontent-%COMP%]{width:var(--layout-left-width-mobile, 250px);background:var(--layout-left-mobile-bg, var(--color-gray-100));padding:0;height:100vh;min-height:100vh}}.layout-panel.layout-right[_ngcontent-%COMP%]{width:var(--layout-right-width-desktop, 90px);background-color:var(--layout-right-bg, var(--color-gray-200));background-image:var(--layout-right-bg-image, none);background-repeat:var(--layout-right-bg-repeat, no-repeat);padding:var(--layout-right-padding, 10px);flex-shrink:0;overflow-y:auto;overflow-x:visible;contain:none;z-index:10;position:relative}@media (max-width: 992px){.layout-panel.layout-right[_ngcontent-%COMP%]{width:var(--layout-right-width-mobile, 250px);padding:var(--layout-right-padding-mobile, var(--layout-right-padding, 10px))}}.layout-panel.layout-top[_ngcontent-%COMP%]{flex-direction:row;justify-content:center;align-items:center;height:var(--layout-top-height, 60px);flex-shrink:0;width:100%;position:relative}.layout-panel.layout-bottom[_ngcontent-%COMP%]{flex-direction:row;justify-content:center;align-items:center;height:var(--layout-bottom-height, 60px);flex-shrink:0;width:100%;position:relative}.layout-panel.layout-center[_ngcontent-%COMP%]{flex:1;overflow:hidden;position:relative;display:flex;flex-direction:column;z-index:1}.layout-container[_ngcontent-%COMP%]{height:100vh;min-height:100vh;width:100%;margin:0;padding:0;overflow:hidden;position:relative;display:flex;flex-direction:column}.layout-container[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%]{flex:1;min-height:calc(100vh - var(--layout-top-height, 0px) - var(--layout-bottom-height, 0px));display:flex;flex-direction:row;overflow:hidden;position:relative;margin:0;padding:0;contain:none}.layout-container[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] > .layout-left[_ngcontent-%COMP%]{flex:0 0 var(--layout-left-width-desktop, 90px);width:var(--layout-left-width-desktop, 90px)}.layout-container[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] > .layout-right[_ngcontent-%COMP%]{flex:0 0 var(--layout-right-width-desktop, 90px);width:var(--layout-right-width-desktop, 90px)}.layout-container[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] > .layout-center[_ngcontent-%COMP%]{flex:1;min-width:0}@media (max-width: 992px){.layout-container[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-left[_ngcontent-%COMP%], .layout-container[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-right[_ngcontent-%COMP%]{width:0;flex:0 0 0;padding:0}.layout-container[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-center[_ngcontent-%COMP%]{flex:1;width:100%}}.layout-container.panel-left-visible[_ngcontent-%COMP%] .layout-left[_ngcontent-%COMP%]{display:flex;width:var(--layout-left-width-desktop, 90px)}.layout-container.panel-right-visible[_ngcontent-%COMP%] .layout-right[_ngcontent-%COMP%]{display:flex}.layout-container.panel-left-no-displace[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-left[_ngcontent-%COMP%]{position:absolute;
1left:0;top:0;bottom:0;z-index:100}.layout-container.panel-left-no-displace[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-center[_ngcontent-%COMP%]{margin-left:0;width:100%}.layout-container.panel-right-no-displace[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-right[_ngcontent-%COMP%]{position:absolute;right:0;top:0;bottom:0;z-index:100}.layout-container.panel-right-no-displace[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-center[_ngcontent-%COMP%]{margin-right:0;width:100%}.layout-container.panel-top-visible[_ngcontent-%COMP%] .layout-top[_ngcontent-%COMP%], .layout-container.panel-bottom-visible[_ngcontent-%COMP%] .layout-bottom[_ngcontent-%COMP%]{display:flex}.layout-container[_ngcontent-%COMP%]:not(.panel-left-visible) .middle-content-row[_ngcontent-%COMP%] .layout-left[_ngcontent-%COMP%]{display:none}.layout-container[_ngcontent-%COMP%]:not(.panel-right-visible) .middle-content-row[_ngcontent-%COMP%] .layout-right[_ngcontent-%COMP%]{display:none}@media (max-width: 992px){.layout-container.panel-left-visible.panel-left-displace-mobile[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-left[_ngcontent-%COMP%]{position:relative!important;transform:translate(0)!important;width:var(--layout-left-width-mobile, 250px)!important;flex:0 0 var(--layout-left-width-mobile, 250px);display:flex!important}.layout-container.panel-left-visible.panel-left-displace-mobile[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-center[_ngcontent-%COMP%]{flex:1;width:auto;margin-left:0}}@media (max-width: 992px){.layout-container.panel-right-visible.panel-right-displace-mobile[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-right[_ngcontent-%COMP%]{position:relative!important;transform:translate(0)!important;width:var(--layout-right-width-mobile, 250px)!important;flex:0 0 var(--layout-right-width-mobile, 250px);display:flex!important}.layout-container.panel-right-visible.panel-right-displace-mobile[_ngcontent-%COMP%] .middle-content-row[_ngcontent-%COMP%] .layout-center[_ngcontent-%COMP%]{flex:1;width:auto;margin-right:0}}@media (max-width: 992px){.layout-container.panel-left-displace-mobile[_ngcontent-%COMP%]:not(.panel-left-visible) .middle-content-row[_ngcontent-%COMP%] .layout-left[_ngcontent-%COMP%]{width:0!important;flex:0 0 0!important;display:none!important}}@media (max-width: 992px){.layout-container.panel-right-displace-mobile[_ngcontent-%COMP%]:not(.panel-right-visible) .middle-content-row[_ngcontent-%COMP%] .layout-right[_ngcontent-%COMP%]{width:0!important;flex:0 0 0!important;display:none!important}}@media (max-width: 992px){.layout-container.mobile-left-open[_ngcontent-%COMP%] .layout-left[_ngcontent-%COMP%]{position:absolute!important;top:0;left:0;bottom:0;width:var(--layout-left-width-mobile, 250px)!important;height:100vh!important;min-height:100vh!important;z-index:1000;background:var(--layout-left-mobile-bg, var(--color-gray-100));padding:10px;transform:translate(0);transition:transform .3s ease}.layout-container.mobile-right-open[_ngcontent-%COMP%] .layout-right[_ngcontent-%COMP%]{position:absolute!important;top:0;right:0;bottom:0;width:var(--layout-right-width-mobile, 250px)!important;height:100vh!important;min-height:100vh!important;z-index:1000;padding:10px;transform:translate(0);transition:transform .3s ease}.layout-container[_ngcontent-%COMP%] .layout-left[_ngcontent-%COMP%]{position:absolute;top:0;left:0;bottom:0;width:var(--layout-left-width-mobile, 250px);height:100vh;min-height:100vh;z-index:1000;background:var(--layout-left-mobile-bg, var(--color-gray-100));transform:translate(-100%);transition:transform .3s ease}.layout-container[_ngcontent-%COMP%] .layout-right[_ngcontent-%COMP%]{position:absolute;top:0;right:0;bottom:0;width:var(--layout-right-width-mobile, 250px);height:100vh;min-height:100vh;z-index:1000;transform:translate(100%);transition:transform .3s ease}}[_nghost-%COMP%] main{flex:1 1 auto;overflow:hidden;position:relative;contain:layout style paint;isolation:isolate;width:100%;max-width:100%}[_nghost-%COMP%] main>[id^=PAGE_]{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;padding-bottom:25px;width:100%;max-width:100%;box-sizing:border-box;contain:layout style}[_nghost-%COMP%] .layout-top>:not(.resize-handle){width:100%;height:100%;margin:0;padding:0;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}[_nghost-%COMP%] .layout-bottom>:not(.resize-handle){width:100%;height:100%;margin:0;padding:0;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box}[_nghost-%COMP%] router-outlet+*{height:100%;width:100%;overflow-y:auto;overflow-x:hidden;box-sizing:border-box;position:relative}[_nghost-%COMP%] [id^=PAGE_] article, [_nghost-%COMP%] [id^=PAGE_] .container, [_nghost-%COMP%] [id^=PAGE_]>div{position:relative}[_nghost-%COMP%] .layout-left nav::-webkit-scrollbar{width:4px}[_nghost-%COMP%] .layout-left nav::-webkit-scrollbar-track{background:#ffffff1a;border-radius:2px}[_nghost-%COMP%] .layout-left nav::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:2px}[_nghost-%COMP%] .layout-left nav::-webkit-scrollbar-thumb:hover{background:#ffffff80}.floating-hamburger[_ngcontent-%COMP%]{position:fixed;top:10px;background:#000000b3;color:var(--color-white);border:none;border-radius:6px;width:40px;height:40px;
1display:flex;align-items:center;justify-content:center;font-size:1.2rem;cursor:pointer;z-index:2000;box-shadow:0 2px 8px #0000004d;transition:all .3s ease}.floating-hamburger[_ngcontent-%COMP%]:hover{background:#000000e6;transform:scale(1.05)}.floating-hamburger.floating-left-hamburger[_ngcontent-%COMP%]{left:10px}@media (max-width: 992px){.floating-hamburger.floating-left-hamburger[_ngcontent-%COMP%]{left:10px}}.floating-hamburger.floating-right-hamburger[_ngcontent-%COMP%]{right:10px}@media (max-width: 992px){.floating-hamburger.floating-right-hamburger[_ngcontent-%COMP%]{right:10px}}.layout-container.panel-left-visible[_ngcontent-%COMP%]:not(.panel-left-no-displace) .floating-left-hamburger[_ngcontent-%COMP%]{left:calc(var(--layout-left-width-desktop, 90px) + 10px);z-index:2000}@media (max-width: 992px){.layout-container.panel-left-visible[_ngcontent-%COMP%]:not(.panel-left-no-displace) .floating-left-hamburger[_ngcontent-%COMP%]{left:calc(var(--layout-left-width-mobile, 250px) + 10px)}}@media (max-width: 992px){.layout-container.panel-left-visible[_ngcontent-%COMP%]:not(.mobile-left-open) .floating-left-hamburger[_ngcontent-%COMP%]{left:10px}}.layout-container.panel-right-visible[_ngcontent-%COMP%]:not(.panel-right-no-displace) .floating-right-hamburger[_ngcontent-%COMP%]{right:calc(var(--layout-right-width-desktop, 90px) + 10px);z-index:2000}@media (max-width: 992px){.layout-container.panel-right-visible[_ngcontent-%COMP%]:not(.panel-right-no-displace) .floating-right-hamburger[_ngcontent-%COMP%]{right:calc(var(--layout-right-width-mobile, 250px) + 10px)}}@media (max-width: 992px){.layout-container.panel-right-visible[_ngcontent-%COMP%]:not(.mobile-right-open) .floating-right-hamburger[_ngcontent-%COMP%]{right:10px}}.layout-container.panel-left-no-displace[_ngcontent-%COMP%] .floating-left-hamburger[_ngcontent-%COMP%]{left:calc(var(--layout-left-width-desktop, 90px) + 10px);z-index:2000}.layout-container.panel-right-no-displace[_ngcontent-%COMP%] .floating-right-hamburger[_ngcontent-%COMP%]{right:calc(var(--layout-right-width-desktop, 90px) + 10px);z-index:2000}@media (max-width: 992px){.floating-hamburger[_ngcontent-%COMP%]{z-index:2000;background:#212529e6;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.floating-hamburger[_ngcontent-%COMP%]:hover{background:#212529}[_nghost-%COMP%] .layout-panel.layout-center.has-floating-hamburger [id^=COMPONENT_]{margin-top:60px!important}}.resize-handle[_ngcontent-%COMP%]{position:absolute;background:#dee2e6;opacity:1;z-index:1050;transition:all .2s ease}.resize-handle[_ngcontent-%COMP%]:hover{background:#adb5bd;opacity:1}.resize-handle.dragging[_ngcontent-%COMP%]{opacity:1;background:#007bff}.resize-handle.resize-handle-right[_ngcontent-%COMP%]{top:0;right:0;bottom:0;width:1px;cursor:ew-resize}.resize-handle.resize-handle-right[_ngcontent-%COMP%]:hover{width:2px;right:-.5px}.resize-handle.resize-handle-right.dragging[_ngcontent-%COMP%]{width:4px;right:-1.5px}.resize-handle.resize-handle-left[_ngcontent-%COMP%]{top:0;left:0;bottom:0;width:1px;cursor:ew-resize}.resize-handle.resize-handle-left[_ngcontent-%COMP%]:hover{width:2px;left:-.5px}.resize-handle.resize-handle-left.dragging[_ngcontent-%COMP%]{width:4px;left:-1.5px}.resize-handle.resize-handle-bottom[_ngcontent-%COMP%]{left:0;right:0;bottom:0;height:1px;cursor:ns-resize}.resize-handle.resize-handle-bottom[_ngcontent-%COMP%]:hover{height:2px;bottom:-.5px}.resize-handle.resize-handle-bottom.dragging[_ngcontent-%COMP%]{height:4px;bottom:-1.5px}.resize-handle.resize-handle-top[_ngcontent-%COMP%]{left:0;right:0;top:0;height:1px;cursor:ns-resize}.resize-handle.resize-handle-top[_ngcontent-%COMP%]:hover{height:2px;
1top:-.5px}.resize-handle.resize-handle-top.dragging[_ngcontent-%COMP%]{height:4px;top:-1.5px}.layout-panel[_ngcontent-%COMP%]{position:relative}@media (max-width: 992px){.mobile-left-open[_ngcontent-%COMP%] .layout-left[_ngcontent-%COMP%], .mobile-right-open[_ngcontent-%COMP%] .layout-right[_ngcontent-%COMP%]{height:100vh!important;min-height:100vh!important}}']})}}return t})();function en(t,r){if(t&1&&(i(0,"p",5),d(1),a()),t&2){let e=c(2);l(),C(e.message)}}function tn(t,r){if(t&1&&(i(0,"div",1)(1,"div",2),f(2,"div",3),m(3,en,2,1,"p",4),a()()),t&2){let e=c();l(3),p("ngIf",e.message)}}var Jt=(()=>{class t{constructor(){this.show=!1,this.message="Loading..."}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-shell-generic-loader"]],inputs:{show:"show",message:"message"},decls:1,vars:1,consts:[["class","loader-overlay",4,"ngIf"],[1,"loader-overlay"],[1,"loader-content"],[1,"spinner"],["class","loading-message",4,"ngIf"],[1,"loading-message"]],template:function(o,n){o&1&&m(0,tn,4,1,"div",0),o&2&&p("ngIf",n.show)},dependencies:[x,M],styles:[".loader-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000b3;display:flex;justify-content:center;align-items:center;z-index:10000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.loader-content[_ngcontent-%COMP%]{text-align:center;color:#fff}.spinner[_ngcontent-%COMP%]{width:60px;height:60px;border:4px solid rgba(255,255,255,.3);border-top:4px solid white;border-radius:50%;animation:_ngcontent-%COMP%_spin 1s linear infinite;margin:0 auto 20px}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-message[_ngcontent-%COMP%]{font-size:18px;font-weight:500;margin:0;text-shadow:0 2px 4px rgba(0,0,0,.5)}"]})}}return t})();var on=(t,r)=>({show:t,message:r});function nn(t,r){t&1&&X(0)}function rn(t,r){if(t&1&&(L(0),m(1,nn,1,0,"ng-container",2),R()),t&2){let e=c();l(),p("ngTemplateOutlet",e.getCustomTemplate())("ngTemplateOutletContext",ne(2,on,e.isLoading(),e.loadingMessage()||"Loading..."))}}function an(t,r){if(t&1&&f(0,"app-shell-generic-loader",3),t&2){let e=c();p("show",e.isLoading())("message",e.loadingMessage()||"Loading...")}}var Yt=(()=>{class t{constructor(){this.customTemplates={},this.loadingService=v(Tt),this.isLoading=O(()=>this.loadingService.loading().isLoading),this.currentLoaderType=O(()=>this.loadingService.loading().loaderType),this.loadingMessage=O(()=>this.loadingService.loading().message)}getCustomTemplate(){return this.customTemplates[this.currentLoaderType()]}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-shell-loading-indicator"]],inputs:{customTemplates:"customTemplates"},decls:3,vars:2,consts:[["genericLoader",""],[4,"ngIf","ngIfElse"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[3,"show","message"]],template:function(o,n){if(o&1&&m(0,rn,2,5,"ng-container",1)(1,an,1,2,"ng-template",null,0,E),o&2){let s=ye(2);p("ngIf",n.getCustomTemplate())("ngIfElse",s)}},dependencies:[x,M,ie,Jt],encapsulation:2})}}return t})();var Kt=(()=>{class t{constructor(e){this.router=e,this.injector=v(fe)}handleError(e){console.error("An error occurred:",e),e instanceof ft?this.handleHttpError(e):(console.error("Client-side error:",e),this.showErrorToast(e))}handleHttpError(e){let o=e.status,n=`HTTP ${o}: ${e.statusText}`;e.error&&typeof e.error=="string"?n=e.error:e.error&&e.error.message&&(n=e.error.message);try{import("./chunk-DNHJD6O5.js").then(s=>{let _=s.AppShellService,w=this.injector.get(_);w&&w.getServices?w.getServices().showToastError(n):console.error("Error showing toast:",n)}).catch(s=>{console.error("Error importing AppShellService:",s),console.error("Original error:",n)})}catch(s){console.error("Error getting AppShellService:",s),console.error("Original error:",n)}switch(o){case 400:case 401:case 403:case 404:case 500:case 503:this.router.navigate(["/error",o]);break;default:this.router.navigate(["/error",500]);break}}showErrorToast(e){let o="An unexpected error occurred";e&&e.message?o=e.message:typeof e=="string"?o=e:e&&e.toString&&(o=e.toString());try{import("./chunk-DNHJD6O5.js").then(n=>{let s=n.AppShellService,_=this.injector.get(s);_&&_.getServices?_.getServices().showToastError(o):console.error("Error showing toast:",o)}).catch(n=>{console.error("Error importing AppShellService:",n),console.error("Original error:",o)})}catch(n){console.error("Error getting AppShellService:",n),console.error("Original error:",o)}}navigateToError(e){this.router.navigate(["/error",e])}static{this.\u0275fac=function(o){return new(o||t)(ce(z))}}static{this.\u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Zt=(()=>{class t{constructor(){this.resolvers=new Map}registerResolvers(e){e.forEach(o=>{this.resolvers.set(o.key,o)})}resolveData(e){return le(this,null,function*(){let o=e.map(n=>{let s=this.resolvers.get(n);if(!s)return console.warn(`No resolver found for key: ${n}`),$(null);let _=s.resolver();return _ instanceof Promise?_.catch(w=>(console.error(`Resolver error for ${n}:`,w),null)):_.pipe(Ye(w=>(console.error(`Resolver error for ${n}:`,w),$(null))))});try{let n=yield Promise.all(o),s={};return e.forEach((_,w)=>{s[_]=n[w]}),s}catch(n){return console.error("Error resolving data:",n),{}}})}clearResolvers(){this.resolvers.clear()}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function Xt(t){return[It(()=>Lt(t.firebase)),Rt(()=>{let r=Vt();if(!t.production&&t.useEmulators)try{Dt(r,"http://localhost:9099",{disableWarnings:!0})}catch{}return r}),At(()=>{let r=Nt();if(!t.production&&t.useEmulators)try{Ft(r,"localhost",8080)}catch{}return r}),ze(()=>{let r=Ie();if(!t.production&&t.useEmulators)try{Ht(r,"localhost",9199)}catch{}return r}),j,Ee,Zt]}var eo=(()=>{class t{constructor(){this.router=v(z),this.firestoreService=v(Ee),this.reroutes={},this.loaded=!1,this.setupRouterListener()}setupRouterListener(){this.router.events.pipe(G(e=>e instanceof we)).subscribe(e=>{this.loaded&&this.checkAndRedirect(e.url)})}loadReroutes(){return le(this,null,function*(){try{return new Promise(e=>{this.firestoreService.getDocument("manifest","status").subscribe(o=>{this.reroutes=o?.reroutes||{},this.loaded=!0,e()},o=>{console.error("Error loading reroutes:",o),this.loaded=!0,e()})})}catch(e){console.error("Error loading reroutes:",e),this.loaded=!0}})}initialize(){return le(this,null,function*(){yield this.loadReroutes()})}
1checkAndRedirect(e){if(!this.loaded)return!1;let o=e.startsWith("/")?e:`/${e}`,n=this.reroutes[o];return n?(this.router.navigateByUrl(n),!0):!1}getReroutes(){return he({},this.reroutes)}isLoaded(){return this.loaded}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var to={siteName:"Jolly Crouton",version:"2.0.0",backend:{type:"firebase",required:!0,config:{enablePersistence:!0,settings:{cacheSizeBytes:4e7}}},layout:{panels:{left:{enabled:!0,mobileCollapsible:!0},right:{enabled:!1,mobileCollapsible:!0},top:{enabled:!0},bottom:{enabled:!1}},responsive:{mobileBreakpoint:768,tabletBreakpoint:1024}},features:{pwa:!0,firebase:!0,sounds:{buttonUp:"sounds/btn-up.mp3",buttonDown:"sounds/btn-down.mp3"},analytics:!0,auth:!0,storage:!0,realtime:!0}};var sn=(()=>{class t{constructor(){this.auth=v(j),this.router=v(z)}canActivate(e,o){return this.auth.user$.pipe(A(1),V(n=>!n?(this.router.navigate(["/login"],{queryParams:{returnUrl:o.url}}),!1):!0))}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),ge=(t,r)=>v(sn).canActivate(t,r);var ln=(()=>{class t{constructor(){this.auth=v(j),this.router=v(z)}canActivate(e,o){return this.auth.userWithAdminStatus$.pipe(A(1),V(({user:n,isAdmin:s})=>n?s?!0:(this.router.navigate(["/"]),!1):(this.router.navigate(["/login"],{queryParams:{returnUrl:o.url}}),!1)))}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275prov=I({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),oo=(t,r)=>v(ln).canActivate(t,r);var no=[{path:"",loadComponent:()=>import("./chunk-NECT2RX4.js").then(t=>t.HomeComponent),data:{title:"Home",description:"Jolly Crouton Media Ltd. - Independent game studio in Cincinnati, Ohio creating innovative PC games including Splotches, Match Point, Franchise Wars, and more.",keywords:"Jolly Crouton, game studio, indie games, PC games, Cincinnati, Ohio, game developer",ogImage:"/images/jolly-crouton-logo.png",prerender:!0}},{path:"login",loadComponent:()=>import("./chunk-V62AZJ3G.js").then(t=>t.LoginComponent),data:{title:"Login"}},{path:"services",loadComponent:()=>import("./chunk-U5PHE3C3.js").then(t=>t.ServicesPageComponent),data:{title:"Development Services",description:"Professional game development services from Jolly Crouton. Custom game development, consultation, and technical expertise for your gaming projects.",keywords:"game development services, custom games, game consultation, indie game development, Cincinnati",ogImage:"/images/jolly-crouton-logo.png",prerender:!0}},{path:"terms",loadComponent:()=>import("./chunk-AIG5ICHH.js").then(t=>t.TermsComponent),data:{title:"Terms of Service",prerender:!0}},{path:"privacy",loadComponent:()=>import("./chunk-3HOU3MYQ.js").then(t=>t.PrivacyComponent),data:{title:"Privacy Policy",prerender:!0}},{path:"privacy/:app",loadComponent:()=>import("./chunk-3HOU3MYQ.js").then(t=>t.PrivacyComponent),data:{title:"Privacy Policy",prerender:!0,dynamicRoutes:{collection:"static",pathField:"app",staticValues:["matchpoint","splotches","franchisewars","zooblies","rodentrush","quirkshop"]}}},{path:"privacy/:app/:focus",loadComponent:()=>import("./chunk-3HOU3MYQ.js").then(t=>t.PrivacyComponent),data:{title:"Privacy Policy",prerender:!0,dynamicRoutes:{collection:"static",pathField:"app",staticValues:["matchpoint","splotches","franchisewars","zooblies","rodentrush","quirkshop"]}}},{path:"jobs",loadComponent:()=>import("./chunk-X7MRFT53.js").then(t=>t.JobsComponent),data:{title:"Jobs",description:"Career opportunities at Jolly Crouton Media Ltd. Join our indie game development team in Cincinnati, Ohio.",keywords:"game development jobs, indie game careers, Cincinnati jobs, game industry careers",ogImage:"/images/jolly-crouton-logo.png",prerender:!0}},{path:"jobs/:job",loadComponent:()=>import("./chunk-X7MRFT53.js").then(t=>t.JobsComponent),data:{title:"Jobs",prerender:!0,dynamicRoutes:{collection:"jobs",pathField:"URLName"}}},{path:"arcades",loadComponent:()=>import("./chunk-6IQQ5GBH.js").then(t=>t.ArcadesComponent),data:{title:"Hot Rod Custom Arcades",prerender:!0}},{path:"button/:sound",loadComponent:()=>import("./chunk-6QULTBLI.js").then(t=>t.ButtonsComponent),data:{title:"Sound Button",prerender:!0,dynamicRoutes:{collection:"static",pathField:"sound",staticValues:[]}}},{path:"contact",loadComponent:()=>import("./chunk-3AL5HOKC.js").then(t=>t.ContactComponent),data:{title:"Contact Us",prerender:!0}},{path:"thanks",loadComponent:()=>import("./chunk-7RKGCBE4.js").then(t=>t.ThanksComponent),data:{title:"Thank You",prerender:!0}},{path:"games",loadComponent:()=>import("./chunk-HSBBC54G.js").then(t=>t.GamesComponent),data:{title:"Games",prerender:!0}},{path:"matchpoint",loadComponent:()=>import("./chunk-7HCRIRVI.js").then(t=>t.MatchpointComponent),data:{title:"Match Point",description:"Match Point - Tournament bracket system and competitive gaming platform. Create and manage tournaments for your games.",keywords:"Match Point, tournament bracket, competitive gaming, PC game, tournament management",ogImage:"/images/box-art-match-point.png",prerender:!0}},{path:"splotches",loadComponent:()=>import("./chunk-DXXY3FO6.js").then(t=>t.SplotchesComponent),data:{title:"Splotches",description:"Splotches - The addictive puzzle game where you collect colored dots and create chain reactions. Download for Windows PC.",keywords:"Splotches, puzzle game, PC game, chain reaction, colored dots, addictive game",ogImage:"/images/box-art-splotches.png",prerender:!0}},{path:"franchisewars",loadComponent:()=>import("./chunk-54YPSH3B.js").then(t=>t.FranchiseWarsComponent),data:{title:"Franchise Wars",description:"Franchise Wars - Strategic battle game where you manage franchises and compete for market dominance. Download for Windows PC.",keywords:"Franchise Wars, strategy game, PC game, business simulation, management game",ogImage:"/images/box-art-franchise-wars.png",prerender:!0}},{path:"zooblies",loadComponent:()=>import("./chunk-GE5LJFAV.js").then(t=>t.ZoobliesComponent),data:{title:"Zooblies",description:"Zooblies - Fun arcade game with adorable creatures and exciting gameplay mechanics. Download for Windows PC.",keywords:"Zooblies, arcade game, PC game, cute creatures, fun gameplay",ogImage:"/images/box-art-zooblies.png",prerender:!0}},{path:"rodentrush",loadComponent:()=>import("./chunk-BUNAZJLM.js").then(t=>t.RodentrushComponent),data:{title:"Rodent Rush",description:"Rodent Rush - Fast-paced action game featuring quick reflexes and exciting challenges. Download for Windows PC.",keywords:"Rodent Rush, action game, PC game, fast-paced, reflexes, arcade",ogImage:"/images/box-art-highlight.png",prerender:!0}},{path:"quirkshop",loadComponent:()=>import("./chunk-PS2VRIB6.js").then(t=>t.QuirkshopComponent),data:{title:"Gameplay Quirkshop",description:"Gameplay Quirkshop - Experimental gaming concepts and unique gameplay mechanics from Jolly Crouton.",keywords:"Gameplay Quirkshop, experimental games, unique mechanics, indie games",ogImage:"/images/box-art-highlight.png",prerender:!0}},{path:"press",loadComponent:()=>import("./chunk-YYNDWMRG.js").then(t=>t.PressComponent),data:{title:"Press Kit",description:"Press kits and media resources for Jolly Crouton games. Download screenshots, logos, game information and more for press coverage.",keywords:"press kit, game media, screenshots, logos, press coverage, game journalism",ogImage:"/images/jolly-crouton-logo.png",prerender:!0}},{path:"press/:kit",loadComponent:()=>import("./chunk-YYNDWMRG.js").then(t=>t.PressComponent),data:{title:"Press Kit",prerender:!0,dynamicRoutes:{collection:"presskits",pathField:"URLName",queryConstraints:[["Visible","==",!0]]}}},{path:"newsletter",loadComponent:()=>import("./chunk-LSUO5LHM.js").then(t=>t.NewsletterComponent),data:{title:"Newsletter",prerender:!0}},{path:"renamerator",loadComponent:()=>import("./chunk-MGPYSICZ.js").then(t=>t.RenameratorComponent),data:{title:"Renamerator",prerender:!0}},{path:"renamerator/:name",loadComponent:()=>import("./chunk-MGPYSICZ.js").then(t=>t.RenameratorComponent),data:{title:"Renamerator",prerender:!0,dynamicRoutes:{collection:"static",pathField:"name",staticValues:[]}}},{path:"sites",loadComponent:()=>import("./chunk-J7BLOVYX.js").then(t=>t.SitesComponent),data:{title:"Our Sites",prerender:!0}},{path:"user",loadComponent:()=>import("./chunk-GNVB6ZWW.js").then(t=>t.UserComponent),canActivate:[ge],data:{title:"User Account"}},{path:"user/:tab",loadComponent:()=>import("./chunk-GNVB6ZWW.js").then(t=>t.UserComponent),canActivate:[ge],data:{title:"User Account"}},{path:"splotches/spluzzles",loadComponent:()=>import("./chunk-UEBV545Q.js").then(t=>t.SpluzzlesComponent),data:{title:"Spluzzles",prerender:!0}},{path:"splotches/spluzzles/:search",loadComponent:()=>import("./chunk-UEBV545Q.js").then(t=>t.SpluzzlesComponent),data:{title:"Spluzzles",prerender:!0,dynamicRoutes:{collection:"static",pathField:"search",staticValues:[]}}},{path:"matchpoint/bracket",loadComponent:()=>import("./chunk-GKDN52DH.js").then(t=>t.TournamentBracketComponent),data:{title:"Tournament Bracket",prerender:!0}},{path:"matchpoint/bracket/:id",loadComponent:()=>import("./chunk-GKDN52DH.js").then(t=>t.TournamentBracketComponent),data:{title:"Tournament Bracket",prerender:!0,dynamicRoutes:{collection:"tournaments",pathField:"id"}}},{path:"store",loadComponent:()=>import("./chunk-BCWBSH6Y.js").then(t=>t.StoreComponent),data:{title:"Store",description:"Buy Jolly Crouton games and merchandise. Physical copies of our PC games including Splotches, Match Point, Franchise Wars and more.",keywords:"game store, buy games, PC games, physical copies, game merchandise, Jolly Crouton store",ogImage:"/images/box-art-highlight.png",prerender:!0}},{path:"store/product/:id",loadComponent:()=>import("./chunk-HXOLDMMP.js").then(t=>t.ProductComponent),data:{title:"Product",prerender:!0,dynamicRoutes:{collection:"products",pathField:"id"}}},{path:"store/cart",loadComponent:()=>import("./chunk-UJMOLNXX.js").then(t=>t.CartComponent)},{path:"store/checkout",loadComponent:()=>import("./chunk-5TUZITED.js").then(t=>t.CheckoutComponent)},{path:"store/orders",loadComponent:()=>import("./chunk-WSSIIESE.js").then(t=>t.OrdersComponent),canActivate:[ge]},{path:"store/orders/:id",loadComponent:()=>import("./chunk-WSDPO3RP.js").then(t=>t.OrderDetailComponent),canActivate:[ge]},{path:"error/:code",loadComponent:()=>import("./chunk-DZ6GBG5L.js").then(t=>t.ErrorComponent),data:{title:"Error",prerender:!0,dynamicRoutes:{collection:"static",pathField:"code",staticValues:["400","401","403","404","500","503"]}}},{path:"404",loadComponent:()=>import("./chunk-DZ6GBG5L.js").then(t=>t.ErrorComponent),data:{title:"404 Not Found",prerender:!0}},{path:"admin",loadComponent:()=>import("./chunk-3QWWB64U.js").then(t=>t.AdminComponent),canActivate:[oo],children:[{path:"",redirectTo:"news",pathMatch:"full"},{path:"news",loadComponent:()=>import("./chunk-MXQ7CLUY.js").then(t=>t.AdminModuleNewsComponent)},{path:"products",loadComponent:()=>import("./chunk-OCLJZITW.js").then(t=>t.AdminModuleProductsComponent)},{path:"users",loadComponent:()=>import("./chunk-3A7BDOH5.js").then(t=>t.AdminModuleUsersComponent)},{path:"nav",loadComponent:()=>import("./chunk-V2XCDPG5.js").then(t=>t.AdminModuleNavigationComponent)},{path:"reroutes",loadComponent:()=>import("./chunk-JSSU4ZDG.js").then(t=>t.AdminModuleReroutesComponent)},{path:"presskits",loadComponent:()=>import("./chunk-4VTY5Z26.js").then(t=>t.AdminModulePressKitsComponent)},{path:"presskits/:id",loadComponent:()=>import("./chunk-4VTY5Z26.js").then(t=>t.AdminModulePressKitsComponent)},{path:"jobs",loadComponent:()=>import("./chunk-WKH25TYZ.js").then(t=>t.AdminModuleJobsComponent)},{path:"jobs/:id",loadComponent:()=>import("./chunk-WKH25TYZ.js").then(t=>t.AdminModuleJobsComponent)},{path:"translations",loadComponent:()=>import("./chunk-O7F363I3.js").then(t=>t.AdminModuleTranslationsComponent)},{path:"other",loadComponent:()=>import("./chunk-JOR24Q4O.js").then(t=>t.AdminModuleOtherSettingsComponent)}]},{path:"**",loadComponent:()=>import("./chunk-DZ6GBG5L.js").then(t=>t.ErrorComponent)}];var io={providers:[dt({eventCoalescing:!0}),kt(no),xt(yt()),_t(vt()),{provide:nt,useClass:Kt},{provide:zt,useValue:to},{provide:be,useFactory:t=>()=>t.initialize(),deps:[eo],multi:!0},...Xt(de),ze(()=>Ie()),...de.pwa?.enabled?[$t("ngsw-worker.js",{enabled:!mt(),registrationStrategy:"registerWhenStable:30000"})]:[]]};function pn(t,r){if(t&1&&(i(0,"a",5),f(1,"img",6),a()),t&2){let e=c();p("ngStyle",e.buttonStyle)("routerLink",e.stateRef),l(),p("src",e.buttonHover?e.hoverIcon:e.icon,N)}}function cn(t,r){if(t&1&&(i(0,"a",7),f(1,"img",6),a()),t&2){let e=c();p("ngStyle",e.buttonStyle)("href",e.targetUrl,N),l(),p("src",e.buttonHover?e.hoverIcon:e.icon,N)}}function dn(t,r){if(t&1&&(i(0,"a",5),f(1,"img",6),i(2,"div",8),d(3),a()()),t&2){let e=c();p("ngStyle",e.buttonStyle)("routerLink",e.stateRef),l(),p("src",e.buttonHover?e.hoverIcon:e.icon,N),l(2),C(e.popoverText)}}function mn(t,r){if(t&1&&(i(0,"a",7),f(1,"img",6),i(2,"div",8),d(3),a()()),t&2){let e=c();p("ngStyle",e.buttonStyle)("href",e.targetUrl,N),l(),p("src",e.buttonHover?e.hoverIcon:e.icon,N),l(2),C(e.popoverText)}}var ro=(()=>{class t{constructor(e,o){this.router=e,this.el=o,this.backgroundColor="var(--color-blue)",this.stateRef="",this.targetUrl="",this.icon="",this.hoverIcon="",this.popoverText="",this.popoverPosition="right",this.buttonClick=new _e,this.buttonHover=!1,this.buttonClicked=!1,this.buttonStyle={},this.buttonContainerStyle={},this.popoverPositioned=!1,this.buttonHeight=4,this.buttonHoverHeight=7,this.buttonClickedHeight=1,this.minimumButtonPressTime=!1,this.buttonPopPending=!1,this.pendingAction=null,this.popTimer=null,this.platformId=v(ve),this.isBrowser=Me(this.platformId),this.renderer=v(at),this.document=v(ut),this.popoverElement=null}ngOnInit(){this.updateStyles("hover",!1)}ngOnDestroy(){this.popTimer&&clearTimeout(this.popTimer),this.hidePopover()}mobileClick(){this.updateStyles("click",!0),this.mobileNavigate(this.stateRef,this.targetUrl)}mobileNavigate(e,o){e?this.router.navigateByUrl(e):o&&window.open(o,"_blank")}attemptPop(e){e==="hover"&&!this.popTimer?this.updateStyles("hover",!1):(this.pendingAction=e,this.minimumButtonPressTime?(this.updateStyles(e,!1),this.minimumButtonPressTime=!1,this.buttonPopPending=!1):this.buttonPopPending=!0)}popTimeout(){this.minimumButtonPressTime=!0,this.buttonPopPending&&this.attemptPop(this.pendingAction),this.popTimer=null}updateStyles(e,o){e==="hover"?(this.buttonHover=o,this.buttonClicked=!1,this.popoverPositioned=!1,setTimeout(()=>this.updatePopoverPosition(),0)):e==="click"&&(this.buttonClicked=o,o?this.popTimer=setTimeout(()=>this.popTimeout(),250):this.buttonPopPending),this.buttonPopPending,!this.buttonHover&&!this.buttonClicked||!this.buttonHover?(this.buttonStyle={background:`linear-gradient(to bottom, ${this.backgroundColor} 0%, ${this.shadeColor(this.backgroundColor,-.1)} 100%)`,"box-shadow":`0px 1px 0px 0px ${this.shadeColor(this.backgroundColor,.4)}, 0px 2px 0px 0px${this.shadeColor(this.backgroundColor,-.4)}, 0px ${2+this.buttonHeight}px 0px 0px ${this.shadeColor(this.backgroundColor,-.3)}, 0px ${3+this.buttonHeight}px 0px 0px ${this.shadeColor(this.backgroundColor,-.7)}, 0px ${4+this.buttonHeight}px 0px 0px var(--color-black-overlay-40)`},this.buttonContainerStyle={transform:"scale(1)","padding-top":this.buttonHoverHeight-this.buttonHeight+"px","padding-bottom":this.buttonHeight+"px"}):this.buttonHover&&!this.buttonClicked?(this.buttonStyle={background:`linear-gradient(to bottom, ${this.shadeColor(this.backgroundColor,.3)} 0%, ${this.backgroundColor} 100%)`,"box-shadow":`0px 1px 0px 0px ${this.shadeColor(this.backgroundColor,.4)}, 0px 2px 0px 0px${this.shadeColor(this.backgroundColor,-.4)}, 0px ${2+this.buttonHoverHeight}px 0px 0px ${this.shadeColor(this.backgroundColor,-.3)}, 0px ${3+this.buttonHoverHeight}px 0px 0px ${this.shadeColor(this.backgroundColor,-.7)}, 0px ${4+this.buttonHoverHeight}px 0px 0px var(--color-black-overlay-40)`},this.buttonContainerStyle={transform:"scale(1)","padding-top":"0px","padding-bottom":this.buttonHoverHeight+"px"}):(this.buttonStyle={background:`linear-gradient(to bottom, ${this.shadeColor(this.backgroundColor,-.3)} 0%, ${this.shadeCol
1or(this.backgroundColor,-.4)} 100%)`,"box-shadow":`0px 1px 0px 0px ${this.shadeColor(this.backgroundColor,.4)}, 0px 2px 0px 0px${this.shadeColor(this.backgroundColor,-.4)}, 0px ${2+this.buttonClickedHeight}px 0px 0px ${this.shadeColor(this.backgroundColor,-.7)}, 0px ${3+this.buttonClickedHeight}px 0px 0px var(--color-black-overlay-40)`},this.buttonContainerStyle={transform:"scale(1.15)","padding-top":this.buttonHoverHeight-this.buttonClickedHeight+"px","padding-bottom":this.buttonClickedHeight+"px"})}shadeColor(e,o){let n=parseInt(e.slice(1),16),s=o<0?0:255,_=o<0?o*-1:o,w=n>>16,U=n>>8&255,q=n&255;return"#"+(16777216+(Math.round((s-w)*_)+w)*65536+(Math.round((s-U)*_)+U)*256+(Math.round((s-q)*_)+q)).toString(16).slice(1)}showPopover(){if(!(!this.popoverText||!this.el?.nativeElement||!this.isBrowser)){this.hidePopover();try{let e=this.el.nativeElement.getBoundingClientRect();e.width>0&&e.height>0&&(this.popoverElement=this.renderer.createElement("div"),this.renderer.addClass(this.popoverElement,"button-popover-global"),this.renderer.setStyle(this.popoverElement,"position","fixed"),this.renderer.setStyle(this.popoverElement,"z-index","10000"),this.renderer.setStyle(this.popoverElement,"background-color","var(--color-black-overlay-80)"),this.renderer.setStyle(this.popoverElement,"color","white"),this.renderer.setStyle(this.popoverElement,"padding","5px 10px"),this.renderer.setStyle(this.popoverElement,"border-radius","4px"),this.renderer.setStyle(this.popoverElement,"font-size","12px"),this.renderer.setStyle(this.popoverElement,"white-space","nowrap"),this.renderer.setStyle(this.popoverElement,"pointer-events","none"),this.popoverPosition==="left"?(this.renderer.setStyle(this.popoverElement,"right",`${window.innerWidth-e.left+10}px`),this.renderer.setStyle(this.popoverElement,"top",`${e.top+e.height/2-12}px`)):(this.renderer.setStyle(this.popoverElement,"left",`${e.right+10}px`),this.renderer.setStyle(this.popoverElement,"top",`${e.top+e.height/2-12}px`)),this.renderer.setProperty(this.popoverElement,"textContent",this.popoverText),this.renderer.appendChild(this.document.body,this.popoverElement),this.popoverPositioned=!0)}catch(e){console.warn("Error showing popover:",e)}}}hidePopover(){if(this.popoverElement&&this.isBrowser){try{this.renderer.removeChild(this.document.body,this.popoverElement)}catch{}this.popoverElement=null,this.popoverPositioned=!1}}updatePopoverPosition(){this.buttonHover&&this.popoverText?this.showPopover():this.hidePopover()}onWindowChange(){this.buttonHover&&this.updatePopoverPosition()}static{this.\u0275fac=function(o){return new(o||t)(Ne(z),Ne(it))}}static{this.\u0275cmp=y({type:t,selectors:[["shared-ui-component-big-button"]],hostBindings:function(o,n){o&1&&u("resize",function(){return n.onWindowChange()},!1,Fe)("scroll",function(){return n.onWindowChange()},!1,Fe)},inputs:{backgroundColor:"backgroundColor",stateRef:"stateRef",targetUrl:"targetUrl",icon:"icon",hoverIcon:"hoverIcon",popoverText:"popoverText",popoverPosition:"popoverPosition"},outputs:{buttonClick:"buttonClick"},decls:7,vars:6,consts:[[1,"btn-fancy-well","d-inline-block"],[1,"btn-fancy-container","d-none","d-lg-block",3,"mouseover","mouseleave","mousedown","mouseup","ngStyle"],["class","btn-fancy","routerLinkActive","active",3,"ngStyle","routerLink",4,"ngIf"],["class","btn-fancy","target","_blank",3,"ngStyle","href",4,"ngIf"],[1,"btn-fancy-container","d-block","d-lg-none",3,"click","ngStyle"],["routerLinkActive","active",1,"btn-fancy",3,"ngStyle","routerLink"],[1,"img-nav-icon",3,"src"],["target","_blank",1,"btn-fancy",3,"ngStyle","href"],[1,"expanded-btn-text"]],template:function(o,n){o&1&&(i(0,"div",0)(1,"div",1),u("mouseover",function(){return n.updateStyles("hover",!0)})("mouseleave",function(){return n.attemptPop("hover")})("mousedown",function(){return n.updateStyles("click",!0)})("mouseup",function(){return n.attemptPop("click")}),m(2,pn,2,3,"a",2)(3,cn,2,3,"a",3),a(),i(4,"div",4),u("click",function(){return n.mobileClick()}),m(5,dn,4,4,"a",2)(6,mn,4,4,"a",3),a()()),o&2&&(l(),p("ngStyle",n.buttonContainerStyle),l(),p("ngIf",n.stateRef),l(),p("ngIf",n.targetUrl),l(
1),p("ngStyle",n.buttonContainerStyle),l(),p("ngIf",n.stateRef),l(),p("ngIf",n.targetUrl))},dependencies:[x,M,ht,H,re,Pt],styles:[".img-nav-icon[_ngcontent-%COMP%]{width:64px;padding:0;border-radius:3px}.expanded-btn-text[_ngcontent-%COMP%]{display:inline-block;width:140px;height:100%;line-height:1;vertical-align:middle;margin-left:20px}.button-popover-fixed[_ngcontent-%COMP%]{position:absolute;background-color:var(--color-black-overlay-80);color:#fff;padding:5px 10px;border-radius:4px;font-size:12px;white-space:nowrap;pointer-events:none;z-index:10000;transform:translateY(-50%);opacity:0;transition:opacity .15s ease}.button-popover-fixed.positioned[_ngcontent-%COMP%]{opacity:1}.button-popover-fixed[_ngcontent-%COMP%] .popover-arrow[_ngcontent-%COMP%]{position:absolute;top:50%;transform:translateY(-50%);width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent}.button-popover-fixed[_ngcontent-%COMP%] .popover-arrow.arrow-right[_ngcontent-%COMP%]{left:-5px;border-right:5px solid var(--color-black-overlay-80)}.button-popover-fixed[_ngcontent-%COMP%] .popover-arrow.arrow-left[_ngcontent-%COMP%]{right:-5px;border-left:5px solid var(--color-black-overlay-80)}.btn-fancy-container[_ngcontent-%COMP%]{position:relative}@media (max-width: 991px){.button-popover-fixed[_ngcontent-%COMP%]{display:none}}"]})}}return t})();function un(t,r){if(t&1&&(i(0,"span",19),d(1),a()),t&2){let e=c().$implicit;l(),C(e.Title)}}function gn(t,r){if(t&1&&f(0,"shared-ui-component-big-button",21),t&2){let e=c().$implicit;p("backgroundColor",e.backgroundColor||"#3498db")("targetUrl",e.TargetURL||"")("stateRef",e.StateRef||"")("popoverText",e.Display||"")("icon",e.Icon||"")("hoverIcon",e.HoverIcon||"")}}function hn(t,r){if(t&1&&(L(0),m(1,gn,1,6,"shared-ui-component-big-button",20),R()),t&2){let e=r.$implicit,o=c(2);l(),p("ngIf",e.Visible||o.isAdmin)}}function fn(t,r){if(t&1&&(i(0,"div",16),m(1,un,2,1,"span",17)(2,hn,2,1,"ng-container",18),a()),t&2){let e=r.$implicit;l(),p("ngIf",e.DisplayGroup),l(),p("ngForOf",e.Items)}}function _n(t,r){t&1&&(i(0,"a",22),d(1,"Admin"),a())}function vn(t,r){t&1&&(i(0,"a",23),d(1,"Log in"),a())}function bn(t,r){if(t&1){let e=b();i(0,"a",24),u("click",function(){g(e);let n=c();return h(n.logout())}),d(1,"Log out"),a()}}var ao=(()=>{class t{constructor(){this.appShell=v(ae).getServices(),this.authService=v(j),this.remoteSiteConfigService=v(jt),this.router=v(z),this.navItems=[],this.currentUser=null,this.isAdmin=!1,this.siteVersion=this.remoteSiteConfigService.getVersion(),this.authService.user$.subscribe(e=>{this.currentUser=e}),this.authService.isAdmin$.subscribe(e=>{this.isAdmin=e})}ngOnInit(){this.loadNavigation()}loadNavigation(){this.remoteSiteConfigService.navItems$.subscribe(e=>{this.navItems=e})}logout(){this.authService.logout(),this.router.navigate(["/"])}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-left-panel-contents"]],decls:26,vars:5,consts:[[1,"left-panel-container"],["class","nav-group",4,"ngFor","ngForOf"],[1,"nav-text-links"],["routerLink","/services",1,"nav-text-link"],["routerLink","/arcades",1,"nav-text-link"],["routerLink","/press",1,"nav-text-link"],["href","https://jollycrouton.fandom.com/wiki/Jolly_Crouton_Pedia_Wiki","target","_blank",1,"nav-text-link"],["routerLink","/jobs",1,"nav-text-link"],["routerLink","/terms",1,"nav-text-link"],["routerLink","/privacy",1,"nav-text-link"],["class","nav-text-link","routerLink","/admin",4,"ngIf"],["class","nav-text-link","routerLink","/login",4,"ngIf"],["class","nav-text-link",3,"click",4,"ngIf"],[1,"nav-text-link","gray-text"],["src","sounds/btn-up.mp3","id","btn-up"],["src","sounds/btn-down.mp3","id","btn-down"],[1,"nav-group"],["class","group-title",4,"ngIf"],[4,"ngFor","ngForOf"],[1,"group-title"],[3,"backgroundColor","targetUrl","stateRef","popoverText","icon","hoverIcon",4,"ngIf"],[3,"backgroundColor","targetUrl","stateRef","popoverText","icon","hoverIcon"],["routerLink","/admin",1,"nav-text-link"],["routerLink","/login",1,"nav-text-link"],[1,"nav-text-link",3,"click"]],template:function(o,n){o&1&&(i(0,"div",0)(1,"nav"),m(2,fn,3,2,"div",1),i(3,"div",2)(4,"a",3),d(5,"Services"),a(),i(6,"a",4),d(7,"Arcades"),a(),i(8,"a",5),d(9,"Press Kits"),a(),i(10,"a",6),d(11,"'Pedia"),a(),i(12,"a",7),d(13,"Jobs"),a(),i(14,"a",8),d(15,"Terms"),a(),i(16,"a",9),d(17,"Privacy"),a(),m(18,_n,2,0,"a",10)(19,vn,2,0,"a",11)(20,bn,2,0,"a",12),i(21,"span",13)(22,"small"),d(23),a()()()(),f(24,"audio",14)(25,"audio",15),a()),o&2&&(l(2),p("ngForOf",n.navItems),l(16),p("ngIf",n.currentUser&&n.isAdmin),l(),p("ngIf",!n.currentUser),l(),p("ngIf",n.currentUser),l(3),D("v",n.siteVersion,""))},dependencies:[x,Ce,M,H,re,ro],styles:[".left-panel-container[_ngcontent-%COMP%]{height:100%;width:100%;display:flex;flex-direction:column;overflow:hidden}nav[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;width:100%;flex:1;min-height:0;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;padding:0}.nav-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem;background-color:#0000004d;border-radius:6px;padding:8px 6px;border:1px solid rgba(0,0,0,.5)}.group-title[_ngcontent-%COMP%]{font-weight:700;display:block;margin-bottom:.25rem;color:#ecf0f1;font-size:.65rem;text-transform:uppercase;letter-spacing:.5px;text-align:center}app-big-button[_ngcontent-%COMP%]{display:flex;justify-content:center;width:100%;max-width:60px;margin-left:auto;margin-right:auto}.nav-text-links[_ngcontent-%COMP%]{margin-top:1rem;display:flex;flex-direction:column;gap:.25rem}.nav-text-link[_ngcontent-%COMP%]{color:#bdc3c7;text-decoration:none;padding:.25rem;font-size:.7rem;text-align:center;border-radius:4px;transition:all .3s ease;line-height:1.2;cursor:pointer}@media (max-width: 992px){.nav-text-link[_ngcontent-%COMP%]{font-size:1rem;padding:.75rem;margin:.125rem 0}}.nav-text-link[_ngcontent-%COMP%]:hover{background-color:#34495e;color:#ecf0f1}.nav-text-link.gray-text[_ngcontent-%COMP%]{color:#7f8c8d}.nav-text-link.gray-text[_ngcontent-%COMP%]:hover{background-color:transparent;color:#7f8c8d}"]})}}return t})();function yn(t,r){if(t&1){let e=b();i(0,"button",5),u("click",function(){g(e);let n=c();return h(n.toggleLeftDrawer())}),i(1,"span"),d(2,"\u2630"),a()()}}function xn(t,r){if(t&1){let e=b();i(0,"button",6),u("click",function(){g(e);let n=c();return h(n.toggleRightDrawer())}),i(1,"span"),d(2,"\u2630"),a()()}}var so=(()=>{class t{constructor(){this.appShell=v(ae).getServices(),this.layoutService=v(B)}toggleLeftDrawer(){this.layoutService.toggleLeftMobile()}toggleRightDrawer(){this.layoutService.toggleMenuRightMobile()}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-top-panel-contents"]],decls:6,vars:2,consts:[[1,"top-panel-header"],["class","menu-toggle left-menu-toggle",3,"click",4,"ngIf"],[1,"logo"],["routerLink","/",1,"site-title"],["class","menu-toggle right-menu-toggle",3,"click",4,"ngIf"],[1,"menu-toggle","left-menu-toggle",3,"click"],[1,"menu-toggle","right-menu-toggle",3,"click"]],template:function(o,n){o&1&&(i(0,"div",0),m(1,yn,3,0,"button",1),i(2,"div",2)(3,"a",3),d(4,"Jolly Crouton"),a()(),m(5,xn,3,0,"button",4),a()),o&2&&(l(),p("ngIf",n.layoutService.leftPanel().enabled),l(4),p("ngIf",n.layoutService.rightPanel().enabled))},dependencies:[x,M,H,re],styles:["[_ngcontent-%COMP%]:root{--breakpoint-xs: 576px;--breakpoint-sm: 768px;--breakpoint-md: 992px;--breakpoint-lg: 1200px;--breakpoint-xl: 1400px;--layout-mobile-max: var(--breakpoint-md);--layout-desktop-min: calc(var(--breakpoint-md) + 1px);--layout-tablet-max: var(--breakpoint-lg)}[_nghost-%COMP%]{width:100%;display:block}.top-panel-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;background:var(--color-medium-gray, #333333);color:#fff;padding:.5rem 1rem;box-shadow:0 2px 4px #0000001a;
1height:60px;width:100%;box-sizing:border-box;margin:0}.logo[_ngcontent-%COMP%]{flex:1;text-align:center}.site-title[_ngcontent-%COMP%]{margin:0;font-size:1.2rem;font-weight:700;color:#fff;text-decoration:none}.menu-toggle[_ngcontent-%COMP%]{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:.5rem;border-radius:4px;transition:background-color .2s;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.menu-toggle[_ngcontent-%COMP%]:hover{background-color:#ffffff1a}.menu-toggle[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;line-height:1}@media (min-width: 993px){.menu-toggle[_ngcontent-%COMP%]{display:none}}"]})}}return t})();var Cn=["brandToastTemplate"];function Mn(t,r){if(t&1&&(i(0,"h4"),d(1),a()),t&2){let e=c().$implicit;l(),C(e.title)}}function wn(t,r){if(t&1){let e=b();i(0,"div",1)(1,"div",2),m(2,Mn,2,1,"h4",3),f(3,"div",4),a(),i(4,"button",5),u("click",function(){let n=g(e).dismiss;return h(n())}),d(5,"\xD7"),a()()}if(t&2){let e=r.$implicit;l(2),p("ngIf",e.title),l(),p("innerHTML",e.message,Y)}}var lo=(()=>{class t{static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-custom-toast-templates"]],viewQuery:function(o,n){if(o&1&&P(Cn,7),o&2){let s;k(s=T())&&(n.brandToastTemplate=s.first)}},decls:2,vars:0,consts:[["brandToastTemplate",""],[1,"a-toast","toast-brand"],[1,"toast-content"],[4,"ngIf"],[3,"innerHTML"],[3,"click"]],template:function(o,n){o&1&&m(0,wn,6,2,"ng-template",null,0,E)},dependencies:[x,M],styles:[".toast-brand[_ngcontent-%COMP%]{border-image-slice:221 190 44 190 fill;border-image-width:30px 26px 4px 26px;border-image-outset:0px 0px 0px 0px;border-image-repeat:stretch stretch;border-image-source:url(/images/toast.png);background-color:transparent;text-shadow:none;color:#000;padding:15px!important;animation:_ngcontent-%COMP%_toast-popup 1.2s cubic-bezier(.68,-.55,.265,1.55) forwards;border-radius:4px;margin:10px 0;min-height:60px;width:300px;position:relative;display:flex;align-items:center;font-family:Arial,sans-serif}@keyframes _ngcontent-%COMP%_toast-popup{0%{transform:translateY(calc(100vh + 100px));opacity:0}70%{transform:translateY(-30px);opacity:1}to{transform:translateY(0);opacity:1}}.toast-brand[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{color:var(--color-toast-brown);text-shadow:1px 1px 1px var(--color-toast-brown-shadow)}.toast-brand[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--color-toast-brown-dark)}.toast-brand[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:var(--color-toast-brown);background:none;border:none;font-size:24px;margin-left:15px;font-weight:700;cursor:pointer}.toast-brand[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--color-toast-brown);text-decoration:underline}.toast-content[_ngcontent-%COMP%]{flex:1}"]})}}return t})();var Sn=["mpLoaderTemplate"],Pn=["splotchesLoaderTemplate"],kn=["loadyLooLoaderTemplate"];function Tn(t,r){if(t&1&&(i(0,"div",4)(1,"div",5),f(2,"div",6),i(3,"div",7)(4,"div",8),d(5),a()()()()),t&2){let e=c().message;l(5),C(e||"Loademificaterating... Just a jiff!")}}function On(t,r){if(t&1&&m(0,Tn,6,1,"div",3),t&2){let e=r.show;p("ngIf",e)}}function En(t,r){if(t&1&&(i(0,"div",4)(1,"div",5)(2,"div",9),f(3,"img",10),a(),i(4,"div",7)(5,"div",8),d(6),a()()()()),t&2){let e=c().message;l(6),C(e||"Loademificaterating... Just a jiff!")}}function zn(t,r){if(t&1&&m(0,En,7,1,"div",3),t&2){let e=r.show;p("ngIf",e)}}function In(t,r){if(t&1&&(i(0,"div",4)(1,"div",5)(2,"div",11),f(3,"img",12),a(),i(4,"div",7)(5,"div",8),d(6),a()()()()),t&2){let e=c().message;l(6),C(e||"Loady Loo!")}}function Ln(t,r){if(t&1&&m(0,In,7,1,"div",3),t&2){let e=r.show;p("ngIf",e)}}var po=(()=>{class t{static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-custom-loading-templates"]],viewQuery:function(o,n){if(o&1&&(P(Sn,7),P(Pn,7),P(kn,7)),o&2){let s;k(s=T())&&(n.mpLoaderTemplate=s.first),k(s=T())&&(n.splotchesLoaderTemplate=s.first),k(s=T())&&(n.loadyLooLoaderTemplate=s.first)}},decls:6,vars:0,consts:[["mpLoaderTemplate",""],["splotchesLoaderTemplate",""],["loadyLooLoaderTemplate",""],["class","loading-overlay",4,"ngIf"],[1,"loading-overlay"],[1,"indicator"],[1,"mp-loader"],[1,"message-holder"],[1,"message"],[1,"splotches-loader"],["src","images/smudge.png","alt","Loading...",1,"element-rock"],[1,"loady-loo-loader"],["src","images/loady-loo.png","alt","Loading...",1,"element-rock"]],template:function(o,n){o&1&&m(0,On,1,1,"ng-template",null,0,E)(2,zn,1,1,"ng-template",null,1,E)(4,Ln,1,1,"ng-template",null,2,E)},dependencies:[x,M],styles:['.loading-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:100000;opacity:.9;background-color:transparent;display:flex;align-items:center;justify-content:center}.loading-overlay[_ngcontent-%COMP%]:after{content:"";opacity:.8;inset:0;position:absolute;z-index:-1;background-color:#000;animation:_ngcontent-%COMP%_scrolling 5s linear infinite}@keyframes _ngcontent-%COMP%_scrolling{0%{background-position:0 0}to{background-position:227px 227px}}.indicator[_ngcontent-%COMP%]{z-index:100001;position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.indicator[_ngcontent-%COMP%] > .message-holder[_ngcontent-%COMP%]{position:absolute;top:60%;left:50%;transform:translate(-50%);text-align:center}.message[_ngcontent-%COMP%]{color:#fff;font-size:18px;font-weight:700;text-shadow:2px 2px 4px rgba(0,0,0,.8)}.mp-loader[_ngcontent-%COMP%]{position:relative;margin:0 auto;height:50px;width:25px;background-color:transparent;animation:_ngcontent-%COMP%_paddles .75s ease-out infinite;transform:translateZ(0)}.mp-loader[_ngcontent-%COMP%]:before{content:"";position:absolute;margin:0 auto;left:0;right:0;top:15px;width:22px;height:22px;border:2px solid var(--color-black-text);border-radius:50%;animation:_ngcontent-%COMP%_ballbounce .75s ease-out infinite;box-shadow:2px 2px 0 0 var(--color-black-text)}@keyframes _ngcontent-%COMP%_paddles{0%,to{box-shadow:-60px -10px 0 var(--color-bright-yellow),-60px -10px 0 2px var(--color-black-text),-55px -5px 0 2px var(--color-black-text),60px 10px 0 var(--color-orange-red),60px 10px 0 2px var(--color-black-text),65px 15px 0 2px var(--color-black-text)}50%{box-shadow:-60px 10px 0 var(--color-bright-yellow),-60px 10px 0 2px var(--color-black-text),-55px 15px 0 2px var(--color-black-text),60px -10px 0 var(--color-orange-red),60px -10px 0 2px var(--color-black-text),65px -5px 0 2px var(--color-black-text)}}@keyframes _ngcontent-%COMP%_ballbounce{0%{transform:translate(-35px) scaleY(1.2);background-color:var(--color-bright-yellow)}
125%{transform:scaleX(1.2);background-color:var(--color-bright-yellow)}50%{transform:translate(35px) scaleY(1.2);background-color:var(--color-orange-red)}75%{transform:scaleX(1.2);background-color:var(--color-orange-red)}to{transform:translate(-35px);background-color:var(--color-orange-red)}}.splotches-loader[_ngcontent-%COMP%]{display:flex;color:#fff!important;flex-flow:column nowrap;align-items:center;justify-content:center;position:relative;height:100vh}.splotches-loader[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100px}.loady-loo-loader[_ngcontent-%COMP%]{display:flex;color:#fff!important;flex-flow:column nowrap;align-items:center;justify-content:center;position:relative;height:100vh}.loady-loo-loader[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100px}.element-rock[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_rocker 2s ease infinite}@keyframes _ngcontent-%COMP%_rocker{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}.loading-message[_ngcontent-%COMP%]{font-size:18px;font-weight:500;margin:0;text-shadow:0 2px 4px rgba(0,0,0,.5);animation:_ngcontent-%COMP%_pulse-text 2s ease-in-out infinite}@keyframes _ngcontent-%COMP%_pulse-text{0%,to{opacity:1}50%{opacity:.7}}']})}}return t})();var Rn=["messageModalTemplate"],Dn=["spluzzlesUploadModalTemplate"],Vn=["spluzzlesHowToModalTemplate"],An=["tournamentsModalTemplate"];function Fn(t,r){if(t&1){let e=b();i(0,"div",4)(1,"h5",5),d(2),a()(),i(3,"div",6)(4,"div",7)(5,"textarea",8),oe("ngModelChange",function(n){g(e);let s=c();return te(s.currentMessageText,n)||(s.currentMessageText=n),h(n)}),d(6," "),a(),i(7,"small",9),d(8),a()()(),i(9,"div",10)(10,"button",11),u("click",function(){let n=g(e).modalService,s=c();return h(s.sendMessage(n))}),f(11,"i",12),d(12," Send "),a(),i(13,"button",13),u("click",function(){let n=g(e).modalService;return h(n.dismiss())}),d(14," Cancel "),a()()}if(t&2){let e=r.data,o=c();l(2),C(e.title||"Send Message to Spectators"),l(3),p("placeholder",e.placeholder||"Enter your message..."),ee("ngModel",o.currentMessageText),p("maxlength",e.maxLength||200),l(3),xe("",o.currentMessageText.length,"/",e.maxLength||200," characters"),l(2),p("disabled",!o.currentMessageText.trim())}}function Nn(t,r){t&1&&(i(0,"div",27)(1,"span"),d(2,"Drop spluzzle here or select file below."),a()())}function Hn(t,r){if(t&1){let e=b();i(0,"div",17)(1,"div",28)(2,"div",29),f(3,"app-spluzzle-preview",30),a(),f(4,"br"),i(5,"div",31),d(6),f(7,"br"),d(8),a(),i(9,"button",32),u("click",function(){g(e);let n=c().data;return h(n.clearFile())}),f(10,"i",33),d(11," Remove "),a()()()}if(t&2){let e=c().data;l(3),p("data",e.uploadForm.data),l(3),D(" Brownsplosion Goal: ",e.uploadForm.data.scoring.explosions," "),l(2),D("Time Goal: ",e.uploadForm.data.scoring.time/1e3," seconds ")}}function Bn(t,r){if(t&1){let e=b();i(0,"div",14)(1,"h5",5),d(2,"Upload Spluzzle"),a()(),i(3,"div",15)(4,"div",16)(5,"div",17)(6,"div",18)(7,"label"),d(8,"Spluzzle Name*"),a(),i(9,"input",19),oe("ngModelChange",function(n){let s=g(e).data;return te(s.uploadForm.name,n)||(s.uploadForm.name=n),h(n)}),a()(),i(10,"div",18)(11,"label"),d(12,"Author Name*"),a(),i(13,"input",20),oe("ngModelChange",function(n){let s=g(e).data;return te(s.uploadForm.author,n)||(s.uploadForm.author=n),h(n)}),a()()(),f(14,"br"),i(15,"div",17)(16,"div",21),m(17,Nn,3,0,"div",22)(18,Hn,12,3,"div",23),i(19,"input",24),u("change",function(n){let s=g(e).data;return h(s.onFileSelected(n))}),a()()()()(),i(20,"div",10)(21,"button",25),u("click",function(){let n=g(e),s=n.modalService,_=n.data;return h(_.submitUpload(s))}),d(22),a(),i(23,"button",26),u("click",function(){let n=g(e).modalService;return h(n.dismiss())}),d(24,"Cancel"),a()()}if(t&2){let e=r.data;l(9),ee("ngModel",e.uploadForm.name),l(4),ee("ngModel",e.uploadForm.author),l(4),p("ngIf",!e.uploadForm.file),l(),p("ngIf",e.uploadForm.file&&e.uploadForm.data),l(3),p("disabled",!e.uploadForm.file||!e.uploadForm.name||!e.uploadForm.author||e.loading),l(),D(" ",e.loading?"Uploading...":"Submit"," ")}}function jn(t,r){if(t&1){let e=b();i(0,"div",14)(1,"h5",5),d(2,"How to Upload and Download Spluzzles"),a()(),i(3,"div",34),d(4," Paste this into the address bar in Windows File Explorer and press enter: "),f(5,"br")(6,"br"),i(7,"div",35)(8,"div",36),f(9,"input",37),i(10,"div",38)(11,"button",39),u("click",function(){g(e);let n=c();return h(n.copyToClipboard())}),f(12,"i",40),a()()()(),f(13,"br"),d(14," The SPF files are the custom Spluzzles you've made in the Splotches level editor. "),f(15,"br"),d(16,"You can upload those or save ones from the community to that folder! "),f(17,"br")(18,"br"),d(19,"For now, you'll need to rename downloaded Spluzzles to match the numbering scheme (splotches-user-puzzle-*.spf), but we hope to allow any name in a future update. "),a(),i(20,"div",10)(21,"button",41),u("click",function(){let n=g(e).modalService;return h(n.closeModal())}),d(22,"K!"),a()()}}function Un(t,r){t&1&&(i(0,"p"),d(1," You don't have any saved tournaments. "),a())}function Wn(t,r){if(t&1){let e=b();i(0,"button",56),u("click",function(){g(e);let n=c().$implicit;return h(n.deletePrompt=!0)}),f(1,"i",33),d(2," Delete "),a()}}function $n(t,r){if(t&1){let e=b();i(0,"button",56),u("click",function(){g(e);let n=c().$implicit,s=c(2).modalService,_=c();return h(_.deleteTournament(n,s))}),f(1,"i",33),d(2," Yes, Delete "),a()}}function Gn(t,r){if(t&1){let e=b();i(0,"button",57),u("click",function(){g(e);let n=c().$implicit;return h(n.deletePrompt=!1)}),d(1," No, Cancel "),a()}}function Qn(t,r){if(t&1){let e=b();i(0,"tr")(1,"td",48)(2,"b"),d(3),a()(),i(4,"td",49)(5,"div",50),m(6,Wn,3,0,"button",51)(7,$n,3,0,"button",51)(8,Gn,2,0,"button",52),a()(),i(9,"td",53)(10,"button",54),u("click",function(){let n=g(e).$implicit,s=c(2).modalService,_=c();return h(_.loadTournament(n,s))}),d(11," Go to tournament "),f(12,"i",55),a()()()}if(t&2){let e=r.$implicit;
1l(3),C(e.Name),l(3),p("ngIf",!e.deletePrompt),l(),p("ngIf",e.deletePrompt),l(),p("ngIf",e.deletePrompt)}}function qn(t,r){if(t&1&&(i(0,"table",46)(1,"tbody"),m(2,Qn,13,4,"tr",47),a()()),t&2){let e=c().data;l(2),p("ngForOf",e.tournaments)}}function Jn(t,r){t&1&&(i(0,"div",58)(1,"div",59)(2,"span",60),d(3,"Loading..."),a()(),i(4,"p"),d(5,"Loading tournaments..."),a()())}function Yn(t,r){if(t&1){let e=b();i(0,"div",14)(1,"h5",5),d(2,"My Tournaments"),a()(),i(3,"div",6),m(4,Un,2,0,"p",42)(5,qn,3,1,"table",43)(6,Jn,6,0,"div",44),a(),i(7,"div",10)(8,"button",45),u("click",function(){let n=g(e).modalService;return h(n.closeModal())}),d(9," Cancel "),a()()}if(t&2){let e=r.data;l(4),p("ngIf",e.tournaments&&e.tournaments.length===0),l(),p("ngIf",e.tournaments&&e.tournaments.length>0),l(),p("ngIf",e.loading)}}var co=(()=>{class t{constructor(){this.currentMessageText=""}sendMessage(e){e.confirm({message:this.currentMessageText})}deleteTournament(e,o){o.confirm({action:"delete",tournament:e})}loadTournament(e,o){o.confirm({action:"load",tournament:e})}copyToClipboard(){navigator.clipboard.writeText("%AppData%\\MMFApplications").catch(e=>{console.warn("Failed to copy to clipboard:",e)})}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-custom-modal-templates"]],viewQuery:function(o,n){if(o&1&&(P(Rn,7),P(Dn,7),P(Vn,7),P(An,7)),o&2){let s;k(s=T())&&(n.messageModalTemplate=s.first),k(s=T())&&(n.spluzzlesUploadModalTemplate=s.first),k(s=T())&&(n.spluzzlesHowToModalTemplate=s.first),k(s=T())&&(n.tournamentsModalTemplate=s.first)}},decls:8,vars:0,consts:[["messageModalTemplate",""],["spluzzlesUploadModalTemplate",""],["spluzzlesHowToModalTemplate",""],["tournamentsModalTemplate",""],[1,"modal-header"],[1,"modal-title"],[1,"modal-body"],[1,"form-group"],["rows","3",1,"form-control",3,"ngModelChange","placeholder","ngModel","maxlength"],[1,"form-text"],[1,"modal-footer"],["type","button",1,"btn","btn-success",3,"click","disabled"],[1,"fa","fa-paper-plane"],["type","button",1,"btn","btn-secondary",3,"click"],[1,"modal-header","text-center"],[1,"modal-body","spluzzle-wall-modal"],[1,"container"],[1,"row"],[1,"col-12","col-sm-6","form-group"],["type","text","placeholder","Spluzzle Name","maxlength","25",1,"form-control",3,"ngModelChange","ngModel"],["type","text","placeholder","Author Name","maxlength","25",1,"form-control",3,"ngModelChange","ngModel"],[1,"col-12"],["class","well drop-zone text-center",4,"ngIf"],["class","row",4,"ngIf"],["type","file","accept",".spf",1,"form-control","mt-2",3,"change"],[1,"btn","btn-success",3,"click","disabled"],[1,"btn","btn-primary","float-end",3,"click"],[1,"well","drop-zone","text-center"],[1,"col-12","col-sm-6","offset-sm-3","my-3"],[1,"d-block","img-thumbnail","p-0"],[1,"spluzzle-preview",3,"data"],[1,"img-thumbnail","p-3"],[1,"btn","btn-danger","w-100","mt-4",3,"click"],[1,"fa","fa-trash"],[1,"modal-body","text-center","splotches-info-modal"],[1,"form-inline","justify-content-center"],[1,"input-group","input-group-lg"],["type","text","readonly","","value","%AppData%MMFApplications",1,"form-control","form-control-lg",2,"min-width","280px","cursor","text"],[1,"input-group-append"],["title","Copy directory to clipboard",1,"btn","btn-success",3,"click"],[1,"fa","fa-copy"],[1,"btn","btn-success",3,"click"],[4,"ngIf"],["class","table table-hover table-striped",4,"ngIf"],["class","loading-state text-center",4,"ngIf"],["type","button",1,"btn","btn-primary","float-end",3,"click"],[1,"table","table-hover","table-striped"],[4,"ngFor","ngForOf"],[1,"tournament-title"],[1,"text-center"],[1,"btn-group"],["class","btn btn-danger btn-lg",3,"click",4,"ngIf"],["class","btn btn-primary btn-lg",3,"click",4,"ngIf"],[1,"text-right"],[1,"btn","btn-success","btn-lg",3,"click"],[1,"fa","fa-arrow-right"],[1,"btn","btn-danger","btn-lg",3,"click"],[1,"btn","btn-primary","btn-lg",3,"click"],[1,"loading-state","text-center"],["role","status",1,"spinner-border","text-warning"],[1,"visually-hidden"]],template:function(o,n){o&1&&m(0,Fn,15,7,"ng-template",null,0,E)(2,Bn,25,6,"ng-template",null,1,E)(4,jn,23,0,"ng-template",null,2,E)(6,Yn,10,3,"ng-template",null,3,E)},dependencies:[x,Ce,M,Oe,Se,Pe,Te,ke,Bt],styles:[".modal-header[_ngcontent-%COMP%]{background-color:var(--color-admin-bg, #1a1a1a);border-bottom:1px solid var(--color-admin-border, #333);color:var(--color-admin-text, #e0e0e0)}.modal-body[_ngcontent-%COMP%]{background-color:var(--color-admin-bg, #1a1a1a);color:var(--color-admin-text, #e0e0e0)}.modal-footer[_ngcontent-%COMP%]{background-color:var(--color-admin-bg, #1a1a1a);border-top:1px solid var(--color-admin-border, #333)}.modal-title[_ngcontent-%COMP%]{color:var(--color-admin-text, #e0e0e0);font-weight:500}.table[_ngcontent-%COMP%]{background-color:var(--color-admin-bg, #1a1a1a);color:var(--color-admin-text, #e0e0e0)}.table[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:not(caption) > *[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{background-color:transparent}.table-hover[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background-color:var(--color-admin-hover, #2a2a2a)}.table-striped[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-of-type(odd){background-color:#ffffff0d}.tournament-title[_ngcontent-%COMP%]{font-weight:700;color:var(--color-admin-text, #e0e0e0)}.btn-group[_ngcontent-%COMP%]{display:flex;gap:.5rem}.loading-state[_ngcontent-%COMP%]{padding:2rem;color:var(--color-admin-text, #e0e0e0)}.spinner-border[_ngcontent-%COMP%]{width:3rem;height:3rem;margin-bottom:1rem}.form-group[_ngcontent-%COMP%]{margin-bottom:1rem}.form-control[_ngcontent-%COMP%]{background-color:var(--color-admin-surface, #3a3a3a);border:1px solid var(--color-admin-border, #333);color:var(--color-admin-text, #e0e0e0)}.form-control[_ngcontent-%COMP%]:focus{background-color:var(--color-admin-surface, #3a3a3a);border-color:var(--color-admin-active, #4a9eff);color:var(--color-admin-text, #e0e0e0);box-shadow:0 0 0 .2rem var(--color-admin-focus-shadow, rgba(74, 158, 255, .25))}.form-text[_ngcontent-%COMP%]{color:var(--color-admin-text-muted, #b0b0b0);font-size:.875rem}.spluzzle-wall-modal[_ngcontent-%COMP%], .splotches-info-modal[_ngcontent-%COMP%]{background-color:var(--color-admin-bg, #1a1a1a);color:var(--color-admin-text, #e0e0e0)}.well[_ngcontent-%COMP%]{background-color:var(--color-admin-surface, #3a3a3a);border:1px solid var(--color-admin-border, #333);border-radius:8px;padding:20px;margin-bottom:20px}.drop-zone[_ngcontent-%COMP%]{border:2px dashed var(--color-admin-border, #666);background-color:var(--color-admin-surface, #2a2a2a);color:var(--color-admin-text-muted, #b0b0b0);padding:40px;text-align:center;transition:all .3s ease}.spluzzle-preview[_ngcontent-%COMP%]{display:block;width:100%}"]})}}return t})();var Kn=["customToasts"],Zn=["customLoaders"],Xn=["customModals"],mo=(()=>{class t{constructor(){this.title="Jolly Crouton",this.appShell=v(ae).getServices(),this.swUpdate=v(Ue,{optional:!0}),this.platformId=v(ve),this.layoutService=v(B),this.toastTemplates={},this.loadingTemplates={},this.modalTemplates={}}ngOnInit(){this.initializeLayoutConfig(),Me(this.platformId)&&de.pwa?.enabled&&this.setupServiceWorkerUpdates()}initializeLayoutConfig(){this.layoutService.updateLayout({left:{enabled:!0,togglableDesktop:!1,visibleDesktop:!0,togglableMobile:!0,visibleMobile:!0,displacesDesktop:!0,displacesMobile:!1,widthDesktop:"90px",widthMobile:"250px",heightDesktop:"auto",heightMobile:"auto",resizable:!1},right:{enabled:!1,togglableDesktop:!1,visibleDesktop:!1,togglableMobile:!1,visibleMobile:!1,displacesDesktop:!0,displacesMobile:!1,widthDesktop:"90px",widthMobile:"250px",heightDesktop:"auto",heightMobile:"auto",resizable:!1},top:{enabled:!0,togglableDesktop:!1,visibleDesktop:!1,togglableMobile:!1,visibleMobile:!0,displacesDesktop:!0,displacesMobile:!0,widthDesktop:"auto",widthMobile:"auto",heightDesktop:"60px",heightMobile:"60px",resizable:!1},bottom:{enabled:!1,togglableDesktop:!1,visibleDesktop:!1,togglableMobile:!1,visibleMobile:!1,displacesDesktop:!0,displacesMobile:!0,widthDesktop:"auto",widthMobile:"auto",heightDesktop:"60px",heightMobile:"60px",resizable:!1}})}setupServiceWorkerUpdates(){this.swUpdate&&(this.swUpdate.checkForUpdate().then(()=>{console.log("Checked for service worker updates")}),this.swUpdate.versionUpdates.subscribe(e=>{if(e.type==="VERSION_READY"){let o=e;this.appShell.showToastInfo("A new version is available. Click to update."),setTimeout(()=>{document.location.reload()},5e3)}}),this.swUpdate.unrecoverable.subscribe(e=>{this.appShell.showToastError("An error occurred that we cannot recover from. Please reload the page.")}))}ngAfterViewInit(){this.customToastsComponent&&(this.toastTemplates={brand:this.customToastsComponent.brandToastTemplate}),this.customLoadersComponent&&(this.loadingTemplates={"mp-loader":this.customLoadersComponent.mpLoaderTemplate,"splotches-loader":this.customLoadersComponent.splotchesLoaderTemplate,"loady-loo-loader":this.customLoadersComponent.loadyLooLoaderTemplate}),this.customModalsComponent&&(this.modalTemplates={message:this.customModalsComponent.messageModalTemplate,"spluzzles-upload":this.customModalsComponent.spluzzlesUploadModalTemplate,"spluzzles-how-to":this.customModalsComponent.spluzzlesHowToModalTemplate,tournaments:this.customModalsComponent.tournamentsModalTemplate})}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=y({type:t,selectors:[["app-root"]],viewQuery:function(o,n){if(o&1&&(P(Kn,5),P(Zn,5),P(Xn,5)),o&2){let s;k(s=T())&&(n.customToastsComponent=s.first),k(s=T())&&(n.customLoadersComponent=s.first),k(s=T())&&(n.customModalsComponent=s.first)}},decls:12,vars:3,consts:[["customToasts",""],["customLoaders",""],["customModals",""],[3,"customToastTemplates"],["slot","left"],["slot","top"],["slot","center"],[3,"customTemplates"]],template:function(o,n){o&1&&(i(0,"app-shell-layout",3),f(1,"app-left-panel-contents",4)(2,"app-top-panel-contents",5)(3,"router-outlet",6),a(),f(4,"app-custom-toast-templates",null,0)(6,"app-custom-loading-templates",null,1)(8,"app-shell-loading-indicator",7)(9,"app-custom-modal-templates",null,2)(11,"app-shell-modal",7)),o&2&&(p("customToastTemplates",n.toastTemplates),l(8),p("customTemplates",n.loadingTemplates),l(3),p("customTemplates",n.modalTemplates))},dependencies:[St,Yt,Le,qt,ao,so,lo,po,co],encapsulation:2})}}return t})();bt(mo,io).catch(t=>console.error(t));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.