1"use strict";(self.webpackChunktonomo=self.webpackChunktonomo||[]).push([[1997],{11997:(ar,ke,m)=>{m.r(ke),m.d(ke,{JobDialogComponent:()=>N,JobsManagementFeatureManagementModule:()=>ir});var J=m(70655),ut=m(40520),C=m(93075),k=m(48966),oe=m(57261),w=m(44224),E=m(21086),f=m(24850),B=m(27221),$=m(5154),Z=m(92198),u=m(658),b=m(96410),O=m(50026),fe=m(80013),P=m(75778),M=m(2994),F=m(87545),le=m(40537),ie=m(63527),L=m(72986),e=m(5e3);let Pe=(()=>{class n{constructor(t,o){this.algoliaSearchService=t,this.ordersRepositoryService=o}search(t){return t?(0,ie.D)(this.algoliaSearchService.orderIndex.search(t,{attributesToRetrieve:["objectID"],restrictSearchableAttributes:["orderNo","client_full_name","property_address.formatted_address","email","order_name","invoiceNo"],hitsPerPage:100})).pipe((0,f.U)(o=>o.hits.map(r=>r.objectID)),(0,F.w)(o=>o.length?this.ordersRepositoryService.getManyByIds$(o).pipe((0,L.q)(1),(0,f.U)(r=>(null!=r?r:[]).filter(s=>!!s).sort((s,a)=>{const l=String(s.orderNo)===t;return l===(String(a.orderNo)===t)?0:l?-1:1}).map(s=>Object.assign(Object.assign({},s),{value:s.id,label:this.toOrderLabel(s)})))):(0,E.of)([])),(0,B.K)(()=>(0,E.of)([]))):(0,E.of)([])}toOrderLabel(t){var o,r,s;return[t.orderNo?`#${t.orderNo}`:"",null!==(o=t.client_full_name)&&void 0!==o?o:"",null!==(s=null===(r=t.property_address)||void 0===r?void 0:r.formatted_address)&&void 0!==s?s:""].filter(Boolean).join(" \u2014 ")}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.ewU),e.\u0275\u0275inject(u.HVf))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})(),$e=(()=>{class n{constructor(t,o){this.jobTemplatesService=t,this.solutionsRepository=o}loadForTemplate(t){return t?this.jobTemplatesService.get(t).pipe((0,F.w)(o=>{var r;const s=null!==(r=o.serviceIds)&&void 0!==r?r:[];return s.length?(0,ie.D)(this.solutionsRepository.getByIds(s)).pipe((0,f.U)(a=>a.filter(l=>!!l).map(l=>({value:l.id,label:l.name,type:l.type})))):(0,E.of)([])}),(0,B.K)(()=>(0,E.of)([]))):(0,E.of)([])}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.Kz_),e.\u0275\u0275inject(u.pZw))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})(),Ce=(()=>{class n extends O.m1{constructor(t,o,r){super({searching:!1,saving:!1,orderOptions:[],serviceOptions:[],job:null,error:null,loadingService:!1}),this.coreJobsService=t,this.orderSearch=o,this.templateServices=r,this.searching$=this.select(s=>s.searching),this.saving$=this.select(s=>s.saving),this.orderOptions$=this.select(s=>s.orderOptions),this.serviceOptions$=this.select(s=>s.serviceOptions),this.loadingService$=this.select(s=>s.loadingService),this.job$=this.select(s=>s.job),this.error$=this.select(s=>s.error),this.vm$=this.select(this.searching$,this.saving$,this.orderOptions$,this.serviceOptions$,this.loadingService$,(s,a,l,c,d)=>({searching:s,saving:a,orderOptions:l,serviceOptions:c,loadingService:d}),{debounce:!0}),this.setOrderTerm=this.effect(s=>s.pipe((0,fe.b)(500),(0,f.U)(a=>(null!=a?a:"").trim()),(0,P.x)(),(0,M.b)(a=>this.patchState({searching:!!a})),(0,F.w)(a=>this.orderSearch.search(a).pipe((0,O._b)(l=>this.patchState({orderOptions:l,searching:!1}),()=>this.patchState({orderOptions:[],searching:!1})))))),this.setTemplateId=this.effect(s=>s.pipe((0,f.U)(a=>null!=a?a:""),(0,P.x)(),(0,M.b)(()=>this.patchState({loadingService:!0})),(0,F.w)(a=>this.templateServices.loadForTemplate(a).pipe((0,O._b)(l=>this.patchState({serviceOptions:l,loadingService:!1}),()=>this.patchState({serviceOptions:[],loadingService:!1})))))),this.save=this.effect(s=>s.pipe((0,M.b)(()=>this.patchState({saving:!0,job:null,error:null})),(0,F.w)(a=>this.coreJobsService.create(a).pipe((0,O._b)(l=>this.patchState({job:l}),l=>this.patchState({error:l})),(0,le.x)(()=>this.patchState({saving:!1}))))))}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.vXX),e.\u0275\u0275inject(Pe),e.\u0275\u0275inject($e))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();var I=m(69808),Be=m(69401),gt=m(60736),Ae=m(78600),Le=m(85224),ye=m(12960),ce=m(76998),R=m(43860),ht=m(99093),Q=m(255),de=m(73929),pe=m(24444),me=m(75244),_t=m(74528),bt=m(88561),vt=m(39998),ft=m(46246),ue=m(66809),ge=m(72751);function Ct(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-dropdown-select-option",26),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275property("value",t.value),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.label," ")}}function yt(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-blank-dropdown"),e.\u0275\u0275template(1,Ct,2,2,"ui-dropdown-select-option",25),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().$implicit,o=e.\u0275\u0275nextContext(2);e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",t)("ngForTrackBy",o.trackByValue)}}function xt(n,i){1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,yt,2,2,"ui-blank-dropdown",24),e.\u0275\u0275elementContainerEnd())}function St(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"tn-job-service-item",30),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275property("type",t.type),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.label," ")}}function It(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-form-field")(1,"label",27),e.\u0275\u0275text(2," Related Services "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"div",28),e.\u0275\u0275template(4,St,2,2,"tn-job-service-item",29),e.\u0275\u0275elementEnd()()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275advance(4),e.\u0275\u0275property("ngForOf",t.serviceOptions)}}function Tt(n,i){1&n&&e.\u0275\u0275element(0,"i",31)}function Ot(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementStart(0,"i",33),e.\u0275\u0275listener("click",function(){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext(3).orderSearchForm.setValue("")}),e.\u0275\u0275elementEnd()}}function wt(n,i){if(1&n&&e.\u0275\u0275template(0,Ot,1,0,"i",32),2&n){const t=e.\u0275\u0275nextContext(2);e.\u0275\u0275property("ngIf",!!t.orderSearchForm.value)}}function jt(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-dropdown-select-option",26),e.\u0275\u0275element(1,"tn-job-order-item-option",36),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275property("value",t.value),e.\u0275\u0275advance(1),e.\u0275\u0275property("item",t)}}function Ft(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,jt,2,2,"ui-dropdown-select-option",25),e.\u0275\u0275elementContainerEnd()),2&n){const t=e.\u0275\u0275nextContext(2).$implicit,o=e.\u0275\u0275nextContext(2);e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",t)("ngForTrackBy",o.trackByValue)}}function Et(n,i){1&n&&(e.\u0275\u0275elementStart(0,"p",37),e.\u0275\u0275text(1," No matching orders found "),e.\u0275\u0275elementEnd())}function Dt(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-blank-dropdown"),e.\u0275\u0275template(1,Ft,2,2,"ng-container",34),e.\u0275\u0275template(2,Et,2,0,"ng-template",null,35,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275reference(3),o=e.\u0275\u0275nextContext().$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o.length)("ngIfElse",t)}}function Jt(n,i){1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,Dt,4,2,"ui-blank-dropdown",24),e.\u0275\u0275elementContainerEnd())}function Mt(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-dropdown-select-option",26),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275property("value",t.value),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.label," ")}}function kt(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-blank-dropdown"),e.\u0275\u0275template(1,Mt,2,2,"ui-dropdown-select-option",25),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().$implicit,o=e.\u0275\u0275nextContext(2);e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",t)("ngForTrackBy",o.trackByValue)}}function Pt(n,i){1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,kt,2,2,"ui-blank-dropdown",24),e.\u0275\u0275elementContainerEnd())}function $t(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementStart(0,"button",38),e.\u0275\u0275listener("click",function(){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext(2).cancel()}),e.\u0275\u0275text(1," Cancel "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(2,"button",39),e.\u0275\u0275listener("click",function(){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext(2).save()}),e.\u0275\u0275text(3," Save "),e.\u0275\u0275elementEnd()}if(2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275property("disabled",t.saving),e.\u0275\u0275advance(2),e.\u0275\u0275property("disabled",t.saving)}}const Bt=function(){return[]};function At(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275elementStart(1,"tn-job-form-dialog",1)(2,"tn-job-form-section",2)(3,"ui-form-field")(4,"label",3),e.\u0275\u0275text(5," Job Template "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(6,"ui-form-input-group",4),e.\u0275\u0275element(7,"input",5)(8,"i",6),e.\u0275\u0275template(9,xt,2,0,"ng-container",7),e.\u0275\u0275pipe(10,"async"),e.\u0275\u0275elementEnd()(),e.\u0275\u0275template(11,It,5,1,"ui-form-field",0),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(12,"tn-job-form-section",8)(13,"ui-form-field")(14,"label",9),e.\u0275\u0275text(15," Related Order "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(16,"tn-job-order-detail-item",10)(17,"ui-form-input-group",11),e.\u0275\u0275element(18,"i",12)(19,"input",13),e.\u0275\u0275template(20,Tt,1,0,"i",14),e.\u0275\u0275template(21,wt,1,1,"ng-template",null,15,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275template(23,Jt,2,0,"ng-container",7),e.\u0275\u0275elementEnd()()(),e.\u0275\u0275elementStart(24,"ui-form-field")(25,"label",16),e.\u0275\u0275text(26," Priority "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(27,"ui-form-input-group",17),e.\u0275\u0275element(28,"input",18)(29,"i",19),e.\u0275\u0275template(30,Pt,2,0,"ng-container",7),e.\u0275\u0275elementEnd()()(),e.\u0275\u0275elementStart(31,"tn-job-form-section",20)(32,"ui-form-field")(33,"label",21),e.\u0275\u0275text(34," Message "),e.\u0275\u0275elementEnd(),e.\u0275\u0275element(35,"div",22),e.\u0275\u0275elementEnd()(),e.\u0275\u0275template(36,$t,4,2,"ng-template",23),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementContainerEnd()),2&n){const t=i.ngIf,o=e.\u0275\u0275reference(22),r=e.\u0275\u0275nextContext();let s;e.\u0275\u0275advance(1),e.\u0275\u0275property("formGroup",r.formGroup),e.\u0275\u0275advance(7),e.\u0275\u0275classProp("animate-spin",t.loadingService),e.\u0275\u0275property("uiIcon",t.loadingService?"sync":"unfold_more"),e.\u0275\u0275advance(1),e.\u0275\u0275property("uiToFormSelectOption",null!==(s=e.\u0275\u0275pipeBind1(10,11,r.templateOptions$))&&void 0!==s?s:e.\u0275\u0275pureFunction0(13,Bt)),e.\u0275\u0275advance(2),e.\u0275\u0275property("ngIf",t.serviceOptions.length),e.\u0275\u0275advance(8),e.\u0275\u0275property("formControl",r.orderSearchForm),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.searching)("ngIfElse",o),e.\u0275\u0275advance(3),e.\u0275\u0275property("uiToFormSelectOption",t.orderOptions),e.\u0275\u0275advance(7),e.\u0275\u0275property("uiToFormSelectOption",r.priorityOptions)}}let N=class{constructor(i,t,o,r,s){this.fb=i,this.dialogRef=t,this.snackBar=o,this.jobTemplatesService=r,this.store=s,this.orderSearchForm=this.fb.control(""),this.formGroup=this.fb.group({jobTemplateId:["",C.kI.required],priority:[u.vW3.MEDIUM,C.kI.required],message:[""],orderId:["",C.kI.required]}),this.priorityOptions=[{value:u.vW3.HIGH,label:"High"},{value:u.vW3.MEDIUM,label:"Medium"},{value:u.vW3.LOW,label:"Low"}],this.templateOptions$=this.jobTemplatesService.list(u.ISd.ACTIVE).pipe((0,f.U)(a=>a.map(l=>({value:l.id,label:l.name}))),(0,B.K)(()=>(0,E.of)([])),(0,$.d)({bufferSize:1,refCount:!0})),this.vm$=this.store.vm$,this.store.setOrderTerm(this.orderSearchForm.valueChanges),this.store.setTemplateId(this.formGroup.controls.jobTemplateId.valueChanges),this.store.job$.pipe((0,Z.h)(a=>!!a),(0,w.t)(this)).subscribe(a=>this.handleSaveSuccess(a)),this.store.error$.pipe((0,Z.h)(a=>!!a),(0,w.t)(this)).subscribe(a=>this.handleSaveError(a))}save(){var i;const t=this.formGroup.getRawValue();if(this.formGroup.invalid)return this.formGroup.markAllAsTouched(),void this.formGroup.setValue(t);const o=(null!==(i=t.message)&&void 0!==i?i:"").trim();this.formGroup.disable(),this.store.save({jobTemplateId:t.jobTemplateId,orderId:t.orderId,priority:t.priority,message:o||void 0})}cancel(){this.dialogRef.close()}trackByValue(i,t){return t.value}handleSaveSuccess(i){this.showToast("Job has been created successfully.","success"),this.dialogRef.close(i)}handleSaveError(i){var t;this.formGroup.enable();let o="Failed to save the job.";i instanceof ut.HttpErrorResponse&&400===i.status&&(o=(null===(t=i.error)||void 0===t?void 0:t.message)||o),this.showToast(o,"error")}showToast(i,t){this.snackBar.open(i,"",{duration:5e3,verticalPosition:"bottom",horizontalPosition:"center",panelClass:[`${t}-snackbar`]})}};N.\u0275fac=function(i){return new(i||N)(e.\u0275\u0275directiveInject(C.qu),e.\u0275\u0275directiveInject(k.so),e.\u0275\u0275directiveInject(oe.ux),e.\u0275\u0275directiveInject(u.
1Kz_),e.\u0275\u0275directiveInject(Ce))},N.\u0275cmp=e.\u0275\u0275defineComponent({type:N,selectors:[["tn-job-dialog"]],features:[e.\u0275\u0275ProvidersFeature([Ce,Pe,$e,{provide:b.mmT,useValue:{formName:"JOB"}}])],decls:2,vars:3,consts:[[4,"ngIf"],["eyebrow","Jobs","title","New Job",3,"formGroup"],["title","Job Type and Related Services","description","Select a job template to include its services in the new job."],["uiFormFieldLabel","","for","jobTemplateId"],["uiFormSelect","","uiDropdown","","formControlName","jobTemplateId"],["uiInputSelect","","placeholder","Please Select"],[3,"uiIcon"],[4,"uiToFormSelectOption"],["title","Job Details","description","Select a related order to bring its details into the job."],["uiFormFieldLabel","","for","orderId"],["uiFormSelect","","formControlName","orderId"],["uiDropdown",""],["uiIcon","search"],["id","orderId","name","orderId","type","text","placeholder","Input order number or keywords to search",3,"formControl"],["uiIcon","sync","uiIconVariant","filled","class","animate-spin",4,"ngIf","ngIfElse"],["cleanSearch",""],["uiFormFieldLabel","","for","priority"],["uiFormSelect","","uiDropdown","","formControlName","priority"],["uiInputSelect",""],["uiIcon","unfold_more"],["title","Customized Message (Optional)","description","Leave a customized message for the job"],["uiFormFieldLabel","","for","message"],["id","message","name","message","uiFroalaEditor","","formControlName","message"],["tnJobFormDialogFooter",""],[4,"uiDropdownTemplate"],[3,"value",4,"ngFor","ngForOf","ngForTrackBy"],[3,"value"],["uiFormFieldLabel",""],[1,"flex","flex-col","gap-4"],["class","w-fit",3,"type",4,"ngFor","ngForOf"],[1,"w-fit",3,"type"],["uiIcon","sync","uiIconVariant","filled",1,"animate-spin"],["uiIconVariant","filled","uiIcon","cancel",3,"click",4,"ngIf"],["uiIconVariant","filled","uiIcon","cancel",3,"click"],[4,"ngIf","ngIfElse"],["noOrders",""],[3,"item"],[1,"job-dialog__order-empty"],["uiBtnSize","medium","uiBtnTheme","main","themeMode","secondary",3,"disabled","click"],["uiBtnSize","medium","uiBtnTheme","main","themeMode","primary",3,"disabled","click"]],template:function(i,t){1&i&&(e.\u0275\u0275template(0,At,37,14,"ng-container",0),e.\u0275\u0275pipe(1,"async")),2&i&&e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(1,1,t.vm$))},directives:[I.NgIf,Be.Y,C.JL,C.sg,gt.n,Ae.hg,Le.S,ye.e,ce.n,R.w,C.JJ,C.u,ht.S,Q.a,de.z,R.S,pe.$,I.NgForOf,me.O,_t.s,bt.w,C.Fj,C.oH,vt.j,ft.V,Be.o,ue.s,ge.V],pipes:[I.AsyncPipe],styles:[".job-dialog-panel .mat-dialog-container{overflow:hidden;border-radius:0;padding:0}[_nghost-%COMP%]{display:flex;height:100%;width:100%}.job-dialog__order-empty[_ngcontent-%COMP%]{margin-bottom:0;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(128 128 128 / var(--tw-text-opacity, 1))}.job-dialog__counter[_ngcontent-%COMP%]{margin-top:.25rem;text-align:right;font-size:.8125rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(128 128 128 / var(--tw-text-opacity, 1))}"],changeDetection:0}),N=(0,J.gn)([(0,w.c)(),(0,J.w6)("design:paramtypes",[C.qu,k.so,oe.ux,u.Kz_,Ce])],N);var Lt=m(47796),re=m(53251),T=m(74202),Rt=m(96980),Nt=m(67259),zt=m(5698),H=m(36053);const Re=[u.aAC.ESCALATED,u.aAC.PENDING,u.aAC.IN_PROGRESS,u.aAC.REVIEWING,u.aAC.COMPLETED],ae={[u.aAC.ESCALATED]:"Requires Attention",[u.aAC.PENDING]:"Pending",[u.aAC.IN_PROGRESS]:"In Progress",[u.aAC.COMPLETED]:"Completed",[u.aAC.REVIEWING]:"Reviewing"},Ne={timePickerLabel:"Due time",ok:"Save"},ze=[u.ByT.PENDING,u.ByT.IN_PROGRESS,u.ByT.REVIEWING,u.ByT.COMPLETED].map(n=>({value:n,label:ae[n]})),q={[u.aAC.ESCALATED]:{background:"#F03E3E",text:"white"},[u.aAC.PENDING]:{background:"#CCC",text:"white"},[u.aAC.IN_PROGRESS]:{background:"#4D43DC",text:"white"},[u.aAC.COMPLETED]:{background:"#26DCA6",text:"white"},[u.aAC.REVIEWING]:{background:"#FFA726",text:"white"}},Ue={[u.aAC.ESCALATED]:{icon:"siren",headerBg:"#FFC6C6",headerBorder:"#FF7C7C",rowBg:"#F8EFEF",rowBorder:"#FFE3E3"}},Ve={title:"Settings",subtitle:"Job Management",displayTitle:"Display Settings",displayDescription:"Customize how content is displayed",columnsTitle:"Show Columns",columnsDescription:"Select the columns you want to display by default in the job table.",save:"Save",cancel:"Cancel"};var Vt=m(87174);let ee=(()=>{class n extends b.U32{constructor(t){super(t,"jobs:column-settings",b.Pi5.NORMAL)}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(Vt.n2))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();var xe=m(98798);const He=n=>{var i;return(null!==(i=null==n?void 0:n.services)&&void 0!==i?i:[]).map(t=>({id:t.id,name:t.name,status:xe.av.PENDING}))},Se={[u.vW3.HIGH]:"High",[u.vW3.MEDIUM]:"Medium",[u.vW3.LOW]:"Low"}
1,Gt={[u.vW3.HIGH]:{background:"#F03E3E",text:"white"},[u.vW3.MEDIUM]:{background:"#FFA726",text:"white"},[u.vW3.LOW]:{background:"#26DCA6",text:"white"}};var Ie=m(41854),A=m(87168),z=m(21406),Kt=m(7625),G=m(17489),Xt=m(31307),v=m(24254);const Yt={filterForm:{createdDate:null,dueDate:null,teamMember:null,includeCompleted:!1,searchTerm:""},advancedFilter:{},jobCountByTemplate:[],loadingCountByTemplate:!1,sortOrder:"desc",error:null};let he=(()=>{class n extends O.m1{constructor(t,o,r,s){super(Yt),this.coreJobsService=t,this.route=o,this.router=r,this.presetService=s,this.filterForm$=this.select(a=>a.filterForm),this.advancedFilter$=this.select(a=>a.advancedFilter),this.jobCountByTemplate$=this.select(a=>{const l=a.advancedFilter.jobType;if(!(null==l?void 0:l.length))return a.jobCountByTemplate;const c=new Set(l);return a.jobCountByTemplate.filter(d=>c.has(d.jobTemplateId))}),this.loadingCountByTemplate$=this.select(a=>a.loadingCountByTemplate),this.sortOrder$=this.select(a=>a.sortOrder),this.error$=this.select(a=>a.error),this.setSortOrder=this.updater((a,l)=>a.sortOrder===l?a:Object.assign(Object.assign({},a),{sortOrder:l})),this.toggleSortOrder=this.updater(a=>Object.assign(Object.assign({},a),{sortOrder:"asc"===a.sortOrder?"desc":"asc"})),this.queryParams$=this.select(this.filterForm$,this.advancedFilter$,this.sortOrder$,(a,l,c)=>function Zt(n,i,t){var o,r,s,a,l,c,d,p,g,h,_,y,S;const D=null!==(o=i.shootDate)&&void 0!==o?o:null;return{search:(null===(r=n.searchTerm)||void 0===r?void 0:r.trim())||null,teamMember:n.teamMember||null,includeCompleted:n.includeCompleted?"true":null,sort:"asc"===t?"asc":null,createdDateFrom:null!==(a=(0,v.fKp)(null===(s=n.createdDate)||void 0===s?void 0:s.start))&&void 0!==a?a:null,createdDateTo:null!==(c=(0,v.fKp)(null===(l=n.createdDate)||void 0===l?void 0:l.end))&&void 0!==c?c:null,dueDateFrom:null!==(p=(0,v.fKp)(null===(d=n.dueDate)||void 0===d?void 0:d.start))&&void 0!==p?p:null,dueDateTo:null!==(h=(0,v.fKp)(null===(g=n.dueDate)||void 0===g?void 0:g.end))&&void 0!==h?h:null,shootDateFrom:null!==(_=(0,v.fKp)(null==D?void 0:D.start))&&void 0!==_?_:null,shootDateTo:null!==(y=(0,v.fKp)(null==D?void 0:D.end))&&void 0!==y?y:null,customerName:null!==(S=i.customerName)&&void 0!==S?S:null,jobType:(0,v.tO1)(i.jobType),service:(0,v.tO1)(i.service),photographer:(0,v.tO1)(i.photographer),editor:(0,v.tO1)(i.editor),reviewer:(0,v.tO1)(i.reviewer)}}(a,l,c)),this.setFilterForm=this.updater((a,l)=>(0,G.isEqual)(a.filterForm,l)?a:Object.assign(Object.assign({},a),{filterForm:l})),this.setAdvancedFilter=this.updater((a,l)=>(0,G.isEqual)(a.advancedFilter,l)?a:Object.assign(Object.assign({},a),{advancedFilter:l})),this.loadJobCountByTemplate=this.effect(()=>(0,H.aj)([this.filterForm$,this.advancedFilter$]).pipe((0,f.U)(([a,l])=>{const c=Ge(a,l,null);return(0,J._T)(c,["jobTemplateIds"])}),(0,P.x)((a,l)=>(0,G.isEqual)(a,l)),(0,M.b)(()=>this.patchState({loadingCountByTemplate:!0,jobCountByTemplate:[]})),(0,z.b)(a=>this.coreJobsService.countByTemplate(a).pipe((0,O._b)(l=>this.patchState({jobCountByTemplate:l}),l=>this.patchState({error:l})),(0,le.x)(()=>this.patchState({loadingCountByTemplate:!1})))))),this.syncQueryParamsToUrl=this.effect(()=>this.queryParams$.pipe((0,Xt.T)(1),(0,M.b)(a=>this.writeQueryParams(a)))),this.defaultCreatedDate=this.presetService.getDateRange("last3Months",null),this.hydrateFromQueryParams(),this.syncQueryParamsToUrl(),this.loadJobCountByTemplate()}hydrateFromQueryParams(){var t,o,r,s;const a=this.route.snapshot.queryParamMap;this.setSortOrder("asc"===a.get("sort")?"asc":"desc"),this.setFilterForm({searchTerm:null!==(t=a.get("search"))&&void 0!==t?t:"",teamMember:null!==(o=a.get("teamMember"))&&void 0!==o?o:null,includeCompleted:"true"===a.get("includeCompleted"),createdDate:null!==(r=(0,v.DHS)(a.get("createdDateFrom"),a.get("createdDateTo")))&&void 0!==r?r:this.defaultCreatedDate,dueDate:(0,v.DHS)(a.get("dueDateFrom"),a.get("dueDateTo"))}),this.setAdvancedFilter({customerName:null!==(s=a.get("customerName"))&&void 0!==s?s:null,shootDate:(0,v.DHS)(a.get("shootDateFrom"),a.get("shootDateTo")),jobType:(0,v.ivo)(a.get("jobType")),service:(0,v.ivo)(a.get("service")),photographer:(0,v.ivo)(a.get("photographer")),editor:(0,v.ivo)(a.get("editor")),reviewer:(0,v.ivo)(a.get("reviewer"))})}writeQueryParams(t){this.router.navigate([],{relativeTo:(0,v.WdA)(this.route),queryParams:t,queryParamsHandling:"merge",replaceUrl:!0})}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.vXX),e.\u0275\u0275inject(T.gz),e.\u0275\u0275inject(T.F0),e.\u0275\u0275inject(b.sKh))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();function Ge(n,i,t,o=!0){var r,s,a,l,c,d,p,g,h,_,y,S;const D=null!==(r=i.customerName)&&void 0!==r?r:null,x=null!==(s=i.shootDate)&&void 0!==s?s:null,j=null!==(a=i.jobType)&&void 0!==a?a:[],ct=null!==(l=i.service)&&void 0!==l?l:[],dt=null!==(c=i.photographer)&&void 0!==c?c:[],pt=null!==(d=i.editor)&&void 0!==d?d:[],mt=null!==(p=i.reviewer)&&void 0!==p?p:[];let ve=[];return ve=o?[...j,t].filter(rr=>!!rr):t?[t]:j,{members:n.teamMember?[n.teamMember]:void 0,photographerIds:dt.length?dt:void 0,editorIds:pt.length?pt:void 0,reviewerIds:mt.length?mt:void 0,customerUids:D?[D]:void 0,serviceIds:ct.length?ct:void 0,createdAtFrom:(0,v.fKp)(null===(g=n.createdDate)||void 0===g?void 0:g.start),createdAtTo:(0,v.fKp)(null===(h=n.createdDate)||void 0===h?void 0:h.end),dueDateFrom:(0,v.fKp)(null===(_=n.dueDate)||void 0===_?void 0:_.start),dueDateTo:(0,v.fKp)(null===(y=n.dueDate)||void 0===y?void 0:y.end),shootDateFrom:(0,v.fKp)(null==x?void 0:x.start),shootDateTo:(0,v.fKp)(null==x?void 0:x.end),jobTemplateIds:ve.length?ve:void 0,includeCompleted:n.includeCompleted,search:(null===(S=n.searchTerm)||void 0===S?void 0:S.trim())||void 0}}
1const Qt={[u.ByT.PENDING]:u.aAC.PENDING,[u.ByT.IN_PROGRESS]:u.aAC.IN_PROGRESS,[u.ByT.COMPLETED]:u.aAC.COMPLETED,[u.ByT.REVIEWING]:u.aAC.REVIEWING},qt={jobTemplateId:null,pagination:{},loadingList:!1,items:{},total:{},error:null,archiveOutcome:null};let Te=(()=>{class n extends O.m1{constructor(t,o,r,s){super(qt),this.coreJobsService=t,this.route=o,this.managementStore=r,this.recentJobWrites=s,this.jobTemplateId$=this.select(a=>a.jobTemplateId),this.loadedItems$=this.select(a=>a.items),this.loadedTotal$=this.select(a=>a.total),this.groups$=this.select(this.loadedItems$,this.loadedTotal$,this.jobTemplateId$,this.recentJobWrites.writes$,(a,l,c,d)=>this.applyWrites(a,l,c,d),{debounce:!0}),this.items$=this.select(this.groups$,a=>a.items),this.loadingList$=this.select(a=>a.loadingList),this.error$=this.select(a=>a.error),this.archiveOutcome$=this.select(a=>a.archiveOutcome),this.resolvedFilter$=this.select(this.managementStore.filterForm$,this.managementStore.advancedFilter$,this.managementStore.sortOrder$,this.jobTemplateId$,(a,l,c,d)=>Object.assign(Object.assign({},Ge(a,l,d,!1)),{sortOrder:c})).pipe((0,P.x)(Ie.Z)),this.setJobTemplateId=this.updater((a,l)=>a.jobTemplateId===l?a:Object.assign(Object.assign(Object.assign({},a),{jobTemplateId:l}),{pagination:{},items:{},total:{},error:null})),this.setItemsForGroup=this.updater((a,{groupKey:l,items:c})=>Object.assign(Object.assign({},a),{items:Object.assign(Object.assign({},a.items),{[l]:c})})),this.appendItemsForGroup=this.updater((a,{groupKey:l,items:c})=>{var d;const p=null!==(d=a.items[l])&&void 0!==d?d:[];return Object.assign(Object.assign({},a),{items:Object.assign(Object.assign({},a.items),{[l]:[...p,...c]})})}),this.beginLoadJobsForGroup=this.updater((a,{groupKey:l,pagination:c})=>Object.assign(Object.assign({},a),{pagination:Object.assign(Object.assign({},a.pagination),{[l]:c}),loadingList:0===c.skip||a.loadingList,error:null})),this.setTotalForGroup=this.updater((a,{groupKey:l,total:c})=>Object.assign(Object.assign({},a),{total:Object.assign(Object.assign({},a.total),{[l]:c})})),this.replaceJobInGroup=this.updater((a,{groupKey:l,job:c})=>{var d;return Object.assign(Object.assign({},a),{items:Object.assign(Object.assign({},a.items),{[l]:(null!==(d=a.items[l])&&void 0!==d?d:[]).map(p=>p.id===c.id?c:p)})})}),this.removeJobFromGroup=this.updater((a,{groupKey:l,id:c})=>{var d,p;const g=null!==(d=a.items[l])&&void 0!==d?d:[],h=g.filter(y=>y.id!==c),_=h.length!==g.length;return Object.assign(Object.assign({},a),{items:Object.assign(Object.assign({},a.items),{[l]:h}),total:Object.assign(Object.assign({},a.total),{[l]:Math.max(0,(null!==(p=a.total[l])&&void 0!==p?p:0)-(_?1:0))})})}),this.loadJobsByGroup=this.effect(a=>a.pipe((0,M.b)(l=>this.beginLoadJobsForGroup(l)),(0,A.M)(this.resolvedFilter$),(0,z.b)(([{groupKey:l,pagination:c},d])=>this.coreJobsService.list(Object.assign(Object.assign(Object.assign({},d),c),{statuses:[l]})).pipe((0,Kt.R)(this.filterMovedOnFrom(d)),(0,O._b)(({items:p,total:g})=>{this.recentJobWrites.confirmIndexed(p),c.skip>0?this.appendItemsForGroup({groupKey:l,items:p}):this.setItemsForGroup({groupKey:l,items:p}),this.setTotalForGroup({groupKey:l,total:g}),this.patchState({loadingList:!1})},p=>this.patchState({error:p,loadingList:!1})))))),this.updateJob=this.effect(a=>a.pipe((0,z.b)(({id:l,groupKey:c,changes:d})=>this.coreJobsService.update(l,d).pipe((0,A.M)(this.select(p=>{var g;return(null!==(g=p.items[c])&&void 0!==g?g:[]).find(h=>h.id===l)})),(0,O._b)(([p,g])=>{!g||this.replaceJobInGroup({groupKey:c,job:Object.assign(Object.assign({},g),p)})},p=>this.patchState({error:p})))))),this.archiveJob=this.effect(a=>a.pipe((0,M.b)(()=>this.patchState({archiveOutcome:null})),(0,z.b)(({id:l,groupKey:c})=>this.coreJobsService.archive(l).pipe((0,O._b)(()=>{this.removeJobFromGroup({groupKey:c,id:l}),this.patchState({archiveOutcome:{id:l,success:!0}})},d=>this.patchState({error:d,archiveOutcome:{id:l,success:!1}})))))),this.syncJobTemplateIdFromRoute=this.effect(()=>this.route.paramMap.pipe((0,f.U)(a=>a.get("templateId")),(0,P.x)(),(0,M.b)(a=>this.setJobTemplateId(a)))),this.syncJobTemplateIdFromRoute()}applyWrites(t,o,r,s){var a;const l=this.pendingJobs(t,r,s);if(!l.size)return{items:t,total:o};const c=[...l.values()],d={},p=Object.assign({},o);let g=!1;for(const[h,_]of Object.entries(t)){const y=new Set(_.map(x=>x.id)),S=[...c.filter(x=>!y.has(x.id)),..._.map(x=>{var j;return null!==(j=l.get(x.id))&&void 0!==j?j:x})].filter(x=>this.belongsToGroup(x,h)),D=S.length!==_.length||S.some((x,j)=>x!==_[j]);D&&(g=!0),d[h]=D?S:_,p[h]=Math.max(0,(null!==(a=o[h])&&void 0!==a?a:0)+S.length-_.length)}return g?{items:d,total:p}:{items:t,total:o}}pendingJobs(t,o,r){const s=new Map;for(const a of Object.values(t).flat()){const l=r[a.id];l&&s.set(a.id,Object.assign(Object.assign({},a),l.changes))}for(const a of Object.values(r)){if(!(null==a?void 0:a.created)||s.has(a.id))continue;const l=Object.assign(Object.assign({},a.created),a.changes);(!o||l.templateId===o)&&s.set(a.id,l)}return s}belongsToGroup(t,o){return o===u.aAC.ESCALATED?!!t.escalated:Qt[t.status]===o}filterMovedOnFrom(t){return this.resolvedFilter$.pipe((0,Z.h)(o=>!(0,Ie.Z)(o,t)))}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.vXX),e.\u0275\u0275inject(T.gz),e.\u0275\u0275inject(he),e.\u0275\u0275inject(u.SLo))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();var Oe=m(12422),tn=m(87858);const We=function(){return[]},nn=function(){return{}};
1function on(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275elementStart(1,"ui-action-table",1),e.\u0275\u0275listener("rowLoad",function(r){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onRenderedRowsChange(r)})("statusChange",function(r){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onStatusChange(r)})("userSelectionChange",function(r){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onUserSelectionChange(r)})("dateTimeChange",function(r){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onDueDateChange(r)})("linkClick",function(r){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onLinkClick(r)})("columnResized",function(r){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onColumnResized(r)})("addColumnClick",function(){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onAddColumnClick()}),e.\u0275\u0275pipe(2,"async"),e.\u0275\u0275pipe(3,"async"),e.\u0275\u0275pipe(4,"async"),e.\u0275\u0275pipe(5,"async"),e.\u0275\u0275pipe(6,"async"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementContainerEnd()}if(2&n){const t=i.isCompact,o=e.\u0275\u0275nextContext();let r,s,a,l,c;e.\u0275\u0275advance(1),e.\u0275\u0275property("rows",null!==(r=e.\u0275\u0275pipeBind1(2,7,o.rows$))&&void 0!==r?r:e.\u0275\u0275pureFunction0(17,We))("columns",null!==(s=e.\u0275\u0275pipeBind1(3,9,o.visibleColumns$))&&void 0!==s?s:e.\u0275\u0275pureFunction0(18,We))("columnWidths",null!==(a=e.\u0275\u0275pipeBind1(4,11,o.columnWidths$))&&void 0!==a?a:e.\u0275\u0275pureFunction0(19,nn))("heights",t?o.tableConfigCompact:o.tableConfig)("loading",null!==(l=e.\u0275\u0275pipeBind1(5,13,o.loading$))&&void 0!==l&&l)("resizableColumns",!0)("showAddColumn",null!==(c=e.\u0275\u0275pipeBind1(6,15,o.hasHiddenColumns$))&&void 0!==c&&c)}}let U=class{constructor(i,t,o,r,s,a,l,c){this.store=i,this.userCache=t,this.columnSettings=o,this.confirmDialog=r,this.snackBar=s,this.matDialog=a,this.router=l,this.route=c,this.rows$=(0,H.aj)([this.store.groups$,this.store.resolvedFilter$]).pipe((0,f.U)(([{items:d,total:p},g])=>this.buildRows(d,p,this.getVisibleStatuses(g)))),this.rowUserIds$=this.store.items$.pipe((0,f.U)(d=>{const p=new Set;for(const g of Object.values(d).flat()){g.customerUid&&p.add(g.customerUid);for(const h of(0,u.n40)(g))p.add(h)}return[...p].sort((g,h)=>g.localeCompare(h))}),(0,P.x)((d,p)=>d.join()===p.join())),this.rowUsers$=this.rowUserIds$.pipe((0,F.w)(d=>this.userCache.getMany(d)),(0,$.d)({bufferSize:1,refCount:!0})),this.visibleColumns$=this.columnSettings.visibleColumns$,this.columnWidths$=this.columnSettings.columnWidths$,this.hasHiddenColumns$=this.columnSettings.hasHiddenColumns$,this.viewType$=this.columnSettings.viewType$,this.tableConfig={dataRow:b.SIL.HEIGHTS.DATA_ROW,headerCollapsed:b.SIL.HEIGHTS.HEADER_COLLAPSED,headerExpanded:b.SIL.HEIGHTS.HEADER_EXPANDED,columnHeader:b.SIL.HEIGHTS.COLUMN_HEADER},this.tableConfigCompact={dataRow:b.SIL.HEIGHTS.COMPACT_DATA_ROW,headerCollapsed:b.SIL.HEIGHTS.COMPACT_HEADER_COLLAPSED,headerExpanded:b.SIL.HEIGHTS.COMPACT_HEADER_EXPANDED,columnHeader:b.SIL.HEIGHTS.COMPACT_COLUMN_HEADER},this.loading$=this.store.loadingList$.pipe((0,fe.b)(100),(0,P.x)()),this.requestedBatches=new Set,this.trackByRowFn=(d,p)=>"groupHeader"===p.type?p.key:p.id,(0,H.aj)([this.userCache.teamMemberTableUsers$,this.rowUsers$]).pipe((0,f.U)(([d,p])=>(({teamMembers:n,users:i,onArchive:t})=>{const o=new Map(n.map(c=>[c.id,c])),r=new Map(i.map(c=>[c.id,c])),s=c=>(null!=c?c:[]).map(d=>o.get(d)).filter(d=>!!d),a=c=>(null!=c?c:[]).map(d=>r.get(d)).filter(d=>!!d),l=Object.keys(Se).map(c=>({value:c,label:Se[c]}));return[{key:"address",header:"Address",type:"textLink",icon:"place",width:"208px",sticky:"start",config:{getValue:c=>{var d,p;return null!==(p=null===(d=c.job)||void 0===d?void 0:d.propertyAddress)&&void 0!==p?p:"-"},maxLines:3}},{key:"customer",header:"Customer Name",type:"user",icon:"people",width:"208px",config:{getUsers:c=>{var d;return a((null===(d=c.job)||void 0===d?void 0:d.customerUid)?[c.job.customerUid]:[])}}},{key:"shootDate",header:"Shoot Date",type:"date",icon:"calendar_today",width:"208px",config:{getValue:c=>{var d,p;return null!==(p=null===(d=c.job)||void 0===d?void 0:d.shootDate)&&void 0!==p?p:null}}},{key:"dueDate",header:"Due Date",type:"dateTime",icon:"calendar_today",width:"230px",config:{getValue:c=>{var d;return(null===(d=c.job)||void 0===d?void 0:d.dueDate)?new Date(c.job.dueDate):null},clickable:!0,labels:Ne}},{key:"jobType",header:"Job Type",type:"text",icon:"category",width:"208px",config:{getValue:c=>{var d,p;return null!==(p=null===(d=c.job)||void 0===d?void 0:d.templateName)&&void 0!==p?p:""},prefixIcon:"work_outline"}},{key:"status",header:"Job Status",type:"status",icon:"trending_up",width:"208px",config:{getValue:c=>{var d,p;return null!==(p=null===(d=c.job)||void 0===d?void 0:d.status)&&void 0!==p?p:null},getLabel:c=>c.job?ae[c.job.status]:"",colorMap:q,options:ze}},{key:"service",header:"Service",type:"services",icon:"shopping_bag",width:"208px",config:{getServices:c=>He(c.job)}},{key:"photographer",header:"Photographer/Videographer",type:"user",icon:"assignment_ind",width:"250px",config:{getUsers:c=>a((0,u.n40)(c.job))}},{key:"editor",header:"Editor",type:"user-select",icon:"assignment_ind",width:"208px",config:{getUsers:c=>{var d;return s(null===(d=c.job)||void 0===d?void 0:d.editorIds)},options:n,multiple:!0}},{key:"reviewer",header:"Reviewer",type:"user-select",icon:"assignment_ind",width:"208px",config:{getUsers:c=>{var d;return s(null===(d=c.job)||void 0===d?void 0:d.reviewerIds)},options:n,multiple:!0}},{key:"priority",header:"Priority",type:"status",icon:"list",width:"208px",config:{getValue:c=>{var d,p;return null!==(p=null===(d=c.job)||void 0===d?void 0:d.priority)&&void 0!==p?p:null},getLabel:c=>c.job?Se[c.job.priority]:"",colorMap:Gt,options:l}},{key:"information",header:"Information",type:"fileLinks",icon:"info",width:"230px",config:{getFileLinks:c=>{var d,p;return(0,xe.Xq)({rawFolderLink:null===(d=c.job)||void 0===d?void 0:d.rawFolderLink,deliverableLink:null===(p=c.job)||void 0===p?void 0:p.deliverableLink})},labels:{rawFiles:"Raw Files",finalFiles:"Final Files",unsynced:"Unsynced"}}},{key:"actions",header:"Actions",type:"iconAction",width:"208px",icon:"more_horiz",config:{actions:[{icon:"archive",tooltip:()=>"Archive job",visible:c=>!!c.job,onClick:c=>t(c)}]}}]})({teamMembers:d,users:(0,zt.Z)([...d,...p],g=>g.id),onArchive:g=>this.onArchiveJob(g)})),(0,w.t)(this)).subscribe(d=>this.columnSettings.setDefaultColumns(d)),this.store.resolvedFilter$.pipe((0,w.t)(this)).subscribe(d=>this.reloadAllStatuses(this.getVisibleStatuses(d)))}onRenderedRowsChange(i){for(const t of i)"data"===t.type&&null===t.data.job&&t.data.groupKey&&this.requestBatchFor(t.data.groupKey,t.data.index)}onStatusChange(i){const t=i.row;if(t.job&&i.status){if("status"===i.column)return void this.store.updateJob({id:t.job.id,groupKey:t.groupKey,changes:{status:i.status}});"priority"===i.column&&this.store.updateJob({id:t.job.id,groupKey:t.groupKey,changes:{priority:i.status}})}}onUserSelectionChange(i){const t=i.row;if(!t.job)return;const o=i.selectedUsers.map(r=>r.id);"editor"!==i.column?"reviewer"===i.column&&this.store.updateJob({id:t.job.id,groupKey:t.groupKey,changes:{reviewerIds:o}}):this.store.updateJob({id:t.job.id,groupKey:t.groupKey,changes:{editorIds:o}})}onDueDateChange(i){const t=i.row;!t.job||"dueDate"!==i.column||this.store.updateJob({id:t.job.id,groupKey:t.groupKey,changes:{dueDate:i.date?i.date.toISOString():null}})}onLinkClick(i){this.router.navigate(["details",i.row.id],{relativeTo:this.route})}onColumnResized(i){this.columnSettings.setColumnWidth(i)}
1onAddColumnClick(){this.columnSettings.updateValue(this.columnSettings.settingsPanelData$.pipe((0,L.q)(1),(0,F.w)(({columns:i,value:t})=>(0,b.Md5)(this.matDialog,i,t,Ve))))}onArchiveJob(i){return(0,J.mG)(this,void 0,void 0,function*(){if(!i.job)return;const t=i.job.id,o=i.groupKey;if(!(yield this.confirmDialog.confirm({title:"Archive this job?",message:["This job will be moved to archived and removed from the list."],okButtonText:"Archive",cancelButtonText:"Cancel",destructive:!0}).pipe((0,L.q)(1),(0,w.t)(this)).toPromise()))return;this.store.archiveJob({id:t,groupKey:o});const s=yield this.store.archiveOutcome$.pipe((0,Z.h)(a=>null!==a&&t===a.id),(0,w.t)(this),(0,L.q)(1)).toPromise();this.handleArchiveOutcome(s)})}handleArchiveOutcome(i){this.snackBar.open(i.success?"Job archived":"Failed to archive job. Please try again.","Got it",{duration:3e3})}reloadAllStatuses(i){this.requestedBatches.clear();for(const t of i)this.requestBatch(t,0)}getVisibleStatuses(i){return i.includeCompleted?Re:Re.filter(t=>t!==u.aAC.COMPLETED)}requestBatchFor(i,t){const o=20*Math.floor(t/20);this.requestBatch(i,o)}requestBatch(i,t){const o=`${i}:${t}`;this.requestedBatches.has(o)||(this.requestedBatches.add(o),this.store.loadJobsByGroup({groupKey:i,pagination:{skip:t,take:20}}))}buildRows(i,t,o){var r,s,a,l;const c=[];for(const d of o){const p=null!==(r=i[d])&&void 0!==r?r:[],g=null!==(s=t[d])&&void 0!==s?s:0;c.push(Object.assign({type:"groupHeader",key:d,label:ae[d],count:g,totalCount:g,collapsed:!1,selection:"none",rowIds:p.map(h=>h.id),color:q[d].background,accentColor:q[d].background,applyCustomColor:!0},Ue[d]));for(let h=0;h<g;h++){const _=null!==(a=p[h])&&void 0!==a?a:null,y=(null==_?void 0:_.escalated)?u.aAC.ESCALATED:d,S=Ue[y];c.push({type:"data",id:_?_.id:`${d}-placeholder-${h}`,selected:!1,data:{id:null!==(l=null==_?void 0:_.id)&&void 0!==l?l:"",groupKey:d,index:h,job:_},groupKey:d,styleVariant:_?void 0:"placeholder",useAccentOnSelect:!0,accentColor:q[y].background,bg:null==S?void 0:S.rowBg,borderColor:null==S?void 0:S.rowBorder})}}return c}};U.\u0275fac=function(i){return new(i||U)(e.\u0275\u0275directiveInject(Te),e.\u0275\u0275directiveInject(u.KpX),e.\u0275\u0275directiveInject(ee),e.\u0275\u0275directiveInject(b.DNF),e.\u0275\u0275directiveInject(oe.ux),e.\u0275\u0275directiveInject(k.uw),e.\u0275\u0275directiveInject(T.F0),e.\u0275\u0275directiveInject(T.gz))},U.\u0275cmp=e.\u0275\u0275defineComponent({type:U,selectors:[["tn-job-by-template"]],features:[e.\u0275\u0275ProvidersFeature([Te])],decls:1,vars:0,consts:[[4,"uiViewType"],[3,"rows","columns","columnWidths","heights","loading","resizableColumns","showAddColumn","rowLoad","statusChange","userSelectionChange","dateTimeChange","linkClick","columnResized","addColumnClick"]],template:function(i,t){1&i&&e.\u0275\u0275template(0,on,7,20,"ng-container",0)},directives:[Oe.F,tn._],pipes:[I.AsyncPipe],styles:["[_nghost-%COMP%]{flex:1 1 0%;overflow:hidden}"],changeDetection:0}),U=(0,J.gn)([(0,w.c)(),(0,J.w6)("design:paramtypes",[Te,u.KpX,ee,b.DNF,oe.ux,k.uw,T.F0,T.gz])],U);var rn=m(71764),W=m.n(rn),je=m(61709);let Ke=(()=>{class n{constructor(t){this.usersRepository=t,this.byId$=this.usersRepository.getAll$().pipe((0,f.U)(o=>(0,G.keyBy)(o,"uid")),(0,$.d)({bufferSize:1,refCount:!0}))}display(t,o){return{id:t,name:(null==o?void 0:o.displayName)||(null==o?void 0:o.email)||"Unknown editor",src:null==o?void 0:o.photoURL,email:null==o?void 0:o.email}}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.L2p))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),_e=(()=>{class n extends O.m1{constructor(t,o){super({jobs:{overdue:[],escalated:[]}}),this.coreJobsService=t,this.editors=o,this.vm$=this.select(this.rowsOf("overdue"),this.rowsOf("escalated"),(r,s)=>({overdue:r,escalated:s}),{debounce:!0}),this.hasJobs$=this.select(({jobs:r})=>!!r.overdue.length||!!r.escalated.length),this.load=this.effect(r=>r.pipe((0,je.zg)(s=>this.coreJobsService.list(Object.assign(Object.assign({},this.toFilters(s)),{take:5})).pipe((0,O._b)(({items:a})=>this.setJobs({group:s,jobs:a}),a=>{this.setJobs({group:s,jobs:[]}),console.error(`[JobAttentionStore] Failed to load ${s} jobs`,a)}))))),this.setJobs=this.updater((r,{group:s,jobs:a})=>Object.assign(Object.assign({},r),{jobs:Object.assign(Object.assign({},r.jobs),{[s]:a})}))}loadAll(){this.load("overdue"),this.load("escalated")}rowsOf(t){return this.select(this.select(o=>o.jobs[t]),this.editors.byId$,(o,r)=>this.toRows(o,r))}toFilters(t){const o="escalated"===t?{statuses:[u.aAC.ESCALATED]}:{dueDateTo:W()().toISOString()};return Object.assign(Object.assign({},o),{includeCompleted:!1})}toRows(t,o){const r=W()();return t.map(s=>{var a,l,c,d;const p=s.dueDate?W()(s.dueDate):null;return{id:s.id,address:null!==(a=s.propertyAddress)&&void 0!==a?a:"",customerName:null!==(l=s.customerName)&&void 0!==l?l:"",dueDate:p?p.format(v.lvo.MONTH_DAY_HOUR):"",overdue:!!(null==p?void 0:p.isBefore(r)),jobType:null!==(c=s.templateName)&&void 0!==c?c:"",statusLabel:ae[s.status],statusColor:q[s.status],services:He(s),editors:(null!==(d=s.editorIds)&&void 0!==d?d:[]).map(g=>this.editors.display(g,o[g]))}})}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.vXX),e.\u0275\u0275inject(Ke))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();var ln=m(44002);const cn={today:0,tomorrow:1},Xe={label:"All Jobs",value:""},dn={[u.ByT.COMPLETED]:{label:"Completed",color:"#26DCA6"},[u.ByT.REVIEWING]:{label:"Reviewing",color:"#FFA726"},[u.ByT.IN_PROGRESS]:{label:"In Progress",color:"#4D43DC"},[u.ByT.PENDING]:{label:"Pending",color:"#E2E2E2",outlined:!0}},Ye={counts:[],loading:!1,jobTemplateId:"",templateOptions:[Xe]};let Ee=(()=>{class n extends O.m1{constructor(t){super({windows:{today:Ye,tomorrow:Ye}}),this.coreJobsService=t,this.vm$=this.select(this.select(this.select(o=>o.windows.today),o=>this.toWindowVm(o)),this.select(this.select(o=>o.windows.tomorrow),o=>this.toWindowVm(o)),(o,r)=>({today:o,tomorrow:r}),{debounce:!0}),this.patchWindow=this.updater((o,{window:r,patch:s}
1)=>Object.assign(Object.assign({},o),{windows:Object.assign(Object.assign({},o.windows),{[r]:Object.assign(Object.assign({},o.windows[r]),s)})})),this.setTemplateOptions=this.updater((o,{window:r,templates:s})=>Object.assign(Object.assign({},o),{windows:Object.assign(Object.assign({},o.windows),{[r]:Object.assign(Object.assign({},o.windows[r]),{templateOptions:[Xe,...s.map(a=>({label:a.name,value:a.id}))]})})})),this.loadTemplateOptions=this.effect(o=>o.pipe((0,je.zg)(r=>this.coreJobsService.templatesInUse(this.dueRange(r)).pipe((0,O._b)(s=>this.setTemplateOptions({window:r,templates:s}),s=>console.error(`[JobDashboardStore] Failed to load ${r}'s templates`,s)))))),this.loadCounts=this.effect(o=>o.pipe((0,M.b)(r=>this.patchWindow({window:r,patch:{loading:!0}})),(0,ln.v)(r=>r),(0,je.zg)(r=>r.pipe((0,A.M)(this.select(s=>s.windows)),(0,F.w)(([s,a])=>{const{jobTemplateId:l}=a[s];return this.coreJobsService.countByStatus(Object.assign(Object.assign({},this.dueRange(s)),{jobTemplateIds:""===l?void 0:[l],includeArchivedTemplates:!0})).pipe((0,O._b)(c=>this.patchWindow({window:s,patch:{counts:c}}),c=>{this.patchWindow({window:s,patch:{counts:[]}}),console.error(`[JobDashboardStore] Failed to count ${s}'s jobs`,c)}),(0,le.x)(()=>this.patchWindow({window:s,patch:{loading:!1}})))})))))}selectTemplate(t,o){this.patchWindow({window:t,patch:{jobTemplateId:o}}),this.loadCounts(t)}dueRange(t){const o=W()().add(cn[t],"day");return{dueDateFrom:o.startOf("day").toISOString(),dueDateTo:o.endOf("day").toISOString()}}toWindowVm(t){return{loading:t.loading,templateOptions:t.templateOptions,segments:t.counts.map(({status:o,count:r})=>Object.assign(Object.assign({},dn[o]),{value:r}))}}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.vXX))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();function pn(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"span",2),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext();e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1("(",t.period,")")}}let Ze=(()=>{class n{constructor(){this.heading="",this.period=""}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.\u0275\u0275defineComponent({type:n,selectors:[["tn-period-heading"]],inputs:{heading:"heading",period:"period"},decls:3,vars:2,consts:[[1,"title"],["class","period",4,"ngIf"],[1,"period"]],template:function(t,o){1&t&&(e.\u0275\u0275elementStart(0,"h2",0),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(2,pn,2,1,"span",1)),2&t&&(e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate(o.heading),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o.period))},directives:[I.NgIf],styles:["[_nghost-%COMP%]{display:flex;width:100%;align-items:center;gap:.5rem}.title[_ngcontent-%COMP%]{margin:0;flex:1 1 0%;font-size:1.125rem;font-weight:700;line-height:1.5rem;--tw-text-opacity: 1;color:rgb(26 26 26 / var(--tw-text-opacity, 1))}.period[_ngcontent-%COMP%]{white-space:nowrap;font-size:1rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(175 175 175 / var(--tw-text-opacity, 1))}"],changeDetection:0}),n})();function mn(n,i){if(1&n&&e.\u0275\u0275element(0,"i",4),2&n){const t=e.\u0275\u0275nextContext(2);e.\u0275\u0275property("uiIcon",t.tabIcon)("size",24)}}function un(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"span",2),e.\u0275\u0275template(1,mn,1,2,"i",3),e.\u0275\u0275text(2),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext();e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.tabIcon),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.tabLabel," ")}}const gn=["*"];let hn=(()=>{class n{constructor(){this.accent="brand",this.tabLabel=""}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=e.\u0275\u0275defineComponent({type:n,selectors:[["ui-accent-card"]],inputs:{accent:"accent",tabLabel:"tabLabel",tabIcon:"tabIcon"},ngContentSelectors:gn,decls:3,vars:2,consts:[[1,"card",3,"ngClass"],["class","tab",4,"ngIf"],[1,"tab"],[3,"uiIcon","size",4,"ngIf"],[3,"uiIcon","size"]],template:function(t,o){1&t&&(e.\u0275\u0275projectionDef(),e.\u0275\u0275elementStart(0,"div",0),e.\u0275\u0275template(1,un,3,2,"span",1),e.\u0275\u0275projection(2),e.\u0275\u0275elementEnd()),2&t&&(e.\u0275\u0275property("ngClass",o.accent),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o.tabLabel))},directives:[I.NgClass,I.NgIf,Q.a],styles:["[_nghost-%COMP%]{display:block}
1.card[_ngcontent-%COMP%]{position:relative;border-radius:1rem;border-width:0px;border-top-width:4px;border-style:solid}.card.brand[_ngcontent-%COMP%]{border-color:var(--brand-65, #3B82F6);--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.card.brand[_ngcontent-%COMP%] .tab[_ngcontent-%COMP%]{background-color:var(--brand-65, #3B82F6)}.card.green[_ngcontent-%COMP%]{--tw-border-opacity: 1;border-color:rgb(34 197 126 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.card.green[_ngcontent-%COMP%] .tab[_ngcontent-%COMP%]{--tw-bg-opacity: 1;background-color:rgb(34 197 126 / var(--tw-bg-opacity, 1))}.card.red[_ngcontent-%COMP%]{--tw-border-opacity: 1;border-color:rgb(240 62 62 / var(--tw-border-opacity, 1));background-image:linear-gradient(180deg,#FFE3E3 0%,rgba(255,227,227,.1) 108.39%)}.card.red[_ngcontent-%COMP%] .tab[_ngcontent-%COMP%]{--tw-bg-opacity: 1;background-color:rgb(240 62 62 / var(--tw-bg-opacity, 1))}.tab[_ngcontent-%COMP%]{position:absolute;left:50%;top:0;display:flex;align-items:center;gap:.5rem;border-radius:.25rem;padding:.5rem 1rem;font-size:1rem;font-weight:600;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transform:translate(-50%,-50%)}"],changeDetection:0}),n})();var _n=m(83335),bn=m(14556),vn=m(72149);const fn=function(n){return["../templates/details",n]};function Cn(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"tr")(1,"th",9),e.\u0275\u0275element(2,"ui-address-cell",10),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"td"),e.\u0275\u0275text(4),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(5,"td")(6,"span"),e.\u0275\u0275text(7),e.\u0275\u0275elementEnd()(),e.\u0275\u0275elementStart(8,"td"),e.\u0275\u0275text(9),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(10,"td")(11,"span",11),e.\u0275\u0275text(12),e.\u0275\u0275elementEnd()(),e.\u0275\u0275elementStart(13,"td"),e.\u0275\u0275element(14,"ui-services-cell",12),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(15,"td"),e.\u0275\u0275element(16,"ui-avatar-group",13),e.\u0275\u0275elementEnd()()),2&n){const t=i.$implicit,o=e.\u0275\u0275nextContext().isCompact;e.\u0275\u0275advance(2),e.\u0275\u0275property("useImage",!1)("value",t.address)("routerLink",e.\u0275\u0275pureFunction1(18,fn,t.id)),e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(t.customerName),e.\u0275\u0275advance(2),e.\u0275\u0275classProp("overdue",t.overdue),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate(t.dueDate),e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(t.jobType),e.\u0275\u0275advance(2),e.\u0275\u0275styleProp("background-color",t.statusColor.background)("color",t.statusColor.text),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.statusLabel," "),e.\u0275\u0275advance(2),e.\u0275\u0275property("services",t.services),e.\u0275\u0275advance(2),e.\u0275\u0275property("avatars",t.editors)("size",o?"small":"medium")("max",4)("summary",!0)}}function yn(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"table",7)(1,"thead")(2,"tr")(3,"th",8),e.\u0275\u0275text(4,"Address"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(5,"th",8),e.\u0275\u0275text(6,"Customer Name"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(7,"th",8),e.\u0275\u0275text(8,"Due Date"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(9,"th",8),e.\u0275\u0275text(10,"Job Type"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(11,"th",8),e.\u0275\u0275text(12,"Job Status"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(13,"th",8),e.\u0275\u0275text(14,"Service"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(15,"th",8),e.\u0275\u0275text(16,"Editor"),e.\u0275\u0275elementEnd()()(),e.\u0275\u0275elementStart(17,"tbody"),e.\u0275\u0275template(18,Cn,17,20,"tr",1),e.\u0275\u0275elementEnd()()),2&n){const t=i.isCompact,o=e.\u0275\u0275nextContext(2).$implicit,r=e.\u0275\u0275nextContext().ngIf,s=e.\u0275\u0275nextContext();e.\u0275\u0275classProp("compact",t),e.\u0275\u0275advance(18),e.\u0275\u0275property("ngForOf",r[o.group])("ngForTrackBy",s.trackById)}}
1function xn(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"section",3)(1,"h3",4),e.\u0275\u0275element(2,"i",5),e.\u0275\u0275text(3),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(4,yn,19,4,"table",6),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().$implicit;e.\u0275\u0275advance(2),e.\u0275\u0275property("uiIcon",t.icon),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.title," ")}}function Sn(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,xn,5,2,"section",2),e.\u0275\u0275elementContainerEnd()),2&n){const t=i.$implicit,o=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o[t.group].length)}}function In(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,Sn,2,1,"ng-container",1),e.\u0275\u0275elementContainerEnd()),2&n){const t=e.\u0275\u0275nextContext();e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",t.sections)("ngForTrackBy",t.trackByGroup)}}let Tn=(()=>{class n{constructor(t){this.store=t,this.vm$=this.store.vm$,this.trackById=v.xnY,this.sections=[{group:"overdue",title:"Over Due Job",icon:"calendar_today"},{group:"escalated",title:"Escalated Job",icon:"notification_important"}]}trackByGroup(t,o){return o.group}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275directiveInject(_e))},n.\u0275cmp=e.\u0275\u0275defineComponent({type:n,selectors:[["tn-job-attention"]],decls:2,vars:3,consts:[[4,"ngIf"],[4,"ngFor","ngForOf","ngForTrackBy"],["class","section",4,"ngIf"],[1,"section"],[1,"section-title"],[3,"uiIcon"],["class","jobs",3,"compact",4,"uiViewType"],[1,"jobs"],["scope","col"],["scope","row"],[3,"useImage","value","routerLink"],[1,"status"],[3,"services"],[3,"avatars","size","max","summary"]],template:function(t,o){1&t&&(e.\u0275\u0275template(0,In,2,2,"ng-container",0),e.\u0275\u0275pipe(1,"async")),2&t&&e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(1,1,o.vm$))},directives:[I.NgIf,I.NgForOf,Q.a,Oe.F,_n.t,T.rH,bn.k,vn.m],pipes:[I.AsyncPipe],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;gap:2.25rem;padding:2.25rem 1.25rem}.section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.section-title[_ngcontent-%COMP%]{margin:0;display:flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:600;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(240 62 62 / var(--tw-text-opacity, 1))}.jobs[_ngcontent-%COMP%]{width:100%;table-layout:fixed;border-collapse:collapse;overflow:hidden;border-radius:.5rem}.jobs[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .jobs[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-left:.625rem;padding-right:.625rem;text-align:left;vertical-align:middle}.jobs[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:first-child, .jobs[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{padding-left:1.75rem}.jobs[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:last-child, .jobs[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:last-child{padding-right:1.75rem}.jobs[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{border-bottom-width:1px;border-style:solid;--tw-border-opacity: 1;border-color:rgb(226 226 226 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(246 246 246 / var(--tw-bg-opacity, 1));padding-top:.75rem;padding-bottom:.75rem;font-size:.875rem;font-weight:700;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}.jobs[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .jobs[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-top:1rem;padding-bottom:1rem;font-size:1rem;font-weight:400;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(26 26 26 / var(--tw-text-opacity, 1))}.jobs.compact[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{font-size:.8125rem;font-weight:600}.jobs.compact[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .jobs.compact[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{font-size:.875rem;font-weight:400}.jobs[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:not(:last-child) th[_ngcontent-%COMP%], .jobs[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:not(:last-child) td[_ngcontent-%COMP%]{border-bottom-width:1px;border-style:solid;--tw-border-opacity: 1;border-color:rgb(226 226 226 / var(--tw-border-opacity, 1))}.overdue[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(240 62 62 / var(--tw-bg-opacity, 1));padding:.5rem 1rem;font-weight:600;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.status[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;border-radius:9999px;padding:.5rem 1rem;font-weight:600}"],changeDetection:0}),n})();var On=m(47045),wn=m(73020),Qe=m(75518);
1function jn(n,i){if(1&n&&e.\u0275\u0275element(0,"ui-avatar",4),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275property("src",t.avatarUrl)("name",t.label)}}function Fn(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,jn,1,2,"ui-avatar",2),e.\u0275\u0275elementStart(2,"span",3),e.\u0275\u0275text(3),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementContainerEnd()),2&n){const t=i.ngIf,o=e.\u0275\u0275nextContext();e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o.hasAvatar(t)),e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(t.label)}}function En(n,i){1&n&&e.\u0275\u0275projection(0)}const Dn=["*"];let qe=(()=>{class n{constructor(t){this.formSelect=t,this.selected$=this.formSelect.selectedOptions.pipe((0,f.U)(o=>{var r;return null!==(r=o[0])&&void 0!==r?r:null}))}hasAvatar(t){return"avatarUrl"in t}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275directiveInject(wn.i))},n.\u0275cmp=e.\u0275\u0275defineComponent({type:n,selectors:[["ui-form-select-selected-label"]],ngContentSelectors:Dn,decls:4,vars:4,consts:[[4,"ngIf","ngIfElse"],["placeholder",""],["size","x-small",3,"src","name",4,"ngIf"],[1,"truncate","w-auto"],["size","x-small",3,"src","name"]],template:function(t,o){if(1&t&&(e.\u0275\u0275projectionDef(),e.\u0275\u0275template(0,Fn,4,2,"ng-container",0),e.\u0275\u0275pipe(1,"async"),e.\u0275\u0275template(2,En,1,0,"ng-template",null,1,e.\u0275\u0275templateRefExtractor)),2&t){const r=e.\u0275\u0275reference(3);e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(1,2,o.selected$))("ngIfElse",r)}},directives:[I.NgIf,Qe.A],pipes:[I.AsyncPipe],styles:["[_nghost-%COMP%]{display:inline-flex;align-items:center;gap:.375rem}"],changeDetection:0}),n})();var Jn=m(30567);const kn={threshold:1,label:"Others",icon:"info",toMessage:(n,i)=>`Services under ${i}% are automatically grouped into \u201cOthers\u201d: ${n.join(", ")}`};let et=(()=>{class n extends O.m1{constructor(t,o,r){super({period:"",templates:[],completed:[],loading:!1}),this.coreJobsService=t,this.editors=o,this.palette=r,this.donutCards$=this.select(this.select(s=>s.templates),s=>this.toDonutCards(s)),this.donuts$=this.donutCards$.pipe((0,f.U)(s=>s.map(a=>Object.assign(Object.assign({},a),{segments:(0,b.ljF)(a.segments,Object.assign(Object.assign({},kn),{color:this.palette.colorOf("job-summary:others")}))})))),this.contributions$=this.select(this.select(s=>s.completed),this.editors.byId$,(s,a)=>this.toContributionCards(s,a)),this.vm$=this.select(this.select(s=>s.period),this.donuts$,this.contributions$,this.select(s=>s.loading),(s,a,l,c)=>({period:s,donuts:a,contributions:l,loading:c}),{debounce:!0}),this.load=this.effect(s=>s.pipe((0,f.U)(a=>this.toRange(a)),(0,M.b)(a=>{this.patchState({loading:!0,period:(0,v.Cey)(a)})}),(0,F.w)(({start:a,end:l})=>{const c={createdAtFrom:a.toISOString(),createdAtTo:l.endOf("day").toISOString(),includeArchivedTemplates:!0};return(0,Jn.D)([this.coreJobsService.summary(c),this.coreJobsService.summary(Object.assign(Object.assign({},c),{statuses:[u.aAC.COMPLETED]}))]).pipe((0,O._b)(([d,p])=>this.patchState({templates:d,completed:p}),d=>{this.patchState({templates:[],completed:[]}),console.error("[JobSummaryStore] Failed to load the summary",d)}),(0,le.x)(()=>this.patchState({loading:!1})))})))}toRange(t){return"last-month"===t?(0,v.CZw)():(0,v.qKr)()}toDonutCards(t){return t.filter(o=>!!o.services.length).map(o=>({id:o.jobTemplateId,title:`${o.label} by Service`,segments:o.services.map(r=>({label:r.label,value:r.count,color:this.palette.colorOf(r.serviceId)}))}))}toContributionCards(t,o){return t.filter(r=>!!r.services.length).map(r=>({id:r.jobTemplateId,title:`${r.label} Completed`,value:r.count,categories:r.services.map(s=>({label:s.label,color:this.palette.colorOf(s.serviceId)})),rows:this.toContributionRows(r,o)}))}toContributionRows(t,o){return t.editors.map(r=>{const{name:s,src:a,email:l}=this.editors.display(r.editorId,o[r.editorId]);return{name:s,avatarUrl:a,email:l,value:r.count,values:this.toEditorSplit(t.services,r)}})}toEditorSplit(t,o){const r=new Map(o.services.map(s=>[s.serviceId,s.count]));return t.map(s=>{var a;return null!==(a=r.get(s.serviceId))&&void 0!==a?a:0})}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.vXX),e.\u0275\u0275inject(Ke),e.\u0275\u0275inject(b.fCy))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();var Pn=m(71173),$n=m(84680);
1function Bn(n,i){if(1&n&&e.\u0275\u0275element(0,"ui-donut-breakdown-card",7),2&n){const t=i.$implicit,o=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275property("title",t.title)("segments",t.segments)("loading",o.loading)}}function An(n,i){if(1&n&&e.\u0275\u0275element(0,"ui-contribution-breakdown-card",8),2&n){const t=i.$implicit,o=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275property("title",t.title)("value",t.value)("categories",t.categories)("rows",t.rows)("loading",o.loading)}}function Ln(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275element(1,"tn-period-heading",1),e.\u0275\u0275elementStart(2,"div",2)(3,"div",3),e.\u0275\u0275template(4,Bn,1,3,"ui-donut-breakdown-card",4),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(5,"div",5),e.\u0275\u0275template(6,An,1,5,"ui-contribution-breakdown-card",6),e.\u0275\u0275elementEnd()(),e.\u0275\u0275elementContainerEnd()),2&n){const t=i.ngIf,o=e.\u0275\u0275nextContext();e.\u0275\u0275advance(1),e.\u0275\u0275property("heading",o.heading)("period",t.period),e.\u0275\u0275advance(3),e.\u0275\u0275property("ngForOf",t.donuts)("ngForTrackBy",o.trackById),e.\u0275\u0275advance(2),e.\u0275\u0275property("ngForOf",t.contributions)("ngForTrackBy",o.trackById)}}let Rn=(()=>{class n{constructor(t){this.store=t,this.heading="",this.vm$=this.store.vm$,this.trackById=v.xnY}set window(t){this.store.load(t)}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275directiveInject(et))},n.\u0275cmp=e.\u0275\u0275defineComponent({type:n,selectors:[["tn-job-summary"]],inputs:{heading:"heading",window:"window"},features:[e.\u0275\u0275ProvidersFeature([et])],decls:2,vars:3,consts:[[4,"ngIf"],[3,"heading","period"],[1,"panel"],[1,"donut-cards"],[3,"title","segments","loading",4,"ngFor","ngForOf","ngForTrackBy"],[1,"contribution-cards"],["sectionTitle","Editor Contribution","unit","Jobs",3,"title","value","categories","rows","loading",4,"ngFor","ngForOf","ngForTrackBy"],[3,"title","segments","loading"],["sectionTitle","Editor Contribution","unit","Jobs",3,"title","value","categories","rows","loading"]],template:function(t,o){1&t&&(e.\u0275\u0275template(0,Ln,7,6,"ng-container",0),e.\u0275\u0275pipe(1,"async")),2&t&&e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(1,1,o.vm$))},directives:[I.NgIf,Ze,I.NgForOf,Pn.b,$n.A],pipes:[I.AsyncPipe],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.panel[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem;--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1));padding:2rem}.donut-cards[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:1.25rem;gap:1.25rem}.contribution-cards[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1.25rem;gap:1.25rem}"],changeDetection:0}),n})();function Nn(n,i){1&n&&(e.\u0275\u0275elementStart(0,"ui-accent-card",4),e.\u0275\u0275element(1,"tn-job-attention"),e.\u0275\u0275elementEnd())}function zn(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-dropdown-select-option",16),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275property("value",t.value),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.label," ")}}function Un(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-blank-dropdown",14),e.\u0275\u0275template(1,zn,2,2,"ui-dropdown-select-option",15),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().$implicit,o=e.\u0275\u0275nextContext(3);e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",t)("ngForTrackBy",o.trackByValue)}}function Vn(n,i){1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,Un,2,2,"ui-blank-dropdown",13),e.\u0275\u0275elementContainerEnd())}function Hn(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-accent-card",7)(1,"ui-gauge-breakdown-card",8)(2,"div",9)(3,"div",10)(4,"ui-form-select-selected-label"),e.\u0275\u0275text(5," All jobs "),e.\u0275\u0275elementEnd(),e.\u0275\u0275element(6,"i",11),e.\u0275\u0275template(7,Vn,2,0,"ng-container",12),e.\u0275\u0275elementEnd()()()()),2&n){const t=i.$implicit,o=e.\u0275\u0275nextContext().ngIf,r=e.\u0275\u0275nextContext();e.\u0275\u0275property("accent",t.accent)("tabLabel",t.title),e.\u0275\u0275advance(1),e.\u0275\u0275property("segments",o[t.window].segments)("loading",o[t.window].loading),e.\u0275\u0275advance(2),e.\u0275\u0275property("formControl",r.templateControls[t.window]),e.\u0275\u0275advance(3),e.\u0275\u0275property("size",24),e.\u0275\u0275advance(1),e.\u0275\u0275property("uiToFormSelectOption",o[t.window].templateOptions)}}
1function Gn(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",5),e.\u0275\u0275template(1,Hn,8,7,"ui-accent-card",6),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext();e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",t.cards)("ngForTrackBy",t.trackByWindow)}}function Wn(n,i){if(1&n&&e.\u0275\u0275element(0,"tn-job-summary",17),2&n){const t=i.$implicit;e.\u0275\u0275property("heading",t.heading)("window",t.window)}}let K=class{constructor(i,t,o){this.store=i,this.attentionStore=t,this.fb=o,this.vm$=this.store.vm$,this.attentionHasJobs$=this.attentionStore.hasJobs$,this.trackingPeriod=`Tracking Period: ${(0,v.Cey)((0,v.qKr)())}`,this.cards=[{window:"today",title:"Jobs Due Today",accent:"brand"},{window:"tomorrow",title:"Jobs Due Tomorrow",accent:"green"}],this.summaries=[{window:"month-to-date",heading:"Real-Time Summary"},{window:"last-month",heading:"Last Month Summary"}],this.templateControls={today:this.fb.control(""),tomorrow:this.fb.control("")}}ngOnInit(){this.attentionStore.loadAll(),this.cards.forEach(({window:i})=>{this.store.loadTemplateOptions(i),this.store.loadCounts(i),this.watchTemplateControl(i)})}trackByWindow(i,t){return t.window}trackByValue(i,t){return t.value}watchTemplateControl(i){this.templateControls[i].valueChanges.pipe((0,w.t)(this)).subscribe(t=>this.store.selectTemplate(i,null!=t?t:""))}};K.\u0275fac=function(i){return new(i||K)(e.\u0275\u0275directiveInject(Ee),e.\u0275\u0275directiveInject(_e),e.\u0275\u0275directiveInject(C.qu))},K.\u0275cmp=e.\u0275\u0275defineComponent({type:K,selectors:[["tn-job-dashboard"]],features:[e.\u0275\u0275ProvidersFeature([Ee,_e])],decls:6,vars:9,consts:[["heading","Job Tracking",3,"period"],["accent","red","tabLabel","Requires Attention","tabIcon","siren",4,"ngIf"],["class","due-date-cards",4,"ngIf"],[3,"heading","window",4,"ngFor","ngForOf","ngForTrackBy"],["accent","red","tabLabel","Requires Attention","tabIcon","siren"],[1,"due-date-cards"],["tabIcon","work_outline",3,"accent","tabLabel",4,"ngFor","ngForOf","ngForTrackBy"],["tabIcon","work_outline",3,"accent","tabLabel"],["gaugeLabel","Completion","statusHeader","Status","countHeader","Job Count","shareHeader","Percentage of Total",3,"segments","loading"],["header",""],["uiFormSelect","","uiDropdown","",1,"template-picker",3,"formControl"],["uiIcon","keyboard_arrow_down",3,"size"],[4,"uiToFormSelectOption"],["class","dropdown-panel",4,"uiDropdownTemplate"],[1,"dropdown-panel"],[3,"value",4,"ngFor","ngForOf","ngForTrackBy"],[3,"value"],[3,"heading","window"]],template:function(i,t){1&i&&(e.\u0275\u0275element(0,"tn-period-heading",0),e.\u0275\u0275template(1,Nn,2,0,"ui-accent-card",1),e.\u0275\u0275pipe(2,"async"),e.\u0275\u0275template(3,Gn,2,2,"div",2),e.\u0275\u0275pipe(4,"async"),e.\u0275\u0275template(5,Wn,1,2,"tn-job-summary",3)),2&i&&(e.\u0275\u0275property("period",t.trackingPeriod),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(2,5,t.attentionHasJobs$)),e.\u0275\u0275advance(2),e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(4,7,t.vm$)),e.\u0275\u0275advance(2),e.\u0275\u0275property("ngForOf",t.summaries)("ngForTrackBy",t.trackByWindow))},directives:[Ze,I.NgIf,hn,Tn,I.NgForOf,On.I,ce.n,R.w,C.JJ,C.oH,qe,Q.a,de.z,R.S,pe.$,me.O,Rn],pipes:[I.AsyncPipe],styles:["[_nghost-%COMP%]{display:flex;flex:1 1 0%;flex-direction:column;gap:2.25rem;overflow-y:auto;overflow-x:hidden;padding:2.25rem 3rem}tn-period-heading[_ngcontent-%COMP%]{margin-bottom:.75rem}.due-date-cards[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1.5rem;gap:1.5rem;padding-top:1.5rem}.template-picker[_ngcontent-%COMP%]{display:flex;cursor:pointer;align-items:center;gap:.25rem;font-size:.875rem;line-height:1.25rem;color:var(--brand-65, #3B82F6)}tn-job-summary[_ngcontent-%COMP%]{margin-top:2.25rem}"],changeDetection:0}),K=(0,J.gn)([(0,w.c)(),(0,J.w6)("design:paramtypes",[Ee,_e,C.qu])],K);const tt={order:null,customer:null,brokerageNotes:"",customerNotes:[]};let nt=(()=>{class n{constructor(t,o,r,s){this.ordersRepository=t,this.usersRepository=o,this.brokeragesService=r,this.userNotesRepository=s}resolve(t){return(0,H.aj)([this.order(t.orderId),this.customer(t.customerUid),this.brokerageNotes(t.customerUid),this.customerNotes(t.customerUid)]).pipe((0,f.U)(([o,r,s,a])=>({order:o,customer:r,brokerageNotes:s,customerNotes:a})))}customerNotes(t){return t?this.userNotesRepository.getAll({userId:t}).pipe((0,f.U)(o=>[...o].sort((r,s)=>s.createdAt-r.createdAt)),(0,B.K)(()=>(0,E.of)([]))):(0,E.of)([])}order(t){return t?this.ordersRepository.getById(t).pipe((0,f.U)(o=>null!=o?o:null),(0,B.K)(()=>(0,E.of)(null))):(0,E.of)(null)}brokerageNotes(t){return t?this.brokeragesService.getBrokerageField(t,"notes").pipe((0,L.q)(1),(0,f.U)(o=>null!=o?o:""),(0,B.K)(()=>(0,E.of)(""))):(0,E.of)("")}customer(t){return t?this.usersRepository.getById(t).pipe((0,f.U)(o=>null!=o?o:null),(0,B.K)(()=>(0,E.of)(null))):(0,E.of)(null)}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.HVf),e.\u0275\u0275inject(u.L2p),e.\u0275\u0275inject(u.wKh),e.\u0275\u0275inject(u.BuL))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();var te=m(68896);const be=[];let De=(()=>{class n extends O.m1{constructor(t,o,r,s,a){super({job:null,context:tt}),this.coreJobsService=t,this.jobDetailsData=o,this.permissionsService=r,this.appConfigService=s,this.recentJobWrites=a,this.canEditDeliverables=(0,v.hKS)(this.permissionsService.permissions,this.appConfigService.allowNativeUpload),this.job$=this.select(l=>l.job),this.memberIds$=this.select(this.job$,l=>{var c,d;return{editorIds:null!==(c=null==l?void 0:l.editorIds)&&void 0!==c?c:be,photographerIds:(0,u.n40)(l),reviewerIds:null!==(d=null==l?void 0:l.reviewerIds)&&void 0!==d?d:be}}),this.editableFields$=this.select(this.job$,l=>{var c,d,p,g;return{status:null!==(c=null==l?void 0:l.status)&&void 0!==c?c:null,dueDate:null!==(d=null==l?void 0:l.dueDate)&&void 0!==d?d:null,editorIds:null!==(p=null==l?void 0:l.editorIds)&&void 0!==p?p:be,reviewerIds:null!==(g=null==l?void 0:l.reviewerIds)&&void 0!==g?g:be}}),this.vm$=this.select(l=>{var c,d,p,g,h,_,y,S,D;const{job:x,context:j}=l;return x?{title:this.buildTitle(x),statusLabel:ae[x.status],statusColor:q[x.status],isPending:x.status===u.ByT.PENDING,escalated:!!x.escalated,escalatingMessage:null!==(c=x.escalatingMessage)&&void 0!==c?c:"",message:null!==(d=x.message)&&void 0!==d?d:"",sections:this.buildSections(x.templateCustomizeInformation),address:null!==(p=x.propertyAddress)&&void 0!==p?p:"",dueDate:this.buildDueDate(x.dueDate),services:this.buildServices(x),rawFiles:this.buildRawFiles(x,j.order),finalFiles:this.buildFinalFiles(x,j.order),branding:this.buildBranding(j.customer),clientPreference:null!==(h=null===(g=j.order)||void 0===g?void 0:g.order_notes)&&void 0!==h?h:"",clientPrivateNotes:this.buildNotes(j.customerNotes),brokerageNotes:j.brokerageNotes,musicOption:null!==(y=null===(_=j.order)||void 0===_?void 0:_.music_option)&&void 0!==y?y:"",propertyNotes:this.buildPropertyNotes(j.order),rooms:this.buildRooms(j.order),order:{id:x.orderId,number:null!==(D=null===(S=j.order)||void 0===S?void 0:S.orderNo)&&void 0!==D?D:""},customFields:this.buildCustomFields(j.order)}:null},{debounce:!0}),this.loadJob=this.effect(l=>l.pipe((0,M.b)(()=>{this.patchState({job:null,context:tt})}),(0,F.w)(c=>this.coreJobsService.get(c).pipe((0,O._b)(d=>{this.patchState({job:d}),this.loadContext(d)},d=>{console.error("[JobDetailsStore] Failed to load job",d)}))))),this.loadContext=this.effect(l=>l.pipe((0,F.w)(c=>this.jobDetailsData.resolve(c).pipe((0,O._b)(d=>this.patchState({context:d}),d=>{console.error("[JobDetailsStore] Failed to resolve job context",d)}))))),this.setEscalation=this.effect(l=>l.pipe((0,A.M)(this.job$),(0,z.b)(([c,d])=>d?this.coreJobsService.setEscalation(d.id,c).pipe((0,O._b)(p=>this.applyJobPatch(d.id,p),p=>{console.error("[JobDetailsStore] Failed to update escalation",p)})):te.E))),this.updateJob=this.effect(l=>l.pipe((0,A.M)(this.job$),(0,z.b)(([c,d])=>d&&this.changesJob(d,c)?this.coreJobsService.update(d.id,c).pipe((0,O._b)(p=>this.applyJobPatch(d.id,p),p=>{console.error("[JobDetailsStore] Failed to update job",p)})):te.E))),this.patchJob=this.updater((l,c)=>Object.assign(Object.assign({},l),{job:l.job?Object.assign(Object.assign({},l.job),c):null}))}applyJobPatch(t,o){this.patchJob(o),this.recentJobWrites.recordEdit(t,o)}changesJob(t,o){return Object.entries(o).some(([r,s])=>{const a=t[r];return(null!=a||null!=s)&&!(0,Ie.Z)(a,s)})}buildTitle(t){var o;const r=null!==(o=t.templateName)&&void 0!==o?o:"";return t.propertyAddress?`${r}: # ${t.propertyAddress}`:r}buildSections(t){var o,r,s,a,l,c,d,p,g,h,_,y,S;return{address:!!(null===(o=null==t?void 0:t.generalInformation)||void 0===o?void 0:o.address),dueDate:!!(null===(r=null==t?void 0:t.generalInformation)||void 0===r?void 0:r.dueDate),services:!!(null===(s=null==t?void 0:t.generalInformation)||void 0===s?void 0:s.services),files:!!(null===(a=null==t?void 0:t.generalInformation)||void 0===a?void 0:a.files),editor:!!(null===(l=null==t?void 0:t.teamMembers)||void 0===l?void 0:l.editor),photographer:!!(null===(c=null==t?void 0:t.teamMembers)||void 0===c?void 0:c.photographer),branding:!!(null==t?void 0:t.brandingInformation),clientPreferences:!!(null===(d=null==t?void 0:t.customerInformation)||void 0===d?void 0:d.clientPreferences),clientPrivateNotes:!!(null===(p=null==t?void 0:t.customerInformation)||void 0===p?void 0:p.clientPrivateNotes),brokerage:!!(null==t?void 0:t.brokerageInformation),musicOption:!!(null==t?void 0:t.musicOption),orderLink:!!(null===(g=null==t?void 0:t.orderInformation)||void 0===g?void 0:g.orderLink),propertyNotesAndRooms:!!(null===(_=null===(h=null==t?void 0:t.orderInformation)||void 0===h?void 0:h.propertyNotesAndRooms)||void 0===_?void 0:_.bedroomBathroomHalfBaths)||!!(null===(S=null===(y=null==t?void 0:t.orderInformation)||void 0===y?void 0:y.propertyNotesAndRooms)||void 0===S?void 0:S.notes),customFields:!!(null==t?void 0:t.customFields)}}buildDueDate(t){if(!t)return null;const o=W()(t);return{date:o.format(v.lvo.MONTH_DAY_SHORT),time:o.format(v.lvo.HOUR_12)}}buildServices(t){var o;return(null!==(o=t.services)&&void 0!==o?o:[]).map(r=>r.name)}buildRawFiles(t,o){var r;const s=null!==(r=null==o?void 0:o.rawFolderLink)&&void 0!==r?r:t.rawFolderLink;return s?this.buildDropboxFolder(s):null}buildFinalFiles(t,o){var r;const{dropboxFinal:s,nativeUpload:a}=(0,xe.Xq)({deliverableLink:null!==(r=null==o?void 0:o.deliverable_link)&&void 0!==r?r:t.deliverableLink,orderId:t.orderId,orderStatus:null==o?void 0:o.orderStatus,canEditDeliverables:this.canEditDeliverables,hasNativeMedia:null==o?void 0:o.isNativeUpload});return a?{url:a.url,text:"Add Final Files",icon:"add"}:s?this.buildDropboxFolder(s.url):null}buildDropboxFolder(t){return{url:t,text:t,iconImg:"/assets/icon/dropbox.svg"}}buildBranding(t){var o;return t?{avatarUrl:t.photoURL,name:t.displayName,contactLines:this.buildContactLines(t),logoUrl:null!==(o=t.teamBrandingImg)&&void 0!==o?o:"/assets/images/booking/user-placeholder.png"}:null}buildContactLines(t){var o,r,s;return[{icon:"business_center",value:null===(o=t.brokerage_obj)||void 0===o?void 0:o.name},{icon:"call",value:t.phone},{icon:"mail",value:t.email},{icon:"inbox_text",value:null===(s=null===(r=t.emailList)||void 0===r?void 0:r[0])||void 0===s?void 0:s.value}].filter(a=>!!a.value)}buildNotes(t){return t.map(o=>({id:o.id,date:W()(o.createdAt).format(v.lvo.DOT_DATE),html:o.text}))}buildPropertyNotes(t){return t?[{label:"Order Notes",value:t.order_notes},{label:"Entry Notes",value:t.entry_notes},{label:"Floor Plan Notes",value:t.floor_plan_notes},{label:"Property Feature Notes",value:t.property_feature_notes}].filter(o=>!!o.value):[]}buildRooms(t){var o,r,s;const a=null==t?void 0:t.rooms;return a?[`${null!==(o=a.bedrooms)&&void 0!==o?o:0} bed`,`${null!==(r=a.bathrooms)&&void 0!==r?r:0} bath`,`${null!==(s=a.halfBaths)&&void 0!==s?s:0} half bath`].join(" \xb7 "):""}buildCustomFields(t){var o;return(null!==(o=null==t?void 0:t.customQuestions)&&void 0!==o?o:[]).filter(r=>!!r.value).map(r=>({label:r.label,value:r.value}))}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(u.vXX),e.\u0275\u0275inject(nt),e.\u0275\u0275inject(u.qQA),e.\u0275\u0275inject(u._ZM),e.\u0275\u0275inject(u.SLo))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();var ne=m(1059),Xn=m(67656);let Yn=(()=>{class n{constructor(t,o){this.dialogRef=t,this.fb=o,this.ESCALATING_MESSAGE_MAX_LENGTH=u.P1K,this.escalatedForm=this.fb.group({message:this.fb.control("",[C.kI.maxLength(u.P1K)])}),this.lengthMsg$=this.escalatedForm.controls.message.valueChanges.pipe((0,ne.O)(this.escalatedForm.controls.message.value),(0,f.U)(r=>`(${r.length} / ${u.P1K})`))}escalateWithMessage(){var t,o;
1if(this.escalatedForm.invalid)return;const r=null===(o=null===(t=this.escalatedForm.value)||void 0===t?void 0:t.message)||void 0===o?void 0:o.trim();this.dialogRef.close({escalated:!0,message:r})}escalateWithoutMessage(){this.dialogRef.close({escalated:!0})}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275directiveInject(k.so),e.\u0275\u0275directiveInject(C.qu))},n.\u0275cmp=e.\u0275\u0275defineComponent({type:n,selectors:[["tn-job-escalate-dialog"]],decls:16,vars:6,consts:[[1,"py-16",3,"formGroup"],["uiFormFieldLabel","","for","escalatingMessage"],["rows","5","id","escalatingMessage","formControlName","message"],[1,"text-13","leading-18","text-gray-30","w-full","text-right"],["type","button","uiBtnSize","medium","uiBtnTheme","main","themeMode","secondary",1,"flex-1",3,"click"],["type","button","uiBtnSize","medium","uiBtnTheme","main","themeMode","primary",1,"flex-1",3,"disabled","click"]],template:function(t,o){1&t&&(e.\u0275\u0275elementStart(0,"ui-dialog-header"),e.\u0275\u0275text(1,"Escalate this job"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(2,"mat-dialog-content",0)(3,"ui-form-field")(4,"label",1),e.\u0275\u0275text(5," Describe what's blocking you, what you've tried, and what you need. "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(6,"ui-form-input-group"),e.\u0275\u0275element(7,"textarea",2),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(8,"span",3),e.\u0275\u0275text(9),e.\u0275\u0275pipe(10,"async"),e.\u0275\u0275elementEnd()()(),e.\u0275\u0275elementStart(11,"mat-dialog-actions")(12,"button",4),e.\u0275\u0275listener("click",function(){return o.escalateWithoutMessage()}),e.\u0275\u0275text(13," Skip Message and Escalate "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(14,"button",5),e.\u0275\u0275listener("click",function(){return o.escalateWithMessage()}),e.\u0275\u0275text(15," Send and Escalate "),e.\u0275\u0275elementEnd()()),2&t&&(e.\u0275\u0275advance(2),e.\u0275\u0275property("formGroup",o.escalatedForm),e.\u0275\u0275advance(5),e.\u0275\u0275attribute("maxlength",o.ESCALATING_MESSAGE_MAX_LENGTH),e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate1(" ",e.\u0275\u0275pipeBind1(10,4,o.lengthMsg$)," "),e.\u0275\u0275advance(5),e.\u0275\u0275property("disabled",o.escalatedForm.invalid))},directives:[Xn.A,k.xY,C.JL,C.sg,Ae.hg,Le.S,ye.e,C.Fj,C.JJ,C.u,C.nD,k.H8,ue.s,ge.V],pipes:[I.AsyncPipe],encapsulation:2,changeDetection:0}),n})();var Zn=m(61342),se=m(30050),Qn=m(88056),qn=m(73485),eo=m(81379),to=m(76224),no=m(71412),oo=m(22962);const io={displayName:"Tonomo",photoURL:"/assets/icon/mo.jpg"};let ot=(()=>{class n{constructor(t,o,r,s,a,l){this.afs=t,this.notificationService=o,this.ordersRepository=r,this.orderReadStatus=s,this.taskMessages=a,this.userCache=l,this.members$=this.afs.doc("organizations/root").valueChanges().pipe((0,f.U)(c=>{var d;return Object.assign(Object.assign({},(0,eo.Z)(null!==(d=null==c?void 0:c.members)&&void 0!==d?d:{},(p,g)=>Object.assign(Object.assign({},p),{id:g}))),{system:io})}),(0,$.d)({bufferSize:1,refCount:!0})),this.teamMembers$=this.userCache.teamMemberTableUsers$.pipe((0,ne.O)([]))}order$(t){return this.ordersRepository.getById$(t)}channels(t,o){var r,s;const a=null===(r=o.communication)||void 0===r?void 0:r.general;return[...(null==a?void 0:a.taskRef)?[{id:a.taskRef.id,name:null!==(s=t.templateName)&&void 0!==s?s:"",path:a.taskRef.path}]:[],...this.serviceChannels(t,o)]}mentionOptions(t,o){var r,s;if(!t)return[];const a=[{name:"Photographer",memberIds:(0,u.n40)(t)},{name:"Editor",memberIds:null!==(r=t.editorIds)&&void 0!==r?r:[]},{name:"Reviewer",memberIds:null!==(s=t.reviewerIds)&&void 0!==s?s:[]}],l=new Set(a.flatMap(p=>p.memberIds));return[...o.filter(p=>l.has(p.id)).map(p=>({id:p.id,value:p.name,type:"individual",memberIds:[p.id]})),...a.filter(p=>p.memberIds.length>0).map(p=>({id:p.name,value:p.name,type:"team",memberIds:p.memberIds}))]}parentRef(t){return this.afs.doc(t.path).ref}messages$(t){const o=this.afs.doc(t.path).collection("messages",r=>r.orderBy("ts","asc")).snapshotChanges();return(0,H.aj)([o,this.members$]).pipe((0,f.U)(([r,s])=>r.map(a=>{const l=a.payload.doc.data();return Object.assign(Object.assign({},l),{ref:a.payload.doc.ref,uid:l.user,user:s[l.user]})})))}readTimestamps$(t){return(0,ie.D)(this.notificationService.userPromise).pipe((0,F.w)(()=>this.orderReadStatus.getById$({orderId:t}
1,this.notificationService.userId)),(0,f.U)(o=>{const r=Object.entries(null!=o?o:{}).filter(s=>"number"==typeof s[1]);return Object.fromEntries(r)}))}markRead(t,o){const r={[o]:Date.now()};return this.orderReadStatus.upsert({orderId:t},this.notificationService.userId,r)}touchLastChatTs(t,o){var r,s;const a=this.findStage(t,o);if(!a)return Promise.resolve();const l=Object.assign(Object.assign({},t.taskSummary),{[a]:(null!==(s=null===(r=t.taskSummary)||void 0===r?void 0:r[a])&&void 0!==s?s:[]).map(c=>c.taskRef.id===o?Object.assign(Object.assign({},c),{lastChatTs:Date.now()}):c)});return this.ordersRepository.update(t.id,{taskSummary:l})}channelLabel(t,o){var r,s;const a=null!==(s=null===(r=null==o?void 0:o.property_address)||void 0===r?void 0:r.formatted_address)&&void 0!==s?s:"";return`**${t.name}**${a?` for ${a}`:""}`}notifyMentions(t){const{mentionedMembers:o,text:r,channel:s,order:a,link:l}=t,c=this.channelLabel(s,a);o.forEach(d=>{!d.id||this.notificationService.sendNotification({userId:this.notificationService.userId,text:"individual"===d.type?`mentioned you on ${c}.`:`mentioned your team on ${c}.`,ts:Date.now(),snippet:r,type:"message",link:l},[d.id])})}notifyThumbsUp(t,o){this.notificationService.sendNotification({userId:this.notificationService.userId,text:"liked your comment.",ts:Date.now(),type:"event",link:o},[t.uid])}confirmJobTrigger(t,o){var r;return t.ref.update({status:`Job created by ${null===(r=this.notificationService.user)||void 0===r?void 0:r.displayName}`,jobId:o})}moveTaskToState(t,o,r){var s,a,l,c,d;return(0,J.mG)(this,void 0,void 0,function*(){const p=this.findStage(t,o);if(!p)return;const g=(null!==(a=null===(s=t.taskSummary)||void 0===s?void 0:s[p])&&void 0!==a?a:[]).find(S=>S.taskRef.id===o);if(!g)return;const h=r.value,_=(null!==(c=null===(l=t.taskSummary)||void 0===l?void 0:l[p])&&void 0!==c?c:[]).filter(S=>S!==g),y=Object.assign(Object.assign({},t.taskSummary),{[p]:_});y[h]=[...null!==(d=y[h])&&void 0!==d?d:[],g],yield this.ordersRepository.update(t.id,{taskSummary:y}),yield this.taskMessages.create({taskId:o},{type:"message",text:`${g.name} moved to ${r.label}.`,user:"system",ts:Date.now()})})}serviceChannels(t,o){var r;const s=new Set((null!==(r=t.services)&&void 0!==r?r:[]).map(a=>a.id));return this.serviceTasks(o).filter(a=>s.has(a.serviceId)).map(a=>({id:a.taskRef.id,name:a.name,path:a.taskRef.path,lastChatTs:a.lastChatTs}))}serviceTasks(t){var o;return(0,to.Z)((0,no.Z)(null!==(o=t.taskSummary)&&void 0!==o?o:{})).filter(r=>!!(null==r?void 0:r.taskRef))}findStage(t,o){var r,s;return null!==(s=Object.keys(null!==(r=t.taskSummary)&&void 0!==r?r:{}).find(l=>{var c,d;return(null!==(d=null===(c=t.taskSummary)||void 0===c?void 0:c[l])&&void 0!==d?d:[]).some(p=>{var g;return(null===(g=p.taskRef)||void 0===g?void 0:g.id)===o})}))&&void 0!==s?s:null}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(oo.ST),e.\u0275\u0275inject(u.gqp),e.\u0275\u0275inject(u.HVf),e.\u0275\u0275inject(u.piE),e.\u0275\u0275inject(u.XaN),e.\u0275\u0275inject(u.KpX))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})(),Je=(()=>{class n extends O.m1{constructor(t){super({job:null,order:null,requestedChannelId:null,messages:null,readTimestamps:{},linkBase:""}),this.jobChat=t,this.job$=this.select(o=>o.job),this.order$=this.select(o=>o.order),this.linkBase$=this.select(o=>o.linkBase),this.mentionOptions$=this.select(this.job$,this.jobChat.teamMembers$,(o,r)=>this.jobChat.mentionOptions(o,r)),this.orderId$=this.select(this.job$,o=>{var r;return null!==(r=null==o?void 0:o.orderId)&&void 0!==r?r:null}).pipe(v.FLi,(0,P.x)()),this.channels$=this.select(this.job$,this.order$,(o,r)=>o&&r?this.jobChat.channels(o,r):[]),this.activeChannel$=this.select(this.channels$,this.select(o=>o.requestedChannelId),(o,r)=>{var s;const a=o.find(({id:l})=>l===r);return null!==(s=null!=a?a:o[0])&&void 0!==s?s:null}),this.tabs$=this.select(this.channels$,this.activeChannel$,this.select(o=>o.readTimestamps),(o,r,s)=>o.map(a=>({id:a.id,name:a.name,active:a.id===(null==r?void 0:r.id),unread:this.isUnread(a,s)}))),this.vm$=this.select(this.tabs$,this.activeChannel$,this.select(o=>o.messages),this.order$,this.linkBase$,(o,r,s,a,l)=>r?{tabs:o,messages:s,parentRef:this.jobChat.parentRef(r),chatName:this.jobChat.channelLabel(r,a),chatLink:this.channelLink(l,r.id)}:null,{debounce:!0}),this.setJob=this.updater((o,r)=>Object.assign(Object.assign({},o),{job:r})),this.setLinkBase=this.updater((o,r)=>Object.assign(Object.assign({},o),{linkBase:r})),this.setRequestedChannelId=this.updater((o,r)=>Object.assign(Object.assign({},o),{requestedChannelId:r})),this.announcePost=this.effect(o=>o.pipe((0,A.M)(this.activeChannel$,this.order$,this.linkBase$),(0,z.b)(([{mentionedMembers:r,text:s},a,l,c])=>a&&l?(this.jobChat.notifyMentions({mentionedMembers:r,text:s,channel:a,order:l,link:this.channelLink(c,a.id)}),(0,ie.D)(this.jobChat.touchLastChatTs(l,a.id)).pipe((0,B.K)(d=>(console.error("[JobChatStore] Failed to stamp last message",d),te.E)))):te.E))),this.sendThumbsUp=this.effect(o=>o.pipe((0,A.M)(this.activeChannel$,this.linkBase$),(0,M.b)(([r,s,a])=>{!s||this.jobChat.notifyThumbsUp(r,this.channelLink(a,s.id))}))),this.applyJobTriggerOutcome=this.effect(o=>o.pipe((0,A.M)(this.activeChannel$,this.order$),(0,z.b)(([{message:r,jobId:s,stateToMove:a},l,c])=>{if(!l||!c)return te.E;const d=this.jobChat.confirmJobTrigger(r,s).then(()=>
1{if(a)return this.jobChat.moveTaskToState(c,l.id,a)});return(0,ie.D)(d).pipe((0,B.K)(p=>(console.error("[JobChatStore] Failed to apply job trigger",p),te.E)))}))),this.loadOrder=this.effect(o=>o.pipe((0,F.w)(r=>this.jobChat.order$(r).pipe((0,O._b)(s=>this.patchState({order:null!=s?s:null}),s=>{console.error("[JobChatStore] Failed to load order",s)}))))),this.watchReadTimestamps=this.effect(o=>o.pipe((0,F.w)(r=>this.jobChat.readTimestamps$(r).pipe((0,O._b)(s=>this.patchState({readTimestamps:s}),s=>{console.error("[JobChatStore] Failed to load read status",s)}))))),this.watchMessages=this.effect(o=>o.pipe((0,M.b)(()=>this.patchState({messages:null})),v.FLi,(0,F.w)(r=>this.jobChat.messages$(r).pipe((0,O._b)(s=>this.patchState({messages:s}),s=>{console.error("[JobChatStore] Failed to load messages",s)}),(0,f.U)(s=>{var a,l;return null!==(l=null===(a=s[s.length-1])||void 0===a?void 0:a.ts)&&void 0!==l?l:0}),(0,P.x)(),(0,A.M)(this.order$),(0,M.b)(([,s])=>this.stampRead(r,s)))))),this.loadOrder(this.orderId$),this.watchReadTimestamps(this.orderId$),this.watchMessages(this.activeChannel$.pipe((0,P.x)((o,r)=>(null==o?void 0:o.id)===(null==r?void 0:r.id))))}stampRead(t,o){!o||this.jobChat.markRead(o.id,t.id)}isUnread(t,o){if(!t.lastChatTs)return!1;const r=o[t.id];return!r||t.lastChatTs>r}channelLink(t,o){return`${t}?taskId=${o}`}}return n.\u0275fac=function(t){return new(t||n)(e.\u0275\u0275inject(ot))},n.\u0275prov=e.\u0275\u0275defineInjectable({token:n,factory:n.\u0275fac}),n})();var ro=m(55800);function ao(n,i){1&n&&e.\u0275\u0275element(0,"span",9)}const so=function(){return[]},lo=function(n){return{taskId:n,thread:null}};
1function co(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"a",7),e.\u0275\u0275text(1),e.\u0275\u0275template(2,ao,1,0,"span",8),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275property("routerLink",e.\u0275\u0275pureFunction0(5,so))("queryParams",e.\u0275\u0275pureFunction1(6,lo,t.id))("active",t.active),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.name," "),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.unread)}}function po(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementStart(0,"div",1)(1,"h2",2),e.\u0275\u0275text(2,"Chat"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"nav",3),e.\u0275\u0275template(4,co,3,8,"a",4),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(5,"div",5)(6,"ui-chat",6),e.\u0275\u0275listener("chatMention",function(r){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onChatMention(r)})("thumbsUp",function(r){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onThumbsUp(r)})("jobCreate",function(r){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext().onJobCreate(r)}),e.\u0275\u0275pipe(7,"async"),e.\u0275\u0275elementEnd()()()}if(2&n){const t=i.ngIf,o=e.\u0275\u0275nextContext();e.\u0275\u0275advance(4),e.\u0275\u0275property("ngForOf",t.tabs)("ngForTrackBy",o.trackById),e.\u0275\u0275advance(2),e.\u0275\u0275property("messages",t.messages)("parentRef",t.parentRef)("chatName",t.chatName)("chatLink",t.chatLink)("mentionOptions",e.\u0275\u0275pipeBind1(7,8,o.mentionOptions$))("dockComposerOnMobile",!1)}}let X=class{constructor(i,t,o,r){this.store=i,this.route=t,this.router=o,this.manageJobDialog=r,this.vm$=this.store.vm$,this.mentionOptions$=this.store.mentionOptions$,this.trackById=v.xnY}set job(i){this.store.setJob(i)}ngOnInit(){this.store.setLinkBase(this.router.url.split("?")[0]),this.route.queryParams.pipe((0,f.U)(({taskId:i})=>null!=i?i:null),(0,w.t)(this)).subscribe(i=>this.store.setRequestedChannelId(i))}onChatMention(i){this.store.announcePost(i)}onThumbsUp(i){this.store.sendThumbsUp(i)}onJobCreate(i){this.store.order$.pipe(v.FLi,(0,L.q)(1),(0,F.w)(t=>this.manageJobDialog.openCreate(i,t)),(0,w.t)(this)).subscribe(t=>this.handleJobCreated(i,t))}handleJobCreated(i,t){!t||this.store.applyJobTriggerOutcome({message:i,jobId:t.jobId,stateToMove:t.stateToMove})}};X.\u0275fac=function(i){return new(i||X)(e.\u0275\u0275directiveInject(Je),e.\u0275\u0275directiveInject(T.gz),e.\u0275\u0275directiveInject(T.F0),e.\u0275\u0275directiveInject(b.S59))},X.\u0275cmp=e.\u0275\u0275defineComponent({type:X,selectors:[["tn-job-chat"]],inputs:{job:"job"},features:[e.\u0275\u0275ProvidersFeature([Je,ot])],decls:2,vars:3,consts:[["class","chat-card",4,"ngIf"],[1,"chat-card"],[1,"chat-title"],["mat-tab-nav-bar","",1,"chat-tabs","mat-tab-paginated"],["mat-tab-link","","queryParamsHandling","merge",3,"routerLink","queryParams","active",4,"ngFor","ngForOf","ngForTrackBy"],[1,"chat-pane"],[3,"messages","parentRef","chatName","chatLink","mentionOptions","dockComposerOnMobile","chatMention","thumbsUp","jobCreate"],["mat-tab-link","","queryParamsHandling","merge",3,"routerLink","queryParams","active"],["class","unread-dot","aria-label","Unread",4,"ngIf"],["aria-label","Unread",1,"unread-dot"]],template:function(i,t){1&i&&(e.\u0275\u0275template(0,po,8,10,"div",0),e.\u0275\u0275pipe(1,"async")),2&i&&e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(1,1,t.vm$))},directives:[I.NgIf,re.BU,I.NgForOf,T.yS,re.Nj,ro.P],pipes:[I.AsyncPipe],styles:["[_nghost-%COMP%] .chat-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;overflow:hidden;border-radius:.5rem;border-width:1px;border-style:solid;--tw-border-opacity: 1;border-color:rgb(246 246 246 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}[_nghost-%COMP%] .chat-title[_ngcontent-%COMP%]{margin:0;padding:1.25rem 1rem 1.625rem;font-size:1.75rem;font-weight:700;line-height:1.5rem;--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}[_nghost-%COMP%] .chat-tabs[_ngcontent-%COMP%]{padding-left:1rem;padding-right:1rem}[_nghost-%COMP%] .chat-tabs[_ngcontent-%COMP%] .unread-dot[_ngcontent-%COMP%]{height:.5rem;width:.5rem;flex-shrink:0;align-self:flex-start;border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgb(240 62 62 / var(--tw-bg-opacity, 1))}[_nghost-%COMP%] .chat-pane[_ngcontent-%COMP%]{--chat-body-bg: #FAFAFA;height:70vh;min-height:480px}"],changeDetection:0}),X=(0,J.gn)([(0,w.c)(),(0,J.w6)("design:paramtypes",[Je,T.gz,T.F0,b.S59])],X);var it=m(12230),rt=m(65734),mo=m(46776),at=m(91528);
1function uo(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementStart(0,"button",31,32),e.\u0275\u0275listener("click",function(){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext(2).startJob()}),e.\u0275\u0275element(2,"i",33),e.\u0275\u0275text(3," Start the Job "),e.\u0275\u0275elementEnd()}if(2&n){const t=e.\u0275\u0275reference(1);e.\u0275\u0275advance(2),e.\u0275\u0275property("size",t.iconSize)}}function go(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-dropdown-select-option",40),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275property("value",t.value),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.label," ")}}function ho(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-blank-dropdown"),e.\u0275\u0275template(1,go,2,2,"ui-dropdown-select-option",39),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",t)}}function _o(n,i){1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,ho,2,1,"ui-blank-dropdown",38),e.\u0275\u0275elementContainerEnd())}function bo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"button",34,35),e.\u0275\u0275text(2),e.\u0275\u0275element(3,"i",36),e.\u0275\u0275template(4,_o,2,0,"ng-container",37),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275reference(1),o=e.\u0275\u0275nextContext().ngIf,r=e.\u0275\u0275nextContext();e.\u0275\u0275styleProp("background-color",o.statusColor.background)("color",o.statusColor.text),e.\u0275\u0275property("formControl",r.statusControl),e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate1(" ",o.statusLabel," "),e.\u0275\u0275advance(1),e.\u0275\u0275property("size",t.iconSize),e.\u0275\u0275advance(1),e.\u0275\u0275property("uiToFormSelectOption",r.statusOptions)}}function vo(n,i){1&n&&e.\u0275\u0275element(0,"i",45),2&n&&e.\u0275\u0275property("size",20)}function fo(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275element(1,"hr",49),e.\u0275\u0275elementStart(2,"p",50),e.\u0275\u0275text(3," Issue:"),e.\u0275\u0275element(4,"br"),e.\u0275\u0275text(5),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementContainerEnd()),2&n){const t=e.\u0275\u0275nextContext(4).ngIf;e.\u0275\u0275advance(5),e.\u0275\u0275textInterpolate1(" ",t.escalatingMessage," ")}}function Co(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275elementStart(1,"button",47),e.\u0275\u0275element(2,"i",48),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(3,fo,6,1,"ng-container",28),e.\u0275\u0275elementContainerEnd()),2&n){const t=i.$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275attribute("aria-expanded",t),e.\u0275\u0275advance(1),e.\u0275\u0275property("uiIcon",t?"arrow_drop_up":"arrow_drop_down")("size",20),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t)}}function yo(n,i){1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,Co,4,4,"ng-container",46),e.\u0275\u0275elementContainerEnd())}function xo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",41)(1,"div",42)(2,"span",43),e.\u0275\u0275text(3," This job is escalated and requires attention. "),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(4,vo,1,1,"i",44),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(5,yo,2,0,"ng-container",28),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275advance(4),e.\u0275\u0275property("ngIf",t.escalatingMessage),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.escalatingMessage)}}function So(n,i){if(1&n&&e.\u0275\u0275element(0,"div",51),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275property("innerHTML",t.message,e.\u0275\u0275sanitizeHtml)}}const Io=function(n){return{label:"Address",value:n}};function To(n,i){if(1&n&&e.\u0275\u0275elementContainer(0,57),2&n){const t=e.\u0275\u0275nextContext(2).ngIf;e.\u0275\u0275nextContext();const o=e.\u0275\u0275reference(14);e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction1(2,Io,t.address))}}function Oo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"span",66)(1,"span"),e.\u0275\u0275text(2),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"span"),e.\u0275\u0275text(4),e.\u0275\u0275elementEnd()()),2&n){const t=i.ngIf;e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(t.date),e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(t.time)}}function wo(n,i){1&n&&(e.\u0275\u0275elementStart(0,"span",67),e.\u0275\u0275text(1,"Set a due date"),e.\u0275\u0275elementEnd())}
1function jo(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementStart(0,"div",58)(1,"span",59),e.\u0275\u0275text(2,"Due Date"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"button",60),e.\u0275\u0275listener("click",function(){return e.\u0275\u0275restoreView(t),e.\u0275\u0275reference(9).open()}),e.\u0275\u0275template(4,Oo,5,2,"span",61),e.\u0275\u0275template(5,wo,2,0,"ng-template",null,62,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275element(7,"i",63),e.\u0275\u0275elementEnd(),e.\u0275\u0275element(8,"ui-date-time-picker",64,65),e.\u0275\u0275elementEnd()}if(2&n){const t=e.\u0275\u0275reference(6),o=e.\u0275\u0275reference(9),r=e.\u0275\u0275nextContext(2).ngIf,s=e.\u0275\u0275nextContext();e.\u0275\u0275advance(3),e.\u0275\u0275property("formControl",s.dueDateControl)("uiDateTimePicker",o),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",r.dueDate)("ngIfElse",t),e.\u0275\u0275advance(3),e.\u0275\u0275property("size",16),e.\u0275\u0275advance(1),e.\u0275\u0275property("labels",s.dueDateLabels)}}function Fo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"span"),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t," ")}}function Eo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",68)(1,"span",59),e.\u0275\u0275text(2,"Services"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"span",69),e.\u0275\u0275template(4,Fo,2,1,"span",70),e.\u0275\u0275elementEnd()()),2&n){const t=e.\u0275\u0275nextContext(2).ngIf,o=e.\u0275\u0275nextContext();e.\u0275\u0275advance(4),e.\u0275\u0275property("ngForOf",t.services)("ngForTrackBy",o.trackByValue)}}function Do(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",52)(1,"h3",53),e.\u0275\u0275text(2,"General"),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(3,To,1,4,"ng-container",54),e.\u0275\u0275template(4,jo,10,6,"div",55),e.\u0275\u0275template(5,Eo,5,2,"div",56),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275advance(3),e.\u0275\u0275property("ngIf",t.sections.address),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.dueDate),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.services&&t.services.length)}}const Jo=function(n,i){return{label:"Editor",people:n,control:i}};function Mo(n,i){if(1&n&&e.\u0275\u0275elementContainer(0,57),2&n){const t=e.\u0275\u0275nextContext().ngIf,o=e.\u0275\u0275nextContext(3),r=e.\u0275\u0275reference(18);e.\u0275\u0275property("ngTemplateOutlet",r)("ngTemplateOutletContext",e.\u0275\u0275pureFunction2(2,Jo,t.editors,o.editorsControl))}}const st=function(n){return{people:n}};function ko(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",68)(1,"span",59),e.\u0275\u0275text(2,"Photographer"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"span",71),e.\u0275\u0275elementContainer(4,57),e.\u0275\u0275elementEnd()()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275nextContext(3);const o=e.\u0275\u0275reference(20);e.\u0275\u0275advance(4),e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction1(2,st,t.photographers))}}const Po=function(n,i){return{label:"Reviewer",people:n,control:i}};function $o(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,Mo,1,5,"ng-container",54),e.\u0275\u0275elementContainer(2,57),e.\u0275\u0275template(3,ko,5,4,"div",56),e.\u0275\u0275elementContainerEnd()),2&n){const t=i.ngIf,o=e.\u0275\u0275nextContext(2).ngIf,r=e.\u0275\u0275nextContext(),s=e.\u0275\u0275reference(18);e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o.sections.editor),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngTemplateOutlet",s)("ngTemplateOutletContext",e.\u0275\u0275pureFunction2(4,Po,t.reviewers,r.reviewersControl)),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o.sections.photographer&&!!t.photographers.length)}}function Bo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",52)(1,"h3",53),e.\u0275\u0275text(2,"Team Members"),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(3,$o,4,7,"ng-container",28),e.\u0275\u0275pipe(4,"async"),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext(2);e.\u0275\u0275advance(3),e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(4,1,t.peo
1ple$))}}const Ao=function(n){return{label:"Folder for Raw Files",file:n}},Lo=function(n){return{label:"Folder for Edited Files",file:n}};function Ro(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",52)(1,"h3",53),e.\u0275\u0275text(2,"Files"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementContainer(3,57)(4,57),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275nextContext();const o=e.\u0275\u0275reference(22);e.\u0275\u0275advance(3),e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction1(4,Ao,t.rawFiles)),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction1(6,Lo,t.finalFiles))}}function No(n,i){if(1&n&&e.\u0275\u0275element(0,"img",78),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275property("src",t.avatarUrl,e.\u0275\u0275sanitizeUrl)("alt",t.name)}}function zo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"span",79),e.\u0275\u0275element(1,"i",48),e.\u0275\u0275text(2),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275property("uiIcon",t.icon)("size",16),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.value," ")}}function Uo(n,i){if(1&n&&e.\u0275\u0275element(0,"img",80),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275property("src",t.logoUrl,e.\u0275\u0275sanitizeUrl)}}
1function Vo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",52)(1,"h3",53),e.\u0275\u0275text(2,"Branding Information"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"div",72),e.\u0275\u0275template(4,No,1,2,"img",73),e.\u0275\u0275elementStart(5,"div",74)(6,"span",75),e.\u0275\u0275text(7),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(8,zo,3,3,"span",76),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(9,Uo,1,1,"img",77),e.\u0275\u0275elementEnd()()),2&n){const t=i.ngIf,o=e.\u0275\u0275nextContext(3);e.\u0275\u0275advance(4),e.\u0275\u0275property("ngIf",t.avatarUrl),e.\u0275\u0275advance(3),e.\u0275\u0275textInterpolate1(" ",t.name," "),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",t.contactLines)("ngForTrackBy",o.trackByIcon),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.logoUrl)}}function Ho(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,Vo,10,5,"div",27),e.\u0275\u0275elementContainerEnd()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.branding)}}const Go=function(n){return{label:"Client Preference",value:n}};function Wo(n,i){if(1&n&&e.\u0275\u0275elementContainer(0,57),2&n){const t=e.\u0275\u0275nextContext(2).ngIf;e.\u0275\u0275nextContext();const o=e.\u0275\u0275reference(14);e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction1(2,Go,t.clientPreference))}}function Ko(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"li",85)(1,"span",86),e.\u0275\u0275element(2,"i",87),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"div",88)(4,"span",89),e.\u0275\u0275text(5),e.\u0275\u0275elementEnd(),e.\u0275\u0275element(6,"div",90),e.\u0275\u0275elementEnd()()),2&n){const t=i.$implicit;e.\u0275\u0275advance(2),e.\u0275\u0275property("size",16),e.\u0275\u0275advance(3),e.\u0275\u0275textInterpolate1(" ",t.date," "),e.\u0275\u0275advance(1),e.\u0275\u0275property("innerHTML",t.html,e.\u0275\u0275sanitizeHtml)}}
1function Xo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",23)(1,"h4",82),e.\u0275\u0275text(2," Customer Private Notes "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"ol",83),e.\u0275\u0275template(4,Ko,7,3,"li",84),e.\u0275\u0275elementEnd()()),2&n){const t=e.\u0275\u0275nextContext(2).ngIf,o=e.\u0275\u0275nextContext();e.\u0275\u0275advance(4),e.\u0275\u0275property("ngForOf",t.clientPrivateNotes)("ngForTrackBy",o.trackById)}}function Yo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",52)(1,"h3",53),e.\u0275\u0275text(2,"Customer Information"),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(3,Wo,1,4,"ng-container",54),e.\u0275\u0275template(4,Xo,5,2,"div",81),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275advance(3),e.\u0275\u0275property("ngIf",t.sections.clientPreferences&&!!t.clientPreference.length),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.clientPrivateNotes&&t.clientPrivateNotes.length)}}const Zo=function(n){return{label:"Brokerage Notes",html:n}};function Qo(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",52)(1,"h3",53),e.\u0275\u0275text(2,"Brokerage Information"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementContainer(3,57),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275nextContext();const o=e.\u0275\u0275reference(16);e.\u0275\u0275advance(3),e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction1(2,Zo,t.brokerageNotes))}}const qo=function(n){return{label:"Music Option",value:n}};function ei(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",52)(1,"h3",82),e.\u0275\u0275text(2," Editing Notes "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementContainer(3,57),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275nextContext();const o=e.\u0275\u0275reference(14);e.\u0275\u0275advance(3),e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction1(2,qo,t.musicOption))}}const ti=function(n){return["/order-status",n]};function ni(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",68)(1,"span",59),e.\u0275\u0275text(2,"Order Number"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"a",92),e.\u0275\u0275text(4),e.\u0275\u0275elementEnd()()),2&n){const t=e.\u0275\u0275nextContext(2).ngIf;e.\u0275\u0275advance(3),e.\u0275\u0275property("routerLink",e.\u0275\u0275pureFunction1(2,ti,t.order.id)),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" #",t.order.number," ")}}const oi=function(n){return{label:"Rooms",value:n}};function ii(n,i){if(1&n&&e.\u0275\u0275elementContainer(0,57),2&n){const t=e.\u0275\u0275nextContext(3).ngIf;e.\u0275\u0275nextContext();const o=e.\u0275\u0275reference(14);e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction1(2,oi,t.rooms))}}const lt=function(n,i){return{label:n,value:i}};function ri(n,i){if(1&n&&e.\u0275\u0275elementContainer(0,57),2&n){const t=i.$implicit;e.\u0275\u0275nextContext(4);const o=e.\u0275\u0275reference(14);e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction2(2,lt,t.label,t.value))}}function ai(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,ii,1,4,"ng-container",54),e.\u0275\u0275template(2,ri,1,5,"ng-container",93),e.\u0275\u0275elementContainerEnd()),2&n){const t=e.\u0275\u0275nextContext(2).ngIf,o=e.\u0275\u0275nextContext();e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.rooms),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",t.propertyNotes)("ngForTrackBy",o.trackByLabel)}}function si(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"section",91)(1,"h2",24),e.\u0275\u0275text(2,"Order Information"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"div",4)(4,"h3",53),e.\u0275\u0275text(5,"General"),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(6,ni,5,4,"div",56),e.\u0275\u0275template(7,ai,3,3,"ng-container",28),e.\u0275\u0275elementEnd()()),2&n){const t=e.\u0275\u0275nextContext().ngIf;e.\u0275\u0275advance(6),e.\u0275\u0275property("ngIf",t.sections.orderLink),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.propertyNotesAndRooms)}}
1function li(n,i){if(1&n&&e.\u0275\u0275elementContainer(0,57),2&n){const t=i.$implicit;e.\u0275\u0275nextContext(3);const o=e.\u0275\u0275reference(14);e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction2(2,lt,t.label,t.value))}}function ci(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"section",91)(1,"h2",24),e.\u0275\u0275text(2,"Custom Fields"),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(3,li,1,5,"ng-container",93),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext().ngIf,o=e.\u0275\u0275nextContext();e.\u0275\u0275advance(3),e.\u0275\u0275property("ngForOf",t.customFields)("ngForTrackBy",o.trackByLabel)}}function di(n,i){1&n&&e.\u0275\u0275element(0,"tn-job-chat",94),2&n&&e.\u0275\u0275property("job",i.ngIf)}function pi(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementStart(0,"div",13)(1,"div",14)(2,"div",15)(3,"button",16,17),e.\u0275\u0275listener("click",function(){const s=e.\u0275\u0275restoreView(t).ngIf;return e.\u0275\u0275nextContext().onEscalateToggle(s.escalated)}),e.\u0275\u0275element(5,"i",18),e.\u0275\u0275text(6),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(7,uo,4,1,"button",19),e.\u0275\u0275template(8,bo,5,8,"ng-template",null,20,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(10,xo,6,2,"div",21),e.\u0275\u0275elementStart(11,"section",22)(12,"div",23)(13,"h2",24),e.\u0275\u0275text(14,"Job Detail"),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(15,So,1,1,"div",25),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(16,"div",26),e.\u0275\u0275template(17,Do,6,3,"div",27),e.\u0275\u0275template(18,Bo,5,3,"div",27),e.\u0275\u0275template(19,Ro,5,8,"div",27),e.\u0275\u0275template(20,Ho,2,1,"ng-container",28),e.\u0275\u0275template(21,Yo,5,2,"div",27),e.\u0275\u0275template(22,Qo,4,4,"div",27),e.\u0275\u0275template(23,ei,4,4,"div",27),e.\u0275\u0275elementEnd()(),e.\u0275\u0275template(24,si,8,2,"section",29),e.\u0275\u0275template(25,ci,4,2,"section",29),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(26,di,1,1,"tn-job-chat",30),e.\u0275\u0275pipe(27,"async"),e.\u0275\u0275elementEnd()}if(2&n){const t=i.ngIf,o=e.\u0275\u0275reference(4),r=e.\u0275\u0275reference(9),s=e.\u0275\u0275nextContext();e.\u0275\u0275advance(5),e.\u0275\u0275property("size",o.iconSize),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.escalated?"Remove Escalation":"Escalate Job"," "),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.isPending)("ngIfElse",r),e.\u0275\u0275advance(3),e.\u0275\u0275property("ngIf",t.escalated),e.\u0275\u0275advance(5),e.\u0275\u0275property("ngIf",t.message),e.\u0275\u0275advance(2),e.\u0275\u0275property("ngIf",t.sections.address||t.sections.dueDate||t.sections.services),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.editor||t.sections.photographer),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.files),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.branding),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.clientPreferences||t.sections.clientPrivateNotes),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.brokerage&&!!t.brokerageNotes.length),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.musicOption&&!!t.musicOption.length),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.orderLink||t.sections.propertyNotesAndRooms),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t.sections.customFields&&t.customFields.length),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(27,16,s.job$))}}function mi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",68)(1,"span",59),e.\u0275\u0275text(2),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"span",95),e.\u0275\u0275text(4),e.\u0275\u0275elementEnd()()),2&n){const t=i.label,o=i.value;e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(t),e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(o)}}function ui(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",68)(1,"span",59),e.\u0275\u0275text(2),e.\u0275\u0275elementEnd(),e.\u0275\u0275element(3,"div",96),e.\u0275\u0275elementEnd()),2&n){const t=i.label,o=i.html;e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(t),e.\u0275\u0275advance(1),e.\u0275\u0275property("innerHTML",o,e.\u0275\u0275sanitizeHtml)}}
1function gi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"span",71),e.\u0275\u0275elementContainer(1,57),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext(2).people;e.\u0275\u0275nextContext();const o=e.\u0275\u0275reference(20);e.\u0275\u0275advance(1),e.\u0275\u0275property("ngTemplateOutlet",o)("ngTemplateOutletContext",e.\u0275\u0275pureFunction1(2,st,t))}}function hi(n,i){1&n&&(e.\u0275\u0275elementStart(0,"span",67),e.\u0275\u0275text(1,"Please select"),e.\u0275\u0275elementEnd())}function _i(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-dropdown-checkbox-option",107),e.\u0275\u0275element(1,"ui-option-content",108),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275property("value",t.value)("title",t.label),e.\u0275\u0275advance(1),e.\u0275\u0275property("label",t.label)("truncateLabel",!0)("showAvatar",!0)("avatarSrc",t.avatarUrl)("avatarName",t.label)("avatarEmail",t.email)}}function bi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-blank-dropdown",104),e.\u0275\u0275element(1,"ui-dropdown-search-header",105),e.\u0275\u0275template(2,_i,2,8,"ui-dropdown-checkbox-option",106),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext(),o=t.search,r=t.$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275property("control",o),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",r)}}function vi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"button",99),e.\u0275\u0275template(1,gi,2,4,"span",100),e.\u0275\u0275template(2,hi,2,0,"ng-template",null,101,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275elementStart(4,"i",102),e.\u0275\u0275template(5,bi,3,2,"ui-blank-dropdown",103),e.\u0275\u0275elementEnd()()),2&n){const t=e.\u0275\u0275reference(3),o=e.\u0275\u0275nextContext().people;e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o.length)("ngIfElse",t),e.\u0275\u0275advance(3),e.\u0275\u0275property("size",16)}}function fi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",97)(1,"span",59),e.\u0275\u0275text(2),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(3,vi,6,3,"button",98),e.\u0275\u0275pipe(4,"async"),e.\u0275\u0275elementEnd()),2&n){const t=i.label,o=i.control,r=e.\u0275\u0275nextContext();e.\u0275\u0275property("formControl",o),e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(t),e.\u0275\u0275advance(1),e.\u0275\u0275property("uiToFormSelectOption",e.\u0275\u0275pipeBind1(4,3,r.teamMemberOptions$))}}function Ci(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"span",110),e.\u0275\u0275element(1,"ui-avatar",111),e.\u0275\u0275text(2),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275property("src",t.avatarUrl)("name",t.name)("email",t.email),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.name," ")}}function yi(n,i){if(1&n&&e.\u0275\u0275template(0,Ci,3,4,"span",109),2&n){const t=i.people,o=e.\u0275\u0275nextContext();e.\u0275\u0275property("ngForOf",t)("ngForTrackBy",o.trackById)}}function xi(n,i){if(1&n&&e.\u0275\u0275element(0,"img",117),2&n){const t=e.\u0275\u0275nextContext(2).file;e.\u0275\u0275property("src",t.iconImg,e.\u0275\u0275sanitizeUrl)}}function Si(n,i){if(1&n&&e.\u0275\u0275element(0,"i",48),2&n){const t=e.\u0275\u0275nextContext(2).file;e.\u0275\u0275property("uiIcon",t.icon)("size",20)}}function Ii(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"a",114),e.\u0275\u0275template(1,xi,1,1,"img",115),e.\u0275\u0275template(2,Si,1,2,"ng-template",null,116,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275text(4),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275reference(3),o=e.\u0275\u0275nextContext().file;e.\u0275\u0275property("href",o.url,e.\u0275\u0275sanitizeUrl),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o.iconImg)("ngIfElse",t),e.\u0275\u0275advance(3),e.\u0275\u0275textInterpolate1(" ",o.text," ")}}function Ti(n,i){1&n&&(e.\u0275\u0275elementStart(0,"span",118),e.\u0275\u0275text(1,"\u2014"),e.\u0275\u0275elementEnd())}function Oi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",58)(1,"span",59),e.\u0275\u0275text(2),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(3,Ii,5,4,"a",112),e.\u0275\u0275template(4,Ti,2,0,"ng-template",null,113,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275elementEnd()),2&n){const t=i.label,o=i.file,r=e.\u0275\u0275reference(5);e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate(t),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",o)("ngIfElse",r)}}let V=class{constructor(i,t,o,r,s,a){this.store=i,this.route=t,this.router=o,this.dialog=r,this.userCache=s,this.fb=a,this.vm$=this.store.vm$,this.job$=this.store.job$,this.statusOptions=ze,this.dueDateLabels=Ne,this.teamMembers$=this.userCache.teamMemberTableUsers$,this.membersById$=this.teamMembers$.pipe((0,f.U)(l=>new Map(l.map(c=>[c.id,c]))),(0,$.d)({bufferSize:1,refCount:!0})),this.teamMemberOptions$=this.teamMembers$.pipe((0,f.U)(l=>l.map(c=>({value:c.id,label:c.name,avatarUrl:c.avatarUrl,email:c.email})))),this.people$=(0,H.aj)([this.store.memberIds$,this.membersById$]).pipe((0,f.U)(([l,c])=>{const d=p=>p.map(g=>c.get(g)).filter(g=>!!g);
1return{editors:d(l.editorIds),photographers:d(l.photographerIds),reviewers:d(l.reviewerIds)}})),this.statusControl=this.fb.control(null),this.dueDateControl=this.fb.control(null),this.editorsControl=this.fb.control([]),this.reviewersControl=this.fb.control([]),this.editForm=this.fb.group({status:this.statusControl,dueDate:this.dueDateControl,editorIds:this.editorsControl,reviewerIds:this.reviewersControl}),this.trackById=v.xnY,this.trackByLabel=(0,v.NxB)("label"),this.trackByIcon=(0,v.NxB)("icon"),this.trackByValue=(l,c)=>c}ngOnInit(){const i=this.route.paramMap.pipe((0,f.U)(t=>t.get("jobId")),v.FLi,(0,P.x)());this.store.loadJob(i),this.store.editableFields$.pipe((0,w.t)(this)).subscribe(t=>this.seedEditForm(t)),this.editForm.valueChanges.pipe((0,fe.b)(300),(0,w.t)(this)).subscribe(t=>this.saveEditForm(t))}startJob(){this.store.updateJob({status:u.ByT.IN_PROGRESS})}seedEditForm(i){this.editForm.setValue({status:i.status,dueDate:i.dueDate?W()(i.dueDate):null,editorIds:i.editorIds,reviewerIds:i.reviewerIds},{emitEvent:!1})}saveEditForm(i){var t;this.store.updateJob({status:null!==(t=i.status)&&void 0!==t?t:void 0,dueDate:i.dueDate?i.dueDate.toISOString():null,editorIds:i.editorIds,reviewerIds:i.reviewerIds})}goBack(){this.router.navigate(["../.."],{relativeTo:this.route})}onEscalateToggle(i){i?this.store.setEscalation({escalated:!1}):this.dialog.open(Yn,{panelClass:"app-v2",width:"600px"}).afterClosed().pipe((0,w.t)(this)).subscribe(t=>this.handleEscalateDialogClosed(t))}handleEscalateDialogClosed(i){!i||this.store.setEscalation(i)}};V.\u0275fac=function(i){return new(i||V)(e.\u0275\u0275directiveInject(De),e.\u0275\u0275directiveInject(T.gz),e.\u0275\u0275directiveInject(T.F0),e.\u0275\u0275directiveInject(k.uw),e.\u0275\u0275directiveInject(u.KpX),e.\u0275\u0275directiveInject(C.qu))},V.\u0275cmp=e.\u0275\u0275defineComponent({type:V,selectors:[["tn-job-details"]],features:[e.\u0275\u0275ProvidersFeature([De,nt,b.ypy])],decls:23,vars:7,consts:[[1,"flex","flex-col","items-start","gap-20","px-26","py-24","bg-white","border-0","border-b","border-solid","border-gray-1"],["type","button","uiBtnSize","small","uiBtnTheme","main","themeMode","tertiary",3,"click"],["backButton","btnSize"],["uiIcon","chevron_left",3,"size"],[1,"flex","flex-col","items-start","gap-8","w-full"],[1,"m-0","text-24","font-bold","leading-8","text-gray-85"],[1,"m-0","text-14","font-medium","leading-5","text-gray-40"],["class","flex flex-col laptop:flex-row laptop:items-start gap-20 px-16 laptop:px-36 pb-28 pt-20 bg-gray-5",4,"ngIf"],["fieldRow",""],["htmlRow",""],["peopleEditRow",""],["peopleList",""],["linkRow",""],[1,"flex","flex-col","laptop:flex-row","laptop:items-start","gap-20","px-16","laptop:px-36","pb-28","pt-20","bg-gray-5"],[1,"flex","flex-col","w-full","laptop:w-2/3","min-w-0","gap-20"],[1,"sticky","top-0","z-10","flex","justify-end","items-center","gap-8","pb-20","bg-gray-5","pt-8"],["type","button","uiBtnSize","","uiBtnTheme","error","themeMode","secondary",3,"click"],["escalated","btnSize"],["uiIcon","warning",3,"size"],["type","button","uiBtnSize","","uiBtnTheme","main","themeMode","primary",3,"click",4,"ngIf","ngIfElse"],["otherStatus",""],["class","relative flex flex-col items-center gap-10 px-16 py-8 bg-red-5 border border-solid border-red-40 rounded",4,"ngIf"],[1,"job-details-info-card","flex","flex-col","gap-24"],[1,"flex","flex-col","gap-8","w-full"],[1,"card-title"],["class","job-details-instruction-card text-13 font-medium leading-18 text-gray-80",3,"innerHTML",4,"ngIf"],[1,"flex","flex-col","gap-20","w-full"],["class","detail-section",4,"ngIf"],[4,"ngIf"],["class","job-details-info-card flex flex-col gap-8",4,"ngIf"],["class","block w-full laptop:sticky laptop:top-8 laptop:flex-1 min-w-0",3,"job",4,"ngIf"],["type","button","uiBtnSize","","uiBtnTheme","main","themeMode","primary",3,"click"],["startButton","btnSize"],["uiIcon","power_settings_new",3,"size"],["type","button","uiBtnSize","","uiBtnDropdown","","uiFormSelect","","uiDropdown","","align","end",1,"cursor-pointer",3,"formControl"],["statusButton","btnSize"],["uiIcon","keyboard_arrow_down",3,"size"],[4,"uiToFormSelectOption"],[4,"uiDropdownTemplate"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],[1,"relative","flex","flex-col","items-center","gap-10","px-16","py-8","bg-red-5","border","border-solid","border-red-40","rounded"],[1,"flex","items-center","gap-8"],[1,"text-14","font-semibold","leading-5","text-red-60"],["uiIcon","chat","class","text-red-60",3,"size",4,"ngIf"],["uiIcon","chat",1,"text-red-60",3,"size"],[4,"uiToggle"],["type","button","uiTriggerToggle","","aria-label","Toggle escalation details",1,"absolute","right-12","top-4","bg-transparent","text-red-60","flex","items-center"],[3,"uiIcon","size"],[1,"w-full","m-0","border-0","border-t","border-solid","border-red-40"],[1,"m-0","w-full","whitespace-pre-wrap","text-14","leading-5","text-red-60"],[1,"j
1ob-details-instruction-card","text-13","font-medium","leading-18","text-gray-80",3,"innerHTML"],[1,"detail-section"],[1,"section-title"],[3,"ngTemplateOutlet","ngTemplateOutletContext",4,"ngIf"],["class","flex items-center gap-6 w-full job-details-info-row",4,"ngIf"],["class","flex items-start gap-6 w-full job-details-info-row",4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"flex","items-center","gap-6","w-full","job-details-info-row"],[1,"row-label"],["type","button","ngDefaultControl","",1,"row-value","editable-value",3,"formControl","uiDateTimePicker","click"],["class","flex gap-8",4,"ngIf","ngIfElse"],["noDueDate",""],["uiIcon","edit",1,"edit-icon",3,"size"],[3,"labels"],["dueDatePicker",""],[1,"flex","gap-8"],[1,"placeholder"],[1,"flex","items-start","gap-6","w-full","job-details-info-row"],[1,"row-value","flex","flex-col","gap-2"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"flex","flex-col","gap-8"],[1,"flex","items-start","gap-12","w-full"],["class","w-44 h-44 rounded object-cover",3,"src","alt",4,"ngIf"],[1,"flex","flex-col","flex-1","min-w-0","gap-4"],[1,"text-14","font-semibold","leading-5","text-gray-80","job-details-info-row"],["class","flex items-center gap-8 text-12 font-medium leading-4 text-gray-40",4,"ngFor","ngForOf","ngForTrackBy"],["class","w-fit h-96 object-contain image-logo","alt","Company logo",3,"src",4,"ngIf"],[1,"w-44","h-44","rounded","object-cover",3,"src","alt"],[1,"flex","items-center","gap-8","text-12","font-medium","leading-4","text-gray-40"],["alt","Company logo",1,"w-fit","h-96","object-contain","image-logo",3,"src"],["class","flex flex-col gap-8 w-full",4,"ngIf"],[1,"m-0","text-14","font-semibold","leading-5","text-gray-80"],[1,"notes-timeline","flex","flex-col","gap-16","m-0","p-0","w-full"],["class","relative flex items-start gap-6",4,"ngFor","ngForOf","ngForTrackBy"],[1,"relative","flex","items-start","gap-6"],[1,"relative","z-10","flex","items-center","p-8","rounded-full","bg-brand-15","text-gray-85"],["uiIcon","calendar_today",3,"size"],[1,"flex","flex-col","justify-center","gap-6","min-w-0"],[1,"text-12","font-medium","leading-4","text-gray-40","job-details-info-row"],[1,"note-body","text-12","font-medium","leading-4","text-gray-85",3,"innerHTML"],[1,"job-details-info-card","flex","flex-col","gap-8"],[1,"text-12","font-medium","leading-4","text-brand-65","underline",3,"routerLink"],[3,"ngTemplateOutlet","ngTemplateOutletContext",4,"ngFor","ngForOf","ngForTrackBy"],[1,"block","w-full","laptop:sticky","laptop:top-8","laptop:flex-1","min-w-0",3,"job"],[1,"row-value","flex-1","min-w-0"],[1,"row-value","fr-formatted","flex-1","min-w-0","whitespace-pre-line",3,"innerHTML"],["uiFormSelectMultiple","",1,"flex","items-start","gap-6","w-full","job-details-info-row",3,"formControl"],["type","button","class","row-value editable-value",4,"uiToFormSelectOption"],["type","button",1,"row-value","editable-value"],["class","flex flex-col gap-8",4,"ngIf","ngIfElse"],["noPeople",""],["uiIcon","edit","uiDropdown","",1,"edit-icon",3,"size"],["class","dropdown-panel",4,"uiDropdownTemplate"],[1,"dropdown-panel"],["placeholder","Search a member...",3,"control"],[3,"value","title",4,"ngFor","ngForOf"],[3,"value","title"],[3,"label","truncateLabel","showAvatar","avatarSrc","avatarName","avatarEmail"],["class","flex items-center gap-8 text-12 font-medium leading-4 text-gray-85",4,"ngFor","ngForOf","ngForTrackBy"],[1,"flex","items-center","gap-8","text-12","font-medium","leading-4","text-gray-85"],["size","small",3,"src","name","email"],["class","flex items-center gap-2 text-12 font-medium leading-4 text-brand-65","target","_blank","rel","noopener noreferrer",3,"href",4,"ngIf","ngIfElse"],["noLink",""],["target","_blank","rel","noopener noreferrer",1,"flex","items-center","gap-2","text-12","font-medium","leading-4","text-brand-65",3,"href"],["alt","","class","w-20 h-20",3,"src",4,"ngIf","ngIfElse"],["linkIcon",""],["alt","",1,"w-20","h-20",3,"src"],[1,"text-12","font-medium","leading-4","text-gray-40"]],template:function(i,t){if(1&i&&(e.\u0275\u0275elementStart(0,"div",0)(1,"button",1,2),e.\u0275\u0275listener("click",function(){return t.goBack()}),e.\u0275\u0275element(3,"i",3),e.\u0275\u0275text(4," Back "),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(5,"div",4)(6,"h1",5),e.\u0275\u0275text(7),e.\u0275\u0275pipe(8,"async"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(9,"p",6),e.\u0275\u0275text(10," This page outlines all job-related information, including due dates, service instructions, file links, and customer details. It is a reference for you to review job requirements and complete tasks. "),e.\u0275\u0275elementEnd()()(),e.\u0275\u0275template(11,pi,28,18,"div",7),e.\u0275\u0275pipe(12,"async"),e.\u0275\u0275template(13,mi,5,2,"ng-template",null,8,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275template(15,ui,4,2,"ng-template",null,9,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275template(17,fi,5,5,"ng-template",null,10,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275template(19,yi,1,2,"ng-template",null,11,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275template(21,Oi,6,3,"ng-template",null,12,e.\u0275\u0275templateRefExtractor)),2&i){const o=e.\u0275\u0275reference(2);let r;e.\u0275\u0275advance(3),e.\u0275\u0275property("size",o.iconSize),e.\u0275\u0275advance(4),e.\u0275\u0275textInterpolate1(" ",null==(r=e.\u0275\u0275pipeBind1(8,3,t.vm$))?null:r.title," "),e.\u0275\u0275advance(4),e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(12,5,t.vm$))}},directives:[ue.s,ge.V,Q.a,I.NgIf,Zn.T,ce.n,R.w,C.JJ,C.oH,de.z,R.S,pe.$,I.NgForOf,me.O,se.mN,se.MM,I.NgTemplateOutlet,C.Fj,Qn.aK,qn.J,T.yS,X,it.N,rt.h,mo.v,at.J,Qe.A],pipes:[I.AsyncPipe],styles:['.job-details-info-card[_ngcontent-%COMP%]{border-radius:.5rem;border-width:1px;border-style:solid;--tw-border-opacity: 1;border-color:rgb(246 246 246 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1.25rem 1.75rem}.card-title[_ngcontent-%COMP%]{margin:0;padding-top:.375rem;padding-bottom:.375rem;font-size:1.125rem;font-weight:700;line-height:1.5rem;--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}.detail-section[_ngcontent-%COMP%]{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:.5rem;padding-bottom:1.25rem}.detail-section[_ngcontent-%COMP%]:not(:last-child){border-width:0px;border-bottom-width:1px;border-style:solid;--tw-border-opacity: 1;border-color:rgb(226 226 226 / var(--tw-border-opacity, 1))}.section-title[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:600;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}[_nghost-%COMP%] .note-body[_ngcontent-%COMP%] p{margin:0}[_nghost-%COMP%] .note-body[_ngcontent-%COMP%] p+p{margin-top:.25rem}
1[_nghost-%COMP%] .note-body[_ngcontent-%COMP%] a{word-break:break-all;color:var(--brand-65, #3B82F6);-webkit-text-decoration-line:underline;text-decoration-line:underline}[_nghost-%COMP%] .note-body[_ngcontent-%COMP%] img{margin-top:.25rem;display:block;height:auto;max-width:100%;border-radius:.25rem}[_nghost-%COMP%] .note-body[_ngcontent-%COMP%] ul{margin:0;list-style-type:disc;padding-left:1.25rem}[_nghost-%COMP%] .note-body[_ngcontent-%COMP%] ol{margin:0;list-style-type:decimal;padding-left:1.25rem}[_nghost-%COMP%] .job-details-instruction-card[_ngcontent-%COMP%]{border-radius:.5rem;border-width:1px;border-style:solid;--tw-border-opacity: 1;border-color:rgb(210 139 255 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1));padding:1rem 1.25rem}[_nghost-%COMP%] .job-details-instruction-card[_ngcontent-%COMP%] ul{margin:0;list-style-type:disc;padding-left:1.25rem}[_nghost-%COMP%] .job-details-instruction-card[_ngcontent-%COMP%] ol{margin:0;list-style-type:decimal;padding-left:1.25rem}[_nghost-%COMP%] .job-details-instruction-card[_ngcontent-%COMP%] p{margin:0}[_nghost-%COMP%] .job-details-instruction-card[_ngcontent-%COMP%] p+p, [_nghost-%COMP%] .job-details-instruction-card[_ngcontent-%COMP%] p+ul, [_nghost-%COMP%] .job-details-instruction-card[_ngcontent-%COMP%] ul+p{margin-top:.5rem}.job-details-info-row[_ngcontent-%COMP%]{padding-top:4px;padding-bottom:4px}.job-details-info-row[_ngcontent-%COMP%] .row-label[_ngcontent-%COMP%]{width:8rem;flex-shrink:0;font-size:.75rem;font-weight:500;line-height:1rem;--tw-text-opacity: 1;color:rgb(128 128 128 / var(--tw-text-opacity, 1))}.job-details-info-row[_ngcontent-%COMP%] .row-value[_ngcontent-%COMP%]{font-size:.75rem;font-weight:500;line-height:1rem;--tw-text-opacity: 1;color:rgb(26 26 26 / var(--tw-text-opacity, 1))}.job-details-info-row[_ngcontent-%COMP%] .editable-value[_ngcontent-%COMP%]{display:flex;cursor:pointer;align-items:flex-start;gap:1rem;border-width:0px;background-color:transparent;padding:0;text-align:left}.job-details-info-row[_ngcontent-%COMP%] .editable-value[_ngcontent-%COMP%] .edit-icon[_ngcontent-%COMP%]{flex-shrink:0;--tw-text-opacity: 1;color:rgb(128 128 128 / var(--tw-text-opacity, 1))}.job-details-info-row[_ngcontent-%COMP%] .editable-value[_ngcontent-%COMP%]:hover .edit-icon[_ngcontent-%COMP%]{--tw-text-opacity: 1;color:rgb(80 80 80 / var(--tw-text-opacity, 1))}.job-details-info-row[_ngcontent-%COMP%] .editable-value[_ngcontent-%COMP%] .placeholder[_ngcontent-%COMP%]{--tw-text-opacity: 1;color:rgb(175 175 175 / var(--tw-text-opacity, 1))}.notes-timeline[_ngcontent-%COMP%]{list-style:none}.notes-timeline[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:not(:last-child):before{content:"";left:14.5px;position:absolute;top:2rem;bottom:-1rem;width:.0625rem;border-width:1px;border-style:dashed;--tw-border-opacity: 1;border-color:rgb(226 226 226 / var(--tw-border-opacity, 1))}.image-logo[_ngcontent-%COMP%]{max-width:40%}'],changeDetection:0}),V=(0,J.gn)([(0,w.c)(),(0,J.w6)("design:paramtypes",[De,T.gz,T.F0,k.uw,u.KpX,C.qu])],V);var ji=m(88514),Fi=m(58849),Ei=m(60519),Di=m(9569),Ji=m(77863),Mi=m(51992),ki=m(20409);let Pi=(()=>{class n{constructor(){this.value=!1,this.disabled=!1,this.onChange=()=>{},this.onTouched=()=>{}}onHostClick(t){this.disabled||t.defaultPrevented||(this.value=!this.value,this.onChange(this.value),this.onTouched())}writeValue(t){this.value=!!t}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this.disabled=t}}return n.\u0275fac=function(t){return new(t||n)},n.\u0275dir=e.\u0275\u0275defineDirective({type:n,selectors:[["","uiTogglePillSwitch",""]],hostBindings:function(t,o){1&t&&e.\u0275\u0275listener("click",function(s){return o.onHostClick(s)})},features:[e.\u0275\u0275ProvidersFeature([{provide:C.JU,useExisting:(0,e.forwardRef)(()=>n),multi:!0}])]}),n})();var $i=m(49505),Bi=m(90391),Ai=m(47333);function Li(n,i){if(1&n&&e.\u0275\u0275element(0,"i",13),2&n){const t=e.\u0275\u0275nextContext().$implicit;e.\u0275\u0275property("uiIcon",t.icon)}}
1function Ri(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"a",10,11),e.\u0275\u0275template(2,Li,1,1,"i",12),e.\u0275\u0275text(3),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit,o=e.\u0275\u0275reference(1),r=e.\u0275\u0275nextContext().isCompact,s=e.\u0275\u0275nextContext();e.\u0275\u0275classProp("compact",r),e.\u0275\u0275property("routerLink",t.routerLinks)("routerLinkActiveOptions",s.tabActiveOptions)("active",o.isActive),e.\u0275\u0275advance(2),e.\u0275\u0275property("ngIf",t.icon),e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t.label," ")}}function Ni(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"span"),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t||"All time"," ")}}function zi(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementStart(0,"button",21),e.\u0275\u0275listener("click",function(){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext(3).toggleSortOrder()}),e.\u0275\u0275element(1,"i",22),e.\u0275\u0275elementStart(2,"span"),e.\u0275\u0275text(3),e.\u0275\u0275elementEnd()()}if(2&n){const t=i.$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275classProp("rotate-180","desc"===t),e.\u0275\u0275property("size",16),e.\u0275\u0275advance(2),e.\u0275\u0275textInterpolate("asc"===t?"Old to New":"New to Old")}}function Ui(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"div",14)(1,"span",15),e.\u0275\u0275text(2,"Jobs created between"),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(3,"button",16),e.\u0275\u0275element(4,"i",17),e.\u0275\u0275template(5,Ni,2,1,"span",18),e.\u0275\u0275element(6,"i",19),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(7,zi,4,4,"button",20),e.\u0275\u0275pipe(8,"async"),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext(2);e.\u0275\u0275advance(3),e.\u0275\u0275property("formControl",t.createdDateControl),e.\u0275\u0275advance(1),e.\u0275\u0275property("size",16),e.\u0275\u0275advance(1),e.\u0275\u0275property("uiFormControlDateRangeValueFormat","MONTH_FULL_DAY_YEAR"),e.\u0275\u0275advance(1),e.\u0275\u0275property("size",16),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(8,5,t.sortOrder$))}}function Vi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"span",27),e.\u0275\u0275text(1),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275textInterpolate1(" ",t," ")}}function Hi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-dropdown-select-option",40),e.\u0275\u0275element(1,"ui-option-content",41),e.\u0275\u0275elementEnd()),2&n){const t=i.$implicit;e.\u0275\u0275property("value",t.value),e.\u0275\u0275advance(1),e.\u0275\u0275property("label",t.label)("truncateLabel",!0)("showAvatar",!0)("avatarSrc",t.avatarUrl)("avatarName",t.label)("avatarEmail",t.email)}}function Gi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-blank-dropdown",37),e.\u0275\u0275element(1,"ui-dropdown-search-header",38),e.\u0275\u0275template(2,Hi,2,7,"ui-dropdown-select-option",39),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext(),o=t.search,r=t.$implicit;e.\u0275\u0275advance(1),e.\u0275\u0275property("control",o),e.\u0275\u0275advance(1),e.\u0275\u0275property("ngForOf",r)}}function Wi(n,i){1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,Gi,3,2,"ui-blank-dropdown",36),e.\u0275\u0275elementContainerEnd())}function Ki(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementStart(0,"i",48),e.\u0275\u0275listener("click",function(){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext(5).searchTermControl.setValue("")}),e.\u0275\u0275elementEnd()}}function Xi(n,i){if(1&n&&(e.\u0275\u0275elementStart(0,"ui-form-input-group",44),e.\u0275\u0275element(1,"i",45)(2,"input",46),e.\u0275\u0275template(3,Ki,1,0,"i",47),e.\u0275\u0275pipe(4,"async"),e.\u0275\u0275elementEnd()),2&n){const t=e.\u0275\u0275nextContext(3).isCompact,o=e.\u0275\u0275nextContext();e.\u0275\u0275property("size",t?"small":"medium"),e.\u0275\u0275advance(3),e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(4,2,o.hasTextValue$))}}function Yi(n,i){1&n&&(e.\u0275\u0275elementStart(0,"button",49),e.\u0275\u0275element(1,"i",50),e.\u0275\u0275elementEnd()),2&n&&(e.\u0275\u0275advance(1),e.\u0275\u0275property("size",24))}
1function Zi(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275template(1,Xi,5,4,"ui-form-input-group",42),e.\u0275\u0275template(2,Yi,2,1,"ng-template",null,43,e.\u0275\u0275templateRefExtractor),e.\u0275\u0275elementContainerEnd()),2&n){const t=i.$implicit,o=e.\u0275\u0275reference(3);e.\u0275\u0275advance(1),e.\u0275\u0275property("ngIf",t)("ngIfElse",o)}}const Me=function(){return[]};function Qi(n,i){if(1&n){const t=e.\u0275\u0275getCurrentView();e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275elementStart(1,"div",23)(2,"ui-toggle-pill",24),e.\u0275\u0275template(3,Vi,2,1,"span",25),e.\u0275\u0275elementEnd(),e.\u0275\u0275elementStart(4,"ui-toggle-pill",26),e.\u0275\u0275element(5,"ui-form-select-selected-label",27),e.\u0275\u0275template(6,Wi,2,0,"ng-container",28),e.\u0275\u0275pipe(7,"async"),e.\u0275\u0275elementEnd(),e.\u0275\u0275element(8,"ui-toggle-pill",29),e.\u0275\u0275template(9,Zi,4,2,"ng-container",30),e.\u0275\u0275element(10,"ui-dynamic-filter",31),e.\u0275\u0275pipe(11,"async"),e.\u0275\u0275elementStart(12,"div",32)(13,"button",33),e.\u0275\u0275listener("click",function(){return e.\u0275\u0275restoreView(t),e.\u0275\u0275nextContext(2).onViewSettingsClick()}),e.\u0275\u0275element(14,"i",34),e.\u0275\u0275elementEnd()()(),e.\u0275\u0275element(15,"ui-advanced-filter",35),e.\u0275\u0275pipe(16,"async"),e.\u0275\u0275elementContainerEnd()}if(2&n){const t=e.\u0275\u0275nextContext().isCompact,o=e.\u0275\u0275nextContext();let r,s;e.\u0275\u0275advance(1),e.\u0275\u0275property("formGroup",o.filterForm),e.\u0275\u0275advance(1),e.\u0275\u0275property("size",t?"small":"medium"),e.\u0275\u0275advance(2),e.\u0275\u0275property("size",t?"small":"medium"),e.\u0275\u0275advance(2),e.\u0275\u0275property("uiToFormSelectOption",e.\u0275\u0275pipeBind1(7,13,o.teamMemberOptions$)),e.\u0275\u0275advance(2),e.\u0275\u0275property("clearable",!1)("size",t?"small":"medium"),e.\u0275\u0275advance(1),e.\u0275\u0275property("uiToggle",!!o.filterForm.value.searchTerm),e.\u0275\u0275advance(1),e.\u0275\u0275property("options",null!==(r=e.\u0275\u0275pipeBind1(11,15,o.dynamicFilterOptions$))&&void 0!==r?r:e.\u0275\u0275pureFunction0(19,Me))("formControl",o.dynamicFilterControl),e.\u0275\u0275advance(4),e.\u0275\u0275property("size",24),e.\u0275\u0275advance(1),e.\u0275\u0275property("config",null!==(s=e.\u0275\u0275pipeBind1(16,17,o.advancedFilterConfig$))&&void 0!==s?s:e.\u0275\u0275pureFunction0(20,Me))("fieldsControl",o.dynamicFilterControl)("formControl",o.advancedFilterControl)}}function qi(n,i){if(1&n&&(e.\u0275\u0275elementContainerStart(0),e.\u0275\u0275elementStart(1,"div",5)(2,"nav",6),e.\u0275\u0275template(3,Ri,4,7,"a",7),e.\u0275\u0275pipe(4,"async"),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(5,Ui,9,7,"div",8),e.\u0275\u0275pipe(6,"async"),e.\u0275\u0275elementEnd(),e.\u0275\u0275template(7,Qi,17,21,"ng-container",9),e.\u0275\u0275pipe(8,"async"),e.\u0275\u0275elementContainerEnd()),2&n){const t=e.\u0275\u0275nextContext();let o;e.\u0275\u0275advance(3),e.\u0275\u0275property("ngForOf",null!==(o=e.\u0275\u0275pipeBind1(4,4,t.tabs$))&&void 0!==o?o:e.\u0275\u0275pureFunction0(10,Me))("ngForTrackBy",t.trackByKey),e.\u0275\u0275advance(2),e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(6,6,t.filterVisible$)),e.\u0275\u0275advance(2),e.\u0275\u0275property("ngIf",e.\u0275\u0275pipeBind1(8,8,t.filterVisible$))}}let Y=class{constructor(i,t,o,r,s,a,l,c,d,p,g){this.dialog=i,this.fb=t,this.userOptionSource=o,this.jobTemplatesService=r,this.solutionsRepository=s,this.store=a,this.columnSettings=l,this.router=c,this.route=d,this.userCache=p,this.recentJobWrites=g,this.overviewTab={routerLinks:["templates"],label:"Overview",icon:"list_alt",key:"templates"},this.dashboardTab={routerLinks:["dashboard"],label:"Dashboard",icon:"dashboard",key:"dashboard"},this.tabs$=this.store.jobCountByTemplate$.pipe((0,f.U)(h=>[this.overviewTab,...h.filter(_=>!!_.count).map(_=>({routerLinks:["templates",_.jobTemplateId],label:`${_.label} ( ${_.count} )`,key:_.jobTemplateId,icon:"list_alt"})),this.dashboardTab])),this.tabActiveOptions={paths:"exact",queryParams:"ignored",fragment:"ignored",matrixParams:"ignored"},this.filterForm=this.fb.group({createdDate:this.fb.control(null),dueDate:this.fb.control(null),teamMember:this.fb.control(null),includeCompleted:this.fb.control(!1),searchTerm:this.fb.control("")}),this.createdDateControl=this.filterForm.controls.createdDate,this.searchTermControl=this.filterForm.controls.searchTerm,this.sortOrder$=this.store.sortOrder$,this.hasTextValue$=(0,ji.P)(()=>this.searchTermControl.valueChanges.pipe((0,ne.O)(this.searchTermControl.value),(0,f.U)(
1h=>!!h))),this.dynamicFilterControl=this.fb.control([]),this.advancedFilterControl=this.fb.control({}),this.teamMemberOptions$=this.userCache.teamMembers$.pipe((0,f.U)(nr),(0,$.d)({bufferSize:1,refCount:!0})),this.jobTypeOptions$=this.jobTemplatesService.list().pipe((0,f.U)(h=>h.map(_=>({value:_.id,label:_.name}))),(0,$.d)({bufferSize:1,refCount:!0})),this.serviceOptions$=this.solutionsRepository.getAll$().pipe((0,f.U)(h=>h.map(_=>({value:_.id,label:_.name}))),(0,$.d)({bufferSize:1,refCount:!0})),this.allOptions$=(0,H.aj)([this.jobTypeOptions$,this.serviceOptions$,this.teamMemberOptions$]).pipe((0,$.d)({bufferSize:1,refCount:!0})),this.advancedFilterConfig$=this.allOptions$.pipe((0,f.U)(([h,_,y])=>[{key:"customerName",label:"Customer Name",iconName:"people",type:"select",searchable:!0,showAvatar:!0,placeholder:"Select customer",optionSource:this.userOptionSource},{key:"shootDate",label:"Shoot Date",iconName:"calendar_today",type:"date-range"},{key:"jobType",label:"Job Type",iconName:"category",type:"multi-select",searchable:!0,placeholder:"Select job type",options:null!=h?h:[]},{key:"service",label:"Service",iconName:"shopping_bag",type:"multi-select",searchable:!0,placeholder:"Select service",options:null!=_?_:[]},{key:"photographer",label:"Photographer / Videographer",iconName:"assignment_ind",type:"multi-select",searchable:!0,showAvatar:!0,placeholder:"Select people",options:null!=y?y:[]},{key:"editor",label:"Editor",iconName:"assignment_ind",type:"multi-select",searchable:!0,showAvatar:!0,placeholder:"Select editors",options:null!=y?y:[]},{key:"reviewer",label:"Reviewer",iconName:"assignment_ind",type:"multi-select",searchable:!0,showAvatar:!0,placeholder:"Select reviewers",options:null!=y?y:[]}]),(0,$.d)({bufferSize:1,refCount:!0})),this.dynamicFilterOptions$=this.advancedFilterConfig$.pipe((0,f.U)(h=>h.map(_=>({value:_.key,label:_.label,iconName:_.iconName})))),this.filterVisible$=this.router.events.pipe((0,Z.h)(h=>h instanceof T.m2),(0,ne.O)(null),(0,f.U)(()=>{var h;return!!(null===(h=this.route.firstChild)||void 0===h?void 0:h.snapshot.data.showFilter)}),(0,P.x)(),(0,$.d)({bufferSize:1,refCount:!0}))}ngOnInit(){this.seedActiveFilterChips(),this.syncStoreToForm(),this.syncFormToStore()}onCreateJob(){this.dialog.open(N,{panelClass:["app-v2","job-dialog-panel"],width:"640px",height:"100vh",maxHeight:"100vh",position:{right:"0"}}).afterClosed().pipe((0,Z.h)(i=>!!i),(0,w.t)(this)).subscribe(i=>this.recentJobWrites.recordCreate(i))}trackByKey(i,t){return t.key}toggleSortOrder(){this.store.toggleSortOrder()}onViewSettingsClick(){this.columnSettings.updateValue(this.columnSettings.settingsPanelData$.pipe((0,L.q)(1),(0,F.w)(({columns:i,value:t})=>(0,b.Md5)(this.dialog,i,t,Ve))))}syncFormToStore(){this.filterForm.valueChanges.pipe((0,ne.O)(this.filterForm.getRawValue()),(0,Fi.D)(i=>(0,E.of)(i).pipe((0,Ei.G)(),(0,f.U)(([t,o])=>t.searchTerm===o.searchTerm?0:100))),(0,w.t)(this)).subscribe(i=>this.store.setFilterForm(i)),this.advancedFilterControl.valueChanges.pipe((0,ne.O)(this.advancedFilterControl.value),(0,w.t)(this)).subscribe(i=>this.store.setAdvancedFilter(i))}seedActiveFilterChips(){this.store.advancedFilter$.pipe((0,L.q)(1),(0,w.t)(this)).subscribe(i=>{const t=Object.entries(i).filter(([,o])=>function tr(n){if(null==n||""===n)return!1;if(Array.isArray(n))return n.length>0;if(n instanceof Date)return!0;if("object"==typeof n){const i=n;return!!i.start||!!i.end}return!0}(o)).map(([o])=>o);t.length&&this.dynamicFilterControl.setValue(t)})}syncStoreToForm(){this.store.filterForm$.pipe((0,w.t)(this)).subscribe(i=>this.applyFilterFormFromStore(i)),this.store.advancedFilter$.pipe((0,w.t)(this)).subscribe(i=>this.applyAdvancedFilterFromStore(i))}applyFilterFormFromStore(i){(0,G.isEqual)(this.filterForm.getRawValue(),i)||this.filterForm.setValue(i,{emitEvent:!1})}applyAdvancedFilterFromStore(i){(0,G.isEqual)(this.advancedFilterControl.value,i)||this.advancedFilterControl.setValue(i,{emitEvent:!1})}};function er(n){var i,t;return{value:n.uid,label:null!==(t=null!==(i=n.displayName)&&void 0!==i?i:n.email)&&void 0!==t?t:"",avatarUrl:n.photoURL,email:n.email}}function nr(n){return(0,G.sortBy)(n.map(er).filter(i=>!!i.label),"label")}Y.\u0275fac=function(i){return new(i||Y)(e.\u0275\u0275directiveInject(k.uw),e.\u0275\u0275directiveInject(C.qu),e.\u0275\u0275directiveInject(b.Clp),e.\u0275\u0275directiveInject(u.
1Kz_),e.\u0275\u0275directiveInject(u.pZw),e.\u0275\u0275directiveInject(he),e.\u0275\u0275directiveInject(ee),e.\u0275\u0275directiveInject(T.F0),e.\u0275\u0275directiveInject(T.gz),e.\u0275\u0275directiveInject(u.KpX),e.\u0275\u0275directiveInject(u.SLo))},Y.\u0275cmp=e.\u0275\u0275defineComponent({type:Y,selectors:[["tn-job-management"]],features:[e.\u0275\u0275ProvidersFeature([he,ee,{provide:b.bWK,useExisting:ee}])],decls:7,vars:1,consts:[["title","Jobs","description","This page displays all jobs in the system, with jobs assigned to you shown by default. Use filters to view jobs assigned to others or across the team."],["uiBtnSize","","uiBtnTheme","",3,"click"],["addBtn","btnSize"],["uiIcon","add",3,"size"],[4,"uiViewType"],[1,"tab-bar"],["mat-tab-nav-bar","",1,"job-management-tab-nav","mat-tab-paginated"],["mat-tab-link","","routerLinkActive","",3,"routerLink","routerLinkActiveOptions","active","compact",4,"ngFor","ngForOf","ngForTrackBy"],["class","created-time",4,"ngIf"],[4,"ngIf"],["mat-tab-link","","routerLinkActive","",3,"routerLink","routerLinkActiveOptions","active"],["rla","routerLinkActive"],[3,"uiIcon",4,"ngIf"],[3,"uiIcon"],[1,"created-time"],[1,"created-time-label"],["type","button","uiBtnSize","x-small","uiBtnTheme","","themeMode","secondary","uiDateRangePicker","",3,"formControl"],["uiIcon","calendar_today",3,"size"],[4,"uiFormControlDateRangeValue","uiFormControlDateRangeValueFormat"],["uiIcon","unfold_more",1,"created-date-caret",3,"size"],["type","button","uiBtnSize","x-small","uiBtnTheme","","themeMode","secondary",3,"click",4,"ngIf"],["type","button","uiBtnSize","x-small","uiBtnTheme","","themeMode","secondary",3,"click"],["uiIcon","sort",3,"size"],[1,"filters",3,"formGroup"],["icon","date_range","label","Due Date","formControlName","dueDate","uiDateRangePicker","",3,"size"],["class","pill-value",4,"uiFormControlDateRangeValue"],["icon","people_alt","label","Team member","formControlName","teamMember","uiFormSelect","","uiDropdown","","iconSuffix","arrow_drop_down",3,"size"],[1,"pill-value"],[4,"uiToFormSelectOption"],["icon","visibility_off","iconActive","visibility","label","Completed Jobs","formControlName","includeCompleted","uiTogglePillSwitch","",1,"mr-auto",3,"clearable","size"],[4,"uiToggle"],["uiFormSelectMultiple","",3,"options","formControl"],[1,"separator"],["type","button","uiBtnFilter","",3,"click"],["uiIcon","settings",3,"size"],[3,"config","fieldsControl","formControl"],["class","dropdown-panel",4,"uiDropdownTemplate"],[1,"dropdown-panel"],["placeholder","Search a member...",3,"control"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],[3,"label","truncateLabel","showAvatar","avatarSrc","avatarName","avatarEmail"],[3,"size",4,"ngIf","ngIfElse"],["searchIcon",""],[3,"size"],["uiIcon","search"],["id","searchTerm","name","searchTerm","type","text","formControlName","searchTerm","placeholder","Search jobs","aria-label","Search jobs","uiInputFocusToggle",""],["uiIcon","cancel","uiIconVariant","filled","class","text-gray-40","uiTriggerToggle","",3,"click",4,"ngIf"],["uiIcon","cancel","uiIconVariant","filled","uiTriggerToggle","",1,"text-gray-40",3,"click"],["uiBtnFilter",""],["uiIcon","search","uiTriggerToggle","",3,"size"]],template:function(i,t){if(1&i&&(e.\u0275\u0275elementStart(0,"tn-job-header",0)(1,"button",1,2),e.\u0275\u0275listener("click",function(){return t.onCreateJob()}),e.\u0275\u0275element(3,"i",3),e.\u0275\u0275text(4," New Job "),e.\u0275\u0275elementEnd()(),e.\u0275\u0275template(5,qi,9,11,"ng-container",4),e.\u0275\u0275element(6,"router-outlet")),2&i){const o=e.\u0275\u0275reference(2);e.\u0275\u0275advance(3),e.\u0275\u0275property("size",o.iconSize)}},directives:[Di.Jw,ue.s,ge.V,Q.a,Oe.F,re.BU,I.NgForOf,T.yS,re.Nj,T.Od,I.NgIf,Ji.F,C.JJ,C.oH,Mi.Z,C.JL,C.sg,ki.C,C.u,ce.n,R.w,qe,de.z,R.S,pe.$,rt.h,me.O,at.J,Pi,se.mN,ye.e,C.Fj,se.Z_,se.MM,$i.A,Bi.G,it.N,Ai.W,T.lC],pipes:[I.AsyncPipe],styles:['[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.tab-bar[_ngcontent-%COMP%]{display:flex;align-items:stretch}.job-management-tab-nav[_ngcontent-%COMP%]{min-width:0;flex:1 1 0%;padding-left:1.5rem}.job-management-tab-nav[_ngcontent-%COMP%]:not(.mat-tab-header-pagination-controls-enabled){padding-right:1.5rem}.job-management-tab-nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{justify-content:flex-start}
1.created-time[_ngcontent-%COMP%]{display:flex;flex-shrink:0;align-items:center;gap:.5rem;border-bottom-width:1px;border-style:solid;--tw-border-opacity: 1;border-color:rgb(226 226 226 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-right:.75rem}@media (min-width: 640px){.created-time[_ngcontent-%COMP%]{padding-right:1.5rem}}.created-time[_ngcontent-%COMP%] .created-time-label[_ngcontent-%COMP%]{white-space:nowrap;font-size:.875rem;--tw-text-opacity: 1;color:rgb(128 128 128 / var(--tw-text-opacity, 1))}.created-time[_ngcontent-%COMP%] .created-date-caret[_ngcontent-%COMP%]{--tw-text-opacity: 1;color:rgb(128 128 128 / var(--tw-text-opacity, 1))}.filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;padding:.5rem 1rem}.filters[_ngcontent-%COMP%] ui-toggle-pill[_ngcontent-%COMP%]{display:flex;align-items:center}.filters[_ngcontent-%COMP%] ui-toggle-pill[_ngcontent-%COMP%]:not(:first-child):before{margin-right:1rem;display:block;height:.875rem;width:.0625rem;--tw-bg-opacity: 1;background-color:rgb(204 204 204 / var(--tw-bg-opacity, 1));content:""}
1.separator[_ngcontent-%COMP%]{display:flex;align-items:center}.separator[_ngcontent-%COMP%]:before{margin-right:1rem;display:block;height:.875rem;width:.0625rem;--tw-bg-opacity: 1;background-color:rgb(204 204 204 / var(--tw-bg-opacity, 1));content:""}.pill-value[_ngcontent-%COMP%]{font-weight:500;color:var(--brand-65, #3B82F6)}'],changeDetection:0}),Y=(0,J.gn)([(0,w.c)(),(0,J.w6)("design:paramtypes",[k.uw,C.qu,b.Clp,u.Kz_,u.pZw,he,ee,T.F0,T.gz,u.KpX,u.SLo])],Y);const or=[{path:"templates/:templateId/details/:jobId",pathMatch:"full",component:V},{path:"templates/details/:jobId",pathMatch:"full",component:V},{path:"",component:Y,children:[{path:"",pathMatch:"full",redirectTo:"templates"},{component:U,path:"templates",pathMatch:"full",data:{showFilter:!0}},{component:U,path:"templates/:templateId",data:{showFilter:!0}},{component:K,path:"dashboard"}]}];let ir=(()=>{class n{}return n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=e.\u0275\u0275defineNgModule({type:n}),n.\u0275inj=e.\u0275\u0275defineInjector({imports:[[I.CommonModule,T.Bz.forChild(or),C.UX,b.FqG,b.kWm,b.kx_,b.sJM,b.OUg,b.QX1,Nt.D4,Lt.HT,k.Is,b.zYm,oe.ZX,re.Nh,b.g_V,b.uE_,b.TE2,b.kx_,b.kWm,b.Yll,b.wM4,b.C80,b.IfW,b.s_5,b.FxY,b.cf5,b.vmb,b.gPf,b.MxA,b.hMv,b.SDH,b.dTQ,Rt.zH],T.Bz]}),n})()}}]);
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.