{"version":3,"file":"create-context.mjs","sources":["../../../../../../packages/formily/__builtins__/shared/create-context.ts"],"sourcesContent":["import {\n  InjectionKey,\n  Ref,\n  defineComponent,\n  inject,\n  provide,\n  readonly,\n  ref,\n  toRef,\n} from 'vue'\nimport type { DefineComponent } from 'vue'\n\nexport type CreateContext<T> = {\n  Provider?: DefineComponent\n  Consumer?: DefineComponent\n  injectKey: InjectionKey<Ref<T>>\n}\n\nexport const createContext = <T>(defaultValue?: T): CreateContext<T> => {\n  const injectKey: InjectionKey<Ref<T>> = Symbol()\n\n  return {\n    Provider: defineComponent({\n      name: 'ContextProvider',\n      props: {\n        value: {\n          type: null,\n          default() {\n            return defaultValue ?? null\n          },\n        },\n      },\n      setup(props: any, { slots }: any) {\n        const value = toRef(props, 'value')\n        provide(injectKey, readonly(value))\n\n        return () => slots?.default?.()\n      },\n    }),\n\n    Consumer: defineComponent({\n      name: 'ContextConsumer',\n      setup(_props, { slots }) {\n        const value = inject(injectKey)\n        return () => slots?.default?.(value)\n      },\n    }),\n    injectKey,\n  }\n}\n\nexport const useContext = <T>(context: CreateContext<T>) => {\n  const key = context.injectKey\n  return inject(key, ref(null) as any)\n}\n"],"names":[],"mappings":";;AAkBa,MAAA,aAAA,GAAgB,CAAI,YAAuC,KAAA;AACtE,EAAA,MAAM,YAAkC,MAAO,EAAA,CAAA;AAE/C,EAAO,OAAA;AAAA,IACL,UAAU,eAAgB,CAAA;AAAA,MACxB,IAAM,EAAA,iBAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,KAAO,EAAA;AAAA,UACL,IAAM,EAAA,IAAA;AAAA,UACN,OAAU,GAAA;AACR,YAAA,OAAO,YAAgB,IAAA,IAAA,GAAA,YAAA,GAAA,IAAA,CAAA;AAAA,WACzB;AAAA,SACF;AAAA,OACF;AAAA,MACA,KAAM,CAAA,KAAA,EAAY,EAAE,KAAA,EAAc,EAAA;AAChC,QAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAClC,QAAQ,OAAA,CAAA,SAAA,EAAW,QAAS,CAAA,KAAK,CAAC,CAAA,CAAA;AAElC,QAAA,OAAO,MAAG;AApClB,UAAA,IAAA,EAAA,CAAA;AAoCqB,UAAA,OAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,OAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,SAAA,CAAA;AAAA,OACf;AAAA,KACD,CAAA;AAAA,IAED,UAAU,eAAgB,CAAA;AAAA,MACxB,IAAM,EAAA,iBAAA;AAAA,MACN,KAAM,CAAA,MAAA,EAAQ,EAAE,KAAA,EAAS,EAAA;AACvB,QAAM,MAAA,KAAA,GAAQ,OAAO,SAAS,CAAA,CAAA;AAC9B,QAAA,OAAO,MAAG;AA5ClB,UAAA,IAAA,EAAA,CAAA;AA4CqB,UAAA,OAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,YAAP,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA;AAAA,SAAA,CAAA;AAAA,OAChC;AAAA,KACD,CAAA;AAAA,IACD,SAAA;AAAA,GACF,CAAA;AACF,EAAA;AAEa,MAAA,UAAA,GAAa,CAAI,OAA8B,KAAA;AAC1D,EAAA,MAAM,MAAM,OAAQ,CAAA,SAAA,CAAA;AACpB,EAAA,OAAO,MAAO,CAAA,GAAA,EAAK,GAAI,CAAA,IAAI,CAAQ,CAAA,CAAA;AACrC;;;;"}