PageSourceSearch

https://isl.am/_next/static/chunks/4461-ce59cc03889169e2.js

js isl.am collected 2026-10-07 10:19:09 UTC 24,910 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4461],{7322:function(e,t,o){o.d(t,{X:function(){return d},Z:function(){return s}});var n=o(3011),i=o(89134),l=o(31517);let a=["fajr","dhuhr","asr","maghrib","isha"],c={fajr:!1,dhuhr:!1,asr:!1,maghrib:!1,isha:!1};function r(){let e=l.c.getClientId();if(e)return e;let t=localStorage.getItem("prayer_tracker_client_id");return t||(t="pt_".concat(Date.now(),"_").concat(Math.random().toString(36).slice(2,9)),localStorage.setItem("prayer_tracker_client_id",t)),t}let s=(0,n.U)()((0,i.tJ)((e,t)=>({logs:{},fetchedDates:{},isSyncing:!1,togglePrayer:(o,n,i)=>{let l=t(),a=l.logs[o]||{...c},s=!a[n];e({logs:{...l.logs,[o]:{...a,[n]:s}}});let d=r();d&&"server"!==d&&fetch("/api/prayer-log",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({date:o,clientId:d,prayer:n,completed:s})}).catch(()=>{})},setAllPrayers:(o,n,i)=>{let l=t(),s=l.logs[o]||{...c},d={...s},u=[];for(let e of a)s[e]!==n&&u.push(e),d[e]=n;if(0===u.length)return;e({logs:{...l.logs,[o]:d}});let m=r();if(m&&"server"!==m)for(let e of u)fetch("/api/prayer-log",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({date:o,clientId:m,prayer:e,completed:n})}).catch(()=>{})},fetchLog:async o=>{if(t().fetchedDates[o])return;let n=r();if(n&&"server"!==n)try{let l=await fetch("/api/prayer-log?date=".concat(o,"&clientId=").concat(encodeURIComponent(n)),{credentials:"include"});if(!l.ok)return;let r=await l.json(),s={fajr:r.fajr||!1,dhuhr:r.dhuhr||!1,asr:r.asr||!1,maghrib:r.maghrib||!1,isha:r.isha||!1},d=t().logs[o],u={...c};for(let e of a){var i;u[e]=s[e]||null!==(i=null==d?void 0:d[e])&&void 0!==i&&i}e(e=>({logs:{...e.logs,[o]:u},fetchedDates:{...e.fetchedDates,[o]:!0}}))}catch(e){}},getPrayerStatus:e=>t().logs[e]||{...c},getCompletedCount:e=>{let o=t().logs[e];return o?a.filter(e=>o[e]).length:0},syncToServer:async()=>{let o=t();if(o.isSyncing)return;e({isSyncing:!0});let n=r();if(!n||"server"===n){e({isSyncing:!1});return}try{for(let[e,t]of Object.entries(o.logs))for(let o of a)t[o]&&await fetch("/api/prayer-log",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({date:e,clientId:n,prayer:o,completed:!0})});e({fetchedDates:{}})}catch(e){}finally{e({isSyncing:!1})}}}),{name:"prayer-tracker-store",storage:(0,i.FL)(()=>localStorage),partialize:e=>({logs:e.logs})}));function d(){let e=s(e=>e.togglePrayer),t=s(e=>e.setAllPrayers),o=s(e=>e.fetchLog),n=s(e=>e.getPrayerStatus);return{togglePrayer:e,setAllPrayers:t,fetchLog:o,getPrayerStatus:n,getCompletedCount:s(e=>e.getCompletedCount),syncToServer:s(e=>e.syncToServer),logs:s(e=>e.logs)}}},23522:function(e,t,o){o.d(t,{B:function(){return r},F:function(){return c}});var n=o(3011),i=o(89134);function l(e,t){return"".concat(e,":").concat(t)}function a(e){let t=new Map;for(let[o,n]of Object.entries(e)){let e=Date.parse(n.createdAt||""),i=Number.isFinite(e)?e:0,l=t.get(n.type);(!l||i>=l.ts)&&t.set(n.type,{key:o,item:n,ts:i})}let o={};for(let e of t.values())o[e.key]=e.item;return o}let c=(0,n.U)()((0,i.tJ)((e,t)=>({bookmarks:{},fetchedBatches:{},isToggling:{},hasSynced:!1,isBookmarked:(e,o)=>!!t().bookmarks[l(e,o)],isToggleInProgress:(e,o)=>!!t().isToggling[l(e,o)],toggle:async function(o,n,i){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],c=l(o,n),r=t();if(r.isToggling[c])return;let s=!!r.bookmarks[c],d={...r.bookmarks},u=Object.entries(r.bookmarks).filter(e=>{let[t,n]=e;return n.type===o&&t!==c}).map(e=>{let[t,o]=e;return{key:t,item:o}});if(e(e=>{let t={...e.bookmarks};if(s)delete t[c];else{for(let[e,n]of Object.entries(t))n.type===o&&e!==c&&delete t[e];t[c]={type:o,itemId:n,metadata:i,createdAt:new Date().toISOString()}}return{bookmarks:t,isToggling:{...e.isToggling,[c]:!0}}}),a)try{if(!s)for(let e of u)await fetch("/api/bookmarks",{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({type:o,itemId:e.item.itemId})});let e=await fetch("/api/bookmarks",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({type:o,itemId:n,metadata:i})});if(!e.ok&&401!==e.status)throw Error("Toggle failed")}catch(t){e(()=>({bookmarks:d}))}e(e=>{let t={...e.isToggling};return delete t[c],{isToggling:t}})},remove:async function(o,n){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=l(o,n),c=t().bookmarks[a];if(e(e=>{let t={...e.bookmarks};return delete t[a],{bookmarks:t}}),i)try{let e=await fetch("/api/bookmarks",{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({type:o,itemId:n})});if(!e.ok&&401!==e.status)throw Error("Delete failed")}catch(t){c&&e(e=>({bookmarks:{...e.bookmarks,[a]:c}}))}},fetchStatuses:async(o,n)=>{if(0===n.length)return;let i="".concat(o,":").concat(n.sort().join(","));if(!t().fetchedBatches[i])try{let t=await fetch("/api/bookmarks/status?type=".concat(o,"&itemIds=").concat(n.join(",")),{credentials:"include"});if(!t.ok)return;let a=(await t.json()).statuses;e(e=>{let t={...e.bookmarks};for(let[e,n]of Object.entries(a)){let i=l(o,e);n&&!t[i]?t[i]={type:o,itemId:e,createdAt:new Date().toISOString()}:!n&&t[i]&&delete t[i]}return{bookmarks:t,fetchedBatches:{...e.fetchedBatches,[i]:!0}}})}catch(e){}},fetchBookmarks:async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{let o=new URLSearchParams;t.type&&o.set("type",t.type),t.page&&o.set("page",String(t.page)),t.limit&&o.set("limit",String(t.limit)),t.sort&&o.set("sort",t.sort),t.search&&o.set("search",t.search);let n=await fetch("/api/bookmarks?".concat(o.toString()),{credentials:"include"});if(!n.ok)return null;let i=await n.json();return e(e=>{let t={...e.bookmarks};for(let e of i.items)t[l(e.type,e.itemId)]={type:e.type,itemId:e.itemId,metadata:e.metadata,createdAt:e.createdAt};return{bookmarks:a(t)}}),{items:i.items.map(e=>({type:e.type,itemId:e.itemId,metadata:e.metadata,createdAt:e.createdAt})),pageInfo:i.pageInfo}}catch(e){return null}},syncToServer:async()=>{let o=t();if(o.hasSynced)return;let n=Object.values(o.bookmarks);if(0===n.length){try{let t=await fetch("/api/bookmarks?limit=50&sort=newest",{credentials:"include"});if(!t.ok)return;let o=await t.json();e(e=>{let t={...e.bookmarks};for(let e of o.items){let o=l(e.type,e.itemId);t[o]||(t[o]={type:e.type,itemId:e.itemId,metadata:e.metadata,createdAt:e.createdAt})}return{bookmarks:t,hasSynced:!0}})}catch(e){}return}let i={};for(let e of n)i[e.type]||(i[e.type]=[]),i[e.type].push(e);try{for(let[e,t]of Object.entries(i)){let o=t.map(e=>e.itemId),n=[];for(let e=0;e<o.length;e+=200)n.push(o.slice(e,e+200));for(let o of n)try{let n=await fetch("/api/bookmarks/status?type=".concat(e,"&itemIds=").concat(o.join(",")),{credentials:"include"});if(!n.ok)continue;let i=(await n.json()).statuses;for(let e of t)o.includes(e.itemId)&&!i[e.itemId]&&await fetch("/api/bookmarks",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({type:e.type,itemId:e.itemId,metadata:e.metadata})})}catch(e){}}let t=await fetch("/api/bookmarks?limit=50&sort=newest",{credentials:"include"});if(t.ok){let o=await t.json();e(e=>{let t={...e.bookmarks};for(let e of o.items){var n,i;let o=l(e.type,e.itemId);t[o]={type:e.type,itemId:e.itemId,metadata:e.metadata||(null===(n=t[o])||void 0===n?void 0:n.metadata),createdAt:e.createdAt||(null===(i=t[o])||void 0===i?void 0:i.createdAt)}}return{bookmarks:a(t),hasSynced:!0}})}}catch(e){}},clear:()=>e({bookmarks:{},fetchedBatches:{},isToggling:{},hasSynced:!1})}),{name:"islam-bookmarks",storage:(0,i.FL)(()=>localStorage),merge:(e,t)=>
1{var o;let n=null!=e?e:{},i=a({...t.bookmarks,...null!==(o=n.bookmarks)&&void 0!==o?o:{}});return{...t,...n,bookmarks:i}},partialize:e=>({bookmarks:e.bookmarks})}));function r(e,t){let o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=c(o=>o.isBookmarked(e,t)),i=c(o=>o.isToggleInProgress(e,t)),l=c(e=>e.toggle),a=c(e=>e.remove);return{isBookmarked:n,isToggling:i,toggle:n=>l(e,t,n,o),remove:()=>a(e,t,o)}}},51931:function(e,t,o){o.d(t,{y:function(){return r}});var n=o(3011),i=o(89134);function l(e,t){return"".concat(e,":").concat(t)}let a=0;function c(e){let t={};for(let[o,n]of Object.entries(e))for(let e of n){let n=l(e.type,e.itemId);t[n]||(t[n]=[]),t[n].includes(o)||t[n].push(o)}return t}let r=(0,n.U)()((0,i.tJ)((e,t)=>({collections:{},collectionItems:{},itemCollectionMap:{},hasSynced:!1,getItemCollections:(e,o)=>{let n=l(e,o);return t().itemCollectionMap[n]||[]},createCollection:async function(t,o,n){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],l="_local_".concat(Date.now(),"_").concat(++a),c=new Date().toISOString();if(e(e=>({collections:{...e.collections,[l]:{id:l,name:t,description:o,color:n,itemCount:0,createdAt:c,updatedAt:c,_localOnly:!0}}})),i)try{let i=await fetch("/api/collections",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:t,description:o,color:n})});if(!i.ok)return e(e=>{let t={...e.collections};return delete t[l],{collections:t}}),null;let a=await i.json(),c=a.collection._id||a.collection.id;return e(e=>{let t={...e.collections};return delete t[l],t[c]={id:c,name:a.collection.name,description:a.collection.description,color:a.collection.color,itemCount:a.collection.itemCount||0,createdAt:a.collection.createdAt,updatedAt:a.collection.updatedAt},{collections:t}}),c}catch(t){return e(e=>{let t={...e.collections};return delete t[l],{collections:t}}),null}return l},updateCollection:async function(o,n){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],l=t().collections[o];if(!l)return!1;if(e(e=>({collections:{...e.collections,[o]:{...l,...n,updatedAt:new Date().toISOString()}}})),i&&!l._localOnly)try{if(!(await fetch("/api/collections",{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({collectionId:o,...n})})).ok)return e(e=>({collections:{...e.collections,[o]:l}})),!1}catch(t){return e(e=>({collections:{...e.collections,[o]:l}})),!1}return!0},removeCollection:async function(o){let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=t(),l=i.collections[o],a=i.collectionItems[o]||[];if(e(e=>{let t={...e.collections};delete t[o];let n={...e.collectionItems};return delete n[o],{collections:t,collectionItems:n,itemCollectionMap:c(n)}}),n&&!(null==l?void 0:l._localOnly))try{if(!(await fetch("/api/collections",{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({collectionId:o})})).ok)return l&&e(e=>{let t={...e.collectionItems};return a.length>0&&(t[o]=a),{collections:{...e.collections,[o]:l},collectionItems:t,itemCollectionMap:c(t)}}),!1}catch(t){return l&&e(e=>{let t={...e.collectionItems};return a.length>0&&(t[o]=a),{collections:{...e.collections,[o]:l},collectionItems:t,itemCollectionMap:c(t)}}),!1}return!0},addItem:async function(o,n,i,a){let c=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r=l(n,i),s=new Date().toISOString();if((t().collectionItems[o]||[]).some(e=>e.type===n&&e.itemId===i))return!1;let d={collectionId:o,type:n,itemId:i,metadata:a,addedAt:s,_localOnly:!0};if(e(e=>{let t=[...e.collectionItems[o]||[],d],n={...e.collectionItems,[o]:t},i={...e.itemCollectionMap};i[r]||(i[r]=[]),i[r].includes(o)||(i[r]=[...i[r],o]);let l={...e.collections};return l[o]&&(l[o]={...l[o],itemCount:l[o].itemCount+1}),{collectionItems:n,itemCollectionMap:i,collections:l}}
1),c)try{if(!(await fetch("/api/collections/items",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({collectionId:o,type:n,itemId:i,metadata:a})})).ok)return e(e=>{let t=(e.collectionItems[o]||[]).filter(e=>!(e.type===n&&e.itemId===i)),l={...e.collectionItems,[o]:t},a={...e.itemCollectionMap};a[r]=(a[r]||[]).filter(e=>e!==o),0===a[r].length&&delete a[r];let c={...e.collections};return c[o]&&(c[o]={...c[o],itemCount:Math.max(0,c[o].itemCount-1)}),{collectionItems:l,itemCollectionMap:a,collections:c}}),!1;e(e=>{let t=(e.collectionItems[o]||[]).map(e=>e.type===n&&e.itemId===i?{...e,_localOnly:void 0}:e);return{collectionItems:{...e.collectionItems,[o]:t}}})}catch(t){return e(e=>{let t=(e.collectionItems[o]||[]).filter(e=>!(e.type===n&&e.itemId===i)),l={...e.collectionItems,[o]:t},a={...e.itemCollectionMap};a[r]=(a[r]||[]).filter(e=>e!==o),0===a[r].length&&delete a[r];let c={...e.collections};return c[o]&&(c[o]={...c[o],itemCount:Math.max(0,c[o].itemCount-1)}),{collectionItems:l,itemCollectionMap:a,collections:c}}),!1}return!0},removeItem:async function(o,n,i){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],c=l(n,i),r=(t().collectionItems[o]||[]).find(e=>e.type===n&&e.itemId===i);if(!r)return!1;if(e(e=>{let t=(e.collectionItems[o]||[]).filter(e=>!(e.type===n&&e.itemId===i)),l={...e.collectionItems,[o]:t},a={...e.itemCollectionMap};a[c]=(a[c]||[]).filter(e=>e!==o),0===a[c].length&&delete a[c];let r={...e.collections};return r[o]&&(r[o]={...r[o],itemCount:Math.max(0,r[o].itemCount-1)}
1),{collectionItems:l,itemCollectionMap:a,collections:r}}),a)try{if(!(await fetch("/api/collections/items",{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({collectionId:o,type:n,itemId:i})})).ok)return e(e=>{let t=[...e.collectionItems[o]||[],r],n={...e.collectionItems,[o]:t},i={...e.itemCollectionMap};i[c]||(i[c]=[]),i[c].includes(o)||(i[c]=[...i[c],o]);let l={...e.collections};return l[o]&&(l[o]={...l[o],itemCount:l[o].itemCount+1}),{collectionItems:n,itemCollectionMap:i,collections:l}}),!1}catch(t){return e(e=>{let t=[...e.collectionItems[o]||[],r],n={...e.collectionItems,[o]:t},i={...e.itemCollectionMap};i[c]||(i[c]=[]),i[c].includes(o)||(i[c]=[...i[c],o]);let l={...e.collections};return l[o]&&(l[o]={...l[o],itemCount:l[o].itemCount+1}),{collectionItems:n,itemCollectionMap:i,collections:l}}),!1}return!0},fetchCollections:async()=>{try{let t=await fetch("/api/collections",{credentials:"include"});if(!t.ok)return null;let o=(await t.json()).collections.map(e=>({id:e._id||e.id,name:e.name,description:e.description,color:e.color,itemCount:e.itemCount||0,createdAt:e.createdAt,updatedAt:e.updatedAt}));return e(e=>{let t={...e.collections};for(let e of o)t[e.id]=e;return{collections:t}}),o}catch(e){return null}},fetchItems:async function(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{let n=new URLSearchParams({collectionId:t});o.page&&n.set("page",String(o.page)),o.limit&&n.set("limit",String(o.limit));let i=await fetch("/api/collections/items?".concat(n.toString()),{credentials:"include"});if(!i.ok)return null;let l=await i.json(),a=l.items.map(e=>({collectionId:e.collectionId,type:e.type,itemId:e.itemId,metadata:e.metadata,addedAt:e.addedAt}));return e(e=>{let o={...e.collectionItems,[t]:a};return{collectionItems:o,itemCollectionMap:c(o)}}),{items:a,pageInfo:l.pageInfo}}catch(e){return null}},fetchItemStatus:async(t,o)=>{if(0!==o.length)try{let n=await fetch("/api/collections/items/status",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({type:t,itemIds:o})});if(!n.ok)return;let i=(await n.json()).statuses;e(e=>{let o={...e.itemCollectionMap};for(let[e,n]of Object.entries(i)){let i=l(t,e),a=o[i]||[],c=[...new Set([...a,...n])];c.length>0?o[i]=c:delete o[i]}return{itemCollectionMap:o}})}catch(e){}},syncToServer:async()=>{let o=t();if(!o.hasSynced)try{let t=Object.values(o.collections).filter(e=>e._localOnly),n={};for(let e of t)try{let t=await fetch("/api/collections",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:e.name,description:e.description,color:e.color})});if(t.ok){let o=await t.json();n[e.id]=o.collection._id||o.collection.id}}catch(e){}for(let[e,t]of Object.entries(o.collectionItems)){let o=n[e]||e;for(let e of t.filter(e=>e._localOnly))try{await fetch("/api/collections/items",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({collectionId:o,type:e.type,itemId:e.itemId,metadata:e.metadata})})}catch(e){}}let i=await fetch("/api/collections",{credentials:"include"});if(i.ok){let t=await i.json();e(e=>{let o={};for(let e of t.collections){let t=e._id||e.id;o[t]={id:t,name:e.name,description:e.description,color:e.color,itemCount:e.itemCount||0,createdAt:e.createdAt,updatedAt:e.updatedAt}}for(let[t,i]of Object.entries(e.collections))i._localOnly&&!n[t]&&(o[t]=i);return{collections:o,hasSynced:!0}})}else e({hasSynced:!0})}catch(t){e({hasSynced:!0})}},clear:()=>e({collections:{},collectionItems:{},itemCollectionMap:{},hasSynced:!1})}),{name:"islam-collections",storage:(0,i.FL)(()=>localStorage),partialize:e=>({collections:e.collections,collectionItems:e.collectionItems,itemCollectionMap:e.itemCollectionMap})}))},24780:function(e,t,o){o.d(t,{d:function(){return a},i:function(){return c}});var n=o(3011),i=o(89134);function l(e,t){return"".concat(e,":").concat(t)}let a=(0,n.U)()((0,i.tJ)((e,t)=>({notes:{},fetchedBatches:{},isSaving:{},hasSynced:!1,hasNote:(e,o)=>!!t().notes[l(e,o)],getNote:(e,o)=>t().notes[l(e,o)],isSaveInProgress:(e,o)=>!!t().isSaving[l(e,o)],save:async function(o,n,i,a){let c=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r=l(o,n),s=new Date().toISOString(),d=t(
1).notes[r];if(e(e=>({notes:{...e.notes,[r]:{type:o,itemId:n,text:i,metadata:a,updatedAt:s,createdAt:(null==d?void 0:d.createdAt)||s}},isSaving:{...e.isSaving,[r]:!0}})),c)try{let e=await fetch("/api/notes",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({type:o,itemId:n,text:i,metadata:a})});if(!e.ok&&401!==e.status)throw Error("Save failed")}catch(t){e(e=>{let t={...e.notes};return d?t[r]=d:delete t[r],{notes:t}})}e(e=>{let t={...e.isSaving};return delete t[r],{isSaving:t}})},remove:async function(o,n){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=l(o,n),c=t().notes[a];if(e(e=>{let t={...e.notes};return delete t[a],{notes:t}}),i)try{let e=await fetch("/api/notes",{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({type:o,itemId:n})});if(!e.ok&&401!==e.status)throw Error("Delete failed")}catch(t){c&&e(e=>({notes:{...e.notes,[a]:c}}))}},fetchStatuses:async(o,n)=>{if(0===n.length)return;let i="".concat(o,":").concat(n.sort().join(","));if(!t().fetchedBatches[i])try{let t=await fetch("/api/notes/status?type=".concat(o,"&itemIds=").concat(n.join(",")),{credentials:"include"});if(!t.ok)return;let a=(await t.json()).notes;e(e=>{let t={...e.notes};for(let[e,n]of Object.entries(a)){let i=l(o,e);if(n&&!t[i])t[i]={type:o,itemId:e,text:n.text,updatedAt:n.updatedAt};else if(n&&t[i]){let e=t[i];new Date(n.updatedAt)>new Date(e.updatedAt)&&(t[i]={...e,text:n.text,updatedAt:n.updatedAt})}else n||t[i]}return{notes:t,fetchedBatches:{...e.fetchedBatches,[i]:!0}}})}catch(e){}},fetchNotes:async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{let o=new URLSearchParams;t.type&&o.set("type",t.type),t.page&&o.set("page",String(t.page)),t.limit&&o.set("limit",String(t.limit)),t.sort&&o.set("sort",t.sort),t.search&&o.set("search",t.search);let n=await fetch("/api/notes?".concat(o.toString()),{credentials:"include"});if(!n.ok)return null;let i=await n.json();return e(e=>{let t={...e.notes};for(let e of i.items)t[l(e.type,e.itemId)]={type:e.type,itemId:e.itemId,text:e.text,metadata:e.metadata,updatedAt:e.updatedAt,createdAt:e.createdAt};return{notes:t}}),{items:i.items.map(e=>({type:e.type,itemId:e.itemId,text:e.text,metadata:e.metadata,updatedAt:e.updatedAt,createdAt:e.createdAt})),pageInfo:i.pageInfo}}catch(e){return null}},syncToServer:async()=>{let o=t();if(o.hasSynced)return;let n=Object.values(o.notes);if(0===n.length){try{let t=await fetch("/api/notes?limit=50&sort=newest",{credentials:"include"});if(!t.ok)return;let o=await t.json();e(e=>{let t={...e.notes};for(let e of o.items){let o=l(e.type,e.itemId);t[o]||(t[o]={type:e.type,itemId:e.itemId,text:e.text,metadata:e.metadata,updatedAt:e.updatedAt,createdAt:e.createdAt})}return{notes:t,hasSynced:!0}})}catch(e){}return}let i={};for(let e of n)i[e.type]||(i[e.type]=[]),i[e.type].push(e);try{for(let[e,t]of Object.entries(i)){let o=t.map(e=>e.itemId),n=[];for(let e=0;e<o.length;e+=200)n.push(o.slice(e,e+200));for(let o of n)try{let n=await fetch("/api/notes/status?type=".concat(e,"&itemIds=").concat(o.join(",")),{credentials:"include"});if(!n.ok)continue;let i=(await n.json()).notes;for(let e of t){if(!o.includes(e.itemId))continue;let t=i[e.itemId];(!t||new Date(e.updatedAt)>new Date(t.updatedAt))&&await fetch("/api/notes",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({type:e.type,itemId:e.itemId,text:e.text,metadata:e.metadata})})}}catch(e){}}let t=await fetch("/api/notes?limit=50&sort=newest",{credentials:"include"});if(t.ok){let o=await t.json();e(e=>{let t={...e.notes};for(let e of o.items){let o=l(e.type,e.itemId),n=t[o];(!n||new Date(e.updatedAt)>=new Date(n.updatedAt))&&(t[o]={type:e.type,itemId:e.itemId,text:e.text,metadata:e.metadata||(null==n?void 0:n.metadata),updatedAt:e.updatedAt,createdAt:e.createdAt||(null==n?void 0:n.createdAt)})}return{notes:t,hasSynced:!0}})}}catch(e){}},clear:()=>e({notes:{},fetchedBatches:{},isSaving:{},hasSynced:!1})}),{name:"islam-notes",storage:(0,i.FL)(()=>localStorage),partialize:e=>({notes:e.notes})}));function c(e,t){let o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=a(o=>o.notes[l(e,t)]),i=a(o=>o.isSaveInProgress(e,t)),c=a(e=>e.save),r=a(e=>e.remove);return{note:n,hasNote:!!n,text:(null==n?void 0:n.text)||"",isSaving:i,save:(n,i)=>c(e,t,n,i,o),remove:()=>r(e,t,o)}}},4461:function(e,t,o){o.d(t,{LM:function(){return f},X$:function(){return h},aC:function(){return p}});var n=o(3011),i=o(89134),l=o(31517),a=o(74189),c=o(7322),r=o(4245),s=o(23522),d=o(24780),u=o(51931);let m={user:null,isLoading:!1,isInitialized:!1,error:null},f=(0,n.U)()((0,i.tJ)((e,t)=>({...m,setUser:t=>e({user:t,error:null}
1),setLoading:t=>e({isLoading:t}),setError:t=>e({error:t}),fetchUser:async()=>{if(!t().isLoading){e({isLoading:!0,error:null});try{let t=await fetch("/api/auth/me",{credentials:"include"});if(!t.ok){e({user:null,isLoading:!1,isInitialized:!0});return}let o=await t.json();e({user:o.user,isLoading:!1,isInitialized:!0})}catch(t){console.error("Failed to fetch user:",t),e({user:null,isLoading:!1,isInitialized:!0,error:"Failed to fetch user"})}}},login:async(t,o)=>{e({isLoading:!0,error:null});try{let n=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:t,password:o})}),i=await n.json();if(!n.ok){let t=i.error||"Login failed";return e({isLoading:!1,error:t}),{success:!1,error:t}}return e({user:i.user,isLoading:!1,error:null}),l.c.linkToUser().catch(()=>{}),(0,a.yP)().catch(()=>{}),c.Z.getState().syncToServer().catch(()=>{}),r.useZikarStore.getState().syncToServer().catch(()=>{}),s.F.getState().syncToServer().catch(()=>{}),d.d.getState().syncToServer().catch(()=>{}),u.y.getState().syncToServer().catch(()=>{}),{success:!0}}catch(o){let t=o instanceof Error?o.message:"Login failed";return e({isLoading:!1,error:t}),{success:!1,error:t}}},register:async(t,o,n,i)=>{e({isLoading:!0,error:null});try{let m=await fetch("/api/auth/register",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:t,password:o,name:n,recaptchaToken:i})}),f=await m.json();if(!m.ok){let t=f.error||"Registration failed";return e({isLoading:!1,error:t}),{success:!1,error:t}}return e({user:f.user,isLoading:!1,error:null}),l.c.linkToUser().catch(()=>{}),(0,a.yP)().catch(()=>{}),c.Z.getState().syncToServer().catch(()=>{}),r.useZikarStore.getState().syncToServer().catch(()=>{}),s.F.getState().syncToServer().catch(()=>{}),d.d.getState().syncToServer().catch(()=>{}),u.y.getState().syncToServer().catch(()=>{}),{success:!0}}catch(o){let t=o instanceof Error?o.message:"Registration failed";return e({isLoading:!1,error:t}),{success:!1,error:t}}},logout:async()=>{e({isLoading:!0});try{await fetch("/api/auth/logout",{method:"POST",credentials:"include"})}catch(e){console.error("Logout error:",e)}e({user:null,isLoading:!1,error:null})},clear:()=>e(m)}),{name:"islam-user-store",storage:(0,i.FL)(()=>localStorage),partialize:e=>({user:e.user})}));function p(){let{user:e,isLoading:t,isInitialized:o,error:n,fetchUser:i}=f();return{user:e,isLoading:t,isInitialized:o,isAuthenticated:!!e,error:n,fetchUser:i}}function h(){let{login:e,register:t,logout:o,setUser:n,setError:i,fetchUser:l}=f();return{login:e,register:t,logout:o,setUser:n,setError:i,fetchUser:l}}}}]);

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.