{"version":3,"sources":["../../src/use-versioned-action/index.ts"],"sourcesContent":["import { useRef } from 'react'\nimport { useStableFn } from '../use-stable-fn'\n\nimport type { AnyFunc } from '../utils/basic'\n\nexport type UseVersionedActionReturns = readonly [\n  /**\n   * Increase the version\n   */\n  incVersion: () => object,\n  /**\n   * Run the action with the specified version\n   */\n  runVersionedAction: <T extends AnyFunc>(version: object, handler: T) => ReturnType<T> | undefined,\n]\n\nexport function useVersionedAction(): UseVersionedActionReturns {\n  const versionRef = useRef({})\n\n  const incVersion = useStableFn(() => {\n    versionRef.current = {}\n    return versionRef.current\n  })\n\n  const runVersionedAction = useStableFn(<T extends AnyFunc>(version: object, handler: T) => {\n    if (version !== versionRef.current) return\n    return handler() as ReturnType<T>\n  })\n\n  return [incVersion, runVersionedAction] as const\n}\n"],"names":["useVersionedAction","versionRef","useRef","incVersion","useStableFn","current","runVersionedAction","version","handler"],"mappings":";;;;+BAgBgBA;;;eAAAA;;;qBAhBO;2BACK;AAerB,SAASA;IACd,IAAMC,aAAaC,IAAAA,aAAM,EAAC,CAAC;IAE3B,IAAMC,aAAaC,IAAAA,wBAAW,EAAC;QAC7BH,WAAWI,OAAO,GAAG,CAAC;QACtB,OAAOJ,WAAWI,OAAO;IAC3B;IAEA,IAAMC,qBAAqBF,IAAAA,wBAAW,EAAC,SAAoBG,SAAiBC;QAC1E,IAAID,YAAYN,WAAWI,OAAO,EAAE;QACpC,OAAOG;IACT;IAEA,OAAO;QAACL;QAAYG;KAAmB;AACzC"}