"use strict";const appPages=["dashboard","settings"],{html:html,render:renderElem}=uhtml;navigator.onLine||(floGlobals.connectionErrorNotification=notify("There seems to be a problem connecting to the internet, Please check you internet connection.","error")),window.addEventListener("offline",(()=>{floGlobals.connectionErrorNotification=notify("There seems to be a problem connecting to the internet, Please check you internet connection.","error")})),window.addEventListener("online",(()=>{getRef("notification_drawer").remove(floGlobals.connectionErrorNotification),notify("We are back online.","success")}));const domRefs={};function getRef(elementId){return domRefs.hasOwnProperty(elementId)?domRefs[elementId].count<3?(domRefs[elementId].count=domRefs[elementId].count+1,document.getElementById(elementId)):(domRefs[elementId].ref||(domRefs[elementId].ref=document.getElementById(elementId)),domRefs[elementId].ref):(domRefs[elementId]={count:1,ref:null},document.getElementById(elementId))}const debounce=(callback,wait)=>{let timeoutId=null;return(...args)=>{window.clearTimeout(timeoutId),timeoutId=window.setTimeout((()=>{callback.apply(null,args)}),wait)}};function notify(message,mode,options={}){let icon;switch(mode){case"success":icon='';break;case"error":icon='',options.pinned=!0}return"error"===mode&&console.error(message),getRef("notification_drawer").push(message,{icon:icon,...options})}function getFormattedTime(timestamp,format){try{timestamp=parseInt(timestamp),String(timestamp).length<13&&(timestamp*=1e3);let[day,month,date,year]=new Date(timestamp).toString().split(" "),minutes=new Date(timestamp).getMinutes(),hours=new Date(timestamp).getHours();(new Date).toString().split(" ");minutes=minutes<10?`0${minutes}`:minutes;let finalHours="";switch(finalHours=hours>12?`${hours-12}:${minutes}`:0===hours?`12:${minutes}`:`${hours}:${minutes}`,finalHours=hours>=12?`${finalHours} PM`:`${finalHours} AM`,format){case"date-only":return`${month} ${date}, ${year}`;case"time-only":return finalHours;case"relative":return relativeTime.from(timestamp);default:return`${month} ${date}, ${year} at ${finalHours}`}}catch(e){return console.error(e),timestamp}}function createRipple(event,target){const circle=document.createElement("span"),diameter=Math.max(target.clientWidth,target.clientHeight),radius=diameter/2,targetDimensions=target.getBoundingClientRect();circle.style.width=circle.style.height=`${diameter}px`,circle.style.left=event.clientX-(targetDimensions.left+radius)+"px",circle.style.top=event.clientY-(targetDimensions.top+radius)+"px",circle.classList.add("ripple");const rippleAnimation=circle.animate([{transform:"scale(3)",opacity:0}],{duration:1e3,fill:"forwards",easing:"ease-out"});target.append(circle),rippleAnimation.onfinish=()=>{circle.remove()}}window.addEventListener("hashchange",(e=>routeTo(window.location.hash))),window.addEventListener("load",(()=>{document.body.classList.remove("hidden"),document.addEventListener("pointerdown",(e=>{e.target.closest("button, .interact")&&createRipple(e,e.target.closest("button, .interact"))})),document.addEventListener("copy",(()=>{notify("copied","success")})),document.addEventListener("keydown",(e=>{"/"===e.key&&(e.preventDefault(),getRef("search_payments").focusIn())})),getRef("search_payments").addEventListener("input",(e=>{const searchQuery=e.target.value.toLowerCase(),filteredInterns=[];floGlobals.internTxs.forEach(((intern,floId)=>{(floId.toLowerCase().includes(searchQuery)||floGlobals.appObjects.RIBC.internList[floId].toLowerCase().includes(searchQuery))&&filteredInterns.push({floId:floId,name:floGlobals.appObjects.RIBC.internList[floId]})})),filteredInterns.sort(((a,b)=>a.name.toLowerCase().includes(searchQuery)&&b.name.toLowerCase().includes(searchQuery)?a.name.toLowerCase().indexOf(searchQuery)-b.name.toLowerCase().indexOf(searchQuery):a.name.toLowerCase().includes(searchQuery)?-1:b.name.toLowerCase().includes(searchQuery)?1:a.floId.toLowerCase().indexOf(searchQuery)-b.floId.toLowerCase().indexOf(searchQuery))),renderElem(getRef("intern_payment_list"),html`${filteredInterns.map((intern=>render.internCard(intern.floId)))}`)}))}));const appState={params:{}};function routeTo(targetPage){const routingAnimation={in:slideInUp,out:slideOutUp};let pageId,subPageId1,searchParams,params;if(""===targetPage)pageId="home",history.replaceState(null,null,"#/home");else if(targetPage.includes("/"))if(targetPage.includes("?")){const splitAddress=targetPage.split("?");searchParams=splitAddress.pop(),[,pageId,subPageId1]=splitAddress.pop().split("/")}else[,pageId,subPageId1]=targetPage.split("/");else pageId=targetPage;if(getRef(pageId)?.classList.contains("page")){if(appState.currentPage=pageId,searchParams){const urlSearchParams=new URLSearchParams("?"+searchParams);params=Object.fromEntries(urlSearchParams.entries())}if(params&&(appState.params=params),"intern"===pageId)params&¶ms.id&&render.intern(params.id);if("intern"===appState.lastPage)routingAnimation.in=slideInRight,routingAnimation.out=slideOutRight;if("intern"===pageId)routingAnimation.in=slideInLeft,routingAnimation.out=slideOutLeft;appState.lastPage!==pageId&&(document.querySelectorAll(".page").forEach((page=>page.classList.add("hidden"))),getRef(pageId).closest(".page").classList.remove("hidden"),appState.lastPage&&(getRef(appState.lastPage).animate(routingAnimation.out,{duration:floGlobals.prefersReducedMotion?0:150,fill:"forwards",easing:"ease"}).onfinish=e=>{e.target.effect.target.classList.add("hidden")}),getRef(pageId).classList.remove("hidden"),getRef(pageId).animate(routingAnimation.in,{duration:floGlobals.prefersReducedMotion?0:150,fill:"forwards",easing:"ease"}).onfinish=e=>{appState.lastPage=pageId})}}const slideInLeft=[{opacity:0,transform:"translateX(1rem)"},{opacity:1,transform:"translateX(0)"}],slideOutLeft=[{opacity:1,transform:"translateX(0)"},{opacity:0,transform:"translateX(-1rem)"}],slideInRight=[{opacity:0,transform:"translateX(-1rem)"},{opacity:1,transform:"translateX(0)"}],slideOutRight=[{opacity:1,transform:"translateX(0)"},{opacity:0,transform:"translateX(1rem)"}],slideInDown=[{opacity:0,transform:"translateY(-1rem)"},{opacity:1,transform:"translateY(0)"}],slideOutDown=[{opacity:1,transform:"translateY(0)"},{opacity:0,transform:"translateY(1rem)"}],slideInUp=[{opacity:0,transform:"translateY(1rem)"},{opacity:1,transform:"translateY(0)"}],slideOutUp=[{opacity:1,transform:"translateY(0)"},{opacity:0,transform:"translateY(-1rem)"}];function formatAmount(amount=0){return amount?amount.toLocaleString("en-IN",{style:"currency",currency:"inr"}):"₹0"}function fetchRibcData(){return floCloudAPI.requestObjectData("RIBC",{application:"InternManage",receiverID:"FMyRTrz9CG4TFNM6rCQgy3VQ5NF23bY2xD",senderID:["FCja6sLv58e3RMy41T5AmWyvXEWesqBCkX","FFS5hFXG7DBtdgzrLwixZLpenAmsCKRddm","FS4jMAcSimRMrhoRhk5cjuJERS2otiwq4A"]})}function fetchTransactions(){return floBlockchainAPI.readAllTxs("FThgnJLcuStugLc24FJQggmp2WgaZjrBSn").then((({items:items})=>items))}floGlobals.payer="FThgnJLcuStugLc24FJQggmp2WgaZjrBSn",floGlobals.internTxs=new Map;const render={internCard(floId){const{total:total,txs:txs}=floGlobals.internTxs.get(floId);return html`
Last payment: ${formatAmount(txs[0].amount)} on ${getFormattedTime(txs[0].time,"date-only")}
Total paid: ${formatAmount(total)}
${formatAmount(amount)}
View transactionFLO Address
Total paid: ${formatAmount(floGlobals.internTxs.get(floId).total)}