PageSourceSearch

https://app.waitwhile.com/chunk-2CFQQHSW.js

js waitwhile.com collected 2026-09-24 08:48:40 UTC 124,273 bytes, 15 lines download raw bytes

1import{$c as ms,A as dn,Ac as ps,B as Ur,Bc as ds,C as Ge,E as qt,G as zr,Ja as mn,L as Xr,Ld as Cs,Nb as ts,Q as Kr,Sb as is,Sc as ei,Tb as ns,Ub as os,W as be,a as Vo,ac as un,b as Wo,bc as rs,c as vn,cb as Zr,g as an,gc as tt,hc as ss,hd as us,ic as as,id as _s,jb as es,jc as ls,la as jr,na as Hr,oc as Qt,qa as Yr,qc as fe,sa as qr,sc as Jt,t as ln,ta as Qr,tc as Zt,uc as cs,w as et,x as cn,xa as Jr,ye as _n,z as pn}from"./chunk-6QDVQ5WV.js";import{$a as b,$d as kt,$f as Mt,$r as Dr,$t as Or,$u as tn,A as ke,Ac as Ii,Ae as ci,An as lr,Ao as pr,Ap as Hi,B as Ke,Ba as L,Bb as Ei,Be as No,Bl as Qo,Bn as cr,Bp as Yi,Bu as Kt,By as Gr,C as Kn,Ca as I,Cc as Qe,Ce as An,Cf as Le,Cl as Mi,Cn as Ui,Co as dr,Cs as On,Cu as en,D as k,Db as yt,De as ko,Dl as Fe,Dm as Fi,Eb as it,Ec as mo,Ed as je,Ee as mt,Ef as ue,Eo as Xi,Ey as sn,Fa as Jn,Fc as uo,Fe as In,Fl as we,Fo as mr,Gj as Oi,Gm as st,Ha as y,Hc as Ti,Hl as Ae,Hu as Br,Ia as hi,Ib as u,Ic as yn,Il as Jo,Ja as A,Jb as C,Jc as _o,Jf as Bo,Jm as Pi,Jn as Pt,Js as Mn,Ju as ve,K as He,Kb as nt,Kd as me,Kn as se,Ko as Ki,L as Rn,La as gi,Lo as Ln,Lp as Sr,M as K,Ma as $t,Mb as pt,Mc as Co,Mm as tr,Mo as xn,N as D,Na as Lt,Nf as $i,Nn as Ie,O as V,Oa as w,On as ae,Pa as c,Pd as Nt,Pe as bi,Pf as ot,Po as Gt,Ps as Lr,Q as li,Qa as m,Qc as wo,Qo as Ut,Ra as S,Re as Oo,Rh as Xo,Ro as zt,S as Oe,Sb as so,Sc as fo,Sd as Ro,Si as bn,Sl as H,Sn as zi,Sr as kn,St as Nr,Tr as ui,Tt as Xt,Ub as ao,V as Me,Va as Et,Vb as Ri,Vf as Li,Vt as kr,W as jn,Wa as Rt,Wb as N,Wd as yo,Wj as mi,Xa as U,Xt as Zi,Xu as wt,Ya as P,Yb as ye,Ye as Mo,Yf as di,Yp as Er,Yu as Vr,Yw as Fr,Yx as Ht,Z as a,Za as Zn,Zf as Tn,Zp as Rr,Zt as Je,_a as eo,_f as Ot,ab as to,ac as xt,ag as Bt,am as Bi,ao as $n,aq as yr,as as Ji,b as at,bb as lt,be as At,bu as Ze,by as on,c as pe,ca as O,cb as ct,cm as Zo,cn as ir,cu as Pe,cx as Pr,da as M,dm as er,dv as nn,ea as Hn,eb as T,ep as ur,eq as qi,ev as ie,fb as f,fi as Ko,fp as _r,fq as Qi,fu as Mr,ga as Yn,gi as jo,gl as W,gp as Cr,he as It,hl as ut,hp as wr,hq as Ar,i as F,ie as Ao,ig as xi,il as qo,ip as fr,iv as Wr,jb as io,jl as Dn,jn as nr,jp as hr,k as ee,kb as no,km as Ft,kp as gr,kq as Te,l as s,la as Q,lb as oo,ld as vi,le as Io,lg as Ni,ln as or,lp as ji,m as g,mc as lo,md as $e,me as To,mm as Vi,mq as Nn,my as rn,nd as B,ne as vo,ng as ki,nh as Go,nl as X,nm as Wi,nr as le,ob as Ye,oe as bo,og as Vt,oh as Uo,ot as vt,pa as qn,pb as ro,pc as co,pd as ho,pe as Do,ph as zo,pm as Ct,pr as ce,pt as xr,qb as qe,qe as $o,qh as rt,qj as Ho,qq as Ir,rc as yi,rm as re,s as zn,sa as p,se as Lo,sl as _t,sm as Se,sn as Gi,t as he,tb as q,tc as Ve,td as go,te as We,tf as pi,tg as Fo,tj as Yo,tl as Wt,ub as Be,uc as Ai,ue as dt,uf as Tt,ug as Po,uy as Yt,v as te,vb as De,vc as po,vq as Tr,w as Xn,wb as Si,we as xo,wq as vr,ws as $r,xb as ge,xn as rr,xq as br,ya as $,yb as Re,yc as de,yd as So,ye as z,yn as sr,yv as jt,za as Qn,zb as Ce,zd as Eo,ze as oe,zf as Di,zn as ar}from"./chunk-6VDOBKBI.js";import"./chunk-UNNH6OJB.js";import{a as ne,b as Xe,h as Z}from"./chunk-HE2D45TV.js";function ws(i,d){return+pi(i)==+pi(d)}function Bn(i,d){let e=pi(i,d?.in);return e.setSeconds(0,0),e}function fs(i,d){return+Bn(i)==+Bn(d)}var ti=(()=>{class i{constructor(){this.stateSub=new pe(null),this.setValueSub=new at,this.isOpenSub=new pe(!1),this.state$=this.stateSub.asObservable(),this.setValue$=this.setValueSub.asObservable(),this.isOpen$=this.isOpenSub.asObservable()}setValue(e){this.setValueSub.next(e)}setIsOpen(e){this.isOpenSub.next(e)}emitState(e){this.stateSub.next(e)}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Me({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();function ua(i,d){i&1&&S(0,"ww-checkbox",5)}function _a(i,d){if(i&1&&(S(0,"ww-select",6),u(1,"async")),i&2){let e=f();w("data",C(1,2,e.startTimes$))("pluckLabel",e.pluckTimeLabel)}}function Ca(i,d){if(i&1&&(S(0,"ww-select",7),u(1,"async")),i&2){let e=f();w("data",C(1,2,e.endTimes$))("pluckLabel",e.pluckTimeLabel)}}function wa(i,d){if(i&1&&(S(0,"ww-select",8),u(1,"async")),i&2){let e=f();w("selection","multiple")("pluckLabel",e.commonDisplay.displayRes
1ource)("data",C(1,3,e.resourceIds$))}}var Cn=(()=>{class i extends W{constructor(){super(),this.commonDisplay=a(Ge),this.resourceRx=a(Pe),this.addVisitWrite=a(Ht),this.blockApi=a(ti),this.datePipe=a(ye),this.layout=a(ie),this.locationRx=a(Je),this.updateVisitWrite=a(rn),this.writeContext=a(jt),this.title$=this.observe("title"),this.dateFormControl=new de(null,yi.required),this.allDayFormControl=new de(!1,{nonNullable:!0}),this.startTimeFormControl=new de(null,yi.required),this.endTimeFormControl=new de(null,yi.required),this.resourceIdsFormControl=new de([],{nonNullable:!0}),this.resourceIds$=this.resourceRx.resources$.pipe(s(e=>e.filter(t=>!t.isCategory)),s(e=>e.map(t=>t.id))),this.notesFormControl=new de(null),this.formGroup=new po({date:this.dateFormControl,allDay:this.allDayFormControl,startTime:this.startTimeFormControl,endTime:this.endTimeFormControl,resourceIds:this.resourceIdsFormControl,notes:this.notesFormControl}),this.settings$=this.locationRx.getCurrentLocation(["bookingTimeSlotIncr"]),this.startTimes$=g([this.settings$,je(this.dateFormControl)]).pipe(s(([{bookingTimeSlotIncr:e},t])=>t?Ao(Le(t),n=>ue(n,e),n=>!Bo(n,Le(t))):[]),s(e=>e.map(t=>oe(t))),He({bufferSize:1,refCount:!0})),this.endTimes$=g([this.startTimes$,je(this.startTimeFormControl)]).pipe(s(([e,t])=>{if(!t)return[];let n=z(t);return e.filter(o=>Mt(z(o),n))}),He({bufferSize:1,refCount:!0})),this.pluckTimeLabel=e=>typeof e=="string"&&xo(e)?this.datePipe.transform(z(e),"shortTime"):go(e)?this.datePipe.transform(e,"shortTime"):"",this.blockApi.setIsOpen(!0)}save(){let e=this.createBlockFormValue();if(!e)return;let t=Oo(e,["allDay"]);this.updateBlockId?this.updateVisitWrite.payload.next([ne({id:this.updateBlockId},t)]):this.addVisitWrite.payload.next(ne({isBlock:!0,state:le.BOOKED},t)),he(this.addVisitWrite.response$,this.updateVisitWrite.response$).pipe(Ke(1),V(this.ngOnDestroy$)).subscribe(()=>this.layout.close())}createBlockFormValue(){let e=this.getStartTime(),t=this.getEndTime();if(!e||!t)return null;let n=ot(z(t),z(e));return{resourceIds:this.formGroup.value.resourceIds,allDay:this.formGroup.value.allDay,duration:n,date:e,notes:this.formGroup.value.notes}}getStartTime(){return this.formGroup.value.allDay?this.formGroup.value.date?oe(Le(this.formGroup.value.date)):null:this.formGroup.value.startTime}getEndTime(){return this.formGroup.value.allDay?this.formGroup.value.date?oe($i(this.formGroup.value.date)):null:this.formGroup.value.endTime}getInitialResourceIds(e){return e&&e.length>0?e:this.writeContext.writer.resource?[this.writeContext.writer.resource.id]:[]}subscribe(){this.formGroup.valueChanges.pipe(V(this.ngOnDestroy$)).subscribe(()=>{let e=this.createBlockFormValue();if(!e){this.blockApi.emitState(null);return}this.blockApi.emitState({value:e,id:this.updateBlockId??void 0})}),this.blockApi.setValue$.pipe(V(this.ngOnDestroy$)).subscribe(({duration:e,date:t,resourceIds:n})=>{if(this.resourceIdsFormControl.setValue(this.getInitialResourceIds(n)),!t)return;let o=this.createBlockFormValue();this.dateFormControl.setValue(z(t)),this.startTimeFormControl.setValue(t);let r=o?.duration??e;r!==void 0&&this.endTimeFormControl.setValue(oe(ue(z(t),r)))})}ngOnInit(){if(this.subscribe(),!this.initialValue)return;let e={notes:this.initialValue.notes,resourceIds:this.getInitialResourceIds(this.initialValue.resourceIds)};if(this.initialValue.date){let t=this.initialValue.duration===86340;e.date=z(this.initialValue.date),e.allDay=t,e.startTime=this.initialValue.date,this.initialValue.duration&&(e.endTime=oe(ue(z(this.initialValue.date),this.initialValue.duration)))}this.formGroup.patchValue(e)}ngOnDestroy(){this.blockApi.emitState(null),this.blockApi.setIsOpen(!1)}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-block-form"]],hostAttrs:[1,"ww-calendar-block-form"],inputs:{visitForm:"visitForm",initialValue:"initialValue",updateBlockId:"updateBlockId",title:"title"},standalone:!1,features:[L],decls:15,vars:8,consts:()=>{let e;e=$localize`Date`;let t;t=$localize`All day`;let n;n=$localize`Start time`;let o;o=$localize`End time`;let r;r=$localize`Resources`;let l;l=$localize`Block for all resources`;let _;_=$localize`Notes`;let h;h=$localize`Add notes here...`;let v;v=$localize`Cancel`;let E;return E=$localize` Save `,[v,E,["wwForm","","autocomplete","off",1,"h-full",3,"formGroup"],[1,"flex","flex-col","gap-4"],["formControlName","date","label",e],["label",t,"formControlName","allDay"],["formControlName","startTime","label",n,"selection","radio",3,"data","pluckLabel"],["formControlName","endTime","label",o,"selection","radio",3,"data","pluckLabel"],["label",r,"formControlName","resourceIds","placeholder",l,3,"selection","pluckLabel","data"],["formControlName","notes","label",_,"placeholder",h],["wwButton","secondary","wwLayoutClose",""],["wwButton","primary",3,"click","disabled"]]},template:function(t,n){t&1&&(c(0,"form",2)(1,"ww-section")(2,"ww-section-content",3),S(3,"ww-datepicker",4),y(4,ua,1,0,"ww-checkbox",5),y(5,_a,2,4,"ww-select",6),y(6,Ca,2,4,"ww-select",7),y(7,wa,2,5,"ww-select",8),u(8,"async"),S(9,"ww-textarea",9),m(),c(10,"ww-section-actions")(11,"button",10),b(12,0),m(),c(13,"button",11),T("click",function(){return n.save()}),b(14,1),m()()()()),t&2&&(w("formGroup",n.formGroup),p(4),A(n.formGroup.value.date?4:-1),p(),A(!n.formGroup.value.allDay&&n.formGroup.value.date?5:-1),p(),A(!n.formGroup.value.allDay&&n.formGroup.value.startTime?6:-1),p(),A(C(8,6,n.resourceRx.hasSelectableResources$)?7:-1),p(6),w("disabled",n.formGroup.value.allDay?n.dateFormControl.invalid:n.formGroup.invalid))},dependencies:[Ii,Ve,Ai,uo,mo,be,H,ir,Ki,Bi,Pt,ae,se,zi,or,N],encapsulation:2,changeDetection:0})}}return i})();var ha=(i,d)=>d.key;function ga(i,d){if(i&1){let e=P();c(0,"button",12),T("click",function(){O(e);let n=f(2);return M(n.editingBlock=!1)}),S(1,"ww-icon",13),m()}}function Sa(i,d){if(i&1&&(Et(0),y(1,ga,2,0,"button",11),Rt()),i&2){let e=f();p(),A(e.editingBlock?1:-1)}}function Ea(i,d){if(i&1){let e=P();c(0,"button",16),T("click",function(){O(e);let n=f(2);return M(n.editingBlock=!0)}),S(1,"ww-icon",17),m()}}function Ra(i,d){if(i&1&&(Et(0),y(1,Ea,2,0,"button",14),S(2,"ww-model-action-menu",15),u(3,"async"),Rt()),i&2){let e=f();p(),A(e.editingBlock?-1:1),p(),w("actions",C(3,2,e.actions$))}}function ya(i,d){if(i&1&&(S(0,"ww-calendar-block-form",9),u(1,"async"),u(2,"async")),i&2){let e=f();w("initialValue",C(1,2,e._entity$))("updateBlockId",C(2,4,e._entity
1Id$))}}function Aa(i,d){i&1&&(c(0,"ww-display-object-key"),b(1,2),m(),c(2,"ww-display-object-value"),q(3),m()),i&2&&(p(3),Be(d))}function Ia(i,d){i&1&&(c(0,"ww-display-object-key"),b(1,3),m(),c(2,"ww-display-object-value"),q(3),m()),i&2&&(p(3),Be(d))}function Ta(i,d){i&1&&U(0)}function va(i,d){i&1&&U(0)}function ba(i,d){if(i&1&&(c(0,"ww-display-object-key"),I(1,Ta,1,0,"ng-container",18),m(),c(2,"ww-display-object-value"),I(3,va,1,0,"ng-container",18),m()),i&2){let e=d.$implicit;p(),w("wwOutlet",e.label),p(2),w("wwOutlet",e.component)}}function Da(i,d){if(i&1&&(c(0,"ww-display-object"),y(1,Aa,4,1),u(2,"async"),y(3,Ia,4,1),u(4,"async"),$t(5,ba,4,2,null,null,ha),u(7,"async"),m()),i&2){let e,t,n=f();p(),A((e=C(2,2,n.startTime$))?1:-1,e),p(2),A((t=C(4,4,n.endTime$))?3:-1,t),p(2),Lt(C(7,6,n.labelledComponents$))}}var $a=_t(ut),ys=(()=>{class i extends $a{constructor(){super(),this.datePipe=a(Vt),this.deleteVisitWrite=a(on),this.layout=a(ie),this.visitActions=a(Zt),this.visitProperties=a(tt),this.visitRx=a(ve),this._entityApi=e=>this.visitRx.getVisit(e),this.startTime$=this._entity$.pipe(s(e=>e?.date?this.datePipe.transform(e.date):null)),this.endTime$=this._entity$.pipe(s(e=>!e?.date||!e.duration?null:this.datePipe.transform(ue(z(e.date),e.duration)))),this.fieldProperties$=this._entity$.pipe(D(e=>e?this.visitProperties.getCurrentDynamicProperties(Xt(e)):[]),s(e=>bi(e,t=>t.source==="dataFieldValues"))),this.labelledComponents$=g([this._entity$,this.fieldProperties$]).pipe(s(([e,t])=>e?pn(e,Object.values(Xe(ne({},t),{created:this.visitProperties.properties.created,createdBy:this.visitProperties.properties.createdBy,notes:this.visitProperties.properties.notes})),[]):[])),this.editingBlock=!1,this.actions$=this._entity$.pipe(D(e=>e?this.visitActions.getActions([e],{pick:["delete"]}):[])),this.subscribe()}deleteBlock(){this._latestEntityId&&this.deleteVisitWrite.payload.next(this._latestEntityId)}subscribe(){this._entityRemoved$.pipe(V(this.ngOnDestroy$)).subscribe(()=>{this.layout.close()})}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-block-viewer"]],hostAttrs:[1,"ww-calendar-block-viewer"],inputs:{entity:"entity",entityId:"entityId",disableEntityUpdates:"disableEntityUpdates"},standalone:!1,features:[L],decls:16,vars:4,consts:()=>{let e;e=$localize`Block`;let t;t=$localize` Delete block `;let n;n=$localize`Back to view block`;let o;o=$localize`Edit block`;let r;r=$localize`Start time`;let l;return l=$localize`End time`,[e,t,r,l,[1,"flex","items-center"],[4,"wwPermission"],["wwButton","tertiary","wwLayoutClose",""],["icon","bx-x"],[3,"padding"],[1,"h-full",3,"initialValue","updateBlockId"],["wwButton","secondary",3,"click"],["wwButton","tertiary","aria-label",n],["wwButton","tertiary","aria-label",n,3,"click"],["icon","bx-chevron-left"],["wwButton","tertiary","aria-label",o],[3,"actions"],["wwButton","tertiary","aria-label",o,3,"click"],["icon","bx-edit-alt"],[4,"wwOutlet"]]},template:function(t,n){t&1&&(c(0,"ww-section")(1,"ww-section-title")(2,"div",4),I(3,Sa,2,1,"ng-container",5),c(4,"span"),b(5,0),m()(),c(6,"div",4),I(7,Ra,4,4,"ng-container",5),c(8,"button",6),S(9,"ww-icon",7),m()()(),c(10,"ww-section-content",8),y(11,ya,3,6,"ww-calendar-block-form",9)(12,Da,8,8,"ww-display-object"),m(),c(13,"ww-section-actions")(14,"button",10),T("click",function(){return n.deleteBlock()}),b(15,1),m()()()),t&2&&(p(3),w("wwPermission","visits.block"),p(4),w("wwPermission","visits.block"),p(3),w("padding",n.editingBlock?"none":"medium"),p(),A(n.editingBlock?11:12))},dependencies:[be,qt,et,H,zt,Gt,Ut,re,we,Pt,ae,se,Ie,Cn,N],encapsulation:2,changeDetection:0})}}return i})();var St="week";var _i="resources",fn="sessions",As="range",Is="date";var Ts="calendar-view-mode",vs={day:"Daily",week:"Weekly",resources:"Resources",sessions:"Sessions"};var bs=(()=>{class i extends Xr{constructor(){let e=a(Hn);super(e),this.filterComponents=a(mn),this.filters$=this.filterComponents.locationNgramFilters$,this.injector=e}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Me({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();function Ds(i){return i==="day"||i==="week"||i==="sessions"}function hn(i,d,e,t,n,o,r,l,_){let h=z(n);return{id:`${i}-${n}`,isoDate:n,date:h,from:n.split("T")[1],duration:l,serviceId:i,seriesId:o,parentId:t??i,resourceIds:r,name:d,description:e??void 0,spots:_??0}}var ri={min:20,default:80,max:254},$s="calendar-use-grouping";
1var Ls="calendar-show-cancelled-visits",xs="calendar-use-resource-columns",Ns="show-unassigned-column",ks="show-unavailable-resources";function La(i,d){i&1&&(c(0,"div",9),S(1,"ww-calendar-display-settings-editor",10,0),m()),i&2&&(p(),w("assetScope","user"))}var Os=(()=>{class i extends W{constructor(){super(),this.calendarService=a(ze),this.displaySettingRx=a(Ze),this.visitProperties=a(tt),this.resourceRx=a(Pe),this.zoomFormControl=new de(ri.default,{nonNullable:!0}),this.zoomLevel$=je(this.zoomFormControl),this.cellHeightDefaults=ri,this.showPropertyNames$=this.visitProperties.getShownProperties({source:"BOOKED"},"calendar").pipe(s(e=>Object.values(e).map(t=>t.label))),this.migrate(),this.sync(),this.subscribe()}subscribe(){this.zoomLevel$.pipe(ke(250),V(this.ngOnDestroy$)).subscribe(e=>{this.calendarService.updateZoomLevel(e)}),this.calendarService.cellHeight$.pipe(V(this.ngOnDestroy$)).subscribe(e=>{this.zoomFormControl.setValue(e,{emitEvent:!1})})}migrate(){let e=[[$s,"calendar-use-grouping"],[Ls,"calendar-show-cancelled-visits"],[xs,"calendar-use-resource-columns"],[Ns,"calendar-show-unassigned-column"],[ks,"calendar-show-unavailable-resources"]];for(let[t,n]of e)this.displaySettingRx.migrateLocalStorageEntry(t,n)}sync(){Or(this.calendarService.cellHeightSub,this.zoomFormControl,this.ngOnDestroy$)}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-settings"]],hostAttrs:[1,"ww-calendar-settings"],standalone:!1,features:[L],decls:13,vars:4,consts:()=>{let e;e=$localize`Display settings`;let t;return t=$localize`Zoom`,[["editor",""],e,t,["wwButton","tertiary","wwLayoutClose",""],["icon","bx-x"],["cdkScrollable","",1,"flex","flex-col","gap-6"],[1,"!w-full",3,"min","max"],["matSliderThumb","",3,"formControl"],["class","flex flex-col gap-6 flex-1",4,"wwPermission"],[1,"flex","flex-col","gap-6","flex-1"],[1,"flex-1",3,"assetScope"]]},template:function(t,n){t&1&&(c(0,"ww-section")(1,"ww-section-title")(2,"div"),b(3,1),m(),c(4,"button",3),S(5,"ww-icon",4),m()(),c(6,"ww-section-content",5)(7,"ww-label-layout")(8,"ww-label"),b(9,2),m(),c(10,"mat-slider",6),S(11,"input",7),m()(),I(12,La,3,1,"div",8),m()()),t&2&&(p(10),w("min",n.cellHeightDefaults.min)("max",n.cellHeightDefaults.max),p(),w("formControl",n.zoomFormControl),p(),w("wwPermission","assets.update"))},dependencies:[co,Ve,Qe,be,ds,et,lo,Er,Rr,H,er,Zo,re,ae,se,Ie],encapsulation:2,changeDetection:0})}}return i})();function ka(i,d){i&1&&U(0)}function Oa(i,d){if(i&1&&I(0,ka,1,0,"ng-container",7),i&2){f(2);let e=Ye(12);w("ngTemplateOutlet",e)}}function Ma(i,d){i&1&&U(0)}function Ba(i,d){if(i&1&&I(0,Ma,1,0,"ng-container",9),i&2){let e=f(3);w("wwOutlet",e.calendarBlock)}}function Va(i,d){i&1&&I(0,Ba,1,1,"ng-template",8)}function Wa(i,d){i&1&&(c(0,"ww-tab-group"),I(1,Oa,1,1,"ng-template",5)(2,Va,1,0,null,6),m()),i&2&&(p(2),w("wwPermission","visits.block"))}function Fa(i,d){i&1&&U(0)}function Pa(i,d){if(i&1&&(I(0,Fa,1,0,"ng-container",9),u(1,"async")),i&2){let e=f();w("wwOutlet",C(1,1,e.visitForm$))}}function Ga(i,d){i&1&&U(0)}function Ua(i,d){if(i&1&&(I(0,Ga,1,0,"ng-container",9),u(1,"async")),i&2){let e=f();w("wwOutlet",C(1,1,e.visitForm$))}}var Ms=(()=>{class i extends W{constructor(){super(...arguments),this.commonDisplay=a(Ge),this.layout=a(ie),this.visitCoreService=a(fe),this.visitRx=a(ve),this.updateVisitWrite=a(rn),this.addVisitWrite=a(Ht),this.visitForm$=this.observe("visitForm").pipe(s(e=>X(e,{$hooks:{onCreate:t=>this.onFormCreate(t)}}))),this.title$=this.observe("title"),this.updateVisitId=null,this.updateVisitId$=this.observe("updateVisitId"),this.updateVisit$=this.updateVisitId$.pipe(D(e=>e?this.visitRx.getVisit(e):F(null))),this.useTitle$=g([this.title$,this.updateVisit$]).pipe(s(([e,t])=>t?this.commonDisplay.displayPersonNames(t):e))}onFormCreate(e){return he(e.instance.saved.pipe(D(t=>{if(!t)return F(null);let n=rs(t);return this.updateVisitId?(this.updateVisitWrite.payload.next([Xe(ne({},n),{id:this.updateVisitId})]),this.updateVisitWrite.response$):(this.addVisitWrite.payload.next(n),this.addVisitWrite.response$)}),li(()=>this.layout.close())),e.instance.closed.pipe(li(()=>{this.updateVisitId?this.visitCoreService.openViewer({entityId:this.updateVisitId}):this.layout.close()})))}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-editor"]],hostAttrs:[1,"ww-calendar-editor"],inputs:{visitForm:"visitForm",calendarBlock:"calendarBlock",title:"title",updateVisitId:"updateVisitId"},standalone:!1,features:[L],decls:13,vars:5,consts:()=>{let e;e=$localize`Book`;let t;return t=$localize`Block`,[["visitFormTmpl",""],["wwForm","","autocomplete","off",1,"h-full"],["wwButton","tert
1iary","wwLayoutClose","","type","button"],["icon","bx-x"],[3,"padding"],["wwTab","","label",e],[4,"wwPermission"],[4,"ngTemplateOutlet"],["wwTab","","label",t],[4,"wwOutlet"]]},template:function(t,n){t&1&&(c(0,"form",1)(1,"ww-section")(2,"ww-section-title")(3,"span"),q(4),u(5,"async"),m(),c(6,"button",2),S(7,"ww-icon",3),m()(),c(8,"ww-section-content",4),y(9,Wa,3,1,"ww-tab-group")(10,Pa,2,3,"ng-container"),m(),I(11,Ua,2,3,"ng-template",null,0,pt),m()()),t&2&&(p(4),Be(C(5,3,n.useTitle$)),p(4),w("padding","none"),p(),A(n.calendarBlock?9:10))},dependencies:[Ri,Ii,Ai,be,et,H,Bi,re,we,ae,se,Ie,Qi,qi,N],encapsulation:2,changeDetection:0})}}return i})();var Vn=(()=>{class i extends W{constructor(){super(...arguments),this.dateService=a(ki),this.dialogRef=a(Gi,{optional:!0}),this.layout=a(ie),this.initialResourceIds=[],this.initialServiceIds=[],this.initialSlot=null,this.initialSlot$=this.observe("initialSlot"),this.title$=this.initialSlot$.pipe(s(e=>e?At(this.dateService.transform(e)):null))}close(){this.dialogRef?this.dialogRef.close():this.layout.close()}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-slot-viewer"]],hostAttrs:[1,"ww-calendar-slot-viewer"],inputs:{initialResourceIds:"initialResourceIds",initialServiceIds:"initialServiceIds",initialSlot:"initialSlot"},features:[L],decls:9,vars:7,consts:[["wwButton","tertiary",3,"click"],["icon","bx-x"],[3,"padding"],[3,"initialSlot","initialResourceIds","initialServiceIds"]],template:function(t,n){t&1&&(c(0,"ww-section")(1,"ww-section-title")(2,"span"),q(3),u(4,"async"),m(),c(5,"button",0),T("click",function(){return n.close()}),S(6,"ww-icon",1),m()(),c(7,"ww-section-content",2),S(8,"ww-availability-viewer",3),m()()),t&2&&(p(3),Be(C(4,5,n.title$)),p(4),w("padding","large"),p(),w("initialSlot",n.initialSlot)("initialResourceIds",n.initialResourceIds)("initialServiceIds",n.initialServiceIds))},dependencies:[xt,_n,ts,Te,H,re,ae,se,Ie,N],encapsulation:2,changeDetection:0})}}return i})();var ze=(()=>{class i{constructor(){this.breakpoints=a(Wt),this.dialog=a(Ui),this.displaySettingRx=a(Ze),this.layout=a(ie),this.localStorageService=a(Wr),this.locationRx=a(Je),this.resourceRx=a(Pe),this.calendarOpenedId="calendar-opened",this.useGrouping$=this.displaySettingRx.get("calendar-use-grouping"),this.groupingProperties$=this.displaySettingRx.get("calendar-grouping-properties"),this.showCancelledVisits$=this.displaySettingRx.get("calendar-show-cancelled-visits"),this.useResourceColumns$=this.displaySettingRx.get("calendar-use-resource-columns"),this.showBookingCount$=this.displaySettingRx.get("calendar-show-booking-count"),this.showUnassignedColumn$=this.displaySettingRx.get("calendar-show-unassigned-column"),this.showUnavailableResources$=this.displaySettingRx.get("calendar-show-unavailable-resources"),this.cellHeightSub=new pe(ri.default),this.cellHeight$=this.cellHeightSub.asObservable(),this.scrollToCellSub=new at,this.scrollToCell$=this.scrollToCellSub.pipe(D(e=>this.layout.opener.opened()&&!this.layout.opener.openedFinished()?this.layout.afterExpanded$.pipe(s(()=>e)):F(e)),He({refCount:!0,bufferSize:1})),this.subscribe(),this.scrollToCell$.subscribe()}scrollToCell(e){this.scrollToCellSub.next(e)}updateZoomLevel(e){this.localStorageService.setJson("calendar-zoom-level",e),this.cellHeightSub.next(e)}openSettings(){return this.layout.open({component:{type:Os},isEqualInputs:()=>!0})}openEditor(e={}){return this.layout.open({id:this.calendarOpenedId,component:{type:Ms,inputs:e},disableClose:!0})}openBlockViewer(e){return this.layout.open({component:{type:ys,inputs:e},isEqualInputs:(t,n)=>t?.entity&&n?.entity?t.entity.id===n.entity.id:t?.entityId===n?.entityId})}openSlotViewer(e){return this.layout.openedId===this.calendarOpenedId?this.dialog.open(X(Vn,e),{size:this.layout.isMobile?"bottom-sheet":"medium"}):this.layout.open({component:{type:Vn,inputs:e}})}openExternalBlockViewer(e){return this.layout.open({component:X(Bs,e)})}openGridItemViewer(e){return this.layout.open({component:X(Ws,e)})}openSessionViewer(e){this.layout.open({component:{type:Vs,inputs:e},isEqualInputs:(t,n)=>t?.session?.id===n?.session?.id})}subscribeToInitialCellHeight(){this.localStorageService.getJson("calendar-zoom-level",ri.default,ho).subscribe(e=>{this.cellHeightSub.next(e)})}subscribeToInitialUseResourceColumns(){g([this.resourceRx.hasSelectableResources$,this.displaySettingRx.get("calendar-use-resource-columns")]).pipe(Ke(1)).subscribe(([e,t])=>{!e&&t&&this.displaySettingRx.set("calendar-use-resource-columns",!1,"user")}),g([this.locationRx.getCurrentLocation(["bookingUseResourceSpots"]),this.displaySettingRx.has("calendar-use-resource-columns")]).pipe(Ke(1)).subscribe(([{bookingUseResourceSpots:e},t])=>{t||this.displaySettingRx.set("calendar-use-resource-columns",!!e,"user")})}subscribe(){this.subscribeToInitialCellHeight(),this.subscribeToInitialUseResourceColumns()}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Me({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var Fs=200,Ps=Math.floor(2e3/150),Gs=10;function Ci(i){return typeof i.date=="string"&&typeof i.duration=="number"}function gn(i){return"resource"in i}function Sn(i){return i.tags?.includes(ce.CANCELLED)||i.tags?.includes(ce["NO-SHOW"])?"cancelled":i.state===le.DRAFT?"pending":i.isBlock?"blocked":"default"}function Xa(i,d){i&1&&U(0)}function Ka(i,d){i&1&&U(0)}function ja(i,d){i&1&&U(0)}function Ha(i,d){i&1&&U(0)}var Wn=(()=>{class i extends W{constructor(){super(...arguments),this.session$=this.observe("session"),this.bookings=null,this.bookings$=this.observe("bookings"),this.commonDisplay=a(Ge),this.coreLocationRx=a(Yt),this.datePipe=a(ye),this.visitProperties=a(tt),this.shownProperties$=this.visitProperties.getShownProperties(Xt(Uo),"calendar"),this.bookingCountPartiesAsMultipleSpots$=this.coreLocationRx.getCurrentNullableLocation(["bookingCountPartiesAsMultipleSpots"]).pipe(s(e=>e?.bookingCountPartiesAsMultipleSpots??!1)),this.nameComponent$=g([this.session$,this.shownProperties$]).pipe(s(([e,t])=>!e||!Object.values(t).some(o=>o.key==="serviceIds")?null:Ae({$element:{classList:["flex","items-start","justify-between","gap-1"]},components:[Fe({content:e.name,$element:{classList:["text-wrap"],typography:"h6"}}),Se({icon:"bx-calendar-event",size:"x-small"})]}))),this.timeComponent$=g([this.session$,this.shownProperties$]).pipe(s(([e,t])=>
1{if(!e||!e.date||!e.duration||!Object.values(t).some(h=>h.key==="date"))return null;let{date:o,duration:r}=e;if(!o||!r)return null;let l=ue(o,r??0),_=`${this.datePipe.transform(o,"shortTime")} - ${this.datePipe.transform(l,"shortTime")}`;return Fe({content:_,$element:{typography:"caption1"}})})),this.spotsComponent$=g([this.session$,this.bookings$,this.bookingCountPartiesAsMultipleSpots$]).pipe(s(([e,t,n])=>{if(!e)return null;if(e.cancelled)return Fe({content:$localize`Cancelled`,$element:{typography:"caption1"}});if(!t||t.length===0)return Fe({content:this.getLocalizedSpotsLeft(e.spots),$element:{typography:"caption1"}});let o=Nt(t.filter(({visit:_})=>B(_)&&!Qt(_)).map(_=>n?_.visit?.partySize??1:1)),r=e.spots-o,l=r>0?this.getLocalizedSpotsLeft(r):$localize`Fully booked`;return Fe({content:l,$element:{typography:"caption1"}})})),this.resourcesComponent$=g([this.session$,this.shownProperties$]).pipe(s(([e,t])=>!e||It(e.resourceIds).length===0||!Object.values(t).some(o=>o.source==="resourceIds")||!e.resourceIds?null:X(Jo,{component:this.commonDisplay.displayResources(e.resourceIds,{displayResourceInputs:{hideBadge:!0}}),$element:{typography:"caption1"}})))}getLocalizedSpotsLeft(e){return kt($localize`${e} spot left`,e,$localize`${e} spots left`)}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-display-calendar-session-item"]],hostAttrs:[1,"ww-display-calendar-session-item","flex","flex-col"],inputs:{session:"session",bookings:"bookings"},features:[L],decls:8,vars:12,consts:[[4,"wwOutlet"]],template:function(t,n){t&1&&(I(0,Xa,1,0,"ng-container",0),u(1,"async"),I(2,Ka,1,0,"ng-container",0),u(3,"async"),I(4,ja,1,0,"ng-container",0),u(5,"async"),I(6,Ha,1,0,"ng-container",0),u(7,"async")),t&2&&(w("wwOutlet",C(1,4,n.nameComponent$)),p(2),w("wwOutlet",C(3,6,n.timeComponent$)),p(2),w("wwOutlet",C(5,8,n.spotsComponent$)),p(2),w("wwOutlet",C(7,10,n.resourcesComponent$)))},dependencies:[Te,we,N],encapsulation:2,changeDetection:0})}}return i})();function qa(i,d){i&1&&U(0)}var Qa=_t(ut),Us=(()=>{class i extends Qa{constructor(){super(...arguments),this.displaySettingRx=a(Ze),this.visitProperties=a(tt),this.optimisticVisitRx=a(sn),this.showMissingContactWarning$=this.displaySettingRx.get("calendar-show-missing-contact-warning").pipe(K(!1)),this.disableEntityUpdates=!0,this._entityApi=e=>this.optimisticVisitRx.getVisit(e),this.shownProperties$=this._entity$.pipe(D(e=>this.visitProperties.getShownProperties(Xt(e),"calendar")),s(e=>vt(e,{partySize:{display:t=>t.partySize&&t.partySize>1?this.visitProperties.properties.partySize.display(t):null},notes:{display:t=>t.notes?yo(t.notes,150,"..."):null}}))),this.orderedProperties$=this.shownProperties$.pipe(D(e=>e?this.visitProperties.getOrderedProperties(e,"calendar"):F([]))),this.textProperties$=this.orderedProperties$.pipe(s(e=>{if(!e)return[];let t=this.visitProperties.findMainProperty(e,"calendar"),n=["tags","state"];return e.filter(o=>o!==t&&!n.includes(o.key))})),this.mainProperty$=this.orderedProperties$.pipe(s(e=>this.visitProperties.findMainProperty(e,"calendar"))),this.prefixComponents$=g([this._entity$,this.orderedProperties$,this.showMissingContactWarning$]).pipe(s(([e,t,n])=>{if(!e||e.tags?.includes(ce.CANCELLED)||!t.find(r=>r.key==="state"))return null;let o=[];return e.state==="SERVING"&&o.push(st({content:"Currently serving",component:Se({icon:kn.SERVING,size:"x-small"})})),e.state==="COMPLETE"&&o.push(st({content:"Visit complete",component:Se({icon:kn.COMPLETE,size:"x-small"})})),e.tags?.includes(ce.ARRIVED)&&o.push(st({content:"Customer has arrived",component:Se({icon:ui.ARRIVED,size:"x-small"})})),e.tags?.includes(ce.CONFIRMED)&&o.push(st({content:"Visit is confirmed",component:Se({icon:ui.CONFIRMED,size:"x-small"})})),e.tags?.includes(ce.DELAYED)&&o.push(st({content:"Visit is delayed",component:Se({icon:ui.DELAYED,size:"x-small"})})),e.tags?.includes(ce.FLAGGED)&&o.push(st({content:"Visit is flagged",component:Se({icon:"bxs-flag",size:"x-small"})})),e.tags?.includes(ce.PRIORITIZED)&&o.push(st({content:"Visit is prioritized",component:Se({icon:ui.PRIORITIZED,size:"x-small"})})),n&&!e.phone&&!e.email&&o.push(st({content:"Missing contact information",component:Se({icon:"bxs-error-circle",size:"x-small",color:"white"})})),o.length>0?o:null})),this.mainComponent$=g([this._entity$,this.mainProperty$,this.prefixComponents$]).pipe(s(([e,t,n])=>{if(!e||!t)return null;let o=xr(t).display(e);return n?Ae({components:[...n,o],$element:{classList:"flex items-center gap-1"}}):o}))}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-display-visit-calendar-booking"]],hostAttrs:[1,"ww-display-visit-calendar-booking","flex","flex-col","w-full"],inputs:{entity:"entity",entityId:"entityId",disableEntityUpdates:"disableEntityUpdates"},features:[L],decls:8,vars:9,consts:[[1,"flex","justify-between","min-w-0"],[1,"flex","flex-col","flex-1","min-w-0"],[4,"wwOutlet"],[3,"entity","properties"]
1],template:function(t,n){t&1&&(c(0,"div",0)(1,"div",1)(2,"h6"),I(3,qa,1,0,"ng-container",2),u(4,"async"),m(),S(5,"ww-display-visit-text",3),u(6,"async"),u(7,"async"),m()()),t&2&&(p(3),w("wwOutlet",C(4,3,n.mainComponent$)),p(2),w("entity",C(6,5,n._entity$))("properties",C(7,7,n.textProperties$)))},dependencies:[xt,Te,we,as,N],styles:[`.ww-display-visit-calendar-booking .ww-display-visit-text{font-family:var(--ww-typography-caption1-font-family);font-size:var(--ww-typography-caption1-font-size);font-weight:var(--ww-typography-caption1-font-weight);line-height:var(--ww-typography-caption1-line-height);letter-spacing:var(--ww-typography-caption1-letter-spacing)}
2/*noopdisplay-visit-calendar-booking.component-S3LRPKSM.css.map */
3`],encapsulation:2,changeDetection:0})}}return i})();function Ja(i,d){i&1&&S(0,"div",2)}function Za(i,d){i&1&&U(0)}function el(i,d){if(i&1&&(c(0,"div",1),u(1,"async"),u(2,"async"),y(3,Ja,1,0,"div",2),c(4,"div",3),u(5,"async"),u(6,"async"),I(7,Za,1,0,"ng-container",4),u(8,"async"),m()()),i&2){let e=f(),t=Ce(0),n=Ce(2);ro("--ww-calendar-grid-booking-color",C(1,21,e.color$))("--ww-calendar-grid-booking-bg-color",C(2,23,e.bgColor$)),w("wwBackgroundColor","white"),p(3),A(t.state==="blocked"?3:-1),p(),qe("ww-calendar-grid-booking-blocked",t.state==="blocked")("ww-calendar-grid-booking-cancelled",t.state==="cancelled")("ww-calendar-grid-booking-default",t.state==="default")("ww-calendar-grid-booking-pending",n)("ww-calendar-grid-booking-opaque",t.opaque)("ww-calendar-grid-booking-session",C(5,25,e.isSession$))("ww-calendar-grid-booking-session-open-spots",C(6,27,e.hasOpenSpots$)),p(3),w("wwOutlet",C(8,29,e.component$))}}var zs=(()=>{class i extends W{constructor(){super(...arguments),this.datePipe=a(ye),this.displaySettingRx=a(Ze),this.locationRx=a(Je),this.resourceRx=a(Pe),this.serviceRx=a(Kt),this.bookings=[],this.bookings$=this.observe("bookings"),this.duration=void 0,this.duration$=this.observe("duration"),this.date=void 0,this.date$=this.observe("date"),this.titleStartDate=void 0,this.titleStartDate$=this.observe("titleStartDate"),this.titleEndDate=void 0,this.titleEndDate$=this.observe("titleEndDate"),this.icon=null,this.icon$=this.observe("icon"),this.resourceIds=[],this.resourceIds$=this.observe("resourceIds").pipe(s(It)),this.serviceIds=[],this.serviceIds$=this.observe("serviceIds").pipe(s(It)),this.session=void 0,this.session$=this.observe("session"),this.spilloverSub=new pe(0),this.resources$=this.resourceIds$.pipe(D(e=>this.resourceRx.getResources(e))),this.services$=this.serviceIds$.pipe(D(e=>this.serviceRx.getServices(e))),this.usePartySize$=this.locationRx.getCurrentLocation(["bookingCountPartiesAsMultipleSpots"]).pipe(s(e=>e.bookingCountPartiesAsMultipleSpots??!1),k()),this.spilloverComponent$=this.spilloverSub.pipe(te(e=>e>0),s(e=>Ae({components:[Fe({content:$localize`${e+1} more`,$element:{typography:"body2"}})]})),K(null)),this.timeComponent$=g([this.date$,this.duration$,this.titleStartDate$,this.titleEndDate$]).pipe(s(([e,t,n,o])=>{let r=n??e,l=o??(e?ue(e,t??0):null);return!r||!l?null:this.getTimeComponent(r,l)})),this.iconComponent$=this.icon$.pipe(s(e=>e?Se({icon:e,size:"x-small"}):null)),this.needsApproval$=this.bookings$.pipe(s(e=>e.some(t=>t.state==="pending"))),this.firstBooking$=this.bookings$.pipe(s(e=>e.length>0?e[0]:null)),this.isCancelledSession$=this.bookings$.pipe(s(e=>e.length>0&&e.every(t=>t.state==="cancelled"&&t.sessionBooking))),this.cancelledSessionService$=this.firstBooking$.pipe(D(e=>{if(!e||e.state!=="cancelled"||!e.sessionBooking)return F(null);let t=e.visit?.serviceIds?.[0];return t?this.serviceRx.getService(t):F(null)})),this.bookingComponent$=g([this.bookings$,this.firstBooking$,this.timeComponent$,this.iconComponent$,this.session$,this.isCancelledSession$,this.cancelledSessionService$]).pipe(s(([e,t,n,o,r,l,_])=>{if(r)return X(Wn,{session:r,bookings:e});if(!t?.visit){let h=t?.title?Fe({content:t.title,$element:{typography:"h6"}}):null;return Ae({components:[Ae({components:[o,h].filter(B)}),n],$element:{classList:"flex flex-col"}})}return t.visit.isBlock?Ae({components:[Fe({content:$localize`Blocked`+(e.length>1?` +${e.length-1}`:""),$element:{typography:"h6"}}),n,Fe({content:t.visit.notes,$element:{typography:"caption1"}})],$element:{classList:"flex flex-col"}}):l&&_&&t.visit?X(Wn,{session:this.createCancelledCalendarSession(t.visit,_),bookings:e}):Ae({components:[X(Us,{entity:t.visit,disableEntityUpdates:!0})],$element:{classList:"flex flex-col"}})}),K(null)),this.component$=g([this.bookingComponent$,this.spilloverComponent$]).pipe(s(([e,t])=>t??e)),this.isSession$=this.session$.pipe(s(e=>!!e)),this.hasOpenSpots$=g([this.session$,this.bookings$,this.usePartySize$]).pipe(s(([e,t,n])=>{if(!e)return!1;let o=t.filter(r=>B(r.visit)&&!Qt(r.visit));return n?Nt(o.map(l=>l.visit?.partySize??1))<e.spots:o.length<e.spots})),this.fallbackColor=qo("primary"),this.color$=g([this.displaySettingRx.get("calendar-visit-color"),this.services$,this.resources$,this.session$]).pipe(s(([e,t,n,o])=>{if(e==="service"){let r=t.filter(l=>On(l,{source:"BOOKED"}));return r[0]?.color?r[0]?.color:this.fallbackColor}if(e==="resource"){let r=n.filter(l=>On(l,{source:"BOOKED"}));return r[0]?.color?r[0]?.color:o?Dn("primary"):this.fallbackColor}return o?Dn("primary"):this.fallbackColor}),K(this.fallbackColor),He({refCount:!0,bufferSize:1})),this.bgColor$=this.color$.pipe(s(e=>`${e}10`))}set spillover(e){this.spilloverSub.next(e)}getTimeComponent(e,t){let o=e.getDate()!==t.getDate()?"short":"shortTime",r=`${this.datePipe.transform(e,o)} - ${this.datePipe.transform(t,o)}`;return Fe({content:r,$element:{typography:"caption1",classList:"mt-1"}})}createCancelledCalendarSession(e,t){return{id:`cancelled-session-${e.sessionSeriesId}`,isoDate:e.date??"",date:z(e.date??""),duration:e.duration??0,spots:0,from:e.date?.split("T")[1]??"",name:t.name,resourceIds:e.resourceIds??[],serviceId:t.id,seriesId:e.sessionSeriesId??"",parentId:t.parentId??t.id,cancelled:!0}}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-grid-booking"]],hostAttrs:[1,"ww-calendar-grid-booking"],inputs:{bookings:"bookings",duration:"duration",date:"date",titleStartDate:"titleStartDate",titleEndDate:"titleEndDate",icon:"icon",resourceIds:"resourceIds",serviceIds:"serviceIds",session:"session",spillover:"spillover"},standalone:!1,features:[Ei([{provide:Qo,useValue:{truncate:!1}}]),L],decls:5,vars:7,consts:[[1,"w-full","h-full","rounded",3,"--ww-calendar-grid-booking-color","--ww-calendar-grid-booking-bg-color","wwBackgroun
3dColor"],[1,"w-full","h-full","rounded",3,"wwBackgroundColor"],[1,"ww-calendar-grid-booking-blocked-background"],[1,"w-full","h-full","rounded","py-1","px-2","border","border-solid"],[4,"wwOutlet"]],template:function(t,n){if(t&1&&(ge(0),u(1,"async"),ge(2),u(3,"async"),y(4,el,9,31,"div",0)),t&2){let o=Re(C(1,1,n.firstBooking$));p(2),Re(C(3,4,n.needsApproval$)),p(2),A(o?4:-1)}},dependencies:[Ct,we,N],styles:[`.ww-calendar-grid-booking{display:block;height:100%;white-space:nowrap;position:relative}.ww-calendar-grid-booking .ww-calendar-grid-booking-default{color:var(--ww-color-white);border-color:var(--ww-color-white);background:var(--ww-calendar-grid-booking-color);border-width:1px}.ww-calendar-grid-booking .ww-calendar-grid-booking-opaque{opacity:.1}.ww-calendar-grid-booking .ww-calendar-grid-booking-blocked-background{position:absolute;inset:0;opacity:.1;background:repeating-linear-gradient(-45deg,var(--ww-color-white),var(--ww-color-white) 8px,var(--ww-calendar-grid-booking-color) 8px,var(--ww-calendar-grid-booking-color) 16px)}.ww-calendar-grid-booking .ww-calendar-grid-booking-blocked{background:transparent;color:var(--ww-color-black);border-color:var(--ww-calendar-grid-booking-color)}.ww-calendar-grid-booking .ww-calendar-grid-booking-cancelled{color:var(--ww-color-warning);border-color:var(--ww-color-warning);background:repeating-linear-gradient(-45deg,var(--ww-color-white),var(--ww-color-white) 8px,var(--ww-color-warning-bright) 8px,var(--ww-color-warning-bright) 16px)}.ww-calendar-grid-booking .ww-calendar-grid-booking-cancelled:not(.ww-calendar-grid-booking-session) .ww-typography-h6{text-decoration:line-through}.ww-calendar-grid-booking .ww-calendar-grid-booking-pending{background:var(--ww-color-white);color:var(--ww-calendar-grid-booking-color);border-color:var(--ww-calendar-grid-booking-color);border-style:dashed}.ww-calendar-grid-booking .ww-calendar-grid-booking-session-open-spots{color:var(--ww-color-black);border-color:var(--ww-calendar-grid-booking-color);background:var(--ww-calendar-grid-booking-bg-color)}
4/*noopcalendar-grid-booking.component-QVNBTJLA.css.map */
5`],encapsulation:2,changeDetection:0})}}return i})();var rl=i=>({somePermissions:i}),sl=i=>({resourceId:i});function al(i,d){i&1&&S(0,"ww-empty-state",7),i&2&&w("icon","ww-empty-state-resources")}function ll(i,d){i&1&&(c(0,"span"),b(1,2),m())}function cl(i,d){if(i&1&&(c(0,"a",21),b(1,6),m()),i&2){let e=f(5).$implicit;w("routerLink","/settings/resources/edit")("queryParams",it(2,sl,e.resource.id))}}function pl(i,d){if(i&1){let e=P();c(0,"button",18),S(1,"ww-icon",19),m(),c(2,"mat-menu",null,1)(4,"button",20),T("click",function(){O(e);let n=f(4).$implicit,o=f(3);return M(o.resourceSwitcherActions.openEditResourceHoursByWeekday(n.resource))}),b(5,3),m(),c(6,"button",20),T("click",function(){O(e);let n=f(4).$implicit,o=f(3);return M(o.resourceSwitcherActions.openEditResourceHoursByDate(n.resource,n.start))}),b(7,4),m(),y(8,cl,2,4,"a",21),u(9,"async"),c(10,"button",20),T("click",function(){O(e);let n=f(4).$implicit,o=f(3);return M(o.resourceSwitcherActions.viewResourceBookings(n.resource))}),b(11,5),m()()}if(i&2){let e=Ye(3),t=f(4).$implicit;w("matMenuTriggerFor",e),p(8),A(C(9,2,t.canUpdateAllResources$)?8:-1)}}function dl(i,d){if(i&1&&(Et(0),y(1,pl,12,4),u(2,"async"),Rt()),i&2){let e=f(3).$implicit;p(),A(C(2,1,e.canUpdateCurrentResource$)?1:-1)}}function ml(i,d){if(i&1&&(c(0,"div",15),S(1,"ww-display-resource",16),I(2,dl,3,3,"ng-container",17),m()),i&2){let e=f(2).$implicit;p(),w("entity",e.resource)("badgeSize","x-small"),p(),w("wwFeatureEnabledConfig",it(3,rl,e.somePermissions))}}function ul(i,d){i&1&&U(0)}function _l(i,d){if(i&1&&I(0,ul,1,0,"ng-container",22),i&2){f();let e=Ye(5);w("ngTemplateOutlet",e)}}function Cl(i,d){if(i&1&&(c(0,"div",25),q(1),u(2,"date"),m()),i&2){let e=f(3).$implicit;p(),De(" ",nt(2,1,e.start,"d")," ")}}function wl(i,d){if(i&1&&(q(0),u(1,"date")),i&2){let e=f(3).$implicit;De(" ",nt(1,1,e.start,"d")," ")}}function fl(i,d){if(i&1){let e=P();c(0,"button",23),T("click",function(){O(e);let n=f(2).$implicit,o=f(3);return M(o.calendar.onCalendarGridHeaderDateClick(n.start))}),c(1,"div",24),q(2),u(3,"date"),m(),y(4,Cl,3,4,"div",25)(5,wl,2,4),m()}if(i&2){let e=f(2).$implicit;p(2),De(" ",nt(3,2,e.start,"EEE")," "),p(2),A(e.isToday?4:5)}}function hl(i,d){if(i&1&&(c(0,"ww-grid-column-header",11),y(1,ll,2,0,"span")(2,ml,3,5,"div",15)(3,_l,1,1,"ng-container"),I(4,fl,6,5,"ng-template",null,0,pt),m()),i&2){let e,t=f().$implicit;p(),A((e=t.type)==="unassigned"?1:e==="resource"?2:e==="date"?3:-1)}}function gl(i,d){i&1&&S(0,"ww-grid-cell")}function Sl(i,d){if(i&1){let e=P();c(0,"div",26),T("click",function(){let n=O(e).$implicit,o=f().$implicit,r=f(3);return M(r.onSlotSelected(n,o))}),c(1,"div",27),q(2),u(3,"date"),u(4,"date"),m()()}if(i&2){let e=d.$implicit;f(2);let t=Ce(0);qe("ww-calendar-grid-slot-over-bookable",e.availability==null?null:e.availability.overBookable)("ww-calendar-grid-slot-unavailable",!(e.availability!=null&&e.availability.available))("ww-calendar-grid-slot-create-disabled",t),Jn("data-date",e.dateString)("data-resource-id",e.resourceId),p(2),Si(" ",nt(3,10,e.date,"
5shortTime")," - ",nt(4,13,e.end,"shortTime")," ")}}function El(i,d){if(i&1){let e=P();c(0,"ww-calendar-grid-booking",28),T("click",function(n){let o=O(e),r=o.$implicit,l=o.spillover,_=o.siblings,h=f(4);return n.stopPropagation(),M(h.onItemSelected(r,_,l))}),m()}if(i&2){let e=d.$implicit,t=d.spillover;w("bookings",e.bookings)("date",e.date)("duration",e.duration)("titleStartDate",e.titleStartDate)("titleEndDate",e.titleEndDate)("icon",e.icon)("resourceIds",e.resourceIds)("serviceIds",e.serviceIds)("spillover",(t==null?null:t.length)??0)("session",e.session)}}function Rl(i,d){if(i&1&&(c(0,"ww-grid-column",10),y(1,hl,6,1,"ww-grid-column-header",11),u(2,"async"),I(3,gl,1,0,"ww-grid-cell",12)(4,Sl,5,16,"div",13)(5,El,1,10,"ww-calendar-grid-booking",14),m()),i&2){let e=d.$implicit,t=f(3);w("value",e.duration)("cells",e.cells)("slots",e.slots)("items",e.items)("cellTrackBy",t.cellTrackBy)("slotTrackBy",t.slotTrackBy)("itemTrackBy",t.itemTrackBy)("positioner",t.itemPositioner),p(),A(C(2,9,t.showColumnHeader$)?1:-1)}}function yl(i,d){if(i&1&&(ge(0),u(1,"async"),c(2,"ww-grid",8),u(3,"async"),u(4,"async"),u(5,"async"),u(6,"async"),u(7,"async"),u(8,"async"),I(9,Rl,6,11,"ww-grid-column",9),m()),i&2){let e=f(),t=f();Re(C(1,8,t.calendar.visitQuotaExceeded$)),p(2),w("columns",e)("labels",C(3,11,t.labels$))("cellHeight",C(4,13,t.calendarService.cellHeightSub))("columnTrackBy",t.columnTrackBy)("cursor",C(5,15,t.timeline$))("virtualize",C(6,17,t.virtualize$))("showColumnHeader",C(7,19,t.showColumnHeader$))("disableScrollToGridCursor",C(8,21,t.disableScrollToGridCursor$))}}function Al(i,d){i&1&&y(0,al,1,1,"ww-empty-state",7)(1,yl,10,23,"ww-grid",8),i&2&&A(d.length===0?0:1)}var Xs=0,Il=0,Hs=(()=>{class i extends W{constructor(){super(),this.calendar=a(si),this.calendarService=a(ze),this.resourceSwitcherActions=a(es),this.addVisitWrite=a(Ht),this.availabilityRx=a(Mr),this.blockFormApi=a(ti),this.breakpoints=a(Wt),this.commonDisplay=a(Ge),this.datePipe=a(ye),this.deleteVisitWrite=a(on),this.eventLogger=a(tn),this.layout=a(ie),this.locationRx=a(Je),this.permissionRx=a(Zi),this.resourceRx=a(Pe),this.serviceRx=a(Kt),this.sessionAvailabilityRx=a(en),this.updateResourceWrite=a(Fr),this.visitCoreService=a(fe),this.visitFormApi=a(un),this.visitRx=a(ve),this.writeContext=a(jt),this.grid=null,this.grid$=this.observe("grid"),this.itemPositioner=e=>({start:e.start,end:e.start+e.duration}),this.columnTrackBy=(e,t)=>t.title,this.cellTrackBy=(e,t)=>t.id,this.slotTrackBy=(e,t)=>t.id,this.itemTrackBy=(e,t)=>t.id,this.slotSelectedSub=new at,this.disableScrollToGridCursor$=this.calendar.routedVisitId$.pipe(s(e=>!!e)),this.sessionServices$=g([this.calendar.filterSelectedServiceIds$,this.serviceRx.services$]).pipe(s(([e,t])=>e.length>0?t.filter(n=>e.includes(n.id)&&bn(n)):t.filter(n=>bn(n)))),this.sessionSlots$=g([this.calendar.dateRangesFromSettingsMinMax$,this.sessionServices$]).pipe(D(([{min:e,max:t},n])=>n.length===0?F([]):this.sessionAvailabilityRx.getSessionSlots(e,t,{serviceIds:n.map(o=>o.id)}))),this.calendarSessions$=g([this.sessionSlots$,this.sessionServices$,this.writeContext.writerResourceId$]).pipe(s(([e,t,n])=>{let o=[];if(t.length===0||e.length===0)return o;for(let r of e){let{date:l,duration:_,serviceId:h,seriesId:v}=r;if($e(l)||$e(_)||$e(h)||$e(v))continue;let E=t.find(x=>x.id===h);if($e(E))continue;let R=It(r.resourceIds);n&&R.length>0&&!R.includes(n)||o.push(hn(E.id,E.name,E.description,E.parentId,l,v,R,_,r.numSpots??0))}return o})),this.visitFormSelectedResources$=this.visitFormApi.state$.pipe(s(e=>e?.value?.resourceIds??[]),k((e,t)=>me(e,t)),D(e=>this.resourceRx.getResources(e)),K([]),this.shareReplay()),this.visitFormSelectedResourceIds$=this.visitFormSelectedResources$.pipe(s(e=>e.map(t=>t.id))),this.visitFormSelectedServicesIds$=this.visitFormApi.state$.pipe(s(e=>e?.value?.serviceIds??[]),k((e,t)=>me(e,t)),K([]),this.shareReplay()),this.getSlotsArguments$=g([this.writeContext.writerResourceId$,this.visitFormSelectedResourceIds$,this.visitFormSelectedServicesIds$,this.calendar.filterSelectedResourceIds$,this.calendar.filterSelectedServiceIds$,this.calendar.dateRangesFromSettingsMinMax$,this.visitFormApi.state$.pipe(s(e=>e?.id)),this.sessionServices$]).pipe(k((e,t)=>
5me(e,t)),this.shareReplay()),this.getSlotsArgumentsRefetch$=he(this.addVisitWrite.response$,this.deleteVisitWrite.response$,this.updateResourceWrite.response$).pipe(Oe(this.getSlotsArguments$),s(([,e])=>e)),this.slotResponse$=he(this.getSlotsArguments$,this.getSlotsArgumentsRefetch$).pipe(ke(Fs),Oe(this.calendar.viewMode$),D(([[e,t,n,o,r,{min:l,max:_},h,v],E])=>{let R=[];E!=="resources"&&(t.length>0?R=t:o.length>0?R=o:e&&(R=[e]));let x=n.length>0?n:r,j=v.filter(J=>x.includes(J.id)).map(J=>J.id);return j.length>0?this.sessionAvailabilityRx.getAvailableSlots(l,_,{resourceIds:R,serviceIds:j,showOffHours:!0,ignoreVisitId:h??void 0}):this.availabilityRx.getAvailableSlots(l,_,{resourceIds:R,serviceIds:x,showOffHours:!0,ignoreVisitId:h??void 0})}),this.shareReplay()),this.slotsLoading$=he(this.getSlotsArguments$.pipe(s(()=>!0)),this.slotResponse$.pipe(s(()=>!1))),this.visitsLoading$=he(g([this.calendar.dateRangesFromSettingsMinMax$,this.calendar.queryArgs$]).pipe(s(()=>!0)),this.calendar.visits$.pipe(ke(0),s(()=>!1))),this.loading$=g([this.slotsLoading$,this.visitsLoading$]).pipe(s(([e,t])=>e||t),k()),this.slots$=g([this.slotResponse$.pipe(k((e,t)=>me(e,t))),this.calendar.dayRange$,this.locationRx.getCurrentLocation(["bookingAllowOverbooking","bookingUseResourceSpots"])]).pipe(s(([e,t,{bookingAllowOverbooking:n,bookingUseResourceSpots:o}])=>this.createSlots(e,t,!!n,o))),this.cells$=g([this.calendar.dateRanges$,this.locationRx.getCurrentLocation(["bookingTimeSlotIncr"])]).pipe(s(([e,{bookingTimeSlotIncr:t}])=>e.flatMap(({start:n,end:o})=>{let r=this.createCells(n,o,t);return this.adjustCellsForDaylightSavings(r,t)})),this.shareReplay()),this.getDateRange$=this.cells$.pipe(s(e=>{let t=new Map;for(let n of e){let o=n.date.toDateString(),r=t.get(o),l=ue(n.date,n.duration);if(!r){t.set(o,{start:n.date,end:l});continue}Mt(l,r.end)&&(r.end=l),Bt(n.date,r.start)&&(r.start=n.date)}return n=>t.get(n.toDateString())}),this.shareReplay()),this.dateRanges$=g([this.calendar.dateRanges$,this.getDateRange$]).pipe(s(([e,t])=>e.map(({start:n})=>t(n)).filter(B))),this.secondsOfDayMinMax$=this.dateRanges$.pipe(s(e=>{let t=e.map(({start:o})=>o).map(We),n=e.map(({end:o})=>o).map(We).map(o=>o===0?Ot(24):o);return{min:Math.min(...t),max:Math.max(...n)}}),this.shareReplay()),this.visitItems$=g([this.calendar.filteredVisits$,this.visitFormSelectedResources$,this.getDateRange$,this.calendarService.useGrouping$,this.calendarService.groupingProperties$,this.calendarSessions$]).pipe(s(([e,t,n,o,r,l])=>this.createCalendarItemsFromVisits(e,t,n,o,r,l)),this.shareReplay()),this.previewItem$=g([this.visitFormApi.state$,this.blockFormApi.state$,this.getDateRange$,this.calendarSessions$]).pipe(D(([e,t,n,o])=>{let r=e?.id??t?.id;return r?this.visitRx.getVisit(r).pipe(s(l=>this.createPreviewItem(e,t,n,o,l??void 0))):F(this.createPreviewItem(e,t,n,o))})),this.sessionItems$=g([this.calendarSessions$,this.getDateRange$]).pipe(s(([e,t])=>this.createCalendarItemsFromSessions(e,t))),this.resourceIntegrationItems$=g([this.writeContext.writerResource$.pipe(Ro(["id","externalBlocks"],(e,t)=>me(e,t))),this.getDateRange$,this.locationRx.getCurrentLocation(["externalCalendars","timezone"])]).pipe(s(([e,t,n])=>e?this.createCalendarItemsFromResourceIntegration(e,t,n):[])),this.items$=g([this.previewItem$,this.visitItems$,this.sessionItems$,this.resourceIntegrationItems$]).pipe(ke(0),s(([e,t,n,o])=>{let r=t.map(h=>h.session?.id).filter(B),l=n.filter(h=>h.session&&!r.includes(h.session.id));if(!e)return[...t,...l,...o];let _=e.bookings[0];if(_)if(_.visit?.id)t=t.filter(h=>h.bookings[0]?.visit?.id!==_.visit?.id);else{let h=xi(new Date,1);t=t.filter(v=>{let E=v.bookings[0];return!E?.visit?.date||!E.visit.created?!0:!(E.title===_.title&&E.state===_.state&&Mt(E.visit.created,h)&&fs(E.date??new Date,_.date??new Date))})}if(B(e.session)){if(t.filter(E=>B(E.session)).find(E=>E.session?.id===e.session?.id))return[...t,...l];if(l.filter(E=>B(E.session)).find(E=>E.session?.id===e.session?.id))return[...t,...l]}return[...t,...l,...o,e]}),this.shareReplay()),this.itemResourceIds$=this.items$.pipe(s(e=>vo(e.flatMap(t=>t.resourceIds??[]))),k((e,t)=>me(e,t))),this.resources$=g([this.resourceRx.getOptimisticResources(),this.itemResourceIds$]).pipe(D(([e,t])=>{let n=e.filter(o=>!o.isCategory&&o.isActiveBooking);return this.resourceRx.getResources(t).pipe(s(o=>{let r=[...n];for(let l of o)!l.isCategory&&!r.some(_=>_.id===l.id)&&r.push(l);return r.sort((l,_)=>l.name.localeCompare(_.name))}))}),K([]),this.shareReplay()),this.dateColumns$=g([this.cells$,this.slots$,this.items$]).pipe(Oe(this.dateRanges$),ke(0),s(([[e,t,n],o])=>
5o.filter(B).map(({start:r,end:l})=>({type:"date",start:r,title:this.datePipe.transform(r,"E, MMM d")??"",duration:ci(r,l),isToday:Vo(r),cells:e.filter(_=>mt(_.date,r)),slots:t.filter(_=>mt(_.date,r)).map(_=>Xe(ne({},_),{availability:_.getAvailability()})),items:n.filter(_=>mt(_.date,r))}))),te(e=>e.length>0),this.shareReplay()),this.resourceColumns$=g([this.cells$,this.slots$,this.items$,this.resources$,this.writeContext.writerResourceId$,this.calendar.filterSelectedResourceIds$,this.calendarService.showUnassignedColumn$,this.calendarService.showUnavailableResources$,this.calendarSessions$]).pipe(ke(0),Oe(this.calendar.date$,this.resourceRx.resourceCategories$,this.secondsOfDayMinMax$),s(([[e,t,n,o,r,l,_,h,v],E,R,{min:x,max:j}])=>{let J=j-x,Ee=n.filter(G=>!G.resourceIds||G.resourceIds.length===0?!0:G.resourceIds.every(_e=>!o.find(En=>En.id===_e)||R.some(En=>En.id===_e))),Ne=dt(E,x),wi=e.filter(G=>mt(G.date,E)),fi=t.filter(G=>mt(G.date,E)),ai=o.filter(G=>{if(r){let _e=R.find(Un=>Un.id===G.parentId);return G.id===r||_e?.includeInRestrictedMode||G.includeInRestrictedMode}return l.length>0?l.includes(G.id):!0}).map(G=>({type:"resource",title:G.name,resource:G,canUpdateAllResources$:this.permissionRx.hasPermission("resources.update"),canUpdateCurrentResource$:this.permissionRx.hasSomeServerPermission("resources.update",`resources.update.${G.id}`),duration:J,start:dt(E,x),cells:wi,slots:fi.map(_e=>Xe(ne({},_e),{availability:_e.getAvailability(G.id),resourceId:G.id})),items:n.filter(_e=>_e.resourceIds?.includes(G.id)),sessions:v.filter(_e=>mt(_e.date,E)?_e.resourceIds===null||_e.resourceIds.includes(G.id):!1)})).filter(G=>h||G.cells.length===0||G.items.length>0||G.sessions.length>0?!0:G.slots.some(_e=>_e.availability?.available||_e.availability?.hasBooking));return _&&ai.unshift({type:"unassigned",title:$localize`Unassigned`,duration:J,start:Ne,cells:wi,slots:fi.map(G=>Xe(ne({},G),{availability:G.getAvailability()})),items:Ee}),ai}),te(B),this.shareReplay()),this.columns$=this.calendar.viewMode$.pipe(D(e=>e===_i?this.resourceColumns$:this.dateColumns$.pipe(te(t=>e==="day"?t.length===1:t.length===7))),this.shareReplay()),this.showColumnHeader$=g([this.calendar.viewMode$,this.columns$,this.calendarService.showUnassignedColumn$]).pipe(s(([e,t,n])=>e==="resources"?n||t.length>1:e==="week"),k()),this.virtualize$=this.columns$.pipe(s(e=>e.length>=Ps),k()),this.labels$=this.columns$.pipe(s(e=>e.length===0?[]:e[0].cells.map(t=>t.label?t.label:this.datePipe.transform(t.date,"shortTime")??""))),this.now$=zn(1e3*60).pipe(K(null),s(()=>new Date)),this.timezoneNow$=g([this.now$,this.locationRx.getCurrentLocation(["timezone"])]).pipe(s(([e,t])=>t.timezone?Ni(e,t.timezone):e)),this.timeline$=g([this.timezoneNow$,this.calendar.viewMode$,this.columns$]).pipe(s(([e,t,n])=>{let o=0,r=0,l=null,_=h=>ot(e,h.start)/h.duration;if(t==="resources")r=n.length,l=n.length>0?_(n[0]):null;else for(let h=0;h<n.length;h++){let v=n[h];if(mt(v.start,e)){l=_(v),o=h,r=h+1;break}}return l?{fraction:l,colStart:o,colEnd:r}:null})),this.virtualScrollViewPort$=this.grid$.pipe(D(e=>e?e.virtualScrollViewPort$:F(null)),K(null)),this.resourceAvailability$=this.resourceRx.resources$.pipe(D(e=>e.some(n=>n.staffPreSelectionModes?.BOOKED==="LONGEST-AVAILABLE")?this.availabilityRx.servingAvailabilityByResourceId$:F({}))),this.subscribe(),this.addClassBinding("ww-calendar-grid-readonly",this.permissionRx.lacksPermission("visits.create"))}onSlotSelected(e,t){e.availability?.available||e.availability?.overBookable?(this.slotSelectedSub.next({slot:e,column:t}),this.eventLogger.log("opened_create_visit")):this.calendarService.openSlotViewer({initialSlot:e.dateString,initialResourceIds:t.type==="resource"?[t.resource.id]:void 0})}onItemSelected(e,t,n){return Z(this,null,function*(){let o=yield ee(this.calendar.viewMode$);if(this.eventLogger.log("viewed_visit"),e.type==="session"){let r=e.bookings.filter(l=>!!l.visit);this.calendarService.openSessionViewer({session:e.session,date:r[0]?.date,$rx:{bookings:this.items$.pipe(s(l=>{let _=l.find(h=>h.session?.id===e.session?.id);return _?_.bookings:[]}))}})}else if(e.type==="external-block")this.calendarService.openExternalBlockViewer({item:e,startDate:e.titleStartDate,endD
5ate:e.titleEndDate,resourceIds:e.resourceIds,externalBlockSource:e.externalBlockSource});else if((this.breakpoints.isBelowSmall||o!=="day")&&t.length>=Gs)this.calendarService.openGridItemViewer({bookings:t.map(r=>r.bookings).flat()});else if(e.bookings.length===1&&!n){let l=e.bookings[0].visit;l&&(l.isBlock?this.calendarService.openBlockViewer({entity:l}):this.visitCoreService.openViewer({entity:l}))}else{let r=[...e.bookings,...n?n.map(l=>l.bookings).flat():[]];this.calendarService.openGridItemViewer({bookings:r,date:r[0]?.date})}})}createPreviewItem(e,t,n,o,r){let l,_,h,v,E,R="default",x=!1;if(t?(l=t.value.date,_=t.value.duration,h=t.value.resourceIds,x=!!t.value.allDay,R="blocked",E=$localize`Blocked`):e&&(l=e.value.date,_=e.value.duration,h=e.value.resourceIds,v=e.value.serviceIds,E=this.commonDisplay.displayPersonNames(e.value)),!l||!_)return null;let j=z(l),J=n(j);if(!J)return null;let Ee=x?J.start:j,Ne=ot(J.end,J.start),wi=x?Ne:_,fi=v?o.find(ai=>v?.includes(ai.serviceId)&&me(ai.date,Ee)):void 0;return{id:"preview",type:"booking",duration:wi,date:Ee,resourceIds:h??[],serviceIds:v??[],start:We(Ee)-We(J.start),bookings:[{title:E,state:R,visit:r,date:Ee}],session:fi}}createCalendarItemsFromSessions(e,t){return e.map(n=>{let o="default",r=z(`${ko(n.date)}T${n.from}`),l=t(r);return l?{id:n.id,type:"session",date:r,duration:n.duration,resourceIds:n.resourceIds,serviceIds:[n.serviceId],bookings:[{title:n.name,state:o,visit:void 0,date:r}],start:We(r)-We(l.start),session:n}:null}).filter(B)}createCalendarItemsFromVisits(e,t,n,o,r,l){let _=$o(e,v=>this.createVisitGroupIdentifier(v,r,o)),h=Object.values(_);return Object.values(h).map(v=>{let E=v[0],R=new Date(E.date),x=E.duration,j=n(R);if(!j||Mt(R,j.end))return null;if(E.isBlock){let Ne=ot(j.end,j.start);R=An(j.start,R),x=Math.min(x,Ne)}let J=E.serviceIds?l.find(Ne=>E.serviceIds?.includes(Ne.serviceId)&&me(Ne.date,R)):void 0,Ee=J?"session":"booking";return{id:E.id,type:Ee,date:R,duration:x,resourceIds:E.resourceIds,serviceIds:E.serviceIds,bookings:v.map(Ne=>this.createBookingFromVisit(Ne,t)),start:We(R)-We(j.start),session:J}}).filter(B)}createCalendarItemsFromResourceIntegration(e,t,n){let o=[];for(let r of Ko){let l=Ir[r];if(!l||!n.externalCalendars?.[l]?.enableIncoming)continue;let _=e.externalBlocks?.[r]??[];for(let h of _)if(jo(h)){let v=z(h.fromDate),E=z(h.toDate);if(Bt(E,v))continue;let R=z(h.fromDate);for(;Bt(R,E)||ws(R,E);){let x=t(R);if(!x){R=Tt(R,1);continue}let j=ci(x.start,x.end);o.push({id:h.id??Xs++,type:"external-block",date:R,start:0,duration:j,titleStartDate:Le(v),titleEndDate:Le(Tt(E,1)),resourceIds:[e.id],externalBlockSource:r,icon:Nn[r],bookings:[{title:mi[r],state:"blocked",visit:void 0,date:v}]}),R=Tt(R,1)}}else{let v=Ni(new Date(h.from),n.timezone),E=Ni(new Date(h.to),n.timezone);if(Bt(E,v))continue;let R=new Date(v);for(;Bt(R,E);){let x=t(R);if(!x){R=Le(Tt(R,1));continue}let j=An(x.start,R),J=No(E,x.end),Ee=ci(j,J),Ne=ci(x.start,j);o.push({id:h.id??Xs++,type:"external-block",date:R,titleStartDate:v,titleEndDate:E,start:Ne,duration:Ee,resourceIds:[e.id],externalBlockSource:r,icon:Nn[r],bookings:[{title:mi[r],state:"blocked",visit:void 0,date:v}]}),R=Le(Tt(R,1))}}}return o}createVisitGroupIdentifier(e,t,n){let o=[];return e.sessionSeriesId?`${e.sessionSeriesId}-${e.date}`:n?(e.isBlock&&o.push("isBlock"),e.cancelTime&&t.includes("isCancelled")&&o.push("isCancelled"),e.resourceIds&&t.includes("resources")&&o.push(...e.resourceIds),e.serviceIds&&t.includes("services")&&o.push(...e.serviceIds),e.date&&o.push(e.date),e.duration&&o.push(e.duration),o.sort().join(",")):e.id}createSlots(e,t,n,o){return e.map(r=>{if(!r.date||!r.duration)return null;let l=z(r.date),_=Le(l),h=dt(_,t.start),v=dt(_,t.end);return h>l||l>v?null:{id:r.date??Il++,date:l,dateString:r.date,end:ue(l,r.duration),start:We(l)-t.start,duration:r.duration,getAvailability:E=>{if(!r.isWithinHours)return{available:!1,hasBooking:!!r.numBookedSpots&&r.numBookedSpots>0,overBookable:n};let R=!!r.numAvailableSpots&&r.numAvailableSpots>0,x=!!r.numBookedSpots&&r.numBookedSpots>0;if(o&&E&&r.numAvailableSpotsByResourceId){let j=r.numAvailableSpotsByResourceId[E]>0,J=r.numBookedSpotsByResourceId[E]>0;return{available:R&&j,hasBooking:x&&J,overBookable:n}}return{available:R,hasBooking:x,overBookable:n}}}}
5).filter(B)}createCells(e,t,n){let o=[],r=e;for(;r<t;){let l=ue(r,n),_=n;l>t&&(_=ot(t,r)),o.push({id:`${r.getTime()}-${_}`,date:r,duration:_}),r=l}return o}createBookingFromVisit(e,t){return{visit:e,state:Sn(e),opaque:!this.matchFields(t,e.resourceIds??[]),date:z(e.date),title:e.name,sessionBooking:!!e.sessionSeriesId}}adjustCellsForDaylightSavings(e,t){if(e.length===0)return[];let n=To(e,(o,r)=>oe(o.date)===oe(r.date));for(let o=0;o<e.length;o++){let r=e[o-1],l=e[o];if(!r)continue;let _=We(l.date)-We(r.date);for(;_>t;)n=Io(n,Xe(ne({},l),{id:`${l.date.getTime()}-inserted`,label:this.datePipe.transform(ue(Tt(r.date,1),_-t),"shortTime")||void 0}),h=>h.date.getTime()),_=_-t}return n}matchFields(e,t){let n=e.filter(o=>!o.isCategory);return n.length===0||n.some(o=>t.includes(o.id))}scrollElementIntoView(e){return Z(this,null,function*(){(yield vi(e))?.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})})}subscribe(){this.loading$.pipe(V(this.ngOnDestroy$)).subscribe(e=>this.calendar.setLoading(e)),this.virtualize$.pipe(V(this.ngOnDestroy$)).subscribe(e=>{this.layout.updateFeatureContext({rightPanelShrinksContent:e})}),this.virtualScrollViewPort$.pipe(V(this.ngOnDestroy$)).subscribe(e=>{this.calendar.updateVirtualizing(!!e),e&&this.layout.updateFeatureContext({scrollElement:e.elementRef.nativeElement})}),this.slotSelectedSub.pipe(Oe(this.calendar.filterSelectedResourceIds$,this.calendar.filterSelectedServiceIds$,this.visitFormApi.isOpen$,this.blockFormApi.isOpen$,this.visitFormApi.state$,this.blockFormApi.state$,this.calendar.viewMode$,this.resources$,this.resourceAvailability$),V(this.ngOnDestroy$)).subscribe(([{slot:e,column:t},n,o,r,l,_,h,v,E,R])=>{let x=gn(t)?t.resource.id:null,j=v===_i&&!gn(t);!r&&!l&&this.calendar.openEditor({date:oe(e.date),duration:e.duration,resourceIds:x?$r(E,R,"BOOKED",[x]):n.length>0?n:null,serviceIds:o},j);let J={duration:_?.value.duration??e.duration,date:oe(e.date)},Ee={duration:h?.value.duration??e.duration,date:oe(e.date),allDay:!1,resourceIds:[],notes:null};x?(J.resourceIds=[x],Ee.resourceIds=[x]):t.type==="unassigned"&&(J.resourceIds=[],Ee.resourceIds=[]),this.blockFormApi.setValue(Ee),this.visitFormApi.setValue(J)}),this.calendarService.scrollToCell$.pipe(D(e=>Xn([this.calendar.viewMode$,this.columns$,this.virtualScrollViewPort$]).pipe(Ke(1),s(([t,n,o])=>[e,t,n,o]))),V(this.ngOnDestroy$)).subscribe(([e,t,n,o])=>{if(!e.date||e.date.length===0||n.length===1)return;let r=`[data-date="${e.date}"]`;if(B(e.resourceId)&&t==="resources"){let l=n.findIndex(_=>gn(_)&&_.resource.id===e.resourceId);if(o){let{start:_,end:h}=o.getRenderedRange(),v=l<_||l>h;l>=0&&v&&o.scrollToIndex(l)}r+=`[data-resource-id="${e.resourceId}"]`}this.scrollElementIntoView(r)})}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-grid"]],viewQuery:function(t,n){if(t&1&&io(ji,5),t&2){let o;no(o=oo())&&(n.grid=o.first)}},hostAttrs:[1,"ww-calendar-grid"],standalone:!1,features:[L],decls:2,vars:3,consts:()=>{let e;e=$localize`No resources available at this date`;let t;t=$localize`Unassigned`;let n;n=$localize` Edit weekly hours `;let o;o=$localize` Edit hours by date `;let r;r=$localize` View bookings `;let l;return l=$localize` Edit resource `,[["dateColumnHeaderTmpl",""],["menu","matMenu"],t,n,o,r,l,["message",e,1,"mt-24",3,"icon"],["wwLayoutKeepOpen","",3,"columns","labels","cellHeight","columnTrackBy","cursor","virtualize","showColumnHeader","disableScrollToGridCursor"],[3,"value","cells","slots","items","cellTrackBy","slotTrackBy","itemTrackBy","positioner",4,"wwGridColumn"],[3,"value","cells","slots","items","cellTrackBy","slotTrackBy","itemTrackBy","positioner"],[1,"flex","flex-col","items-start","justify-center","gap-1"],[4,"wwGridCell"],["class","ww-calendar-grid-slot",3,"ww-calendar-grid-slot-over-bookable","ww-calendar-grid-slot-unavailable","ww-calendar-grid-slot-create-disabled","click",4,"wwGridSlot"],["wwEventLogger","viewed_visit",3,"bookings","date","duration","titleStartDate","titleEndDate","icon","resourceIds","serviceIds","spillover","session","click",4,"wwGridItem"],[1,"flex","justify-between","gap-1","w-full"],[3,"entity","badgeSize"],[4,"wwFeatureEnabledConfig"],["wwButton","tert
5iary",1,"-mr-1",3,"matMenuTriggerFor"],["icon","bx-dots-horizontal-rounded"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"routerLink","queryParams"],[4,"ngTemplateOutlet"],[1,"ww-calendar-grid-column-header-date",3,"click"],[1,"capitalize"],[1,"ww-calendar-grid-badge"],[1,"ww-calendar-grid-slot",3,"click"],[1,"ww-calendar-grid-slot-text"],["wwEventLogger","viewed_visit",3,"click","bookings","date","duration","titleStartDate","titleEndDate","icon","resourceIds","serviceIds","spillover","session"]]},template:function(t,n){if(t&1&&(y(0,Al,2,1),u(1,"async")),t&2){let o;A((o=C(1,1,n.columns$))?0:-1,o)}},dependencies:[Ri,wo,Hr,an,ei,cn,ln,Vi,Ft,Wi,Xi,H,ur,_r,hr,gr,Cr,ji,wr,fr,re,zs,N,ye],styles:[`.ww-calendar-grid{position:relative;height:100%}.ww-calendar-grid.ww-calendar-grid-readonly .ww-calendar-grid-slot{pointer-events:none}.ww-calendar-grid .ww-grid-column-slot .ww-calendar-grid-slot{font-family:var(--ww-typography-caption1-font-family);font-size:var(--ww-typography-caption1-font-size);font-weight:var(--ww-typography-caption1-font-weight);line-height:var(--ww-typography-caption1-line-height);letter-spacing:var(--ww-typography-caption1-letter-spacing);color:var(--ww-color-darkGrey);height:100%;width:100%;cursor:pointer;padding:8px;background:var(--ww-color-white)}.ww-calendar-grid .ww-grid-column-slot .ww-calendar-grid-slot.ww-calendar-grid-slot-unavailable{background:transparent}.ww-calendar-grid .ww-grid-column-slot .ww-calendar-grid-slot.ww-calendar-grid-slot-over-bookable{pointer-events:all}.ww-calendar-grid .ww-grid-column-slot .ww-calendar-grid-slot.ww-calendar-grid-slot-create-disabled{pointer-events:none}.ww-calendar-grid .ww-grid-column-slot .ww-calendar-grid-slot:hover{background-color:var(--ww-color-lighterGrey)}.ww-calendar-grid .ww-grid-column-slot .ww-calendar-grid-slot:hover.ww-calendar-grid-slot-unavailable:not(.ww-calendar-grid-slot-over-bookable){background:#00000005}.ww-calendar-grid .ww-grid-column-slot .ww-calendar-grid-slot:hover .ww-calendar-grid-slot-text{display:block}.ww-calendar-grid .ww-grid-column-slot .ww-calendar-grid-slot .ww-calendar-grid-slot-text{display:none}.ww-calendar-grid .ww-grid-content{border-radius:8px;background:repeating-linear-gradient(-45deg,var(--ww-color-lightGrey),var(--ww-color-lightGrey) 8px,var(--ww-color-white) 8px,var(--ww-color-white) 16px)}.ww-calendar-grid-badge{background:var(--ww-color-primary);color:var(--ww-color-white);border-radius:50%;font-weight:500;display:flex;align-items:center;justify-content:center;width:24px;height:24px}.ww-calendar-grid-column-header-date{display:flex;align-items:center;justify-content:center;width:100%;gap:4px}
6/*noopcalendar-grid.component-NW6C5XVP.css.map */
7`],encapsulation:2,changeDetection:0})}}return i})();function Tl(i,d){if(i&1&&(S(0,"ww-liquid-editor",6),u(1,"async"),u(2,"async"),u(3,"async"),u(4,"async"),u(5,"async")),i&2){let e=f();w("layout","vertical")("label",C(1,10,e.messageLabel$))("rows",5)("editor",e.editor)("formControl",e.messageFormControl)("refiner",C(2,12,e.messageTemplateMenuService.variableEditorMatchRefiner$))("stringify",C(3,14,e.messageTemplateMenuService.stringifyLiquidCode$))("hideRestoreDefault",!0)("variableMenuItems",C(4,16,e.messageTemplateMenuService.createNewVariableItems$))("completion",C(5,18,e.messageTemplateMenuService.liquidCompletion$))}}var Ys=(()=>{class i extends W{constructor(){super(...arguments),this.messageTemplateMenuService=a(is),this.dialogRef=a(Gi),this.numberOfVisits$=this.observe("numberOfVisits"),this.messageLabel$=this.numberOfVisits$.pipe(s(e=>$localize`Message ${kt($localize`${e} attendee`,e,$localize`${e} attendees`)}`)),this.editor=ns,this.messageFormControl=new de(null)}cancel(){this.dialogRef.close()}confirm(){let e=this.messageFormControl.value;this.dialogRef.close({cancel:!0,message:e})}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-cancel-session-dialog"]],hostAttrs:[1,"ww-calendar-cancel-session-dialog"],inputs:{sessionName:"sessionName",sessionDate:"sessionDate",numberOfVisits:"numberOfVisits"},features:[L],decls:15,vars:11,consts:()=>{let e;e=$localize`Optional message to attendee(s)`;let t;t=$localize`Cancel session for ${"\uFFFD0\uFFFD"}:INTERPOLATION:`;let n;n=$localize` Are you sure you want to cancel this session for ${"\uFFFD#6\uFFFD"}:START_TAG_STRONG:${"\uFFFD0\uFFFD"}:INTERPOLATION: at ${"\uFFFD1\uFFFD"}:INTERPOLATION_1:${"\uFFFD/#6\uFFFD"}:CLOSE_TAG_STRONG:? All bookings for this session will be cancelled. `;let o;o=$localize` Keep session `;let r;return r=$localize` Cancel session `,[t,n,o,r,[1,"small:max-w-xl","w-full"],[1,"flex","flex-col","gap-6"],["placeholder",e,3,"layout","label","rows","editor","formControl","refiner","stringify","hideRestoreDefault","variableMenuItems","completion"],[3,"hideCancel"],["
7wwButton","secondary","type","button",3,"click"],["wwButton","warning","type","button",3,"click"]]},template:function(t,n){t&1&&(c(0,"ww-dialog-layout",4)(1,"ww-dialog-layout-title"),b(2,0),m(),c(3,"ww-dialog-layout-content",5)(4,"span"),Zn(5,1),S(6,"strong"),u(7,"date"),u(8,"date"),eo(),m(),y(9,Tl,6,20,"ww-liquid-editor",6),m(),c(10,"ww-dialog-layout-actions",7)(11,"button",8),T("click",function(){return n.cancel()}),b(12,2),m(),c(13,"button",9),T("click",function(){return n.confirm()}),b(14,3),m()()()),t&2&&(p(2),lt(n.sessionName),ct(2),p(6),lt(nt(7,5,n.sessionDate,"mediumDate"))(nt(8,8,n.sessionDate,"shortTime")),ct(5),p(),A(n.numberOfVisits>0?9:-1),p(),w("hideCancel",!0))},dependencies:[Ti,Ve,Qe,os,Te,H,rr,sr,ar,lr,N,ye],encapsulation:2,changeDetection:0})}}return i})();var qs={EXTERNAL_CALENDAR_GOOGLE:$localize`This event can only be edited in the connected Google calendar.`,EXTERNAL_CALENDAR_OUTLOOK:$localize`This event can only be edited in the connected Outlook calendar.`};function bl(i,d){i&1&&q(0),i&2&&De(" ",d," ")}function Dl(i,d){if(i&1&&S(0,"ww-display-resource",6),i&2){let e=d.$implicit;w("entityId",e)}}function $l(i,d){if(i&1&&(c(0,"ww-info-bubble"),q(1),m()),i&2){let e=f();p(),De(" ",e.hintByExternalBlockSource[e.externalBlockSource]," ")}}var Bs=(()=>{class i extends W{constructor(){super(...arguments),this.externalBlockSource=null,this.externalBlockSource$=this.observe("externalBlockSource"),this.item=null,this.startDate=null,this.startDate$=this.observe("startDate"),this.endDate=null,this.endDate$=this.observe("endDate"),this.resourceIds=[],this.hintByExternalBlockSource=qs,this.durationService=a(Fo),this.duration$=g([this.startDate$,this.endDate$]).pipe(s(([e,t])=>!e||!t?0:ot(t,e)),s(e=>this.durationService.transform(e,{minUnitCount:2}))),this.isMultiDay$=g([this.startDate$,this.endDate$]).pipe(s(([e,t])=>!e||!t?!1:e.getDate()!==t.getDate())),this.externalBlockSourceLabel$=this.externalBlockSource$.pipe(s(e=>e?mi[e]:""))}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-grid-item-external-block-viewer"]],hostAttrs:[1,"ww-calendar-grid-item-external-block-viewer"],inputs:{externalBlockSource:"externalBlockSource",item:"item",startDate:"startDate",endDate:"endDate",resourceIds:"resourceIds"},standalone:!1,features:[L],decls:26,vars:13,consts:()=>{let e;e=$localize`Resource`;let t;t=$localize`Event time`;let n;return n=$localize`Duration`,[e,t,n,["wwButton","tertiary","wwLayoutClose",""],["icon","bx-x"],[1,"flex","flex-col","gap-6"],[3,"entityId"]]},template:function(t,n){if(t&1&&(c(0,"ww-section")(1,"ww-section-title")(2,"div"),y(3,bl,1,1),u(4,"async"),m(),c(5,"button",3),S(6,"ww-icon",4),m()(),c(7,"ww-section-content",5)(8,"ww-display-object")(9,"ww-display-object-key"),b(10,0),m(),c(11,"ww-display-object-value"),$t(12,Dl,1,1,"ww-display-resource",6,gi),m(),c(14,"ww-display-object-key"),b(15,1),m(),c(16,"ww-display-object-value"),q(17),u(18,"wwDate"),u(19,"wwDate"),m(),c(20,"ww-display-object-key"),b(21,2),m(),c(22,"ww-display-object-value"),q(23),u(24,"async"),m()(),y(25,$l,2,1,"ww-info-bubble"),m()()),t&2){let o;p(3),A((o=C(4,5,n.externalBlockSourceLabel$))?3:-1,o),p(9),Lt(n.resourceIds),p(5),Si(" ",C(18,7,n.startDate)," - ",C(19,9,n.endDate)," "),p(6),Be(C(24,11,n.duration$)),p(2),A(n.externalBlockSource?25:-1)}},dependencies:[be,an,H,zt,Gt,Ut,re,cr,ae,se,Ie,N,Vt],encapsulation:2,changeDetection:0})}}return i})();var Qs=(()=>{class i{constructor(){this.commonDisplay=a(Ge),this.datePipe=a(ye),this.durationPipe=a(Po),this.properties={date:{key:"date",label:$localize`Date`,display:e=>this.datePipe.transform(e.date)},time:{key:"time",label:$localize`Time`,display:e=>{let t=this.datePipe.transform(e.date,"shortTime"),n=this.datePipe.transform(ue(e.date,e.duration),"shortTime");return t&&n?`${t} - ${n} (${this.durationPipe.transform(e.duration)})`:""}},schedule:{key:"schedule",label:$localize`Schedule`,display:e=>this.commonDisplay.displayServiceServiceSessionSchedule(e.serviceId)},spots:{key:"spots",label:$localize`Spots`,display:e=>e.spots},resource:{key:"resource",label:$localize`Resource`,display:e=>e.resourceIds===null?$localize`Any resource`:this.commonDisplay.displayRes
7ources(e.resourceIds)},category:{key:"category",label:$localize`Category`,display:e=>this.commonDisplay.displayService(e.parentId)},price:{key:"price",label:$localize`Price`,display:e=>this.commonDisplay.displayServicePrice(e.serviceId)}}}getPermittedProperties(){return F(this.properties)}getCurrentPermittedProperties(){return F(this.properties)}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Me({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var Js=(()=>{class i{constructor(){this.calendarSessionProperties=a(Qs),this.showProperties$=this.calendarSessionProperties.getCurrentPermittedProperties()}displayCalendarSession(e){return this.showProperties$.pipe(s(t=>pn(e,Object.values(t),[])))}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Me({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var Pn=i=>({ww_visit_state:i});function Ll(i,d){if(i&1){let e=P();c(0,"button",8),u(1,"async"),T("click",function(n){O(e);let o=f(2);return n.stopImmediatePropagation(),M(o.approve())}),b(2,0),m()}if(i&2){let e=f(2),t=Ce(0);w("wwEventLogger","progressed_visit")("wwEventLoggerParams",it(5,Pn,t.state))("disabled",C(1,3,e.updating$))}}function xl(i,d){if(i&1){let e=P();c(0,"button",9),u(1,"async"),T("click",function(n){O(e);let o=f(2);return n.stopImmediatePropagation(),M(o.serve())}),b(2,1),m()}if(i&2){let e=f(2),t=Ce(0);w("wwEventLogger","progressed_visit")("wwEventLoggerParams",it(5,Pn,t.state))("disabled",C(1,3,e.updating$))}}function Nl(i,d){if(i&1){let e=P();c(0,"button",10),u(1,"async"),T("click",function(n){O(e);let o=f(2);return n.stopImmediatePropagation(),M(o.complete())}),b(2,2),m()}if(i&2){let e=f(2),t=Ce(0);w("wwBackgroundColor","success")("wwEventLogger","progressed_visit")("wwEventLoggerParams",it(6,Pn,t.state))("disabled",C(1,4,e.updating$))}}function kl(i,d){if(i&1&&(S(0,"ww-model-action-menu",7),u(1,"async")),i&2){let e=f(2);w("actions",C(1,1,e.menuActions$))}}function Ol(i,d){if(i&1&&(c(0,"div",3),y(1,Ll,3,7,"button",4),u(2,"async"),y(3,xl,3,7,"button",5),u(4,"async"),y(5,Nl,3,8,"button",6),u(6,"async"),y(7,kl,2,3,"ww-model-action-menu",7),u(8,"async"),m()),i&2){let e=f();p(),A(C(2,4,e.showApproveAction$)?1:-1),p(2),A(C(4,6,e.showServeAction$)?3:-1),p(2),A(C(6,8,e.showCompleteAction$)?5:-1),p(2),A(C(8,10,e.showActionsMenu$)?7:-1)}}var Ml=_t(ut),Zs=(()=>{class i extends Ml{constructor(){super(),this.visitRx=a(ve),this.visitActions=a(Zt),this.visitCoreService=a(fe),this._entityApi=e=>this.visitRx.getVisit(e),this.updatingSub=new pe(!1),this.updating$=this.updatingSub.asObservable(),this.visit$=this._entity$.pipe(te(B),this.shareReplay()),this.state$=this.visit$.pipe(s(({state:e})=>e),k()),this.showActionsMenu$=this.state$.pipe(s(e=>e!==le.COMPLETE)),this.showApproveAction$=this.state$.pipe(s(e=>e===le.DRAFT)),this.showServeAction$=this.state$.pipe(s(e=>e===le.BOOKED)),this.showCompleteAction$=this.state$.pipe(s(e=>e===le.SERVING)),this.isCompleted$=this.state$.pipe(s(e=>e===le.COMPLETE)),this.actions$=this.visit$.pipe(D(e=>{let t=e.tags?.includes("CANCELLED");return e?this.visitActions.getActions([e],{pick:this.visitActions.getActionsByState(e.state,t?["complete","delete"]:["progress","complete","alert","arrived","reject","message","noShow","delete"])}):F([])}),this.shareReplay()),this.menuActions$=this.actions$.pipe(s(e=>e.filter(t=>t.key!=="progress"&&t.key!=="complete"))),this.approveAction$=this.actions$.pipe(Oe(this.visit$),s(([e,t])=>t&&t.state===le.DRAFT?e.find(n=>n.key==="progress")??null:null)),this.serveAction$=this.actions$.pipe(Oe(this._entity$),s(([e,t])=>t&&t.state!==le.SERVING?e.find(n=>n.key==="progress")??null:null)),this.completeAction$=this.actions$.pipe(Oe(this._entity$),s(([e,t])=>t&&t.state===le.SERVING?e.find(n=>n.key==="complete")??null:null)),this.state$.pipe(V(this.ngOnDestroy$)).subscribe(()=>this.updatingSub.next(!1))}approve(){return Z(this,null,function*(){let e=yield ee(this.visit$);e.state===le.DRAFT&&(this.visitCoreService.progress(e,null,!0),this.updatingSub.next(!0))})}serve(){return Z(this,null,function*(){let e=yield ee(this.visit$);e.state===le.BOOKED&&(this.visitCoreService.progress(e,null,!0),this.updatingSub.next(!0))})}complete(){return Z(this,null,function*(){let e=yield ee(this.visit$);e.state===le.SERVING&&(this.visitCoreService.progress(e,null,!0),this.updatingSub.next(!0))})}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=$({type:i,selectors:[["ww-display-visit-session-actions"]],hostAttrs:[1,"ww-display-visit-session-actions"],inputs:{disableEntityUpdates:"disableEntityUpdates",entityId:"entityId",entity:"entity"},features:[L],decls:3,vars:4,consts:()=>{let e;e=$localize` Approve `;let t;t=$localize` Serve `;let n;return n=$localize` Complete `,[e,t,n,[1,"flex","items-center","gap-2"],["wwButton","primary","size","small","wwBackgroun
7dColor","success",3,"wwEventLogger","wwEventLoggerParams","disabled"],["wwButton","primary","wwBackgroundColor","success","size","small",3,"wwEventLogger","wwEventLoggerParams","disabled"],["wwButton","primary","wwBackgroundColor","success","size","small",3,"wwBackgroundColor","wwEventLogger","wwEventLoggerParams","disabled"],["size","small","type","secondary",1,"ww-session-visit-actions-action-button",3,"actions"],["wwButton","primary","size","small","wwBackgroundColor","success",3,"click","wwEventLogger","wwEventLoggerParams","disabled"],["wwButton","primary","wwBackgroundColor","success","size","small",3,"click","wwEventLogger","wwEventLoggerParams","disabled"],["wwButton","primary","wwBackgroundColor","success","size","small",3,"click","wwBackgroundColor","wwEventLogger","wwEventLoggerParams","disabled"]]},template:function(t,n){if(t&1&&(ge(0),u(1,"async"),y(2,Ol,9,12,"div",3)),t&2){let o=Re(C(1,1,n.visit$));p(2),A(o?2:-1)}},dependencies:[cn,zr,qt,Te,H,Ct,N],encapsulation:2,changeDetection:0})}}return i})();function Fl(i,d){i&1&&U(0)}function Pl(i,d){if(i&1){let e=P();c(0,"ww-pseudo-checkbox",0),u(1,"async"),u(2,"async"),T("click",function(n){O(e);let o=f();return M(o.toggleCheckbox(n))}),m(),c(3,"div",1)(4,"div",2),S(5,"ww-text",3),m(),c(6,"div",4)(7,"div",5),I(8,Fl,1,0,"ng-container",6),u(9,"async"),m(),c(10,"div",7),S(11,"ww-display-visit-chips",8),m()()(),S(12,"ww-display-visit-session-actions",9)}if(i&2){let e=f(),t=Ce(0);w("disabled",C(1,9,e.checkboxDisabled$))("state",C(2,11,e.checkboxState$)),p(5),w("truncate",!0)("content",t.name),p(3),w("wwOutlet",C(9,13,e.stateAndPartySizeComponent$)),p(3),w("withAlerts",!0)("withTags",!0)("entityId",t.id),p(),w("entityId",t.id)}}var Gl=_t(ut),ea=(()=>{class i extends Gl{constructor(){super(...arguments),this.commonDisplay=a(Ge),this.optimisticVisitRx=a(sn),this._entityApi=e=>this.optimisticVisitRx.getVisit(e),this.selected=!1,this.selected$=this.observe("selected"),this.toggleSelected=new Yn,this.visit$=this._entity$.pipe(te(B),this.shareReplay()),this.checkboxState$=g([this.selected$,this.visit$]).pipe(s(([e,t])=>t.state===rt?"unchecked":e?"checked":"unchecked"),k()),this.checkboxDisabled$=this.visit$.pipe(s(e=>e.state===rt),k()),this.visitStateComponent$=this.visit$.pipe(s(({state:e})=>Vr[e])),this.partySizeComponent$=this.visit$.pipe(s(e=>e.partySize&&e.partySize>1?this.commonDisplay.displayPartySize(e.partySize):null)),this.stateAndPartySizeComponent$=g([this.visitStateComponent$,this.partySizeComponent$]).pipe(s(([e,t])=>Ae({components:[e,t].filter(B),separator:"\xB7",$element:{typography:"caption1"}})))}toggleCheckbox(e){return Z(this,null,function*(){e.stopImmediatePropagation();let t=yield ee(this.visit$);t.state!==rt&&this.toggleSelected.emit(t.id)})}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-display-visit-session-card"]],hostAttrs:[1,"ww-display-visit-session-card","flex","items-center","gap-3","w-full"],inputs:{entity:"entity",entityId:"entityId",disableEntityUpdates:"disableEntityUpdates",selected:"selected"},outputs:{toggleSelected:"toggleSelected"},features:[L],decls:3,vars:4,consts:[[3,"click","disabled","state"],[1,"flex","flex-col","grow"],[1,"flex","grow","items-center","gap-1"],["wwTypography","h6",3,"truncate","content"],[1,"flex","flex-col","gap-1"],["wwColor","darkerGrey","wwTypography","caption1",1,"flex","flex-wrap","items-center","gap-1"],[4,"wwOutlet"],[1,"flex","flex-wrap","items-center","gap-1"],[3,"withAlerts","withTags","entityId"],[3,"entityId"]],template:function(t,n){if(t&1&&(ge(0),u(1,"async"),y(2,Pl,13,15)),t&2){let o=Re(C(1,1,n.visit$));p(2),A(o?2:-1)}},dependencies:[ss,Zs,Te,Ct,we,Pi,Mi,Fi,N],encapsulation:2,changeDetection:0})}}return i})();var zl=()=>[],Xl=()=>["services.update","visits.block"],Kl=i=>({somePermissions:i});function jl(i,d){if(i&1&&(c(0,"button",25),S(1,"ww-icon",26),m()),i&2){f();let e=Ye(15);w("matMenuTriggerFor",e)}}function Hl(i,d){if(i&1){let e=P();c(0,"button",16),T("click",function(){O(e);let n=f();return M(n.cancel())}),S(1,"ww-icon",27),c(2,"span",28),b(3,4),m()()}}function Yl(i,d){if(i&1){let e=P();c(0,"div",29),S(1,"ww-search-input",30),c(2,"div",31)(3,"button",32),T("click",function(){O(e);
7let n=f();return M(n.toggleAll())}),S(4,"ww-pseudo-checkbox",33),u(5,"async"),u(6,"async"),c(7,"span"),b(8,5),m()(),c(9,"span",34),b(10,6),u(11,"async"),m()(),c(12,"ww-list",35),u(13,"async"),T("itemClicked",function(n){O(e);let o=f();return M(o.viewVisit(n))}),m()()}if(i&2){let e=f(),t=Ce(0);p(),w("formControl",e.searchFormControl),p(2),qe("invisible",t.length===0),p(),w("disabled",C(5,10,e.selectAllDisabled$))("state",C(6,12,e.selectAllState$)),p(7),lt(C(11,14,e.usedSpots$))(e.session.spots),ct(10),p(),w("pluckLabel",C(13,16,e.pluckLabel$))("data",t)("trackByProperty","id")}}function ql(i,d){i&1&&U(0)}function Ql(i,d){i&1&&U(0)}function Jl(i,d){if(i&1&&(c(0,"ww-display-object-key"),I(1,ql,1,0,"ng-container",38),m(),c(2,"ww-display-object-value"),I(3,Ql,1,0,"ng-container",38),m()),i&2){let e=d.$implicit;p(),w("wwOutlet",e.label),p(2),w("wwOutlet",e.component)}}function Zl(i,d){i&1&&(c(0,"ww-display-object",36),$t(1,Jl,4,2,null,null,gi),m()),i&2&&(p(),Lt(d))}function ec(i,d){i&1&&(c(0,"div",37),S(1,"mat-spinner"),m())}function tc(i,d){if(i&1&&(y(0,Zl,3,0,"ww-display-object",36),u(1,"async"),hi(2,ec,2,0,"div",37)),i&2){let e,t=f();A((e=C(1,1,t.sessionComponents$))?0:2,e)}}function ic(i,d){i&1&&(c(0,"button",43)(1,"span"),b(2,8),m(),S(3,"ww-icon",44),m())}function nc(i,d){if(i&1&&(I(0,ic,4,0,"ng-template",null,2,pt),S(2,"ww-model-action-menu",42)),i&2){let e=Ye(1);f();let t=Ce(5);p(2),w("actions",t)("triggerComponent",e)}}function oc(i,d){if(i&1){let e=P();c(0,"div",23)(1,"span",39),b(2,7),u(3,"async"),m(),c(4,"div",40),ge(5),u(6,"async"),y(7,nc,3,2),c(8,"button",41),T("click",function(){O(e);let n=f();return M(n.unselectAll())}),S(9,"ww-icon",14),m()()()}if(i&2){let e=f();p(3),lt(C(3,2,e.selectedVisitCount$)),ct(2),p(2);let t=Re(C(6,4,e.actions$));p(2),A(t?7:-1)}}function rc(i,d){if(i&1){let e=P();c(0,"button",45),u(1,"async"),T("click",function(){O(e);let n=f();return M(n.openAddSessionBooking())}),q(2),u(3,"async"),m()}if(i&2){let e=f();w("disabled",C(1,2,e.disableAddBooking$)),p(2),De(" ",C(3,4,e.addCustomerLabel$)," ")}}var Vs=(()=>{class i extends W{constructor(){super(),this.businessTerms=a(wt),this.calendarService=a(ze),this.calendarSessionDisplay=a(Js),this.cancelSessionWrite=a(Pr),this.clipboard=a(Ar),this.coreLocationRx=a(Yt),this.dialog=a(Ui),this.internalLinksService=a(nn),this.layout=a(ie),this.refetches=a(Oi,{optional:!0}),this.snackBar=a(nr),this.visitActions=a(Zt),this.visitCoreService=a(fe),this.refetch$=this.refetches?he(...this.refetches).pipe(K(null)):F(null),this.bookings=[],this.bookings$=this.observe("bookings"),this.session$=this.observe("session"),this.selectedVisitIdsSub=new pe([]),this.selectedVisitIds$=this.selectedVisitIdsSub.asObservable(),this.selectedTabIndexSub=new pe(0),this.selectedTabIndex$=this.selectedTabIndexSub.asObservable(),this.searchFormControl=new de("",{nonNullable:!0}),this.search$=je(this.searchFormControl),this.customersTerm$=this.businessTerms.businessTerms$.pipe(s(e=>e.customerTerm.pluralCapitalized)),this.addCustomerLabel$=this.businessTerms.businessTerms$.pipe(s(e=>$localize`Add ${e.customerTerm.lower}`)),this.bookingCountPartiesAsMultipleSpots$=this.coreLocationRx.getCurrentNullableLocation(["bookingCountPartiesAsMultipleSpots"]).pipe(s(e=>e?.bookingCountPartiesAsMultipleSpots??!1)),this.visits$=this.bookings$.pipe(s(e=>e.map(t=>t.visit).filter(B)),this.shareReplay()),this.filteredVisits$=g([this.visits$,this.search$]).pipe(s(([e,t])=>t?Lo(e,n=>n.name,t):e),this.shareReplay()),this.nonCancelledVisits$=this.visits$.pipe(s(e=>e.filter(t=>!Qt(t)))),this.usedSpots$=g([this.nonCancelledVisits$,this.bookingCountPartiesAsMultipleSpots$]).pipe(s(([e,t])=>Nt(e.map(n=>t?n.partySize??1:1))),k(),this.shareReplay()),this.availableSpots$=g([this.session$,this.usedSpots$]).pipe(s(([e,t])=>{let n=e.spots-t;return kt($localize`1 spot left`,n,$localize`${n} spots left`)}),this.shareReplay()),this.selectedVisitCount$=this.selectedVisitIds$.pipe(s(e=>e.length)),this.disableAddBooking$=g([this.session$,this.usedSpots$]).pipe(s(([e,t])=>t>=e.spots)),this.showActions$=g([this.selectedTabIndex$,this.selectedVisitCount$]).pipe(s(([e,t])=>e===0&&t>0)),this.selectedVisits$=this.selectedVisitIds$.pipe(D(e=>this.visits$.pipe(s(t=>t.filter(n=>
7e.includes(n.id)))))),this.sessionComponents$=this.session$.pipe(D(e=>$e(e)?F(null):this.calendarSessionDisplay.displayCalendarSession(e))),this.selectAllDisabled$=this.filteredVisits$.pipe(s(e=>e.every(t=>t.state===rt)),k()),this.selectAllState$=g([this.selectedVisitIds$,this.filteredVisits$]).pipe(s(([e,t])=>{if(e.length===0)return"unchecked";let n=t.filter(o=>o.state!==rt).map(o=>o.id);return n.length>0&&n.every(o=>e.includes(o))?"checked":"indeterminate"})),this.pluckLabel$=this.selectedVisitIds$.pipe(s(e=>t=>X(ea,{entityId:t.id,selected:e.includes(t.id),$hooks:{onCreate:n=>n.instance.toggleSelected.subscribe(o=>this.toggleVisit(o))}}))),this.actions$=g([this.session$,this.selectedVisits$]).pipe(D(([e,t])=>{if(!e||t.length===0)return F(null);let n=t.some(l=>l.state!==zo&&l.state!==rt),o=t.some(l=>l.state===Go),r=["progress","serve","complete","alert","arrived","message","noShow","delete"];return o||r.splice(r.indexOf("progress"),1),n||r.splice(r.indexOf("serve"),1),this.visitActions.getActions(t,{pick:r}).pipe(s(l=>l.map(_=>Xe(ne({},_),{icon:_.key==="progress"?"bx-check-circle":_.icon,label:_.key==="progress"?$localize`Approve`:_.label,color:_.key==="delete"?_.color:void 0}))))}),this.shareReplay()),this.subscribe()}subscribe(){this.refetch$.pipe(V(this.ngOnDestroy$)).subscribe(()=>{this.selectedVisitIdsSub.next([])})}setTabIndex(e){this.selectedTabIndexSub.next(e)}toggleAll(){return Z(this,null,function*(){let e=this.selectedVisitIdsSub.value,n=(yield ee(this.filteredVisits$)).filter(o=>o.state!==rt).map(o=>o.id);e.length===n.length&&n.every(o=>e.includes(o))?this.selectedVisitIdsSub.next([]):this.selectedVisitIdsSub.next(n)})}unselectAll(){this.selectedVisitIdsSub.next([])}toggleVisit(e){let t=[...this.selectedVisitIdsSub.value],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),this.selectedVisitIdsSub.next(t)}viewVisit(e){if(e.isBlock){this.calendarService.openBlockViewer({entity:e});return}this.visitCoreService.openViewer({entity:e}),this.layout.openNext({component:{type:i,inputs:{session:this.session,date:this.bookings[0]?.date,$rx:{bookings:this.bookings$}}},isEqualInputs:(t,n)=>t?.session?.id===n?.session?.id})}openAddSessionBooking(){return Z(this,null,function*(){if($e(this.session))return;let{date:e,duration:t,serviceId:n,resourceIds:o,seriesId:r}=this.session,l=yield ee(this.addCustomerLabel$);this.visitCoreService.openEditor({title:l,visitForm:X(Jt,{visitState:"BOOKED",withBooker:!0,initialDate:e,initialValue:{date:oe(e),duration:t,serviceIds:[n],resourceIds:o,sessionSeriesId:r}})})})}copyBookingLink(){return Z(this,null,function*(){let e=yield ee(this.internalLinksService.publicRegistrationUrlBooking$),t=new URL(e);t.searchParams.set("sessionSlot",`${this.session.serviceId}_${this.session.seriesId}_${this.session.isoDate}`),this.clipboard.copy(t.toString())?this.snackBar.open({message:$localize`Link has been copied to clipboard`}):this.snackBar.open({message:$localize`Failed to copy link to clipboard`})})}cancel(){return Z(this,null,function*(){let e=yield ee(this.visits$),t=yield ee(this.dialog.open(X(Ys,{sessionName:this.session.name,sessionDate:this.session.date,numberOfVisits:e.length})).afterClosed$);if(t?.cancel){let n={message:t.message??void 0,sessionSeriesId:this.session.seriesId,date:this.session.isoDate};this.cancelSessionWrite.payload.next({serviceId:this.session.serviceId,payload:n}),yield ee(this.cancelSessionWrite.response$)}})}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-grid-item-session-viewer"]],hostAttrs:[1,"ww-calendar-grid-item-session-viewer"],inputs:{date:"date",bookings:"bookings",session:"session"},standalone:!1,features:[L],decls:32,vars:20,consts:()=>{let e;e=$localize`Details`;let t;t=$localize`Copy booking link`;let n;n=$localize`Cancel session`;let o;o=$localize`Select all`;let r;r=$localize` ${"\uFFFD0\uFFFD"}:INTERPOLATION: of ${"\uFFFD1\uFFFD"}:INTERPOLATION_1: spots booked `;let l;l=$localize`${"\uFFFD0\uFFFD"}:INTERPOLATION: selected`;let _;return _=$localize`Actions`,[["menu","matMenu"],["tabGroup",""],["menuTriggerTmpl",""],t,n,o,r,l,_,[1,"flex","flex-col"],["wwTypography","caption1"],[1,"flex"],["wwButton","tert
7iary",3,"matMenuTriggerFor",4,"wwFeatureEnabledConfig"],["wwButton","tertiary","wwLayoutClose",""],["icon","bx-x"],[1,"ww-calendar-grid-item-session-viewer-menu"],["mat-menu-item","",3,"click"],["icon","bx-link","size","small"],["mat-menu-item","",3,"click",4,"wwPermission"],[3,"padding"],["wwTab","",3,"tabSelected","label"],["wwTab","","label",e,3,"tabSelected"],["alignment","center"],[1,"flex","items-center","justify-between","gap-2","w-full"],["wwButton","primary","type","button",3,"disabled"],["wwButton","tertiary",3,"matMenuTriggerFor"],["icon","bx-dots-horizontal-rounded"],["wwColor","warning","icon","bx-x-circle","size","small"],["wwColor","warning"],[1,"flex","flex-col","px-6","py-3"],[1,"mt-2","mb-4",3,"formControl"],[1,"flex","items-center","justify-between","py-4"],[1,"flex","items-center","gap-3",3,"click"],[3,"disabled","state"],["wwTypography","body2"],[3,"itemClicked","pluckLabel","data","trackByProperty"],[1,"p-6"],[1,"flex","justify-center","w-full"],[4,"wwOutlet"],["wwTypography","body1"],[1,"flex","gap-2"],["wwButton","secondary","type","button",1,"!w-10",3,"click"],[1,"flex","flex-col","w-full",3,"actions","triggerComponent"],["wwButton","secondary"],["icon","bx-chevron-down"],["wwButton","primary","type","button",3,"click","disabled"]]},template:function(t,n){if(t&1&&(ge(0),u(1,"async"),c(2,"ww-section")(3,"ww-section-title")(4,"div",9)(5,"span"),q(6),m(),c(7,"span",10),q(8),u(9,"async"),m()(),c(10,"div",11),I(11,jl,2,1,"button",12),c(12,"button",13),S(13,"ww-icon",14),m()()(),c(14,"mat-menu",15,0)(16,"button",16),T("click",function(){return n.copyBookingLink()}),S(17,"ww-icon",17),c(18,"span"),b(19,3),m()(),I(20,Hl,4,0,"button",18),m(),c(21,"ww-section-content",19)(22,"ww-tab-group",null,1),I(24,Yl,14,18,"ng-template",20),u(25,"async"),T("tabSelected",function(){return n.setTabIndex(0)}),I(26,tc,3,3,"ng-template",21),T("tabSelected",function(){return n.setTabIndex(1)}),m()(),c(27,"ww-section-actions",22),ge(28),u(29,"async"),y(30,oc,10,7,"div",23)(31,rc,4,6,"button",24),m()()),t&2){Re(C(1,7,n.filteredVisits$)??yt(16,zl)),p(6),Be(n.session.name),p(2),Be(C(9,10,n.availableSpots$)),p(3),w("wwFeatureEnabledConfig",it(18,Kl,yt(17,Xl))),p(9),w("wwPermission","visits.block"),p(),w("padding","none"),p(3),w("label",C(25,12,n.customersTerm$));let o=C(29,14,n.showActions$);p(6),A(o?30:31)}},dependencies:[Ve,Qe,be,ln,qt,et,Kr,Vi,Ft,Wi,tr,Xi,H,Ct,zt,Gt,Ut,re,Hi,we,Pi,Pt,ae,se,Ie,Qi,qi,Fi,N],styles:[`.ww-calendar-grid-item-session-viewer .ww-section-content .ww-button.ww-calendar-grid-item-session-viewer-state-button{font-weight:300}.ww-calendar-grid-item-session-viewer .ww-section-content .ww-button.ww-calendar-grid-item-session-viewer-state-button.ww-calendar-grid-item-session-viewer-state-button-active{background-color:var(--ww-color-lightGrey);font-weight:500}.ww-calendar-grid-item-session-viewer .ww-tab-group-content .ww-list-item{padding:16px 0}.ww-calendar-grid-item-session-viewer-menu .mat-mdc-menu-item{padding:0 10px}
8/*noopcalendar-grid-item-session-viewer.component-BOIG3LRR.css.map */
9`],encapsulation:2,changeDetection:0})}}return i})();function sc(i,d){if(i&1&&(q(0),u(1,"wwDate")),i&2){let e=f();De(" ",C(1,1,e.date)," ")}}var Ws=(()=>{class i extends W{constructor(){super(...arguments),this.calendarService=a(ze),this.layout=a(ie),this.visitCoreService=a(fe),this.bookings=[],this.bookings$=this.observe("bookings"),this.visits$=this.bookings$.pipe(s(e=>e.map(t=>t.visit).filter(B))),this.pluckLabel=e=>X(ls,{entity:e,disableEntityUpdates:!0,suffixComponent:X(cs,{visit:e})})}viewVisit(e){if(e.isBlock){this.calendarService.openBlockViewer({entity:e});return}this.visitCoreService.openViewer({entity:e}),this.layout.openNext({component:{type:i,inputs:{date:this.date,bookings:this.bookings}}})}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-grid-item-viewer"]],hostAttrs:[1,"ww-calendar-grid-item-viewer"],inputs:{date:"date",bookings:"bookings"},standalone:!1,features:[L],decls:9,vars:7,consts:[["wwButton","tertiary","wwLayoutClose",""],["icon","bx-x"],[3,"padding"],[3,"itemClicked","pluckLabel","data","trackByProperty"]],template:function(t,n){t&1&&(c(0,"ww-section")(1,"ww-section-title")(2,"div"),y(3,sc,2,3),m(),c(4,"button",0),S(5,"ww-icon",1),m()(),c(6,"ww-section-content",2)(7,"ww-list",3),u(8,"async"),T("itemClicked",function(r){return n.viewVisit(r)}),m()()()),t&2&&(p(3),A(n.date?3:-1),p(3),w("padding","none"),p(),w("pluckLabel",n.pluckLabel)("data",C(8,5,n.visits$))("trackByProperty","id"))},dependencies:[be,H,re,Hi,ae,se,Ie,N,Vt],encapsulation:2,changeDetection:0})}}return i})();var ta=(()=>
9{class i{selectionFinished(e){return this._createWeekRange(e)}createPreview(e){return this._createWeekRange(e)}_createWeekRange(e){if(e){let t=Di(e),n=Li(e);return new yn(t,n)}return new yn(null,null)}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Me({token:i,factory:i.\u0275fac})}}return i})();var ac=()=>[];function lc(i,d){if(i&1&&(S(0,"ww-date-range-picker",0),u(1,"async")),i&2){let e=f();w("appearance","tertiary")("filters",yt(9,ac))("formControl",e.dateRangeFormControl)("pluckTriggerLabel",e.pluckDateRangeTriggerLabel)("size","full")("stepperPosition","before")("withStepper",C(1,7,e.layout.isDesktop$))}}function cc(i,d){if(i&1&&(S(0,"ww-datepicker",1),u(1,"async")),i&2){let e=f();w("appearance","tertiary")("formControl",e.dateFormControl)("pluckTriggerLabel",e.pluckDateTriggerLabel)("size","full")("stepperPosition","before")("hideInput",!0)("withStepper",C(1,7,e.layout.isDesktop$))}}var ia=(()=>{class i extends W{constructor(){super(...arguments),this.layout=a(ie),this.pluckDateRangeTriggerLabel=e=>e.start?this.getDateRangeLabel(e):null,this.pluckDateTriggerLabel=e=>At(di(e,"E, MMM d"))}getDateRangeLabel(e){return e.start?e.start&&e.end&&Tn(e.start)!==Tn(e.end)?`${At(di(e.start,"LLL"))} - ${At(di(e.end,"LLL yyyy"))}`:At(di(e.start,"LLLL yyyy")):""}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-date-selector"]],hostAttrs:[1,"ww-calendar-date-selector"],hostVars:2,hostBindings:function(t,n){t&2&&qe("ww-calendar-date-selector-daily",n.selection==="date")},inputs:{selection:"selection",dateFormControl:"dateFormControl",dateRangeFormControl:"dateRangeFormControl"},standalone:!1,features:[Ei([{provide:_o,useClass:ta}]),L],decls:2,vars:1,consts:[[3,"appearance","filters","formControl","pluckTriggerLabel","size","stepperPosition","withStepper"],[3,"appearance","formControl","pluckTriggerLabel","size","stepperPosition","hideInput","withStepper"]],template:function(t,n){t&1&&y(0,lc,2,10,"ww-date-range-picker",0)(1,cc,2,9,"ww-datepicker",1),t&2&&A(n.selection==="range"?0:1)},dependencies:[Ve,Qe,Ki,mr,N],styles:[`.ww-calendar-date-selector{display:flex;align-items:center;gap:24px}.ww-calendar-date-selector .ww-datepicker-trigger,.ww-calendar-date-selector .ww-date-range-picker-label{font-size:26px}.ww-breakpoints-below-small .ww-calendar-date-selector .ww-datepicker-trigger,.ww-breakpoints-below-small .ww-calendar-date-selector .ww-date-range-picker-label{font-size:23px}.ww-calendar-date-selector .ww-date-range-picker .ww-form-field .ww-form-field-control,.ww-calendar-date-selector .ww-datepicker .ww-form-field .ww-form-field-control{font-family:var(--ww-typography-h5-font-family);font-size:var(--ww-typography-h5-font-size);font-weight:var(--ww-typography-h5-font-weight);line-height:var(--ww-typography-h5-line-height);letter-spacing:var(--ww-typography-h5-letter-spacing);height:auto;padding:9px 0}.ww-calendar-date-selector .ww-date-range-picker .ww-form-field .ww-form-field-suffix,.ww-calendar-date-selector .ww-datepicker .ww-form-field .ww-form-field-suffix{padding:0}.ww-calendar-date-selector .ww-date-range-picker .ww-form-field .ww-form-field-container,.ww-calendar-date-selector .ww-datepicker .ww-form-field .ww-form-field-container{background:transparent!important;border:none!important;padding:0!important;gap:4px!important}
10/*noopcalendar-date-selector.component-NTS3IQWL.css.map */
11`],encapsulation:2,changeDetection:0})}}return i})();function mc(i,d){if(i&1){let e=P();c(0,"ww-table",4),u(1,"async"),u(2,"async"),T("rowClicked",function(n){O(e);let o=f(2);return M(o.viewVisit(n))}),m()}if(i&2){let e=f(),t=f();w("columns",C(1,3,t.orderedProperties$))("data",e)("pluckCellLabel",C(2,5,t.pluckCellLabel$))}}function uc(i,d){if(i&1&&(c(0,"ww-empty-state",5),to(1,0),m()),i&2){let e=f(2);lt(e.businessTerms.businessTerms.bookedStateTerm.pluralLower),ct(1)}}function _c(i,d){i&1&&(c(0,"ww-section")(1,"ww-section-content",1),y(2,mc,3,7,"ww-table",2)(3,uc,2,1,"ww-empty-state",3),m()()),i&2&&(p(2),A(d.length>0?2:3))}var na=(()=>{class i extends W{constructor(){super(...arguments),this.businessTerms=a(wt),this.dateService=a(ki),this.visitCoreService=a(fe),this.visitProperties=a(tt),this.visitRx=a(ve),this.search$=this.observe("search"),this.shownProperties$=this.visitProperties.getShownProperties({source:"BOOKED"},"table").pipe(s(e=>vt(e,{date:{display:t=>t.date?Ae({components:[Se({icon:"bx-calendar",size:"x-small"}),this.dateService.transform(t.date)],$element:{classList:["flex","items-center","gap-1","!flex-nowrap"]}}):null}}))),this.pluckCellLabel$=this.shownProperties$.pipe(s(e=>t=>dn(t,e))),this.orderedProperties$=this.shownProperties$.pipe(D(e=>this.visitProperties.getOrderedProperties(e,"table")),He({refCount:!0,bufferSize:1})),this.visits$=this.search$.pipe(D(e=>e?this.visitRx.searchVisits(e,50).pipe(s(t=>t?.results??[])):F([])),s(e=>e.filter(t=>t.id&&t.date)),He({bufferSize:1,refCount:!0}))}viewVisit(e){this.visitCoreService.openViewer({entity:e})}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-search-results"]],hostAttrs:[1,"block","p-6"],inputs:{search:"search"},standalone:!1,features:[L],decls:2,vars:3,consts:()=>{let e;return e=$localize`No ${"\uFFFD0\uFFFD"}:INTERPOLATION: found`,[["message",e],[1,"!p-0"],[3,"columns","data","pluckCellLabel"],["icon","ww-empty-state-booked",1,"py-16",3,"message"],[3,"rowClicked","columns","data","pluckCellLabel"],["icon","ww-empty-state-booked",1,"py-16",6,"message"]]},template:function(t,n){if(t&1&&(y(0,_c,4,1,"ww-section"),u(1,"async")),t&2){let o;A((o=C(1,1,n.visits$))?0:-1,o)}},dependencies:[ei,ae,se,Yi,N],encapsulation:2,changeDetection:0})}}return i})();var oa=(()=>{class i extends W{constructor(){super(...arguments),this.businessTerms=a(wt),this.visitCoreService=a(fe)}openAddSessionBooking(e){return Z(this,null,function*(){$e(this.session)||(e.stopPropagation(),this.visitCoreService.openEditor({title:$localize`Add ${this.businessTerms.businessTerms.customerTerm.lower}`,visitForm:X(Jt,{visitState:"BOOKED",withBooker:!0,initialDate:z(this.session.date),initialValue:{date:this.session.date,duration:this.session.duration,serviceIds:[this.session.serviceId],resourceIds:this.session.resourceIds,sessionSeriesId:this.session.seriesId}})}))})}static{this.\u0275fac=(()=>{let e;return function(n){return(e||(e=Q(i)))(n||i)}})()}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-sessions-available-spots"]],hostAttrs:[1,"ww-calendar-sessions-available-spots"],inputs:{session:"session"},standalone:!1,features:[L],decls:2,vars:2,consts:[["wwButton","secondary",3,"click","disabled"]],template:function(t,n){t&1&&(c(0,"button",0),T("click",function(r){return n.openAddSessionBooking(r)}),q(1),m()),t&2&&(w("disabled",n.session.numAvailableSpots<1),p(),De(" ",n.session.numAvailableSpots,` spots left
12`))},dependencies:[H],encapsulation:2,changeDetection:0})}}return i})();var Gn={pageIndex:0,pageSize:20,length:20};function Cc(i,d){if(i&1){let e=P();c(0,"ww-paginator",4),u(1,"async"),T("page",function(n){O(e);let o=f();return M(o.pageEventSub.next(n))}),m()}if(i&2){let e=f();w("pageIndex",e.pageEventSub.value.pageIndex)("pageSize",e.pageEventSub.value.pageSize)("length",C(1,3,e.pageLength$))}}function wc(i,d){i&1&&S(0,"ww-empty-state",5)}function fc(i,d){if(i&1&&(y(0,wc,1,0,"ww-empty-state",5),u(1,"async")),i&2){let e=f();A(C(1,1,e.isLoaded$)?0:-1)}}var ra=(()=>{class i extends W{constructor(){super(),this.availabilityRx=a(en),this.calendar=a(si),this.calendarService=a(ze),this.coreLocationRx=a(Yt),this.coreServiceRx=a(Gr),this.sessionProperties=a(Cs),this.visitRx=a(ve),this.refetches=a(Oi,{optional:!0}),this.pageEventSub=new pe(Gn),this.refetch$=this.refetches?he(...this.refetches).pipe(K(null)):F(null),this.listQuery$=g([this.coreLocationRx.nullableLocationId$,this.calendar.date$,this.calendar.filterSelectedServiceIds$,this.calendar.filterSelectedResourceIds$]).pipe(s(([e,t,n,o])=>e?bi({locationId:e??void 0,fromDate:oe(t),serviceIds:n.length?n:void 0,resourceIds:o.length?o:void 0},$e):null),k((e,t)=>me(e,t))),this.sessions$=this.listQuery$.pipe(te(B),D(e=>Ho(this.pageEventSub,t=>this.refetch$.pipe(D(()=>this.availabilityRx.listSessions(ne(ne({},t),e)))))),s(e=>e.results??[]),this.shareReplay()),this.sessionRecord$=this.sessions$.pipe(s(e=>Do(e,t=>this.createSessionId(t))),this.shareReplay()),this.sessionIds$=this.sessions$.pipe(s(e=>e.map(t=>this.createSessionId(t))),this.shareReplay()),this.pageLength$=Yo(this.sessions$,this.pageEventSub),this.isLoaded$=this.sessions$.pipe(Ke(1),s(()=>!0),K(!1)),this.properties$=this.sessionProperties.getCurrentPermittedProperties({pick:["serviceId","date","parentId","resourceIds","numSpots","numAvailableSpots"]}),this.columns$=this.properties$.pipe(s(e=>{let t=vt(e,{numAvailableSpots:{label:""}}
12);return Ur(t)})),this.pluckCellLabel$=g([this.properties$,this.sessionRecord$]).pipe(s(([e,t])=>n=>{let o=t[n];if(!o)return null;let r=vt(e,{numAvailableSpots:{display:()=>X(oa,{session:o})}});return dn(o,r)})),this.subscribeToCalendarDateChanges(),this.subscribeToLoadingState()}onRowClicked(e){return Z(this,null,function*(){let n=(yield ee(this.sessionRecord$))[e];if(!n)return;let o=yield ee(this.coreServiceRx.doc(n.serviceId));if(!o)return;let r=yield ee(this.visitRx.getVisits(Ji(Nr(n.seriesId),{where:[["date","==",n.date]]})).pipe(s(_=>_.filter(Ci).filter(h=>!h.tags?.includes(ce.REMOVED)&&!h.tags?.includes(ce.REJECTED))))),l=hn(o.id,o.name,o.description,o.parentId,n.date,n.seriesId,n.resourceIds??null,n.duration,n.numSpots);this.calendarService.openSessionViewer({session:l,bookings:r.map(_=>({visit:_,state:Sn(_)})),date:l.date})})}createSessionId(e){return`${e.date}-${e.seriesId}`}subscribeToLoadingState(){this.sessions$.pipe(V(this.ngOnDestroy$)).subscribe(()=>this.calendar.setLoading(!1))}subscribeToCalendarDateChanges(){this.calendar.date$.pipe(V(this.ngOnDestroy$)).subscribe(()=>{this.pageEventSub.next(Gn)})}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar-sessions"]],hostAttrs:[1,"ww-calendar-sessions"],standalone:!1,features:[L],decls:9,vars:13,consts:()=>{let e;return e=$localize`No sessions found...`,[["emptyStateTmpl",""],[1,"flex","flex-col","gap-6","px-6"],[3,"rowClicked","data","columns","pluckCellLabel","placeholder"],[3,"pageIndex","pageSize","length"],[3,"page","pageIndex","pageSize","length"],["icon","ww-empty-state-booked","message",e]]},template:function(t,n){if(t&1&&(c(0,"div",1)(1,"ww-table",2),u(2,"async"),u(3,"async"),u(4,"async"),T("rowClicked",function(r){return n.onRowClicked(r)}),m(),y(5,Cc,2,5,"ww-paginator",3),u(6,"async"),m(),I(7,fc,2,3,"ng-template",null,0,pt)),t&2){let o=Ye(8);p(),w("data",C(2,5,n.sessionIds$))("columns",C(3,7,n.columns$))("pluckCellLabel",C(4,9,n.pluckCellLabel$))("placeholder",o),p(4),A(C(6,11,n.isLoaded$)?5:-1)}},dependencies:[ei,Sr,Yi,N],encapsulation:2,changeDetection:0})}}return i})();var hc=()=>["customers.show","customers.view-sensitive-data","visits.show"];function gc(i,d){if(i&1&&S(0,"ww-page-filter-button",12),i&2){let e=f(3);w("store",e.calendarFilterStore)("title",e.filterTitle)}}function Sc(i,d){i&1&&I(0,gc,1,2,"ww-page-filter-button",14)}function Ec(i,d){if(i&1){let e=P();c(0,"button",18),T("click",function(){O(e);let n=f(4);return M(n.setToday())}),b(1,0),m()}i&2&&w("size","medium")}function Rc(i,d){if(i&1&&(c(0,"div",13),y(1,Ec,2,1,"button",16),u(2,"async"),S(3,"ww-select",17),u(4,"async"),m()),i&2){let e=f(3);p(),A(C(2,5,e.layout.isDesktop$)?1:-1),p(2),w("size","auto")("data",C(4,7,e.calendarViewModes$))("pluckLabel",e.pluckViewModeLabel)("formControl",e.viewModeFormControl)}}function yc(i,d){i&1&&I(0,Rc,5,9,"div",15)}function Ac(i,d){if(i&1&&(y(0,Sc,1,0,"ww-page-filter-button",12),u(1,"async"),y(2,yc,1,0,"div",13),u(3,"async")),i&2){let e=f();A(C(1,2,e.writeContext.writerResourceEmpty$)?0:-1),p(2),A(C(3,4,e.breakpoints.isAboveSmall$)?2:-1)}}
12function Ic(i,d){i&1&&S(0,"ww-spinner-overlay",7)}function Tc(i,d){if(i&1){let e=P();c(0,"button",19),T("click",function(){O(e);let n=f(4);return M(n.setViewMode("day"))}),S(1,"ww-icon",25),c(2,"span"),b(3,3),m()()}}function vc(i,d){if(i&1){let e=P();c(0,"button",19),T("click",function(){O(e);let n=f(4);return M(n.setViewMode("week"))}),S(1,"ww-icon",25),c(2,"span"),b(3,4),m()()}}function bc(i,d){if(i&1){let e=P();c(0,"button",19),T("click",function(){O(e);let n=f(4);return M(n.setViewMode("sessions"))}),S(1,"ww-icon",25),c(2,"span"),b(3,5),m()()}}function Dc(i,d){if(i&1&&(y(0,Tc,4,0,"button",24),y(1,vc,4,0,"button",24),y(2,bc,4,0,"button",24),u(3,"async")),i&2){f();let e=Ce(0),t=f(2);A(e!=="day"&&e!=="resources"?0:-1),p(),A(e!=="week"?1:-1),p(),A(e!=="sessions"&&C(3,3,t.serviceRx.hasSessionServices$)?2:-1)}}function $c(i,d){if(i&1&&(ge(0),u(1,"async"),y(2,Dc,4,5)),i&2){let e=Re(C(1,1,f(2).viewMode$));p(2),A(e?2:-1)}}function Lc(i,d){if(i&1){let e=P();c(0,"button",19),T("click",function(){O(e);let n=f(2);return M(n.visitCoreService.openPrinter())}),S(1,"ww-icon",26),c(2,"span"),b(3,6),m()()}}function xc(i,d){if(i&1){let e=P();Et(0),y(1,$c,3,4),u(2,"async"),c(3,"button",19),T("click",function(){O(e);let n=f();return M(n.calendarService.openSettings())}),S(4,"ww-icon",20),c(5,"span"),b(6,1),m()(),c(7,"a",21),u(8,"async"),S(9,"ww-icon",22),c(10,"span"),b(11,2),m()(),I(12,Lc,4,0,"button",23),Rt()}if(i&2){let e=f();p(),A(C(2,3,e.breakpoints.isBelowSmall$)?1:-1),p(6),w("href",C(8,5,e.internalLinks.publicRegistrationUrl$),qn),p(5),w("wwPermission",yt(7,hc))}}function Nc(i,d){if(i&1&&(c(0,"ww-page-toolbar",9),S(1,"ww-page-filter-chips",12),m()),i&2){let e=f();p(),w("store",e.calendarFilterStore)("title",e.filterTitle)}}function kc(i,d){i&1&&S(0,"ww-text",10),i&2&&w("content",d)}function Oc(i,d){i&1&&U(0)}function Mc(i,d){if(i&1&&(I(0,Oc,1,0,"ng-container",27),u(1,"async")),i&2){let e=f();w("wwOutlet",C(1,1,e.searchResultsComponent$))}}function Bc(i,d){i&1&&U(0)}function Vc(i,d){if(i&1&&I(0,Bc,1,0,"ng-container",28),i&2){let e=f();w("ngComponentOutlet",e.sessions)}}function Wc(i,d){i&1&&U(0)}function Fc(i,d){if(i&1&&I(0,Wc,1,0,"ng-container",28),i&2){let e=f();w("ngComponentOutlet",e.visitGrid)}}var Pc=new de(So("calendar-view-mode","day",Ds),{nonNullable:!0}),sa=new de(new Date,{nonNullable:!0}),aa=new de($n.createDateRange()),si=(()=>{class i extends W{constructor(){super(),this.breakpoints=a(Wt),this.calendarFilterStore=a(bs),this.calendarService=a(ze),this.internalLinks=a(nn),this.layout=a(ie),this.serviceRx=a(Kt),this.visitCoreService=a(fe),this.writeContext=a(jt),this.accountRx=a(kr),this.activatedRoute=a(Co),this.blockFormApi=a(ti),this.businessTerms=a(wt),this.changeDetectorRef=a(so),this.displaySettingRx=a(Ze),this.eventLogger=a(tn),this.filterComponents=a(mn),this.locationRx=a(Je),this.permissionRx=a(Zi),this.resourceRx=a(Pe),this.sessionRx=a(Br),this.visitFormApi=a(un),this.visitRx=a(ve),this.filterTitle=$localize`Filter calendar`,this.pluckViewModeLabel=e=>vs[e],this.viewModeFormControl=Pc,this.calendarViewModes=[St,"day"],this.selectedViewMode$=je(this.viewModeFormControl),this.virtualizingSub=new pe(!1),this.virtualizing$=this.virtualizingSub.asObservable(),this.searchSub=new pe(""),this.clearSearchSub=new at,this.isSearching$=this.searchSub.pipe(s(e=>e.length>0),K(!1),k()),this.isNotSearching$=this.isSearching$.pipe(s(e=>!e)),this.viewMode$=g([this.selectedViewMode$,this.calendarService.useResourceColumns$]).pipe(s(([e,t])=>t&&e==="day"?_i:e),k(),this.shareReplay()),this.dateSelectionType$=this.viewMode$.pipe(s(e=>e===St?As:Is)),this.dateFormControl=sa,this.dateRangeFormControl=aa,this.date$=je(this.dateFormControl).pipe(s(e=>Le(e)),k((e,t)=>e.getTime()===t.getTime())),this.weekDateRange$=this.locationRx.weekStartsOn$.pipe(s(e=>this.getWeekDateRange(new Date,e)),this.shareReplay()),this.dateRange$=je(this.dateRangeFormControl).pipe(te(dr),te(e=>e.start.getTime()<e.end.getTime()),k((e,t)=>e.start.getTime()===t.start.getTime()&&e.end.getTime()===t.end.getTime())),this.openingTimeSeconds$=g([this.viewMode$,this.locationRx.getCurrentLocation(["hours","hoursByDate","bookingHours","bookingHoursByDate"])]).pipe(D(([e,t])=>{let n=o=>{let r=Mn(o,t.bookingHours,t.bookingHoursByDate)??Mn(o,t.hours,t.hoursByDate);return r?Wo(Lr(r)):0};return e==="week"?this.dateRange$.pipe(s(o=>{let l=In(o.start,o.end).map(_=>n(_)).filter(_=>_!==0);return bo(l)??0})):this.date$.pipe(s(o=>n(o)))})),this.calendarViewModes$=this.serviceRx.hasSessionServices$.pipe(s(e=>e?[...this.calendarViewModes,fn]:this.calendarViewModes)),this.dayRange$=g([this.displaySettingRx.get("calendar-start-hour"),this.displaySettingRx.get("calendar-end-hour"),this.locationRx.getCurrentLocation(["bookingTimeSlotIncr"]),this.openingTimeSeconds$]).pipe(s(([e,t,n,o])=>{let r=Ln(e),l=Ln(t),_=l===0?24:l,h=xn(e),v=xn(t),E=Ot(24),R=Math.min(E,Ot(r)+vn(h)),x=Math.min(E,Ot(_)+vn(v));R>x&&(x=E);let j=o%n.bookingTimeSlotIncr;return{start:Math.floor(R/n.bookingTimeSlotIncr)*n.bookingTimeSlotIncr+j,end:Math.ceil(x/n.bookingTimeSlotIncr)*n.bookingTimeSlotIncr+j}}),k((e,t)=>e.start===t.start&&e.end===t.end),this.shareReplay()),this.dateRanges$=g([this.viewMode$,this.dateRange$,this.date$,this.dayRange$]).pipe(s(([e,t,n,o])=>(e===St?In(t.start,t.end):[n]).map(l=>({start:dt(l,o.start),end:dt(l,o.end)}))),this.shareReplay()),this.dateRangesFromSettingsMinMax$=this.dateRanges$.pipe(te(e=>e.length>0),s(e=>({min:Le(e[0].start),max:$i(xi(e[e.length-1].end,1))})),k((e,t)=>me(e,t)),this.shareReplay()),this.resources$=this.resourceRx.getOptimisticResources().pipe(K([]),s(e=>e.filter(t=>!t.isCategory&&t.isActiveBooking).sort((t,n)=>t.name.localeCompare(n.name)))),this.filterSelectedResourceIds$=this.calendarFilterStore.state$.pipe(s(e=>e.filter(t=>t.source.categoryId===Tr).map(t=>t.value).flat().filter(t=>!t.isCategory)),K([]),k((e,t)=>me(e,t)),this.shareReplay()),this.filterSelectedServiceIds$=this.calendarFilterStore.state$.pipe(s(e=>e.filter(t=>t.source.categoryId===vr).map(t=>t.value).flat().filter(t=>!t.isCategory)),K([]),k((e,t)=>me(e,t)),this.shareReplay()),this.filterSelectedVisitTags$=this.calendarFilterStore.state$.pipe(s(e=>e.filter(t=>t.source.categoryId===br).map(t=>t.value).flat()),K([]),k((e,t)=>me(e,t)),this.shareReplay()),this.queryArgs$=g([this.calendarFilterStore.getQueryArgs(),this.writeContext.writerQueryArgs$]).pipe(s(([e,t])=>t??e),k((e,t)=>me(e,t))),this.visits$=g([this.dateRangesFromSettingsMinMax$,this.queryArgs$]).pipe(ke(0),D(([{min:e,max:t},n])=>this.visitRx.getVisits(Ji(Dr("date",oe(e),oe(t)),n??void 0))),s(e=>e.filter(Ci).filter(t=>!t.tags?.includes(ce.REMOVED)&&!t.tags?.includes(ce.REJECTED))),K([]),this.shareReplay()),this.filteredVisits$=g([this.visits$,this.filterSelectedResourceIds$,this.filterSelectedServiceIds$,this.filterSelectedVisitTags$,this.calendarService.showCancelledVisits$,this.writeContext.writerVisitFilterPredicate$]).pipe(ke(0),s(([e,t,n,o,r,l])=>e.filter(_=>{if(l&&!l(_)||!r&&_.tags?.includes(ce.CANCELLED))return!1;let h=n.length===0||(_.serviceIds??[]).some(R=>n.includes(R)),v=t.length===0||(_.resourceIds??[]).some(R=>t.includes(R)),E=o.length===0||(_.tags??[]).some(R=>o.includes(R));return h&&v&&E})),this.shareReplay()),this.bookingCount$=this.filteredVisits$.pipe(s(e=>e.filter(t=>!t.tags?.includes(ce.CANCELLED)).length),K(null)),this.bookingCountLabel$=g([this.bookingCount$,this.businessTerms.businessTerms$,this.calendarService.showBookingCount$]).pipe(s(([e,t,n])=>{if(e===null||!n)return null;let o=e===1?t.bookedStateTerm.lower:t.bookedStateTerm.pluralLower;return`${e} ${o}`})),this.nameComponent=X(ia,{dateFormControl:sa,dateRangeFormControl:aa,$rx:{selection:this.dateSelectionType$}}),this.visitQuotaExceeded$=this.accountRx.account$.pipe(s(e=>Xo(e)),k(),this.shareReplay()),this.routedDate$=this.activatedRoute.queryParams.pipe(s(e=>e.date)),this.routedVisitId$=this.activatedRoute.queryParams.pipe(s(e=>e.visitId)),this.routedVisit$=this.routedVisitId$.pipe(D(e=>
12e?this.visitRx.getVisit(e).pipe(D(t=>t?this.sessionRx.ensureLocationChanged({locationId:t.locationId},[]).pipe(s(()=>t)):F(t))):F(null)),Kn(500)),this.loading=!1,this.visitGrid=Hs,this.sessions=ra,this.searchResultsComponent$=this.searchSub.pipe(s(e=>X(na,{search:e}))),this.selectedResource$=this.writeContext.writer$.pipe(s(e=>e.resource)),this.canUpdateAllResources$=this.permissionRx.hasPermission("resources.update"),this.canUpdateCurrentResource$=this.selectedResource$.pipe(te(B),D(e=>this.permissionRx.hasSomeServerPermission("resources.update",`resources.update.${e.id}`)),K(!1)),this.clearSearchCallback=e=>this.clearSearchSub.pipe(li(()=>{e.get(jr).searchFormControl.setValue("")})),this.layout.setFeatureContext({name:this.nameComponent,withResourceSwitcher:!0,fullHeight:!0,search:{api:e=>{this.searchSub.next(e??"")},callback:this.clearSearchCallback}}),this.subscribe()}openEditor(e={},t=!1){this.calendarService.openEditor({title:$localize`Add ${this.businessTerms.businessTermsByState.BOOKED.capitalized}`,calendarBlock:t?void 0:X(Cn,{initialValue:e}),visitForm:X(Jt,{withBooker:!0,initialValue:ne({state:le.BOOKED},e)})})}setLoading(e){this.loading=e,this.changeDetectorRef.markForCheck()}openSettings(){this.calendarService.openSettings()}onCalendarGridHeaderDateClick(e){this.viewModeFormControl.value===St?(this.viewModeFormControl.setValue("day"),this.dateFormControl.setValue(new Date(e))):this.viewModeFormControl.setValue(St)}updateVirtualizing(e){this.virtualizingSub.next(e)}getWeekDateRange(e,t){let n=Di(e,{weekStartsOn:t}),o=Li(e,{weekStartsOn:t});return{start:n,end:o}}subscribe(){this.subscribeToViewMode(),this.subscribeToRoutedVisit(),this.subscribeToScrollToCell(),this.subscribeToChangedLocale(),this.subscribeToLogEvents(),this.subscribeToUpdateFeatureContext()}subscribeToUpdateFeatureContext(){this.visitQuotaExceeded$.pipe(V(this.ngOnDestroy$)).subscribe(e=>{this.layout.updateFeatureContext({addActions:[{label:$localize`Add to ${this.businessTerms.businessTerms.bookedStateTerm.pluralCapitalized}`,api:()=>this.openEditor(),eventLoggerName:"opened_create_visit",enabled:{permissions:["visits.create"]},disabled:e}]})}),this.isSearching$.pipe(V(this.ngOnDestroy$)).subscribe(e=>{this.layout.updateFeatureContext({name:e?this.businessTerms.businessTerms.bookedStateTerm.pluralCapitalized:this.nameComponent})})}subscribeToLogEvents(){this.selectedViewMode$.pipe(Rn(1),V(this.ngOnDestroy$)).subscribe(e=>{this.eventLogger.log("set_calendar_view_mode",{params:{view_mode:e}})})}subscribeToViewMode(){this.viewModeFormControl.valueChanges.pipe(Oe(this.dateRange$,this.weekDateRange$),V(this.ngOnDestroy$)).subscribe(([e,t,n])=>{Eo(Ts,e),this.viewModeFormControl.value==="day"&&this.dateFormControl.setValue(pr(t)),this.viewModeFormControl.value===St&&this.dateRangeFormControl.setValue(n),this.viewModeFormControl.value===fn?(this.calendarFilterStore.clear(),this.calendarFilterStore.filters$=g([this.filterComponents.locationResourceFilters$,this.filterComponents.locationServiceFilters$]).pipe(s(([o,r])=>[...o,...r]))):(this.calendarFilterStore.clear(),this.calendarFilterStore.filters$=this.filterComponents.locationNgramFilters$)}),this.calendarService.useResourceColumns$.pipe(Rn(1),V(this.ngOnDestroy$)).subscribe(e=>{e&&this.viewModeFormControl.value===St&&this.viewModeFormControl.setValue("day")}),this.serviceRx.hasSessionServices$.pipe(te(e=>!e),V(this.ngOnDestroy$)).subscribe(()=>{this.viewModeFormControl.value===fn&&this.viewModeFormControl.setValue("day")})}subscribeToChangedLocale(){this.weekDateRange$.pipe(Ke(1),V(this.ngOnDestroy$)).subscribe(e=>{this.dateRangeFormControl.setValue(e)})}navigateToDate(e){return Z(this,null,function*(){let t=z(e);this.dateFormControl.setValue(t);let n=yield ee(this.locationRx.weekStartsOn$);this.dateRangeFormControl.setValue(this.getWeekDateRange(t,n))})}subscribeToScrollToCell(){let e=he(this.blockFormApi.state$.pipe(s(n=>n?.value.date)),this.visitFormApi.state$.pipe(s(n=>n?.value.date)),this.routedDate$.pipe(te(B))).pipe(k(),te(B)),t=this.visitFormApi.state$.pipe(te(B),s(n=>n?.value.resourceIds?.[0]??null),k());g([e,t.pipe(K(null))]).pipe(ke(0),V(this.ngOnDestroy$)).subscribe(([n,o])=>{this.navigateToDate(n),this.calendarService.scrollToCell({date:n,resourceId:o})})}subscribeToRoutedVisit(){this.routedVisit$.pipe(V(this.ngOnDestroy$)).subscribe(e=>{e===null||!Ci(e)||(this.searchSub.next(""),this.clearSearchSub.next(),this.navigateToDate(e.date),this.breakpoints.isBelowSmall?this.layout.close():this.visitCoreService.openViewer({entity:e},!0),this.calendarService.scrollToCell({date:e.date,resourceId:e.resourceIds?.[0]??null}),Mo({remove:["visitId"]}))})}setViewMode(e){this.viewModeFormControl.setValue(e)}setToday(){this.dateRangeFormControl.setValue($n.createDateRange());let e=new Date;
12this.dateFormControl.setValue(e),this.scrollElementIntoView(".ww-grid-cursor")}scrollElementIntoView(e){return Z(this,null,function*(){(yield vi(e))?.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})})}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=$({type:i,selectors:[["ww-calendar"]],hostAttrs:[1,"ww-calendar"],standalone:!1,features:[L],decls:15,vars:19,consts:()=>{let e;e=$localize` Today `;let t;t=$localize`Display settings`;let n;n=$localize`Go to registration`;let o;o=$localize`Daily view`;let r;r=$localize`Weekly view`;let l;l=$localize`Sessions`;let _;return _=$localize`Print`,[e,t,n,o,r,l,_,["position","fixed"],[4,"wwLayoutSecondaryAction"],[1,"px-6","pb-4","below-small:px-4"],[1,"block","px-6","pb-4","below-small:px-4",3,"content"],[1,"ww-calendar-scroll"],[3,"store","title"],[1,"flex","items-center","gap-2"],[3,"store","title",4,"wwLayoutTertiaryAction"],["class","flex items-center gap-2",4,"wwLayoutPrimaryAction"],["wwButton","secondary",3,"size"],["selection","radio",3,"size","data","pluckLabel","formControl"],["wwButton","secondary",3,"click","size"],["mat-menu-item","",3,"click"],["icon","bx-cog"],["mat-menu-item","","target","_blank",3,"href"],["icon","bx-link-external"],["mat-menu-item","",3,"click",4,"wwPermission"],["mat-menu-item",""],["icon","bx-calendar"],["icon","bx-printer"],[4,"wwOutlet"],[4,"ngComponentOutlet"]]},template:function(t,n){if(t&1&&(y(0,Ac,4,6),u(1,"async"),y(2,Ic,1,0,"ww-spinner-overlay",7),I(3,xc,13,8,"ng-container",8),y(4,Nc,2,2,"ww-page-toolbar",9),u(5,"async"),y(6,kc,1,1,"ww-text",10),u(7,"async"),c(8,"div",11),u(9,"async"),y(10,Mc,2,3,"ng-container"),u(11,"async"),u(12,"async"),hi(13,Vc,1,1,"ng-container")(14,Fc,1,1,"ng-container"),m()),t&2){let o;A(C(1,7,n.isNotSearching$)?0:-1),p(2),A(n.loading?2:-1),p(2),A(C(5,9,n.calendarFilterStore.hasData$)?4:-1),p(2),A((o=C(7,11,n.bookingCountLabel$))?6:-1,o),p(2),qe("ww-calendar-scroll-virtualizing",C(9,13,n.virtualizing$)),p(2),A(C(11,15,n.isSearching$)?10:C(12,17,n.viewMode$)==="sessions"?13:14)}},dependencies:[ao,Ve,Qe,Yr,qr,Qr,us,_s,ms,et,Ft,H,re,we,zi,yr,Mi,N],styles:[`.ww-calendar{display:flex;flex-direction:column;min-height:0;height:100%}.ww-calendar .ww-grid{min-width:min-content}.ww-calendar .ww-grid .cdk-virtual-scroll-content-wrapper,.ww-calendar .ww-grid .ww-grid-container{padding-bottom:var(--ww-layout-fab-padding)!important}.ww-calendar-scroll{display:flex;flex-direction:column;flex:1;height:100%;overflow:auto;margin-right:var(--berg-panel-right-size);transition:margin-right .4s cubic-bezier(.25,.8,.25,1)}.ww-calendar-scroll.ww-calendar-scroll-virtualizing{overflow:visible;margin-right:0}.berg-layout-right-collapsed .ww-calendar-scroll{margin-right:0}
13/*noopcalendar.component-TDLJX7WD.css.map */
14`],encapsulation:2,changeDetection:0})}}return i})();var Ff=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=Qn({type:i})}static{this.\u0275inj=jn({imports:[xt,Ti,fo.forChild([{path:"",component:si}]),Jr,_n,Zr,Te,ps]})}}return i})();export{si as WwCalendarComponent,ia as WwCalendarDateSelectorComponent,Ff as WwCalendarModule};
15//noopchunk-2CFQQHSW.js.map

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.