PageSourceSearch

https://studio--billsense-nprrn.us-central1.hosted.app/_next/stati…/app/assets/new/page-c0f0df785c663461.js

js studio--billsense-nprrn.us-central1.hosted.app collected 2026-10-03 05:34:24 UTC 12,181 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4751],{8545:(e,t,r)=>{Promise.resolve().then(r.bind(r,56362))},56362:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>A});var a=r(95155),s=r(12115),n=r(76046),i=r(65423),d=r(25079),c=r(73312),o=r(67396),l=r(41598),u=r(22783),p=r(45910),m=r(65564),f=r(87081),h=r(22619),x=r(27058),b=r(44595),g=r(24715);function A(){let{user:e,loading:t}=(0,i.A)(),r=(0,n.useRouter)(),{toast:A}=(0,m.dj)(),[w,v]=(0,s.useState)([]),[D,y]=(0,s.useState)(!0),[j,N]=(0,s.useState)(!1);(0,s.useEffect)(()=>{if(!t){if(!e){r.push("/login");return}(async()=>{y(!0);let t=(0,x.P)((0,x.rJ)(b.db,"receipts"),(0,x._M)("userId","==",e.uid),(0,x.My)("purchaseDate","desc"),(0,x.AB)(50));v((await (0,x.GG)(t)).docs.map(g.PD).filter(Boolean)),y(!1)})()}},[e,t,r]);let I=async t=>{if(!e)return;N(!0);let a=await (0,h.l6)(e.uid,t);if(a.success&&a.newAssetId){let e="".concat(t.productDescription," has been added.");r.push("/assets?assetId=".concat(a.newAssetId,"&confirmation=").concat(encodeURIComponent(e)))}else A({variant:"destructive",title:"Save Failed",description:a.error}),N(!1)},k=e=>(0,a.jsx)("div",{className:"px-4 md:px-6 pt-6 pb-24 max-w-2xl mx-auto w-full",children:(0,a.jsx)(d.C,{form:e,receiptOptions:w})});return D||t?(0,a.jsxs)("div",{className:"min-h-screen bg-muted/40",children:[(0,a.jsx)("header",{className:"px-4 py-2 md:py-4 border-b bg-card/80 backdrop-blur-sm sticky top-0 z-30 pt-[calc(0.5rem+env(safe-area-inset-top))] md:pt-[calc(1rem+env(safe-area-inset-top))]",children:(0,a.jsx)("div",{className:"container mx-auto flex items-center justify-between gap-3 px-4",children:(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsx)(c.$,{variant:"outline",size:"icon",asChild:!0,children:(0,a.jsx)(o.default,{href:"/assets",children:(0,a.jsx)(l.A,{})})}),(0,a.jsx)("h1",{className:"text-xl font-semibold text-foreground",children:"Add Asset"})]})})}),(0,a.jsxs)("div",{className:"space-y-6 px-4 md:px-6 pt-6 max-w-2xl mx-auto w-full",children:[(0,a.jsx)(f.E,{className:"h-10 w-full"}),(0,a.jsx)(f.E,{className:"h-10 w-full"})]})]}):(0,a.jsx)(d.l,{onSubmit:I,receiptOptions:w,isSubmitting:j,children:e=>{let{form:t}=e;return(0,a.jsxs)("div",{className:"min-h-screen bg-muted/40 flex flex-col",children:[(0,a.jsx)("header",{className:"px-4 py-2 md:py-4 border-b bg-card/80 backdrop-blur-sm sticky top-0 z-30 pt-[calc(0.5rem+env(safe-area-inset-top))] md:pt-[calc(1rem+env(safe-area-inset-top))]",children:(0,a.jsx)("div",{className:"container mx-auto flex items-center justify-between gap-3 px-4",children:(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsx)(c.$,{variant:"outline",size:"icon",asChild:!0,children:(0,a.jsx)(o.default,{href:"/assets",children:(0,a.jsx)(l.A,{})})}),(0,a.jsx)("h1",{className:"text-xl font-semibold text-foreground",children:"Add Asset"})]})})}),(0,a.jsx)("main",{className:"flex-1 overflow-y-auto",children:k(t)}),(0,a.jsx)("footer",{className:"p-4 border-t bg-card/80 backdrop-blur-sm sticky bottom-0 z-30 flex justify-center pb-[calc(1rem+env(safe-area-inset-bottom))]",children:(0,a.jsx)(c.$,{type:"submit",className:"w-full max-w-2xl",size:"lg",disabled:j||D,children:j?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(u.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Saving..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(p.A,{className:"mr-2 h-4 w-4"}),"Add Asset"]})})})]})}})}},98690:(e,t,r)=>{"use strict";r.d(t,{O:()=>l,d:()=>u});var a=r(95155),s=r(12115),n=r(74411),i=r(21567),d=r(54002);let c=(0,r(31027).F)("inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"},size:{default:"h-10 px-3",sm:"h-9 px-2.5",lg:"h-11 px-5"}},defaultVariants:{variant:"default",size:"default"}});s.forwardRef((e,t)=>
1{let{className:r,variant:s,size:n,...o}=e;return(0,a.jsx)(d.b,{ref:t,className:(0,i.cn)(c({variant:s,size:n,className:r})),...o})}).displayName=d.b.displayName;let o=s.createContext({size:"default",variant:"default"}),l=s.forwardRef((e,t)=>{let{className:r,variant:s,size:d,children:c,...l}=e;return(0,a.jsx)(n.bL,{ref:t,className:(0,i.cn)("flex items-center justify-center gap-1",r),...l,children:(0,a.jsx)(o.Provider,{value:{variant:s,size:d},children:c})})});l.displayName=n.bL.displayName;let u=s.forwardRef((e,t)=>{let{className:r,children:d,variant:l,size:u,...p}=e,m=s.useContext(o);return(0,a.jsx)(n.q7,{ref:t,className:(0,i.cn)(c({variant:m.variant||l,size:m.size||u}),r),...p,children:d})});u.displayName=n.q7.displayName},24715:(e,t,r)=>{"use strict";r.d(t,{MA:()=>n,PD:()=>i,p8:()=>d});var a=r(27058);function s(e){if(e){if(e instanceof Date)return e;if(e instanceof a.Dc)return e.toDate()}}function n(e){try{let t=e.data();if(!t)return null;if(!t.vendor||"string"!=typeof t.vendor||!t.amount||"number"!=typeof t.amount||!t.dueDate)return console.warn("Invalid bill document data for doc id: ".concat(e.id),t),null;let r=s(t.dueDate);if(!r)return console.warn("Invalid dueDate for bill doc id: ".concat(e.id),t.dueDate),null;let a=(t.notes||[]).map(e=>{let t=s(e.createdAt);return t?{...e,createdAt:t}:null}).filter(Boolean);a.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime());let n=t.reminderInfo?{...t.reminderInfo,lastOverdueReminderSentAt:s(t.reminderInfo.lastOverdueReminderSentAt)}:void 0,i=t.taxAmount,d="number"==typeof i&&isFinite(i)?i:void 0;return{id:e.id,...t,dueDate:r,paidAt:s(t.paidAt),createdAt:s(t.createdAt),updatedAt:s(t.updatedAt),notes:a,tags:t.tags||[],tagsNormalized:t.tagsNormalized||[],reminderInfo:n,taxAmount:d,taxLabel:t.taxLabel,taxConfidence:t.taxConfidence}}catch(t){return console.error("Error processing bill document ".concat(e.id,":"),t),null}}function i(e){try{let t=e.data();if(!t)return null;if(!t.vendor||"string"!=typeof t.vendor||!t.totalAmount||"number"!=typeof t.totalAmount||!t.purchaseDate)return console.warn("Invalid receipt document data for doc id: ".concat(e.id),t),null;let r=s(t.purchaseDate);if(!r)return console.warn("Invalid purchaseDate for receipt doc id: ".concat(e.id),t.purchaseDate),null;let a=(t.notes||[]).map(e=>{let t=s(e.createdAt);return t?{...e,createdAt:t}:null}).filter(Boolean);a.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime());let n=t.taxAmount,i="number"==typeof n&&isFinite(n)?n:void 0;return{id:e.id,...t,purchaseDate:r,createdAt:s(t.createdAt),updatedAt:s(t.updatedAt),notes:a,tags:t.tags||[],tagsNormalized:t.tagsNormalized||[],taxAmount:i,taxLabel:t.taxLabel,taxConfidence:t.taxConfidence}}catch(t){return console.error("Error processing receipt document ".concat(e.id,":"),t),null}}function d(e){try{let t=e.data();if(!t)return null;if(!t.productDescription||!t.merchant)return console.warn("Invalid asset document data for doc id: ".concat(e.id),t),null;let r=(t.notes||[]).map(e=>{let t=s(e.createdAt);return t?{...e,createdAt:t}:null}).filter(Boolean);return r.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime()),{id:e.id,userId:t.userId,productDescription:t.productDescription,merchant:t.merchant,purchaseDate:s(t.purchaseDate),amount:t.amount,linkedReceiptId:t.linkedReceiptId,createdFromSuggestedId:t.createdFromSuggestedId,createdAt:s(t.createdAt),updatedAt:s(t.updatedAt),notes:r,tags:t.tags||[],tagsNormalized:t.tagsNormalized||[]}}catch(t){return console.error("Error processing asset document ".concat(e.id,":"),t),null}}},22619:(e,t,r)=>{"use strict";r.d(t,{AO:()=>m,Cb:()=>x,DS:()=>h,LV:()=>p,UD:()=>l,bM:()=>f,l6:()=>u,yP:()=>o});var a=r(27058),s=r(44595),n=r(60115),i=r(47573),d=r(12687),c=r(95564);let o=e=>{if(!e){console.error("Asset ID is required to dismiss an asset.");return}let t=(0,a.H9)(s.db,"suggestedAssets",e),r={status:"dismissed"};(0,a.mZ)(t,r).catch(e=>{let a=new i.$({path:t.path,operation:"update",requestResourceData:r});n.d.emit("permission-error",a)})};async function l(e,t,r){let d=(0,a.wP)(s.db),o=(0,a.H9)((0,a.rJ)(s.db,"assets")),l=(0,a.H9)((0,a.rJ)(s.db,"warranties")),u=(0,a.H9)(s.db,"suggestedA
1ssets",t);try{let s={userId:e,productDescription:r.productDescription,merchant:r.merchant,purchaseDate:r.purchaseDate,linkedReceiptId:r.linkedReceiptId||null,createdFromSuggestedId:t,notes:[],createdAt:(0,a.O5)(),updatedAt:(0,a.O5)()};if(d.set(o,s),r.warrantyDurationMonths&&r.warrantyDurationMonths>0){let t=r.purchaseDate,s={userId:e,assetId:o.id,durationMonths:r.warrantyDurationMonths,startDate:t,expiryDate:(0,c.P)(t,r.warrantyDurationMonths),linkedReceiptId:r.linkedReceiptId||null,createdAt:(0,a.O5)(),updatedAt:(0,a.O5)()};d.set(l,s)}return d.update(u,{status:"created"}),await d.commit(),{success:!0,newAssetId:o.id}}catch(t){let e=new i.$({path:"batch write (asset: ".concat(o.path,", suggestedAsset: ").concat(u.path,")"),operation:"write"});return n.d.emit("permission-error",e),{success:!1,error:t.message||"An unknown error occurred while saving."}}}async function u(e,t){let{tags:r,warrantyDurationMonths:o,...l}=t;try{let n=await (0,d.pp)(e,"assets",{...l,userId:e},r||[]);if(!n.success)throw Error(n.error||"Failed to save asset.");let i=n.docId;if(o&&o>0){let r=(0,a.H9)((0,a.rJ)(s.db,"warranties")),n=t.purchaseDate||new Date,d={userId:e,assetId:i,durationMonths:o,startDate:n,expiryDate:(0,c.P)(n,o),linkedReceiptId:t.linkedReceiptId||null,createdAt:(0,a.O5)(),updatedAt:(0,a.O5)()};await (0,a.BN)(r,d)}return{success:!0,newAssetId:i}}catch(t){let e=new i.$({path:"assets/",operation:"create"});return n.d.emit("permission-error",e),{success:!1,error:t.message||"An unknown error occurred while saving."}}}async function p(e,t,r,o){let{tags:l,warrantyDurationMonths:u,purchaseDate:p,...m}=o;try{let n=await (0,d.pp)(e,"assets",{...m,purchaseDate:p||(0,a.CL)()},l||[],t);if(!n.success)throw Error(n.error||"Failed to update asset document.");if(u&&u>0){let n={userId:e,assetId:t,durationMonths:u,linkedReceiptId:o.linkedReceiptId||null,updatedAt:(0,a.O5)()};if(r){let e=(0,a.H9)(s.db,"warranties",r),t={...n};o.purchaseDate&&(t.startDate=o.purchaseDate,t.expiryDate=(0,c.P)(o.purchaseDate,u)),await (0,a.mZ)(e,t)}else{let e=(0,a.H9)((0,a.rJ)(s.db,"warranties")),t=o.purchaseDate||new Date;await (0,a.BN)(e,{...n,startDate:t,expiryDate:(0,c.P)(t,u),createdAt:(0,a.O5)()})}}else if(r){let e=(0,a.H9)(s.db,"warranties",r);await (0,a.kd)(e)}return{success:!0}}catch(r){let e=new i.$({path:"assets/".concat(t),operation:"update"});return n.d.emit("permission-error",e),{success:!1,error:r.message||"An unknown error occurred while saving."}}}let m=e=>{let t=(0,a.H9)(s.db,"assets",e);return(0,a.kd)(t).then(()=>({success:!0})).catch(e=>(n.d.emit("permission-error",new i.$({path:t.path,operation:"delete"})),{success:!1,error:e.message||"An unknown error occurred."}))},f=(e,t)=>{if(!t.trim())return;let r=(0,a.H9)(s.db,"assets",e),d={text:t,createdAt:a.Dc.now()},c={notes:(0,a.hq)(d),updatedAt:(0,a.O5)()};(0,a.mZ)(r,c).catch(e=>{n.d.emit("permission-error",new i.$({path:r.path,operation:"update",requestResourceData:c}))})},h=(e,t,r,d)=>{if(!r.trim())return;let c=(0,a.H9)(s.db,"assets",e),o={...t,text:r,createdAt:a.Dc.fromDate(t.createdAt)},l=d.find(e=>e.createdAt.getTime()===t.createdAt.getTime()&&e.text===t.text);if(!l){console.error("Could not find the original note to update.");return}let u={...l,createdAt:a.Dc.fromDate(l.createdAt)},p=(0,a.wP)(s.db);p.update(c,{notes:(0,a.C3)(u)}),p.update(c,{notes:(0,a.hq)(o),updatedAt:(0,a.O5)()}),p.commit().catch(e=>{n.d.emit("permission-error",new i.$({path:c.path,operation:"update",requestResourceData:{note:r}}))})},x=(e,t)=>{let r=(0,a.H9)(s.db,"assets",e),d={...t,createdAt:a.Dc.fromDate(t.createdAt)},c={notes:(0,a.C3)(d),updatedAt:(0,a.O5)()};(0,a.mZ)(r,c).catch(e=>{n.d.emit("permission-error",new i.$({path:r.path,operation:"update",requestResourceData:c}))})}}},e=>{var t=t=>e(e.s=t);e.O(0,[2992,3644,4324,69,4900,9122,7776,40,4621,8150,4155,8441,8590,7358],()=>t(8545)),_N_E=e.O()}]);

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.