{"version":3,"file":"ref-once-init.mjs","sources":["../src/index.ts"],"sourcesContent":["import { InitOnceInit } from \"once-init\";\nimport { Ref, ref } from \"vue-demi\";\n\nexport default function oi<T, P extends Array<any>>(\n  promise: (...param: P) => Promise<T>\n): RefOnceInit<T, P>;\nexport default function oi<T, P extends Array<any>>(\n  promise: (...param: P) => Promise<T>,\n  defaultValue: T\n): InitRefOnceInit<T, P>;\n\nexport default function oi<T, P extends Array<any> = void[]>(\n  ...args: any[]\n): RefOnceInit<T> {\n  if (!(args[0] instanceof Function) || args.length > 2 || args.length < 1) {\n    throw new Error(\"Arguments of oi is not supported\");\n  }\n  const promise: (...param: P) => Promise<T> = args[0];\n  if (args.length === 1) {\n    return new (class extends RefOnceInit<T, P> {\n      protected initPromise = promise;\n    })();\n  } else {\n    const defaultValue: T = args[1];\n    return new (class extends InitRefOnceInit<T, P> {\n      protected initPromise = promise;\n    })(defaultValue);\n  }\n}\n\nexport abstract class RefOnceInit<\n  T,\n  P extends Array<any> = void[]\n> extends InitOnceInit<Ref<T | undefined>, T, P> {\n  protected declare observe: Ref<T | undefined>;\n  get target(): Ref<T | undefined> {\n    return super.target as Ref<T | undefined>;\n  }\n  loading = ref<boolean>(false);\n  protected factory(raw: T, observe: Ref<T | undefined>): void {\n    observe.value = raw;\n  }\n  constructor() {\n    super(ref<T>());\n    this.onLoading((event) => {\n      this.loading.value = event;\n    });\n  }\n}\n\nexport abstract class InitRefOnceInit<\n  T,\n  P extends Array<any> = void[]\n> extends RefOnceInit<T, P> {\n  protected declare observe: Ref<T>;\n  get target(): Ref<T> {\n    return super.target as Ref<T>;\n  }\n  constructor(defaultValue: T) {\n    super();\n    this.observe.value = defaultValue;\n  }\n}\n"],"names":["oi","args","Function","length","Error","promise","RefOnceInit","initPromise","defaultValue","InitRefOnceInit","InitOnceInit","target","factory","raw","observe","value","constructor","super","ref","loading","this","onLoading","event"],"mappings":"iFAWwBA,QACnBC,2BAEH,KAAMA,EAAK,aAAcC,WAAaD,EAAKE,OAAS,GAAKF,EAAKE,OAAS,EACrE,UAAUC,MAAM,oCAElB,MAAMC,EAAuCJ,EAAK,GAClD,GAAoB,IAAhBA,EAAKE,OACP,yBAA0BG,qCACdC,YAAcF,IAErB,CACL,MAAMG,EAAkBP,EAAK,GAC7B,yBAA0BQ,qCACdF,YAAcF,IACvBG,UAIeF,UAGZI,EAEJC,aACF,aAAaA,OAGLC,QAAQC,EAAQC,GACxBA,EAAQC,MAAQF,EAElBG,cACEC,MAAMC,UALRC,QAAUD,GAAa,GAMrBE,KAAKC,UAAWC,IACdF,KAAKD,QAAQJ,MAAQO,WAKLb,UAGZH,EAEJK,aACF,aAAaA,OAEfK,YAAYR,GACVS,QACAG,KAAKN,QAAQC,MAAQP"}