1import"./chunk-QSJL7CQF.js";import"./chunk-KOEKGIOJ.js";import"./chunk-ZXI4VZGZ.js";import"./chunk-MW32WWIK.js";import{a as q,b as h,c as j,d as K}from"./chunk-COAKN2MX.js";import"./chunk-JOL524W4.js";import"./chunk-IW2UOT3G.js";import"./chunk-YYMW6PUU.js";import"./chunk-YSE3ND72.js";import"./chunk-J2Z7QPQA.js";import"./chunk-PPHM6GXD.js";import"./chunk-2K7E3S2U.js";import"./chunk-CCMACI33.js";import{ma as B,na as X}from"./chunk-7GD4SW6C.js";import"./chunk-JCSESH2J.js";import"./chunk-SYHXPIWY.js";import"./chunk-GLFJMVTU.js";import"./chunk-7E7WVJAW.js";import"./chunk-UZR6VFPG.js";import"./chunk-PHYKRJFI.js";import"./chunk-JGPCN62Y.js";import"./chunk-BQ5C4YUN.js";import"./chunk-G2WNBUZW.js";import"./chunk-OOHCB7D4.js";import"./chunk-ECDTEDEZ.js";import"./chunk-KPAGQI66.js";import"./chunk-ZDTU7YMQ.js";import"./chunk-INJMAYG3.js";import"./chunk-FVG77HMA.js";import"./chunk-5P6XQABN.js";import"./chunk-OVGPRL77.js";import"./chunk-APZSKP2S.js";import"./chunk-53MVBNEN.js";import"./chunk-RVTINMFF.js";import"./chunk-IUKVZ62K.js";import"./chunk-FSVMYTLF.js";import{d as w,e as L,f as O}from"./chunk-ZD3CEWXG.js";import"./chunk-HXP5L5ZV.js";import"./chunk-R5HHLNRP.js";import"./chunk-EVV2DOEW.js";import"./chunk-4ULU7FGM.js";import"./chunk-JC7MHMTM.js";import"./chunk-QWF5VYAS.js";import"./chunk-IRENRCFR.js";import"./chunk-BUBGHNDZ.js";import{e as N}from"./chunk-5GS3QR7H.js";import"./chunk-D22K4JI4.js";import"./chunk-OLYVZWCV.js";import"./chunk-IZUO562Y.js";import"./chunk-EPKHUYLQ.js";import"./chunk-X2RCV4LG.js";import"./chunk-QPUYZBAW.js";import"./chunk-5FFKWPA2.js";import{a as k}from"./chunk-NURIXNLT.js";import"./chunk-TLNRIP4G.js";import"./chunk-ZTHYKD22.js";import"./chunk-5GUWLVV5.js";import"./chunk-QKHSI6KH.js";import"./chunk-WHEHVMAA.js";import"./chunk-FRP7PEI4.js";import"./chunk-7GB2H7DU.js";import{wa as V}from"./chunk-MJXFXCGO.js";import"./chunk-2A2LFZKU.js";import{Ob as H,ee as z,ia as b}from"./chunk-RQ4WSQDN.js";import{c as U,d as A}from"./chunk-5UCOJBJI.js";import"./chunk-H7R3FY4F.js";import{c as D}from"./chunk-UG7YN4RB.js";import"./chunk-HF2B77MC.js";import"./chunk-SX2H7FAR.js";import"./chunk-D6ZGPUYW.js";import"./chunk-XMT76HNJ.js";import"./chunk-ZFPQERPS.js";import"./chunk-E7QVDSDT.js";import"./chunk-TSRUDDSM.js";import{Ca as S,Kc as x,Lc as $,Qb as E,Sb as f,Xb as g,Yb as l,Yc as F,Zb as r,_b as v,cc as R,dc as I,hb as m,hc as T,ka as u,oc as d,pa as c,qa as p,qc as M,rc as P,tc as C,vc as a,zb as y}from"./chunk-WSK7M3ME.js";import"./chunk-JECSBBV3.js";import"./chunk-XO6N3PVE.js";function J(n,t){if(n&1&&(l(0,"p",15),x(1),r()),n&2){let e=a(2);m(),$(e.validationError());}}function Q(n,t){if(n&1){let e=T();l(0,"app-csv-file-parser",14),C("parsed",function(s){c(e);let i=a();return p(i.onCsvFilesParsed(s));})("fileRemoved",function(s){c(e);let i=a();return p(i.onFileRemoved(s));}),r(),E(1,J,2,1,"p",15);}if(n&2){let e=a();g("columnDefs",e.columnDefs)("guide",e.guide)("maxUploads",100),m(),f(e.validationError()?1:-1);}}function Y(n,t){if(n&1&&(l(0,"div",9)(1,"div",16),v(2,"ng-icon",17),r(),l(3,"h3",18),d(4,2),r(),l(5,"p",19),d(6,3),r()()),n&2){let e=a();m(6),M(e.importedCount()),P(6);}}function Z(n,t){n&1&&v(0,"ng-icon",21);}function ee(n,t){if(n&1){let e=T();l(0,"button",20),C("click",function(){c(e);let s=a();return p(s.importGuests());}),E(1,Z,1,0,"ng-icon",21),R(2),d(3,4),I(),r();}if(n&2){let e=a();g("disabled",!e.files.length||e.hasErrors()||e.importing()),m(),f(e.importing()?1:-1);}}function te(n,t){if(n&1){let e=T();l(0,"button",22),C("click",function(){c(e);let s=a();return p(s.close(!0));}),d(1,5),r();}}var W=class n{guestsService=u(B);guestsStore=u(X);amplitude=u(k);sheetRef=u(N);step=S("upload");validationError=S(null);importing=S(!1);importedCount=S(0);files=[];columnDefs=[{name:"Name",field:"guest.name",required:!0,parse:h},{name:"Email",field:"guest.email",required:!0,parse:j},{name:"Phone",field:"guest.phone",required:!1,parse:h},{name:"City",field:"guest.address.city",required:!1,parse:h},{name:"Country",field:"guest.address.country",required:!1,parse:K}];guide={description:"The columns in your CSV file should be ("+this.columnDefs.map(t=>t.required?t.name+"*":t.name).join(", ")+").",list:["Guest Name, Guest Email are required."],sample:[this.columnDefs.map(t=>t.name),["Iris Ferguson","[email protected]","1111111111","Munich","Germany"],["Kinley Weiss","[email protected]","1111111111","Dublin","Ireland"]]};hasErrors(){return this.files.some(t=>t.isError);}close(t){this.sheetRef.close(t);}onCsvFilesParsed(t){this.files.push(t);}onFileRemoved(t){this.files=this.files.filter(e=>e.file!==t);}
1importGuests(){if(this.hasErrors()){this.validationError.set("There are some errors in selected file(s) that need to be checked.");return;}this.importing.set(!0),this.validationError.set(null),this.amplitude.logEvent("upload-guest-list-csv");let t=this.files.flatMap(i=>i.items).filter(i=>i.item&&Object.keys(i.item).length>0).map(i=>i.item),e=this.dedupeByEmail(t);if(!e){this.validationError.set("Please check your file(s), duplicated email address exists."),this.importing.set(!1);return;}let o=new Set(this.guestsStore.allGuests().map(i=>this.normalizeEmail(i.primaryemail))),s=e.filter(i=>!o.has(this.normalizeEmail(i.guest?.email))).map(i=>({name:i.guest?.name||"",email:i.guest?.email||"",phone:i.guest?.phone||void 0,address:{city:i.guest?.address?.city||void 0,country:i.guest?.address?.country||void 0,country_code:V(i.guest?.address?.country)||void 0}}));if(s.length===0){this.validationError.set("There are no new guests to import."),this.importing.set(!1);return;}this.guestsService.createMany(s).subscribe({next:i=>{this.importedCount.set(i.length),this.importing.set(!1),this.step.set("success");},error:i=>{this.validationError.set(i?.status===409?"There are invalid data in the CSV file. Please check the file and try again.":"Failed to import guests. Please try again."),this.importing.set(!1);}});}dedupeByEmail(t){let e=t.map(s=>this.normalizeEmail(s.guest?.email)),o=new Set(e);return e.length!==o.size?null:t;}normalizeEmail(t){return`${t||""}`.trim().toLowerCase();}static ɵfac=function(e){return new(e||n)();};static ɵcmp=y({type:n,selectors:[["app-import-guests-csv-sheet"]],hostAttrs:[1,"flex","flex-col","h-full"],features:[F([],[U({lucideCheck:b,lucideLoader2:H})])],decls:11,vars:3,consts:()=>{let t;t="Import Guests from CSV Files";let e;e="Cancel";let o;o="Import Successful!";let s;s=""+"\uFFFD0\uFFFD"+" guests have been imported successfully.";let i;i="Upload";let G;return G="Done",[t,e,o,s,i,G,["hlmSheetHeader",""],["hlmSheetTitle",""],["hlmSheetBody",""],[1,"text-center","py-8"],[1,"flex","justify-end","gap-2","px-6","py-4"],["hlmBtn","","variant","outline",3,"click","disabled"],["hlmBtn","",3,"disabled"],["hlmBtn",""],["sampleName","guests-sample",3,"parsed","fileRemoved","columnDefs","guide","maxUploads"],[1,"text-sm","text-destructive","mt-4"],[1,"w-16","h-16","rounded-full","bg-(--ok-bg)","flex","items-center","justify-center","mx-auto","mb-4"],["hlm","","name","lucideCheck","size","lg",1,"text-(--ok-fg)"],[1,"text-lg","font-medium","mb-2"],[1,"text-sm","text-(--ink-500)"],["hlmBtn","",3,"click","disabled"],["hlm","","name","lucideLoader2","size","sm",1,"mr-2","animate-spin"],["hlmBtn","",3,"click"]];},template:function(e,o){e&1&&(l(0,"div",6)(1,"h3",7),d(2,0),r()(),l(3,"div",8),E(4,Q,2,4)(5,Y,7,1,"div",9),r(),l(6,"div",10)(7,"button",11),C("click",function(){return o.close();}),d(8,1),r(),E(9,ee,4,2,"button",12)(10,te,2,0,"button",13),r()),e&2&&(m(4),f(o.step()==="upload"?4:o.step()==="success"?5:-1),m(3),g("disabled",o.importing()),m(2),f(o.step()==="upload"?9:o.step()==="success"?10:-1));},dependencies:[A,D,z,w,L,O,q],encapsulation:2,changeDetection:0});};export{W as ImportGuestsCsvSheetComponent};/**i18n:d8a016f29a2176cd812bc05ea24c5a0062b07c41e1d9ecf7f4690d1a67273969*/
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.