{"version":3,"file":"index.cjs","sources":["../../../../../packages/hooks/use-context/index.ts"],"sourcesContent":["import type { InjectionKey } from 'vue';\nimport { inject, provide, reactive, readonly } from 'vue';\n\ninterface CreateContextFnOptions {\n  /**\n   * @description Whether the injected variable is writable or not\n   * @default false\n   */\n  writeable?: boolean\n  /**\n   * @description Does the data need to be responsive\n   * @default true\n   */\n  reactiveable?: boolean\n}\n\nfunction createContextFn<T>(\n  key: InjectionKey<T> = Symbol('InjectionKey'),\n  context: any,\n  options: CreateContextFnOptions = {},\n) {\n  const { writeable = false, reactiveable = true } = options;\n\n  const reactiveContext = reactive(context);\n  let provideData: T;\n  if (!reactiveable)\n    provideData = context;\n  else\n    provideData = !writeable ? readonly(reactiveContext) : reactiveContext;\n\n  provide(key, provideData);\n}\n\nfunction useContext<T>(key: InjectionKey<T> = Symbol('InjectionKey'), defaultValue?: any): T {\n  return inject(key, defaultValue || {});\n}\n\nexport { createContextFn, type CreateContextFnOptions, useContext };\n"],"names":["reactive","readonly","provide","inject"],"mappings":";;;;AAgBA,SAAS,eAAA,CACP,MAAuB,MAAO,CAAA,cAAc,GAC5C,OACA,EAAA,OAAA,GAAkC,EAClC,EAAA;AACA,EAAA,MAAM,EAAE,SAAA,GAAY,KAAO,EAAA,YAAA,GAAe,MAAS,GAAA,OAAA,CAAA;AAEnD,EAAM,MAAA,eAAA,GAAkBA,aAAS,OAAO,CAAA,CAAA;AACxC,EAAI,IAAA,WAAA,CAAA;AACJ,EAAA,IAAI,CAAC,YAAA;AACH,IAAc,WAAA,GAAA,OAAA,CAAA;AAAA;AAEd,IAAA,WAAA,GAAc,CAAC,SAAA,GAAYC,YAAS,CAAA,eAAe,CAAI,GAAA,eAAA,CAAA;AAEzD,EAAAC,WAAA,CAAQ,KAAK,WAAW,CAAA,CAAA;AAC1B,CAAA;AAEA,SAAS,UAAc,CAAA,GAAA,GAAuB,MAAO,CAAA,cAAc,GAAG,YAAuB,EAAA;AAC3F,EAAA,OAAOC,UAAO,CAAA,GAAA,EAAK,YAAgB,IAAA,EAAE,CAAA,CAAA;AACvC;;;;;"}