PageSourceSearch

https://book2.life/app/_next/static/chunks/app/page-2e1498005c4ece33.js

js book2.life collected 2026-10-02 16:07:04 UTC 5,355 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{3208:(a,t,e)=>{Promise.resolve().then(e.bind(e,9547))},5830:(a,t,e)=>{"use strict";e.d(t,{LoadingSpinner:()=>r});var i=e(5155),o=e(7979);function r(a){let{className:t,size:e="md"}=a;return(0,i.jsx)("div",{className:(0,o.cn)("flex items-center justify-center",t),children:(0,i.jsx)("div",{className:(0,o.cn)("animate-spin rounded-full border-2 border-zinc-700 border-t-zinc-300",{sm:"h-4 w-4",md:"h-8 w-8",lg:"h-12 w-12"}[e])})})}},7979:(a,t,e)=>{"use strict";e.d(t,{cn:()=>r});var i=e(2821),o=e(5889);function r(){for(var a=arguments.length,t=Array(a),e=0;e<a;e++)t[e]=arguments[e];return(0,o.QP)((0,i.$)(t))}},8831:(a,t,e)=>{"use strict";e.d(t,{_:()=>r});var i=e(5959),o=e(9118);let r=(0,i.v)((a,t)=>({books:[],metadata:[],images:[],isLoaded:!1,loadAll:async()=>{let[t,e,i]=await Promise.all([o.KO(),o.js(),Promise.resolve([])]),r=[];for(let a of t){let t=await o.h6(a.title);r.push(...t)}a({books:t,metadata:e,images:r,isLoaded:!0})},clearLibrary:async()=>{await o.aE(),a({books:[],metadata:[],images:[]})},addBook:async t=>{await o.Zg(t),a(a=>({books:[...a.books.filter(a=>a.title!==t.title),t]}))},removeBook:async t=>{await o.oz(t),a(a=>({books:a.books.filter(a=>a.title!==t),metadata:a.metadata.filter(a=>a.bookTitle!==t),images:a.images.filter(a=>a.bookTitle!==t)}))},getBook:a=>t().books.find(t=>t.title===a),getMetadata:a=>t().metadata.find(t=>t.bookTitle===a),upsertMetadata:async t=>{await o.LR(t),a(a=>({metadata:[...a.metadata.filter(a=>a.bookTitle!==t.bookTitle),t]}))},updateReadingStatus:async(e,i)=>{let r=t().getMetadata(e);if(!r)return;let s={...r,readingStatus:i};await o.LR(s),a(a=>({metadata:a.metadata.map(a=>a.bookTitle===e?s:a)}))},updateRating:async(e,i)=>{let r=t().getMetadata(e);if(!r)return;let s={...r,rating:i};await o.LR(s),a(a=>({metadata:a.metadata.map(a=>a.bookTitle===e?s:a)}))},updateDateRead:async(e,i)=>{let r=t().getMetadata(e);if(!r)return;let s={...r,dateRead:i};await o.LR(s),a(a=>({metadata:a.metadata.map(a=>a.bookTitle===e?s:a)}))},updateLastRead:async e=>{let i=t().getMetadata(e);if(!i)return;let r={...i,lastReadDate:new Date().toISOString(),readingStatus:"Unread"===i.readingStatus?"Being Read":i.readingStatus};await o.LR(r),a(a=>({metadata:a.metadata.map(a=>a.bookTitle===e?r:a)}))},updateCurrentPage:async(e,i)=>{let r=t().getMetadata(e);if(!r)return;let s={...r,currentPage:i};await o.LR(s),a(a=>({metadata:a.metadata.map(a=>a.bookTitle===e?s:a)}))},updateCurrentPosition:async(e,i,r)=>{let s=t().getMetadata(e);if(!s)return;let l={...s,currentChapter:i,currentColumn:r};await o.LR(l),a(a=>({metadata:a.metadata.map(a=>a.bookTitle===e?l:a)}))},toggleFavorite:async e=>{let i=t().getMetadata(e);if(!i)return;let r={...i,isFavorite:!i.isFavorite};await o.LR(r),a(a=>({metadata:a.metadata.map(a=>a.bookTitle===e?r:a)}))},addImageRecord:async t=>{await o.i6(t),a(a=>({images:[...a.images,t]}))},getImagesForBook:a=>t().images.filter(t=>t.bookTitle===a)}))},9118:(a,t,e)=>{"use strict";e.d(t,{KO:()=>l,LR:()=>n,YL:()=>b,Zg:()=>s,aE:()=>w,aM:()=>m,h6:()=>u,i6:()=>c,iq:()=>k,js:()=>d,oz:()=>f,zb:()=>g});var i=e(3899);let o=null;function r(){return o||(o=(0,i.P2)("reading-genie",4,{upgrade(a,t,e,i){t<1&&(a.createObjectStore("books",{keyPath:"title"}),a.createObjectStore("metadata",{keyPath:"bookTitle"}),a.createObjectStore("images",{keyPath:"id"}).createIndex("by-book","bookTitle"),a.createObjectStore("imageBlobs",{keyPath:"id"}),a.createObjectStore("covers",{keyPath:"bookTitle"})),t<2&&!a.objectStoreNames.contains("epubFiles")&&a.createObjectStore("epubFiles",{keyPath:"bookTitle"}),t<3&&i.objectStore("books").clear(),t<4&&!a.objectStoreNames.contains("aiCovers")&&a.createObjectStore("aiCovers",{keyPath:"bookTitle"})}})),o}async function s(a){let t=await r();await t.put("books",a)}async function l(){return(await r()).getAll("books")}async function n(a){let t=await r();await t.put("metadata",a)}async function d(){return(await r()).getAll("metadata")}async function c(a){let t=await r();await t.put("images",a)}async function u(a){return(await r()).getAllFromIndex("images","by-book",a)}async function m(a,t){let e=await r();await e.put("covers",{bookTitle:a,blob:t})}async function b(a,t){let e=await r();await e.put("epubFiles",{bookTitle:a,blob:t})}async function g(a,t){let e=await r();await e.put("aiCovers",{bookTitle:a,url:t})}async function k(){let a=await r(),t=await a.getAll("aiCovers"),e=new Map;for(let a of t)e.set(a.bookTitle,a.url);return e}async function w(){let a=await r();await Promise.all([a.clear("books"),a.clear("metadata"),a.clear("covers"),a.clear("epubFiles"),a.clear("images"),a.clear("imageBlobs"),a.clear("aiCovers")])}async function f(a){let t=await r();for(let e of(await t.delete("books",a),await t.delete("metadata",a),await t.delete("covers",a),await t.delete("epubFiles",a),await t.getAllFromIndex("images","by-book",a)))await t.delete("images",e.id),await t.delete("imageBlobs",e.id)}},9547:(a,t,e)=>{"use strict";e.r(t),e.d(t,{default:()=>n});var i=e(5155),o=e(2115),r=e(63),s=e(8831),l=e(5830);function n(){let a=(0,r.useRouter)(),t=(0,s._)(a=>a.books),e=(0,s._)(a=>a.isLoaded);return(0,o.useEffect)(()=>{e&&a.replace(t.length>0?"/library":"/discover")}
1,[e,t.length,a]),(0,i.jsx)(l.LoadingSpinner,{className:"mt-32",size:"lg"})}}},a=>{a.O(0,[304,441,255,358],()=>a(a.s=3208)),_N_E=a.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.