PageSourceSearch

https://naemo.ai/_next/static/chunks/9136.66ae6f5c6bc5a2c2.js

js naemo.ai collected 2026-09-24 14:32:05 UTC 4,180 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9136],{39136:function(e,t,r){r.d(t,{M:function(){return a}});var n=r(2265),c=r(16481);function a(e){let{storageKeyPrefix:t,onSave:r,debounceMs:a=2e3,enableLocalStorage:u=!0}=e,l=(0,n.useRef)(r);(0,n.useEffect)(()=>{l.current=r},[r]);let o=(0,n.useRef)(t),[s,f]=(0,n.useState)({}),[i,d]=(0,n.useState)(new Set),[h,S]=(0,n.useState)(new Set),[v,m]=(0,n.useState)(new Set),[w,k]=(0,n.useState)(new Set),y=(0,n.useRef)({}),b=(0,n.useRef)(!0),p=(0,n.useRef)({}),g=(0,n.useCallback)(e=>{let t=p.current[e];return t||(t=(0,c.c)(),p.current[e]=t),t},[]),E=(0,n.useRef)({}),C=(0,n.useRef)(async()=>!1),O=(0,n.useRef)(t),R=(0,n.useCallback)((e,t)=>"".concat(e,":").concat(t),[]);(0,n.useEffect)(()=>{b.current=!0;let e=y.current;return()=>{Object.values(E.current).forEach(e=>{C.current(e.key,e.data,e.saveFn,e.prefix)}),E.current={},b.current=!1,Object.values(e).forEach(e=>clearTimeout(e))}},[]),(0,n.useLayoutEffect)(()=>{let e=O.current,r=e!==t;if(O.current=t,o.current=t,r){let t="".concat(e,":");Object.entries(E.current).forEach(e=>{let[r,n]=e;r.startsWith(t)&&C.current(n.key,n.data,n.saveFn,n.prefix).then(e=>{e&&E.current[r]===n&&delete E.current[r]})}),Object.entries(y.current).forEach(e=>{let[r,n]=e;r.startsWith(t)&&(clearTimeout(n),delete y.current[r])})}f({}),d(new Set),S(new Set),m(new Set)},[t]),(0,n.useEffect)(()=>{if(!u)return;let e="autosave:".concat(t,":"),n=new Set,c={};for(let t=0;t<localStorage.length;t++){let r=localStorage.key(t);if(null==r?void 0:r.startsWith(e))try{let t=JSON.parse(localStorage.getItem(r)||""),a=r.slice(e.length);Date.now()-t.timestamp<864e5&&(c[a]=t.data,n.add(a))}catch(e){}}Object.keys(c).length>0&&(f(e=>({...e,...c}
1)),m(n),S(n),n.forEach(e=>{let n=R(t,e);E.current[n]={key:e,data:c[e],saveFn:r,prefix:t}}))},[t,u,R]);let j=(0,n.useCallback)(async function(e,r){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l.current,c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t,a=o.current===c;b.current&&a&&d(t=>new Set(t).add(e));let s=!1;try{s=await g(R(c,e))(()=>n(e,r))}catch(t){console.warn("[useAutoSaveMap] Save failed for ".concat(e,":"),t)}let f=E.current[R(c,e)],i=!f||f.data===r;return b.current&&a?(d(t=>{let r=new Set(t);return r.delete(e),r}),k(t=>{if(!t.has(e)===s)return t;let r=new Set(t);return s?r.delete(e):r.add(e),r}),s&&i&&(S(t=>{let r=new Set(t);return r.delete(e),r}),u&&localStorage.removeItem("autosave:".concat(c,":").concat(e)))):s&&i&&u&&localStorage.removeItem("autosave:".concat(c,":").concat(e)),s},[t,u,R,g]);(0,n.useEffect)(()=>{C.current=j},[j]);let T=(0,n.useCallback)((e,t)=>{f(r=>{let n=r[e],c="function"==typeof t?t(n):t;return{...r,[e]:c}})},[]),x=(0,n.useCallback)((e,r)=>{f(n=>{let c=n[e],o="function"==typeof r?r(c):r,s=l.current,f=R(t,e);if(u)try{localStorage.setItem("autosave:".concat(t,":").concat(e),JSON.stringify({data:o,timestamp:Date.now()}))}catch(e){}S(t=>new Set(t).add(e));let i={key:e,data:o,saveFn:s,prefix:t};return E.current[f]=i,y.current[f]&&clearTimeout(y.current[f]),y.current[f]=setTimeout(()=>{delete y.current[f],j(e,o,s,t).then(e=>{e&&E.current[f]===i&&delete E.current[f]})},a),{...n,[e]:o}})},[t,u,a,j,R]),I=(0,n.useCallback)((e,t)=>{var r;return null!==(r=s[e])&&void 0!==r?r:t},[s]),N=(0,n.useCallback)(async e=>{let r=R(t,e);if(y.current[r]&&(clearTimeout(y.current[r]),delete y.current[r]),h.has(e)&&s[e]){let t=E.current[r];await j(e,s[e])&&t&&E.current[r]===t&&delete E.current[r]}},[h,s,j,t,R]),W=(0,n.useCallback)(async()=>{let e="".concat(t,":");Object.entries(y.current).forEach(t=>{let[r,n]=t;r.startsWith(e)&&(clearTimeout(n),delete y.current[r])});let r=Array.from(h).map(e=>{if(s[e]){let r=R(t,e),n=E.current[r];return j(e,s[e]).then(e=>(e&&n&&E.current[r]===n&&delete E.current[r],e))}return Promise.resolve(!0)});await Promise.all(r)},[h,s,j,t,R]);return{data:s,setItem:x,hydrateItem:T,getItem:I,savingKeys:i,dirtyKeys:h,failedKeys:w,flushAll:W,flushKey:N,recoveredKeys:v}}},16481:function(e,t,r){r.d(t,{c:function(){return n}});function n(){let e=Promise.resolve();return function(t){let r=e.then(()=>t(),()=>t());return e=r.then(()=>void 0,()=>void 0),r}}}}]);

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.