{"version":3,"sources":["../src/storage.ts"],"sourcesContent":["import { isRecord } from \"./util\"\n\nexport type ScrollPos = [number, number]\nconst uniq = 'revotale_nextjs_scroll_restoration'\ntype HistoryKeys = 'x' | 'y'| 'memo_timestamp' | 'is_navigating_history' | 'popstate_timestamp'\n\nexport const getKey = (pos:HistoryKeys ):string => `${uniq}_${pos}`\nexport type HistoryState = Record<string, unknown> | null\nconst defaultX = 0\nconst defaultY = 0\nexport const setCurrentScrollHistory = ( [x, y]: ScrollPos):void => {\n    const normX = Math.max(x, defaultX)\n    const normY = Math.max(y, defaultY) //Sometime browsers make negative scroll\n    const winState = window.history.state as unknown\n\n    const newState: HistoryState = (isRecord(winState)?winState:null) ?? {}\n    window.history.replaceState({\n        ...newState,\n        [getKey('x')]: normX,\n        [getKey('y')]: normY,\n        [getKey('memo_timestamp')]:(new Date()).getTime()\n    }, '')\n}\nconst retrieveNum = (name: HistoryKeys,state:HistoryState):number|null => {\n\n    if (state === null) {\n        return null\n    }\n    const key = getKey(name)\n    const {[key]:value} = state\n    if (value === null) {\n        return null\n    }\n    const num = Number(value)\n    return isNaN(num) ? null : num\n}\nexport const getScrollFromState = (state: HistoryState): ScrollPos | null => {\n\n\n    const x = retrieveNum('x',state)\n    const y = retrieveNum('y',state)\n    return x !== null && y !== null ? [x, y] : null\n}\nexport const getScrollTimestamp = (state: HistoryState):number|null=>retrieveNum('memo_timestamp',state)\nexport const getPopstateTimestamp = (state: HistoryState):number|null=>retrieveNum('popstate_timestamp',state)\nexport const getIsNavigatingHistory = (state: HistoryState):boolean=>state === null?false:Boolean(state[getKey('is_navigating_history')])\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAyB;AAGzB,MAAM,OAAO;AAGN,MAAM,SAAS,CAAC,QAA4B,GAAG,IAAI,IAAI,GAAG;AAEjE,MAAM,WAAW;AACjB,MAAM,WAAW;AACV,MAAM,0BAA0B,CAAE,CAAC,GAAG,CAAC,MAAsB;AAChE,QAAM,QAAQ,KAAK,IAAI,GAAG,QAAQ;AAClC,QAAM,QAAQ,KAAK,IAAI,GAAG,QAAQ;AAClC,QAAM,WAAW,OAAO,QAAQ;AAEhC,QAAM,gBAA0B,sBAAS,QAAQ,IAAE,WAAS,SAAS,CAAC;AACtE,SAAO,QAAQ,aAAa;AAAA,IACxB,GAAG;AAAA,IACH,CAAC,OAAO,GAAG,CAAC,GAAG;AAAA,IACf,CAAC,OAAO,GAAG,CAAC,GAAG;AAAA,IACf,CAAC,OAAO,gBAAgB,CAAC,IAAG,oBAAI,KAAK,GAAG,QAAQ;AAAA,EACpD,GAAG,EAAE;AACT;AACA,MAAM,cAAc,CAAC,MAAkB,UAAmC;AAEtE,MAAI,UAAU,MAAM;AAChB,WAAO;AAAA,EACX;AACA,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,EAAC,CAAC,GAAG,GAAE,MAAK,IAAI;AACtB,MAAI,UAAU,MAAM;AAChB,WAAO;AAAA,EACX;AACA,QAAM,MAAM,OAAO,KAAK;AACxB,SAAO,MAAM,GAAG,IAAI,OAAO;AAC/B;AACO,MAAM,qBAAqB,CAAC,UAA0C;AAGzE,QAAM,IAAI,YAAY,KAAI,KAAK;AAC/B,QAAM,IAAI,YAAY,KAAI,KAAK;AAC/B,SAAO,MAAM,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI;AAC/C;AACO,MAAM,qBAAqB,CAAC,UAAkC,YAAY,kBAAiB,KAAK;AAChG,MAAM,uBAAuB,CAAC,UAAkC,YAAY,sBAAqB,KAAK;AACtG,MAAM,yBAAyB,CAAC,UAA8B,UAAU,OAAK,QAAM,QAAQ,MAAM,OAAO,uBAAuB,CAAC,CAAC;","names":[]}