{"version":3,"file":"useAppGlobal.mjs","sources":["../../../../src/composables/useAppGlobal.ts"],"sourcesContent":["import { WritableComputedRef, computed, getCurrentInstance, reactive } from 'vue'\n\nconst getGlobalObject = () => {\n  const vm = getCurrentInstance()\n\n  const app = vm?.appContext.app\n\n  const { globalProperties } = app!.config\n\n  if ('$vaGlobalVariable' in globalProperties) {\n    return globalProperties.$vaGlobalVariable\n  }\n\n  globalProperties.$vaGlobalVariable = reactive({})\n\n  return globalProperties.$vaGlobalVariable\n}\n\n/**\n * This composable must be used to make global variables. This global is shared in app context, rather then\n * in window context. This is useful to avoid global variables in window context in multiple app mode, ssr\n * or cjs build can mess up global variables\n */\nexport const useAppGlobal = <T>(key: string, defaultValue: T): WritableComputedRef<T> => {\n  const globalObject = getGlobalObject()\n\n  if (!(key in globalObject)) {\n    globalObject[key] = defaultValue\n  }\n\n  return computed({\n    get: () => globalObject[key],\n    set: (value: T) => {\n      globalObject[key] = value\n    },\n  })\n}\n"],"names":[],"mappings":";AAEA,MAAM,kBAAkB,MAAM;AAC5B,QAAM,KAAK;AAEL,QAAA,MAAM,yBAAI,WAAW;AAErB,QAAA,EAAE,iBAAiB,IAAI,IAAK;AAElC,MAAI,uBAAuB,kBAAkB;AAC3C,WAAO,iBAAiB;AAAA,EAC1B;AAEiB,mBAAA,oBAAoB,SAAS,CAAA,CAAE;AAEhD,SAAO,iBAAiB;AAC1B;AAOa,MAAA,eAAe,CAAI,KAAa,iBAA4C;AACvF,QAAM,eAAe;AAEjB,MAAA,EAAE,OAAO,eAAe;AAC1B,iBAAa,GAAG,IAAI;AAAA,EACtB;AAEA,SAAO,SAAS;AAAA,IACd,KAAK,MAAM,aAAa,GAAG;AAAA,IAC3B,KAAK,CAAC,UAAa;AACjB,mBAAa,GAAG,IAAI;AAAA,IACtB;AAAA,EAAA,CACD;AACH;"}