Files
silverbullet-icalendar/icalendar.plug.js
2026-02-17 15:46:04 +00:00

5 lines
40 KiB
JavaScript

var gn=Object.defineProperty;var z=(e,n)=>{for(var r in n)gn(e,r,{get:n[r],enumerable:!0})};function ye(e){let n=atob(e),r=n.length,t=new Uint8Array(r);for(let o=0;o<r;o++)t[o]=n.charCodeAt(o);return t}function Q(e){typeof e=="string"&&(e=new TextEncoder().encode(e));let n="",r=e.byteLength;for(let t=0;t<r;t++)n+=String.fromCharCode(e[t]);return btoa(n)}var ea=new Uint8Array(16);var X=class{prefix;maxCaptureSize;originalConsole;logBuffer;constructor(n="",r=1e3){this.prefix=n,this.maxCaptureSize=r,this.logBuffer=[],this.prefix=n,this.originalConsole={log:console.log.bind(console),info:console.info.bind(console),warn:console.warn.bind(console),error:console.error.bind(console),debug:console.debug.bind(console)},this.patchConsole()}patchConsole(){let n=r=>(...t)=>{let o=this.prefix?[this.prefix,...t]:t;this.originalConsole[r](...o),this.captureLog(r,t)};console.log=n("log"),console.info=n("info"),console.warn=n("warn"),console.error=n("error"),console.debug=n("debug")}captureLog(n,r){let t={level:n,timestamp:Date.now(),message:r.map(o=>{if(typeof o=="string")return o;try{return JSON.stringify(o)}catch{return String(o)}}).join(" ")};this.logBuffer.push(t),this.logBuffer.length>this.maxCaptureSize&&this.logBuffer.shift()}async postToServer(n,r){if(this.logBuffer.length>0){let o=[...this.logBuffer];this.logBuffer=[];try{if(!(await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o.map(a=>({...a,source:r})))})).ok)throw new Error("Failed to post logs to server")}catch(i){console.warn("Could not post logs to server",i.message),this.logBuffer.unshift(...o)}}}},Ee;function ge(e=""){return Ee=new X(e),Ee}var Y=e=>{throw new Error("Not initialized yet")},te=typeof window>"u"&&typeof globalThis.WebSocketPair>"u";typeof Deno>"u"&&(self.Deno={args:[],build:{arch:"x86_64"},env:{get(){}}});var ne=new Map,ee=0;te&&(globalThis.syscall=async(e,...n)=>await new Promise((r,t)=>{ee++,ne.set(ee,{resolve:r,reject:t}),Y({type:"sys",id:ee,name:e,args:n})}));function Te(e,n,r){te&&(Y=r,self.addEventListener("message",t=>{(async()=>{let o=t.data;switch(o.type){case"inv":{let i=e[o.name];if(!i)throw new Error(`Function not loaded: ${o.name}`);try{let a=await Promise.resolve(i(...o.args||[]));Y({type:"invr",id:o.id,result:a})}catch(a){console.error("An exception was thrown as a result of invoking function",o.name,"error:",a.message),Y({type:"invr",id:o.id,error:a.message})}}break;case"sysr":{let i=o.id,a=ne.get(i);if(!a)throw Error("Invalid request id");ne.delete(i),o.error?a.reject(new Error(o.error)):a.resolve(o.result)}break}})().catch(console.error)}),Y({type:"manifest",manifest:n}),ge(`[${n.name} plug]`))}async function Tn(e,n){if(typeof e!="string"){let r=new Uint8Array(await e.arrayBuffer()),t=r.length>0?Q(r):void 0;n={method:e.method,headers:Object.fromEntries(e.headers.entries()),base64Body:t},e=e.url}return syscall("sandboxFetch.fetch",e,n)}globalThis.nativeFetch=globalThis.fetch;function hn(){globalThis.fetch=async function(e,n){let r=n&&n.body?Q(new Uint8Array(await new Response(n.body).arrayBuffer())):void 0,t=await Tn(e,n&&{method:n.method,headers:n.headers,base64Body:r});return new Response(t.base64Body?ye(t.base64Body):null,{status:t.status,headers:t.headers})}}te&&hn();var T={};z(T,{alert:()=>ot,configureVimMode:()=>St,confirm:()=>rt,copyToClipboard:()=>mt,deleteLine:()=>yt,dispatch:()=>nt,downloadFile:()=>_n,filterBox:()=>qn,flashNotification:()=>Hn,fold:()=>st,foldAll:()=>ct,getCurrentEditor:()=>xn,getCurrentPage:()=>Sn,getCurrentPageMeta:()=>An,getCurrentPath:()=>Cn,getCursor:()=>On,getRecentlyOpenedPages:()=>Dn,getSelection:()=>bn,getText:()=>Rn,getUiOption:()=>at,goHistory:()=>Vn,hidePanel:()=>Wn,insertAtCursor:()=>et,insertAtPos:()=>Jn,invokeCommand:()=>Nn,isMobile:()=>Ct,moveCursor:()=>Qn,moveCursorToLine:()=>Xn,moveLineDown:()=>Tt,moveLineUp:()=>gt,navigate:()=>Ln,newWindow:()=>Pn,openCommandPalette:()=>Yn,openPageNavigator:()=>zn,openSearchPanel:()=>vt,openUrl:()=>Bn,prompt:()=>tt,rebuildEditorState:()=>kn,redo:()=>ft,reloadConfigAndCommands:()=>Fn,reloadPage:()=>Kn,reloadUI:()=>Un,replaceRange:()=>Zn,save:()=>In,sendMessage:()=>At,setSelection:()=>wn,setText:()=>Mn,setUiOption:()=>it,showPanel:()=>jn,showProgress:()=>Gn,toggleComment:()=>Et,toggleFold:()=>ut,undo:()=>pt,unfold:()=>lt,unfoldAll:()=>dt,uploadFile:()=>$n,vimEx:()=>ht});typeof self>"u"&&(self={syscall:()=>{throw new Error("Not implemented here")}});function l(e,...n){return globalThis.syscall(e,...n)}function Sn(){return l("editor.getCurrentPage")}function An(){return l("editor.getCurrentPageMeta")}function Cn(){return l("editor.getCurrentPath")}function Dn(){return l("editor.getRecentlyOpenedPages")}function xn(){return l("editor.getCurrentEditor")}function Rn(){return l("editor.getText")}function Mn(e,n=!1){return l("editor.setText",e,n)}function On(){return l("editor.getCursor")}function bn(){return l("editor.getSelection")}function wn(e,n){return l("editor.setSelection",e,n)}function Nn(e,n){return l("editor.invokeCommand",e,n)}function In(){return l("editor.save")}function Ln(e,n=!1,r=!1){return l("editor.navigate",e,n,r)}function zn(e="page"){return l("editor.openPageNavigator",e)}function Yn(){return l("editor.openCommandPalette")}function Kn(){return l("editor.reloadPage")}function Un(){return l("editor.reloadUI")}function kn(){return l("editor.rebuildEditorState")}function Fn(){return l("editor.reloadConfigAndCommands")}function Bn(e,n=!1){return l("editor.openUrl",e,n)}function Pn(){return l("editor.newWindow")}function Vn(e){return l("editor.goHistory",e)}function _n(e,n){return l("editor.downloadFile",e,n)}function $n(e,n){return l("editor.uploadFile",e,n)}function Hn(e,n="info"){return l("editor.flashNotification",e,n)}function qn(e,n,r="",t=""){return l("editor.filterBox",e,n,r,t)}function jn(e,n,r,t=""){return l("editor.showPanel",e,n,r,t)}function Wn(e){return l("editor.hidePanel",e)}function Gn(e,n){return l("editor.showProgress",e,n)}function Jn(e,n){return l("editor.insertAtPos",e,n)}function Zn(e,n,r){return l("editor.replaceRange",e,n,r)}function Qn(e,n=!1){return l("editor.moveCursor",e,n)}function Xn(e,n=1,r=!1){return l("editor.moveCursorToLine",e,n,r)}function et(e,n=!1,r=!1){return l("editor.insertAtCursor",e,n,r)}function nt(e){return l("editor.dispatch",e)}function tt(e,n=""){return l("editor.prompt",e,n)}function rt(e){return l("editor.confirm",e)}function ot(e){return l("editor.alert",e)}function at(e){return l("editor.getUiOption",e)}function it(e,n){return l("editor.setUiOption",e,n)}function st(){return l("editor.fold")}function lt(){return l("editor.unfold")}function ut(){return l("editor.toggleFold")}function ct(){return l("editor.foldAll")}function dt(){return l("editor.unfoldAll")}function pt(){return l("editor.undo")}function ft(){return l("editor.redo")}function vt(){return l("editor.openSearchPanel")}function mt(e){return l("editor.copyToClipboard",e)}function yt(){return l("editor.deleteLine")}function Et(){return l("editor.toggleComment")}function gt(){return l("editor.moveLineUp")}function Tt(){return l("editor.moveLineDown")}function ht(e){return l("editor.vimEx",e)}function St(){return l("editor.configureVimMode")}function At(e,n){return l("editor.sendMessage",e,n)}function Ct(){return l("editor.isMobile")}var b={};z(b,{del:()=>bt,get:()=>Ot,set:()=>Mt});function Mt(e,n){return l("clientStore.set",e,n)}function Ot(e){return l("clientStore.get",e)}function bt(e){return l("clientStore.delete",e)}var ma=new Uint8Array(16);var K={};z(K,{batchDel:()=>Vt,batchDeletePrefix:()=>Ht,batchGet:()=>Bt,batchSet:()=>kt,del:()=>Pt,get:()=>Ft,listFunctions:()=>jt,query:()=>_t,queryDelete:()=>qt,queryLua:()=>$t,set:()=>Ut});function Ut(e,n){return l("datastore.set",e,n)}function kt(e){return l("datastore.batchSet",e)}function Ft(e){return l("datastore.get",e)}function Bt(e){return l("datastore.batchGet",e)}function Pt(e){return l("datastore.delete",e)}function Vt(e){return l("datastore.batchDelete",e)}function _t(e){return l("datastore.query",e)}function $t(e,n,r){return l("datastore.queryLua",e,n,r)}function Ht(e){return l("datastore.batchDeletePrefix",e)}function qt(e,n){return l("datastore.queryDelete",e,n)}function jt(){return l("datastore.listFunctions")}var U={};z(U,{define:()=>er,get:()=>Jt,has:()=>Xt,insert:()=>Qt,set:()=>Zt});function Jt(e,n){return l("config.get",e,n)}function Zt(e,n){return l("config.set",e,n)}function Qt(e,n){return l("config.insert",e,n)}function Xt(e){return l("config.has",e)}function er(e,n){return l("config.define",e,n)}var V={};z(V,{ensureFullIndex:()=>or,getObjectByRef:()=>rr,indexObjects:()=>nr,queryLuaObjects:()=>tr});function nr(e,n){return l("index.indexObjects",e,n)}function tr(e,n,r,t){return l("index.queryLuaObjects",e,n,r,t)}function rr(e,n,r){return l("index.getObjectByRef",e,n,r)}function or(){return l("index.ensureFullIndex")}function _(e){return e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0")+"-"+String(e.getDate()).padStart(2,"0")+"T"+String(e.getHours()).padStart(2,"0")+":"+String(e.getMinutes()).padStart(2,"0")+":"+String(e.getSeconds()).padStart(2,"0")+"."+String(e.getMilliseconds()).padStart(3,"0")}var A=e=>Object.fromEntries(Object.entries(e).map(([n,r])=>[r,n])),E=e=>Object.keys(e),Me={action:"ACTION",description:"DESCRIPTION",duration:"DURATION",repeat:"REPEAT",summary:"SUMMARY",trigger:"TRIGGER",attachments:"ATTACH",attendees:"ATTENDEE"},Oe=A(Me),Na=E(Oe),Ia=E(Me),be={method:"METHOD",prodId:"PRODID",version:"VERSION",name:"X-WR-CALNAME"},we=A(be),La=E(we),za=E(be),Ne={alarms:"ALARM",categories:"CATEGORIES",created:"CREATED",description:"DESCRIPTION",lastModified:"LAST-MODIFIED",location:"LOCATION",exceptionDates:"EXDATE",recurrenceRule:"RRULE",stamp:"DTSTAMP",start:"DTSTART",summary:"SUMMARY",uid:"UID",timeTransparent:"TRANSP",url:"URL",end:"DTEND",duration:"DURATION",geo:"GEO",class:"CLASS",organizer:"ORGANIZER",priority:"PRIORITY",sequence:"SEQUENCE",status:"STATUS",attach:"ATTACH",recurrenceId:"RECURRENCE-ID",attendees:"ATTENDEE",comment:"COMMENT"},Ie=A(Ne),Ya=E(Ie),Ka=E(Ne),Le={id:"TZID",lastModified:"LAST-MODIFIED",url:"TZURL"},ze=A(Le),Ua=E(ze),ka=E(Le),Ye={comment:"COMMENT",name:"TZNAME",offsetFrom:"TZOFFSETFROM",offsetTo:"TZOFFSETTO",recurrenceDate:"RDATE",recurrenceRule:"RRULE",start:"DTSTART"},Ke=A(Ye),Fa=E(Ke),Ba=E(Ye),Ue={byDay:"BYDAY",byHour:"BYHOUR",byMinute:"BYMINUTE",byMonth:"BYMONTH",byMonthday:"BYMONTHDAY",bySecond:"BYSECOND",bySetPos:"BYSETPOS",byWeekNo:"BYWEEKNO",byYearday:"BYYEARDAY",count:"COUNT",frequency:"FREQ",interval:"INTERVAL",until:"UNTIL",workweekStart:"WKST"},ke=A(Ue),Pa=E(ke),Va=E(Ue),Fe={categories:"CATEGORIES",created:"CREATED",description:"DESCRIPTION",lastModified:"LAST-MODIFIED",location:"LOCATION",exceptionDates:"EXDATE",recurrenceRule:"RRULE",stamp:"DTSTAMP",start:"DTSTART",summary:"SUMMARY",uid:"UID",url:"URL",duration:"DURATION",geo:"GEO",class:"CLASS",organizer:"ORGANIZER",priority:"PRIORITY",sequence:"SEQUENCE",status:"STATUS",attach:"ATTACH",recurrenceId:"RECURRENCE-ID",attendees:"ATTENDEE",comment:"COMMENT",completed:"COMPLETED",due:"DUE",percentComplete:"PERCENT-COMPLETE"},Be=A(Fe),_a=E(Be),$a=E(Fe),Pe={categories:"CATEGORIES",created:"CREATED",description:"DESCRIPTION",lastModified:"LAST-MODIFIED",exceptionDates:"EXDATE",recurrenceRule:"RRULE",stamp:"DTSTAMP",start:"DTSTART",summary:"SUMMARY",uid:"UID",url:"URL",geo:"GEO",class:"CLASS",organizer:"ORGANIZER",sequence:"SEQUENCE",status:"STATUS",attach:"ATTACH",recurrenceId:"RECURRENCE-ID",attendees:"ATTENDEE",comment:"COMMENT"},Ve=A(Pe),Ha=E(Ve),qa=E(Pe),_e={stamp:"DTSTAMP",start:"DTSTART",uid:"UID",url:"URL",organizer:"ORGANIZER",attendees:"ATTENDEE",comment:"COMMENT",end:"DTEND",freeBusy:"FREEBUSY"},$e=A(_e),ja=E($e),Wa=E(_e),He="BEGIN",qe="END",ar="VCALENDAR",je="VTIMEZONE",ir="STANDARD",sr="DAYLIGHT",We="VEVENT",Ge="VALARM",Je="VTODO",Ze="VJOURNAL",Qe="VFREEBUSY";var he=e=>new RegExp(`${He}:${e}([\\s\\S]*?)${qe}:${e}`,"g"),lr=e=>new RegExp(`${He}:${e}|${qe}:${e}`,"g");var oe=/\r\n|\r|\n/;var Se=`
`,ur=":",I=",",cr='"',ae=";";var Ae="=";var dr=Math.pow(10,8)*24*60*60*1e3,Ga=-dr,pr=6048e5;var Xe=6e4,en=36e5,fr=3600,nn=fr*24,Ja=nn*7,vr=nn*365.2425,mr=vr/12,Za=mr*3,Ce=Symbol.for("constructDateFrom");function S(e,n){return typeof e=="function"?e(n):e&&typeof e=="object"&&Ce in e?e[Ce](n):e instanceof Date?new e.constructor(n):new Date(n)}function d(e,n){return S(n||e,e)}function se(e,n,r){let t=d(e,r?.in);return isNaN(n)?S(r?.in||e,NaN):(n&&t.setDate(t.getDate()+n),t)}function tn(e,n,r){let t=d(e,r?.in);if(isNaN(n))return S(r?.in||e,NaN);if(!n)return t;let o=t.getDate(),i=S(r?.in||e,t.getTime());i.setMonth(t.getMonth()+n+1,0);let a=i.getDate();return o>=a?i:(t.setFullYear(i.getFullYear(),i.getMonth(),o),t)}function j(e,n,r){return S(r?.in||e,+d(e)+n)}function yr(e,n,r){return j(e,n*en,r)}var Er={};function W(){return Er}function H(e,n){var r,t,o,i;let a=W(),s=n?.weekStartsOn??((t=(r=n?.locale)==null?void 0:r.options)==null?void 0:t.weekStartsOn)??a.weekStartsOn??((i=(o=a.locale)==null?void 0:o.options)==null?void 0:i.weekStartsOn)??0,u=d(e,n?.in),c=u.getDay(),p=(c<s?7:0)+c-s;return u.setDate(u.getDate()-p),u.setHours(0,0,0,0),u}function gr(e,...n){let r=S.bind(null,e||n.find(t=>typeof t=="object"));return n.map(r)}function Tr(e,n){let r=d(e,n?.in);return r.setHours(0,0,0,0),r}function rn(e,n,r){let t=d(e,r?.in);return t.setTime(t.getTime()+n*Xe),t}function hr(e,n,r){return j(e,n*1e3,r)}function le(e,n,r){return se(e,n*7,r)}function on(e,n,r){return tn(e,n*12,r)}function ue(e,n){let r=+d(e)-+d(n);return r<0?-1:r>0?1:r}function De(e,n){let r=d(e,n?.in),t=r.getMonth();return r.setFullYear(r.getFullYear(),t+1,0),r.setHours(23,59,59,999),r}function Sr(e,n){let[r,t]=gr(e,n.start,n.end);return{start:r,end:t}}function Ar(e,n){let{start:r,end:t}=Sr(n?.in,e),o=+r>+t,i=o?+r:+t,a=o?t:r;a.setHours(0,0,0,0);let s=n?.step??1;if(!s)return[];s<0&&(s=-s,o=!o);let u=[];for(;+a<=i;)u.push(S(r,a)),a.setDate(a.getDate()+s),a.setHours(0,0,0,0);return o?u.reverse():u}function xe(e,n){let r=d(e,n?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function Cr(e,n){let r=d(e,n?.in),t=r.getFullYear();return r.setFullYear(t+1,0,0),r.setHours(23,59,59,999),r}function Dr(e,n){let r=d(e,n?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}function xr(e,n){var r,t,o,i;let a=d(e,n?.in),s=a.getFullYear(),u=W(),c=n?.firstWeekContainsDate??((t=(r=n?.locale)==null?void 0:r.options)==null?void 0:t.firstWeekContainsDate)??u.firstWeekContainsDate??((i=(o=u.locale)==null?void 0:o.options)==null?void 0:i.firstWeekContainsDate)??1,p=S(n?.in||e,0);p.setFullYear(s+1,0,c),p.setHours(0,0,0,0);let y=H(p,n),m=S(n?.in||e,0);m.setFullYear(s,0,c),m.setHours(0,0,0,0);let C=H(m,n);return+a>=+y?s+1:+a>=+C?s:s-1}function Rr(e,n){var r,t,o,i;let a=W(),s=n?.firstWeekContainsDate??((t=(r=n?.locale)==null?void 0:r.options)==null?void 0:t.firstWeekContainsDate)??a.firstWeekContainsDate??((i=(o=a.locale)==null?void 0:o.options)==null?void 0:i.firstWeekContainsDate)??1,u=xr(e,n),c=S(n?.in||e,0);return c.setFullYear(u,0,s),c.setHours(0,0,0,0),H(c,n)}function Mr(e,n){let r=d(e,n?.in),t=+H(r,n)-+Rr(r,n);return Math.round(t/pr)+1}function $(e,n){return d(e,n?.in).getDay()}function an(e,n){let r=d(e,n?.in),t=r.getFullYear(),o=r.getMonth(),i=S(r,0);return i.setFullYear(t,o+1,0),i.setHours(0,0,0,0),i.getDate()}function Or(e,n){return d(e,n?.in).getHours()}function br(e,n){return d(e,n?.in).getMinutes()}function sn(e,n){return d(e,n?.in).getMonth()}function wr(e){return d(e).getSeconds()}function Nr(e,n){return d(e,n?.in).getFullYear()}function Ir(e,n){return+d(e)==+d(n)}function Lr(e,n,r){let t=d(e,r?.in),o=Mr(t,r)-n;return t.setDate(t.getDate()-o*7),d(t,r?.in)}function q(e,n,r){var t,o,i,a;let s=W(),u=r?.weekStartsOn??((o=(t=r?.locale)==null?void 0:t.options)==null?void 0:o.weekStartsOn)??s.weekStartsOn??((a=(i=s.locale)==null?void 0:i.options)==null?void 0:a.weekStartsOn)??0,c=d(e,r?.in),p=c.getDay(),y=(n%7+7)%7,m=7-u,C=n<0||n>6?n-(p+m)%7:(y+m)%7-(p+m)%7;return se(c,C,r)}function ln(e,n,r){let t=+d(e,r?.in),[o,i]=[+d(n.start,r?.in),+d(n.end,r?.in)].sort((a,s)=>a-s);return t>=o&&t<=i}function zr(e){let n=e/en;return Math.trunc(n)}function Yr(e){let n=e/Xe;return Math.trunc(n)}function Kr(e,n,r){let t=d(e,r?.in),o=t.getFullYear(),i=t.getDate(),a=S(r?.in||e,0);a.setFullYear(o,n,15),a.setHours(0,0,0,0);let s=an(a);return t.setMonth(n,Math.min(i,s)),t}function Ur(e,n,r){let t=d(e,r?.in);return t.setDate(n),t}function kr(e,n,r){let t=d(e,r?.in);return t.setMonth(0),t.setDate(n),t}function Fr(e,n,r){let t=d(e,r?.in);return t.setHours(n),t}function Br(e,n,r){let t=d(e,r?.in);return t.setMinutes(n),t}function Pr(e,n,r){let t=d(e,r?.in);return t.setSeconds(n),t}function Vr(e,n,r){return j(e,-n,r)}function _r(e,n,r){return le(e,-n,r)}var $r=[ir,sr];var Hr=["SECONDLY","MINUTELY","HOURLY","DAILY","WEEKLY","MONTHLY","YEARLY"];var un=["SU","MO","TU","WE","TH","FR","SA"];var w=(e,n)=>n===void 0?!1:e>=n,qr=(e,{start:n,end:r},t)=>{if(w(t.length,e.count))return;let o=e.frequency,i=e.interval||1;if(!o)return;let a=n;if(o==="SECONDLY"){for(;a<r;){if(w(t.length,e.count))return;a=hr(a,i),t.push([a])}return}if(o==="MINUTELY"){for(;a<r;){if(w(t.length,e.count))return;a=rn(a,i),t.push([a])}return}if(o==="HOURLY"){for(;a<r;){if(w(t.length,e.count))return;a=yr(a,i),t.push([a])}return}if(o==="DAILY"){for(;a<r;){if(w(t.length,e.count))return;a=se(a,i),t.push([a])}return}if(o==="WEEKLY"){for(;a<r;){if(w(t.length,e.count))return;a=le(a,i),t.push([a])}return}if(o==="MONTHLY"){for(;a<r;)a=tn(a,i),t.push([a]);return}if(o==="YEARLY"){for(;a<r;)a=on(a,i),t.push([a]);return}},jr=(e,n,r,t)=>{let o=r.map(({day:i,occurrence:a})=>({occurrence:a,day:un.indexOf(i)}));return e.frequency==="YEARLY"?e.byYearday||e.byMonthday?n.map(i=>i.filter(a=>o.find(({day:s})=>s===$(a)))):e.byWeekNo?n.map(i=>i.flatMap(a=>o.map(({day:s})=>q(a,s,{weekStartsOn:t})))):e.byMonth?n.map(i=>i.flatMap(a=>o.flatMap(({day:s,occurrence:u})=>re(D(xe(a)),D(De(a)),s,t,u)))):n.map(i=>i.flatMap(a=>o.flatMap(({day:s,occurrence:u})=>re(D(Dr(a)),D(Cr(a)),s,t,u)))):e.frequency==="MONTHLY"?e.byMonthday?n.map(i=>i.filter(a=>o.find(({day:s})=>s===$(a)))):n.map(i=>i.flatMap(a=>o.flatMap(({day:s,occurrence:u})=>re(D(xe(a)),D(De(a)),s,t,u)))):e.frequency==="WEEKLY"?n.map(i=>i.flatMap(a=>o.map(({day:s})=>q(a,s,{weekStartsOn:t})))):n.map(i=>i.filter(a=>o.find(({day:s})=>s===$(a))))},re=(e,n,r,t,o)=>{if(o!==void 0){if(!(o<0)){let s=q(e,r,{weekStartsOn:t}),u=e>s;return le(s,(o||1)-1+(u?1:0))}let i=q(n,r,{weekStartsOn:t}),a=n<i;return D(Tr(_r(i,-(o||1)-1+(a?1:0))))}return Ar({start:e,end:n}).map(i=>D(i)).filter(i=>ln(i,{start:e,end:n})).filter(i=>r===$(i))},D=e=>rn(e,-e.getTimezoneOffset()),Wr=(e,n,r)=>e.frequency==="YEARLY"||e.frequency==="MONTHLY"||e.frequency==="WEEKLY"||e.frequency==="DAILY"?n.map(t=>t.flatMap(o=>r.map(i=>Fr(o,i)))):n.map(t=>t.filter(o=>r.includes(Or(o)))),Gr=(e,n,r)=>e.frequency==="YEARLY"||e.frequency==="MONTHLY"||e.frequency==="WEEKLY"||e.frequency==="DAILY"||e.frequency==="HOURLY"?n.map(t=>t.flatMap(o=>r.map(i=>Br(o,i)))):n.map(t=>t.filter(o=>r.includes(br(o)))),Jr=(e,n,r)=>e.frequency==="YEARLY"?n.map(t=>t.flatMap(o=>r.map(i=>Kr(o,i)))):n.map(t=>t.filter(o=>r.includes(sn(o)))),Zr=(e,n,r)=>e.frequency==="YEARLY"||e.frequency==="MONTHLY"?n.map(t=>t.flatMap(o=>{let i=an(o);return r.map(a=>a>i?void 0:Ur(o,a)).filter(a=>!!a)})):e.frequency==="WEEKLY"?n:n.map(t=>t.filter(o=>r.includes(sn(o)))),Qr=(e,n,r)=>e.frequency==="YEARLY"||e.frequency==="MONTHLY"||e.frequency==="WEEKLY"||e.frequency==="DAILY"||e.frequency==="HOURLY"||e.frequency==="MINUTELY"?n.map(t=>t.flatMap(o=>r.map(i=>Pr(o,i)))):n.map(t=>t.filter(o=>r.includes(wr(o)))),Xr=(e,n,r)=>!e.byYearday&&!e.byWeekNo&&!e.byMonthday&&!e.byMonth&&!e.byDay&&!e.byHour&&!e.byMinute&&!e.bySecond?n:n.map(t=>t.sort(ue).filter((o,i)=>r.some(a=>a>0?i===0?!1:i%a===0:i===0?t.length-1+a===0:i%(t.length-1+a)===0))),eo=(e,n,r,t)=>e.frequency==="YEARLY"?n.map(o=>o.flatMap(i=>r.map(a=>Lr(i,a,{weekStartsOn:t})))):n,no=(e,n,r)=>e.frequency==="YEARLY"?n.map(t=>t.flatMap(o=>r.map(i=>kr(o,i)))):e.frequency==="MONTHLY"||e.frequency==="WEEKLY"||e.frequency==="DAILY"?n:n.map(t=>t.filter(o=>r.includes(Nr(o)))),to=(e,n,r)=>{let t=r;return e.byMonth&&(t=Jr(e,t,e.byMonth)),e.byWeekNo&&(t=eo(e,t,e.byWeekNo,n.weekStartsOn)),e.byYearday&&(t=no(e,t,e.byYearday)),e.byMonthday&&(t=Zr(e,t,e.byMonthday)),e.byDay&&(t=jr(e,t,e.byDay,n.weekStartsOn)),e.byHour&&(t=Wr(e,t,e.byHour)),e.byMinute&&(t=Gr(e,t,e.byMinute)),e.bySecond&&(t=Qr(e,t,e.bySecond)),e.bySetPos&&(t=Xr(e,t,e.bySetPos)),t.map(o=>o.sort(ue).filter(i=>!(n.exceptions.length>0&&n.exceptions.some(a=>Ir(a,i))||!ln(i,{start:n.start,end:n.end}))))},ro=2,oo=(e,n)=>{var r;let t=n.start,o=((r=e.until)==null?void 0:r.date)||n?.end||on(t,ro),i=n.exceptions||[],a=(e.workweekStart?un.indexOf(e.workweekStart):1)%7,s=[[t]];qr(e,{start:t,end:o},s);let u=to(e,{start:t,end:o,exceptions:i,weekStartsOn:a},s);return e.count?u.flat().splice(0,e.count):u.flat()},ao=(e,n)=>n.flatMap(r=>!r.recurrenceRule||r.recurrenceRule.until&&r.recurrenceRule.until.date<e?r:oo(r.recurrenceRule,{start:r.start,end:e}).map(t=>({...r,start:t}))),ie=e=>{let n=e[0]==="+"?1:-1,r=Number(e.slice(1,3)),t=e.length>3?Number(e.slice(3,5)):0,o=e.length>5?Number(e.slice(5,7)):0;return((r*60+t)*60+o)*1e3*n},io=(e,n)=>{let r="en-US",t=new Date(n.toLocaleString(r,{timeZone:"UTC"}));try{return new Date(n.toLocaleString(r,{timeZone:e})).getTime()-t.getTime()}catch{return n.getTime()-t.getTime()}},so=(e,n,r)=>{let t=r?.find(i=>i.id===n);if(t){let i=ao(e,t.props).sort((u,c)=>ue(u.start,c.start));for(let u=0;u<i.length;u+=1)if(e<i[u].start){let c=i[u-1]?i[u-1].offsetTo:i[u].offsetFrom,p=c.length>5?c.substring(0,5):c;return{offset:p,milliseconds:ie(p)}}let a=i[i.length-1].offsetTo,s=a.length>5?a.substring(0,5):a;return{offset:s,milliseconds:ie(s)}}let o=io(n,e);if(!Number.isNaN(o)){let i=o<0,a=Math.abs(zr(o)),s=Math.abs(Yr(o))-a*60,u=a.toString().length===1?`0${a}`:a.toString(),c=s.toString().length===1?`0${s}`:s.toString();return{offset:`${i?"-":"+"}${u}${c}`,milliseconds:o}}};var f=(e,n)=>{if(e===void 0)return n;let r=e["~standard"].validate(n);if(r instanceof Promise)throw new TypeError("Schema validation must be synchronous");if(r.issues)throw new Error(JSON.stringify(r.issues,null,2));return r.value},lo=(e,n)=>{var r,t,o,i;let a=((r=n.options)==null?void 0:r.VALUE)==="BINARY"?{type:"binary",encoding:((t=n.options)==null?void 0:t.ENCODING)||"BASE64",binary:n.value,value:(o=n.options)==null?void 0:o.VALUE}:{type:"uri",url:n.value,formatType:(i=n.options)==null?void 0:i.FMTTYPE};return f(e,a)},N=e=>e.replace(/mailto:/gi,""),B=(e,n)=>{var r,t,o,i,a,s,u,c,p,y,m;return f(e,{email:N(n.value),delegatedFrom:(r=n.options)!=null&&r["DELEGATED-FROM"]?N((t=n.options)==null?void 0:t["DELEGATED-FROM"]):void 0,dir:(o=n.options)==null?void 0:o.DIR,member:(i=n.options)!=null&&i.MEMBER?N(n.options.MEMBER):void 0,name:(a=n.options)==null?void 0:a.CN,partstat:(s=n.options)==null?void 0:s.PARTSTAT,role:(u=n.options)==null?void 0:u.ROLE,sentBy:(c=n.options)!=null&&c["SENT-BY"]?N(n.options["SENT-BY"]):void 0,rsvp:(p=n.options)!=null&&p.RSVP?((y=n.options)==null?void 0:y.RSVP)==="TRUE"?!0:((m=n.options)==null?void 0:m.RSVP)==="FALSE"?!1:void 0:void 0})},P=(e,n)=>{let r=n.value,t={};r[0]==="-"&&(t.before=!0,r=r.slice(1)),r=r.slice(1);let o=r.split("T"),i=o[0];if(i.includes("D")){let[s,u]=i.split("D");t.days=Number(s),i=u}if(i.includes("W")){let[s,u]=i.split("W");t.weeks=Number(s),i=u}let a=o[1];if(a){if(a.includes("H")){let[s,u]=a.split("H");t.hours=Number(s),a=u}if(a.includes("M")){let[s,u]=a.split("M");t.minutes=Number(s),a=u}if(a.includes("S")){let[s,u]=a.split("S");t.seconds=Number(s),a=u}}return f(e,t)},uo=(e,n)=>{let r=Number.parseInt(n.value.slice(0,4),10),t=Number.parseInt(n.value.slice(4,6),10)-1,o=Number.parseInt(n.value.slice(6,8),10),i=new Date(Date.UTC(r,t,o));return f(e,i)},k=(e,n)=>{let r=Number.parseInt(n.value.slice(0,4),10),t=Number.parseInt(n.value.slice(4,6),10)-1,o=Number.parseInt(n.value.slice(6,8),10),i=Number.parseInt(n.value.slice(9,11),10),a=Number.parseInt(n.value.slice(11,13),10),s=Number.parseInt(n.value.slice(13,15),10),u=new Date(Date.UTC(r,t,o,i,a,s));return f(e,u)},co=(e,n,r)=>{let t=ie(r),o=k(void 0,n),i=Vr(o,t);return f(e,i)},po=(e,n)=>{var r,t,o,i,a,s;if(((r=e.options)==null?void 0:r.VALUE)==="DATE")return{date:uo(void 0,e),type:(t=e.options)==null?void 0:t.VALUE};let u=((o=e.options)==null?void 0:o.VALUE)||"DATE-TIME",c=k(void 0,e);if(!((i=e.options)!=null&&i.TZID))return{date:c,type:u};let p=so(c,e.options.TZID,n?.timezones);return p?{date:j(c,-p.milliseconds),type:u,local:(a=e.options)!=null&&a.TZID?{date:c,timezone:(s=e.options)==null?void 0:s.TZID,tzoffset:p.offset}:void 0}:{date:c,type:u}},v=(e,n,r)=>f(e,po(n,r)),fo=(e,n,r)=>{var t,o,i,a;let s=((t=n.options)==null?void 0:t.VALUE)==="DATE-TIME"||((o=n.options)==null?void 0:o.VALUE)==="DATE"?{type:"absolute",value:v(void 0,n,r),options:{related:(i=n.options)==null?void 0:i.RELATED}}:{type:"relative",value:P(void 0,n),options:{related:(a=n.options)==null?void 0:a.RELATED}};return f(e,s)},vo=e=>e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e,cn=e=>e.map(n=>{let[r,...t]=n.split(Ae),o=t.join(Ae);return{property:r,value:vo(o)}},{}),mo=e=>e.reduce((n,r)=>(n[r.property]=r.value,n),{}),yo=e=>mo(cn(e)),Eo=e=>{let n=!1,r;for(let i=0;i<e.length&&r===void 0;i+=1)e.charAt(i)===cr&&(n=!n),e.charAt(i)===ur&&!n&&(r=i);if(r===void 0)throw Error(`Line not valid: ${e}`);let t=e.substring(0,r),o=e.substring(r+1);return{property:t,value:o}},go=e=>{let{property:n,value:r}=Eo(e);if(n.includes(ae)){let[t,...o]=n.split(ae),i=yo(o);return{property:t,line:{options:i,value:r}}}return{property:n,line:{value:r}}},Re=e=>/^[ \t]/.test(e),To=e=>/^[A-Z]+(?:-[A-Z]+)*[:;]/.test(e),ho=e=>{let n=[],r=e.split(oe);for(;r[0]==="";)r.shift();let t=r.length;for(;t>0&&r[t-1]==="";)t-=1,r.pop();for(let o=0;o<r.length;){let i=r[o];for(o+=1;r[o]!==void 0&&(Re(r[o])||!To(r[o]));)r[o]===""?i+=Se:Re(r[o])?i+=r[o].substring(1):(i+=Se,i+=r[o]),o+=1;n.push(i)}return n.filter(o=>o!=="")},So=(e,n,r)=>{if(!n)return e;let t={};return Object.entries(n).forEach(([o,i])=>{let a=Object.entries(r||{}).find(([c,p])=>p.name===o);if(!a){t[Ao(o)]=i.value;return}let s=a[1].convert(i),u=a[1].schema;if(!u){t[a[0]]=s;return}t[a[0]]=f(u,s)}),e.nonStandard=t,e},Ao=e=>{let n=e.startsWith("X-")?e.slice(2):e,r="",t=!1;for(let o of n)o==="-"?t=!0:(r+=t?o.toUpperCase():o.toLowerCase(),t=!1);return r},Co=e=>e.startsWith("X-"),x=(e,n,r)=>{let t=n.replace(lr(r?.icsComponent),""),o=[...new Set(Object.values(r.childComponents||{}).flatMap(({icsComponent:y})=>y))],i=ho(o.reduce((y,m)=>y.replace(he(m),""),t)),a=r.defaultValues||{},s={};i.forEach(y=>{var m,C;let{property:R,line:M}=go(y);Co(R)&&(s[R]=M);let g=r.objectKeyMap[R];if(!g)return;let L=(m=r.convertArrayValues)==null?void 0:m[g];if(L){let O=L({line:M});if(!O)return;(a[g]===void 0||a[g]===null||!Array.isArray(a[g]))&&(a[g]=[]),Array.isArray(O)?a[g].push(...O):a[g].push(O);return}let me=(C=r.convertValues)==null?void 0:C[g];if(me){let O=me({line:M});if(!O)return;a[g]=O;return}a[g]=M.value});let u=r.childComponents,c=u?Object.keys(u||{}):[];u&&c.length>0&&c.forEach(y=>{let m=u?.[y];if(!m)return;let C=Array.isArray(m.icsComponent)?m.icsComponent:[m.icsComponent],R=[],M=[];C.forEach(g=>{M.push(...t.matchAll(he(g)))}),M.map(g=>g[0]).forEach(g=>{let L=m.convert(g,{data:a});L&&R.push(L)}),R.length!==0&&(a[y]=R)});let p=f(e,a);return r!=null&&r.nonStandard?So(p,s,r?.nonStandard):p},G=(e,n)=>{var r,t,o;return f(e,{name:(r=n.options)==null?void 0:r.CN,dir:(t=n.options)==null?void 0:t.DIR,sentBy:(o=n.options)!=null&&o["SENT-BY"]?N(n.options["SENT-BY"]):void 0,email:N(n.value)})},ce=(e,n,r)=>{var t;return f(e,{value:v(void 0,n,r),range:(t=n.options)==null?void 0:t.RANGE})},Do=e=>{if(e.length===2)return{day:e};let n=e.slice(0,-2);return{day:e.replace(n,""),occurrence:Number(n)}},xo=(e,n)=>f(e,Do(n.value)),Ro=(e,n)=>f(e,n.value),Mo=["until"],Oo=e=>Mo.includes(e),bo=["bySecond","byMinute","byHour","byMonthday","byYearday","byWeekNo","bySetPos"],wo=e=>bo.includes(e),No=["byDay"],Io=e=>No.includes(e),Lo=["count","interval"],zo=e=>Lo.includes(e),J=(e,n,r)=>{let t={};return cn(n.value.split(ae)).forEach(o=>{let{property:i,value:a}=o,s=ke[i];if(s){if(Oo(s)){t[s]=v(void 0,{value:a,options:{VALUE:a.includes("T")?"DATE-TIME":"DATE"}},{timezones:r?.timezones});return}if(wo(s)){t[s]=a.split(I).map(u=>Number(u));return}if(s==="byMonth"){t[s]=a.split(I).map(u=>Number(u)-1);return}if(Io(s)){t[s]=a.split(I).map(u=>xo(void 0,{value:u}));return}if(zo(s)){t[s]=Number(a);return}if(s==="frequency"){if(!a||!Hr.includes(a))return;t[s]=a;return}if(s==="workweekStart"){t[s]=Ro(void 0,{value:a});return}}}),f(e,t)},de=(e,n)=>f(e,n.value),Yo=(e,n)=>f(e,n.value),pe=(e,n,r)=>f(e,n.value.split(",").map(t=>v(void 0,{value:t,options:n.options},r))),Ko=(e,n)=>f(e,n.value),Uo=(e,n)=>f(e,n.value),ko=(e,n)=>f(e,n.value),F=(e,n)=>f(e,Number.parseInt(n.value,10)),Fo=e=>e.replace(/\\(([,;\\])|([nN]))/g,(n,r,t)=>t||`
`),h=(e,n)=>f(e,Fo(n.value)),Bo=(...e)=>{let[n,r,t]=e;return x(n,r,{icsComponent:Ge,objectKeyMap:Oe,convertValues:{trigger:({line:o})=>fo(void 0,o,{timezones:t?.timezones}),duration:({line:o})=>P(void 0,o),repeat:({line:o})=>F(void 0,o)},convertArrayValues:{attachments:({line:o})=>lo(void 0,o),attendees:({line:o})=>B(void 0,o)},nonStandard:t?.nonStandard,timezones:t?.timezones})},Po=(...e)=>{let[n,r,t]=e,o,i=x(n,r,{icsComponent:We,objectKeyMap:Ie,convertValues:{stamp:({line:a})=>v(void 0,a,{timezones:t?.timezones}),start:({line:a})=>v(void 0,a,{timezones:t?.timezones}),end:({line:a})=>v(void 0,a,{timezones:t?.timezones}),created:({line:a})=>v(void 0,a,{timezones:t?.timezones}),lastModified:({line:a})=>v(void 0,a,{timezones:t?.timezones}),categories:({line:a})=>a.value.split(I),description:({line:a})=>{var s;return(s=a.options)!=null&&s.ALTREP&&(o=a.options.ALTREP),h(void 0,a)},location:({line:a})=>h(void 0,a),comment:({line:a})=>h(void 0,a),summary:({line:a})=>h(void 0,a),recurrenceRule:({line:a})=>J(void 0,a,{timezones:t?.timezones}),duration:({line:a})=>P(void 0,a),organizer:({line:a})=>G(void 0,a),sequence:({line:a})=>F(void 0,a),class:({line:a})=>de(void 0,a),recurrenceId:({line:a})=>ce(void 0,a,{timezones:t?.timezones}),status:({line:a})=>Ko(void 0,a),timeTransparent:({line:a})=>Yo(void 0,a)},convertArrayValues:{attendees:({line:a})=>B(void 0,a),exceptionDates:({line:a})=>pe(void 0,a,{timezones:t?.timezones})},childComponents:{alarms:{icsComponent:Ge,convert:a=>Bo(void 0,a,{nonStandard:t?.nonStandard,timezones:t?.timezones})}},timezones:t?.timezones,nonStandard:t?.nonStandard});return o&&(i.descriptionAltRep=o),i},Vo=(...e)=>{let[n,r,t]=e,o=r.split("BEGIN:")[1].split(oe)[0],i=$r.includes(o)?o:"STANDARD",a=r.split("TZOFFSETTO:")[1].split(oe)[0];return x(n,r,{icsComponent:i,objectKeyMap:Ke,defaultValues:{type:i},convertValues:{start:({line:s})=>co(void 0,s,a),recurrenceRule:({line:s})=>J(void 0,s,{timezones:t?.timezones}),recurrenceDate:({line:s})=>v(void 0,s,{timezones:t?.timezones})},nonStandard:t?.nonStandard,timezones:t?.timezones})},_o=(...e)=>{let[n,r,t]=e;return x(n,r,{icsComponent:je,objectKeyMap:ze,convertValues:{lastModified:({line:o})=>k(void 0,o)},childComponents:{props:{icsComponent:["DAYLIGHT","STANDARD"],convert:o=>Vo(void 0,o,{nonStandard:t?.nonStandard,timezones:t?.timezones})}},nonStandard:t?.nonStandard,timezones:t?.timezones})},$o=(...e)=>{let[n,r,t]=e;return x(n,r,{icsComponent:Je,objectKeyMap:Be,convertValues:{stamp:({line:o})=>v(void 0,o,{timezones:t?.timezones}),start:({line:o})=>v(void 0,o,{timezones:t?.timezones}),due:({line:o})=>v(void 0,o,{timezones:t?.timezones}),created:({line:o})=>v(void 0,o,{timezones:t?.timezones}),lastModified:({line:o})=>v(void 0,o,{timezones:t?.timezones}),completed:({line:o})=>v(void 0,o,{timezones:t?.timezones}),categories:({line:o})=>o.value.split(I),description:({line:o})=>h(void 0,o),location:({line:o})=>h(void 0,o),comment:({line:o})=>h(void 0,o),summary:({line:o})=>h(void 0,o),recurrenceRule:({line:o})=>J(void 0,o,{timezones:t?.timezones}),duration:({line:o})=>P(void 0,o),organizer:({line:o})=>G(void 0,o),sequence:({line:o})=>F(void 0,o),percentComplete:({line:o})=>F(void 0,o),class:({line:o})=>de(void 0,o),recurrenceId:({line:o})=>ce(void 0,o,{timezones:t?.timezones}),status:({line:o})=>Uo(void 0,o)},convertArrayValues:{attendees:({line:o})=>B(void 0,o),exceptionDates:({line:o})=>pe(void 0,o,{timezones:t?.timezones})},nonStandard:t?.nonStandard,timezones:t?.timezones})},Ho=(...e)=>{let[n,r,t]=e;return x(n,r,{icsComponent:Ze,objectKeyMap:Ve,convertValues:{stamp:({line:o})=>v(void 0,o,{timezones:t?.timezones}),start:({line:o})=>v(void 0,o,{timezones:t?.timezones}),created:({line:o})=>v(void 0,o,{timezones:t?.timezones}),lastModified:({line:o})=>v(void 0,o,{timezones:t?.timezones}),categories:({line:o})=>o.value.split(I),description:({line:o})=>h(void 0,o),comment:({line:o})=>h(void 0,o),summary:({line:o})=>h(void 0,o),recurrenceRule:({line:o})=>J(void 0,o,{timezones:t?.timezones}),organizer:({line:o})=>G(void 0,o),sequence:({line:o})=>F(void 0,o),class:({line:o})=>de(void 0,o),recurrenceId:({line:o})=>ce(void 0,o,{timezones:t?.timezones}),status:({line:o})=>ko(void 0,o)},convertArrayValues:{attendees:({line:o})=>B(void 0,o),exceptionDates:({line:o})=>pe(void 0,o,{timezones:t?.timezones})},nonStandard:t?.nonStandard,timezones:t?.timezones})},qo=(e,n)=>{var r;return f(e,{type:(r=n.options)==null?void 0:r.FBTYPE,values:n.value.split(",").map(t=>{let[o,i]=t.split("/"),a=k(void 0,{value:o});if(i.startsWith("PT")){let u=P(void 0,{value:i});return{start:a,duration:u}}let s=k(void 0,{value:i});return{start:a,end:s}})})},jo=(...e)=>{let[n,r,t]=e;return x(n,r,{icsComponent:Qe,objectKeyMap:$e,convertValues:{stamp:({line:o})=>v(void 0,o,{timezones:t?.timezones}),start:({line:o})=>v(void 0,o,{timezones:t?.timezones}),end:({line:o})=>v(void 0,o,{timezones:t?.timezones}),comment:({line:o})=>h(void 0,o),organizer:({line:o})=>G(void 0,o)},convertArrayValues:{attendees:({line:o})=>B(void 0,o),freeBusy:({line:o})=>qo(void 0,o)},nonStandard:t?.nonStandard,timezones:t?.timezones})},dn=(...e)=>{let[n,r,t]=e;return x(n,r,{icsComponent:ar,objectKeyMap:we,convertValues:{version:({line:o})=>o.value},childComponents:{timezones:{icsComponent:je,convert:o=>_o(void 0,o,{nonStandard:t?.nonStandard})},events:{icsComponent:We,convert:(o,{data:i})=>Po(void 0,o,{nonStandard:t?.nonStandard,timezones:i.timezones})},todos:{icsComponent:Je,convert:(o,{data:i})=>$o(void 0,o,{nonStandard:t?.nonStandard,timezones:i.timezones})},journals:{icsComponent:Ze,convert:(o,{data:i})=>Ho(void 0,o,{nonStandard:t?.nonStandard,timezones:i.timezones})},freeBusy:{icsComponent:Qe,convert:(o,{data:i})=>jo(void 0,o,{nonStandard:t?.nonStandard,timezones:i.timezones})}},nonStandard:t?.nonStandard})};var pn="0.2.8",Z="icalendar:lastSync",Wo=21600;console.log(`[iCalendar] Plug loading (Version ${pn})...`);console.log(`[iCalendar] Environment Timezone Offset: ${new Date().getTimezoneOffset()} minutes`);function Go(e){return e&&typeof e=="object"&&"date"in e&&"type"in e}async function Jo(e){let r=new TextEncoder().encode(e),t=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(t)).map(i=>i.toString(16).padStart(2,"0")).join("")}function fe(e,n){if(e==null)return e;if(e instanceof Date){let r=_(e);return console.log(`[iCalendar] Localizing Date Object: UTC=${e.toISOString()} -> PST=${r}`),r}if(Go(e)&&e.date instanceof Date){let r=_(e.date);return console.log(`[iCalendar] Localizing ICS Date Object: UTC=${e.date.toISOString()} -> PST=${r} (TZID: ${e.timezone||"none"})`),r}if(typeof e=="string"&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(e))return console.log(`[iCalendar] Localizing ISO String: ${e}`),_(new Date(e));if(Array.isArray(e))return e.map(r=>fe(r,n));if(typeof e=="object"){let r={};for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=fe(e[t],n));return r}return e}async function Zo(){let e=await U.get("icalendar",{sources:[]});if(!e.sources)return[];let n=e.sources;Array.isArray(n)||(n=[n]);let r=[];for(let t of n){if(typeof t.url!="string"){console.error("[iCalendar] Invalid source (missing url):",t);continue}r.push({url:t.url,name:typeof t.name=="string"?t.name:void 0})}return r}async function Qo(e){let n=e.url.trim(),r=/\s/g;if(r.test(n)){let s=n.match(r)?.map(u=>u.charCodeAt(0)).join(", ");console.log(`[iCalendar] URL contains whitespace (charCodes: ${s}), encoding: "${n}"`),n=n.replace(/\s/g,u=>encodeURIComponent(u))}console.log(`[iCalendar] Fetching: ${n}`);let t=await fetch(n,{headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}});if(!t.ok){let s=(await t.text()).slice(0,200).replace(/\n/g," ");throw console.error(`[iCalendar] HTTP ${t.status} Error:`,{url:n,status:t.status,statusText:t.statusText,bodyPreview:s}),new Error(`HTTP ${t.status}: ${t.statusText||"Error"} - ${s}`)}let o=await t.text();console.log(`[iCalendar] Raw ICS Snippet (first 500 chars): ${o.slice(0,500).replace(/\n/g," ")}`);let i=dn(void 0,o);return!i.events||i.events.length===0?[]:await Promise.all(i.events.map(async a=>{a.uid==="040000008200E00074C5B7101A82E0080000000010E384DCAC84DC0100000000000000001000000014AC664AB867C74D85FC0B77E881C5AE"&&console.log("[iCalendar] Found target UID event:",JSON.stringify(a,null,2));let s=`${a.start?.date||""}${a.uid||a.summary||""}`,u=await Jo(s);return fe({...a,ref:u,tag:"ical-event",sourceName:e.name},i.timezones)}))}async function ve(){try{let r=((await U.get("icalendar",{sources:[]})).cacheDuration??Wo)*1e3,t=await Zo();if(t.length===0)return;let o=await b.get(Z),i=Date.now();if(o&&i-o<r){let c=Math.round((i-o)/1e3);console.log(`[iCalendar] Using cached data (${c}s old)`);return}console.log(`[iCalendar] Syncing ${t.length} calendar source(s)...`),await T.flashNotification("Syncing calendars...","info");let a=[],s=0;for(let c of t){let p=c.name||c.url;try{let y=await Qo(c);a.push(...y),s++}catch(y){console.error(`[iCalendar] Failed to sync "${p}":`,y),await T.flashNotification(`Failed to sync "${p}"`,"error")}}await V.indexObjects("$icalendar",a),await b.set(Z,i);let u=`Synced ${a.length} events from ${s}/${t.length} source(s)`;console.log(`[iCalendar] ${u}`),await T.flashNotification(u,"info")}catch(e){console.error("[iCalendar] Sync failed:",e),await T.flashNotification("Failed to sync calendars","error")}}async function fn(){await b.del(Z),console.log("[iCalendar] Cache cleared, forcing fresh sync"),await T.flashNotification("Forcing fresh calendar sync...","info"),await ve()}async function vn(){if(await T.confirm("Are you sure you want to clear all calendar events and cache? This will remove all indexed calendar data."))try{let e="$icalendar";console.log("[iCalendar] Clearing index for",e);let n="idx",r="ridx",t=[],o=await K.query({prefix:[r,e]});for(let{key:i}of o)t.push(i),t.push([n,...i.slice(2),e]);t.length>0&&(await K.batchDel(t),console.log("[iCalendar] Deleted",t.length,"entries")),await b.del(Z),console.log("[iCalendar] Calendar index and cache cleared"),await T.flashNotification("Calendar index and cache cleared","info")}catch(e){console.error("[iCalendar] Failed to clear cache:",e),await T.flashNotification(`Failed to clear cache: ${e instanceof Error?e.message:String(e)}`,"error")}}async function mn(){await T.flashNotification(`iCalendar Plug ${pn}`,"info")}var yn={syncCalendars:ve,forceSync:fn,clearCache:vn,showVersion:mn},En={name:"icalendar",requiredPermissions:["fetch"],functions:{syncCalendars:{path:"./icalendar.ts:syncCalendars",command:{name:"iCalendar: Sync",priority:-1},events:["editor:init"]},forceSync:{path:"./icalendar.ts:forceSync",command:{name:"iCalendar: Force Sync",priority:-1}},clearCache:{path:"./icalendar.ts:clearCache",command:{name:"iCalendar: Clear All Events",priority:-1}},showVersion:{path:"./icalendar.ts:showVersion",command:{name:"iCalendar: Version",priority:-2}}},config:{"schema.config.properties.icalendar":{type:"object",required:["sources"],properties:{sources:{type:"array",minItems:1,items:{type:"object",required:["url"],properties:{url:{type:"string"},name:{type:"string"}}}},cacheDuration:{type:"number",description:"Interval between two calendar synchronizations (default: 21600 = 6 hours)"}}}},assets:{}},li={manifest:En,functionMapping:yn};Te(yn,En,self.postMessage);export{li as plug};
//# sourceMappingURL=icalendar.plug.js.map