{"version":3,"file":"RangeContext.mjs","sources":["../../../../../../packages/vue-components/vc-picker/src/RangeContext.tsx"],"sourcesContent":["import type { InjectionKey, PropType, Ref } from 'vue';\nimport type { NullableDateType, RangeValue } from './interface';\nimport {\n  defineComponent,\n  inject,\n  provide,\n  ref,\n  toRef,\n  watch,\n} from 'vue';\n\nexport interface RangeContextProps {\n  /**\n   * Set displayed range value style.\n   * Panel only has one value, this is only style effect.\n   */\n  rangedValue?: Ref<[NullableDateType<any>, NullableDateType<any>] | null>;\n  hoverRangedValue?: Ref<RangeValue<any>>;\n  inRange?: Ref<boolean>;\n  panelPosition?: Ref<'left' | 'right' | false>;\n}\n\ninterface RangeContextProviderValue {\n  /**\n   * Set displayed range value style.\n   * Panel only has one value, this is only style effect.\n   */\n  rangedValue?: [NullableDateType<any>, NullableDateType<any>] | null;\n  hoverRangedValue?: RangeValue<any>;\n  inRange?: boolean;\n  panelPosition?: 'left' | 'right' | false;\n}\n\nconst RangeContextKey: InjectionKey<RangeContextProps> = Symbol('RangeContextProps');\n\nexport function useProvideRange(props: RangeContextProps) {\n  provide(RangeContextKey, props);\n}\n\nexport function useInjectRange() {\n  return inject(RangeContextKey, {\n    rangedValue: ref(),\n    hoverRangedValue: ref(),\n    inRange: ref(),\n    panelPosition: ref(),\n  });\n}\n\nexport const RangeContextProvider = defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'PanelContextProvider',\n  inheritAttrs: false,\n  props: {\n    value: {\n      type: Object as PropType<RangeContextProviderValue>,\n      default: () => ({} as RangeContextProviderValue),\n    },\n  },\n  setup(props, { slots }) {\n    const value: RangeContextProps = {\n      rangedValue: ref(props.value.rangedValue),\n      hoverRangedValue: ref(props.value.hoverRangedValue),\n      inRange: ref(props.value.inRange),\n      panelPosition: ref(props.value.panelPosition),\n    };\n    useProvideRange(value);\n    toRef;\n    watch(\n      () => props.value,\n      () => {\n        Object.keys(props.value).forEach((key) => {\n          if (value[key])\n            value[key].value = props.value[key];\n        });\n      },\n    );\n    return () => slots.default?.();\n  },\n});\n\nexport default RangeContextKey;\n"],"names":["RangeContextKey","Symbol","useProvideRange","props","provide","useInjectRange","inject","rangedValue","ref","hoverRangedValue","inRange","panelPosition","RangeContextProvider","compatConfig","MODE","name","inheritAttrs","value","type","Object","default","setup","slots","toRef","watch","keys","forEach","key"],"mappings":";;AAiCMA,MAAAA,eAAAA,GAAmDC,OAAO,mBAAmB,EAAA;AAE5E,SAASC,gBAAgBC,KAA0B,EAAA;AACxDC,EAAAA,OAAAA,CAAQJ,iBAAiBG,KAAK,CAAA,CAAA;AAChC,CAAA;AAEO,SAASE,cAAiB,GAAA;AAC/B,EAAA,OAAOC,OAAON,eAAiB,EAAA;AAAA,IAC7BO,aAAaC,GAAI,EAAA;AAAA,IACjBC,kBAAkBD,GAAI,EAAA;AAAA,IACtBE,SAASF,GAAI,EAAA;AAAA,IACbG,eAAeH,GAAI,EAAA;AAAA,GACpB,CAAA,CAAA;AACH,CAAA;AAEO,MAAMI,uCAAuC,eAAA,CAAA;AAAA,EAClDC,YAAc,EAAA;AAAA,IAAEC,IAAM,EAAA,CAAA;AAAA,GAAE;AAAA,EACxBC,IAAM,EAAA,sBAAA;AAAA,EACNC,YAAc,EAAA,KAAA;AAAA,EACdb,KAAO,EAAA;AAAA,IACLc,KAAO,EAAA;AAAA,MACLC,IAAMC,EAAAA,MAAAA;AAAAA,MACNC,OAAAA,EAASA,OAAO,EAAC,CAAA;AAAA,KACnB;AAAA,GACF;AAAA,EACAC,MAAMlB,KAAO,EAAA;AAAA,IAAEmB,KAAAA;AAAAA,GAAS,EAAA;AACtB,IAAA,MAAML,KAA2B,GAAA;AAAA,MAC/BV,WAAaC,EAAAA,GAAAA,CAAIL,KAAMc,CAAAA,KAAAA,CAAMV,WAAW,CAAA;AAAA,MACxCE,gBAAkBD,EAAAA,GAAAA,CAAIL,KAAMc,CAAAA,KAAAA,CAAMR,gBAAgB,CAAA;AAAA,MAClDC,OAASF,EAAAA,GAAAA,CAAIL,KAAMc,CAAAA,KAAAA,CAAMP,OAAO,CAAA;AAAA,MAChCC,aAAeH,EAAAA,GAAAA,CAAIL,KAAMc,CAAAA,KAAAA,CAAMN,aAAa,CAAA;AAAA,KAC9C,CAAA;AACAT,IAAAA,eAAAA,CAAgBe,KAAK,CAAA,CAAA;AACrBM,IAAAA,KAAAA,CAAAA;AACAC,IACE,KAAA,CAAA,MAAMrB,KAAMc,CAAAA,KAAAA,EACZ,MAAM;AACJE,MAAAA,MAAAA,CAAOM,IAAKtB,CAAAA,KAAAA,CAAMc,KAAK,CAAA,CAAES,QAASC,CAAQ,GAAA,KAAA;AACxC,QAAA,IAAIV,MAAMU,GAAG,CAAA;AACXV,UAAAA,KAAAA,CAAMU,GAAG,CAAA,CAAEV,KAAQd,GAAAA,KAAAA,CAAMc,MAAMU,GAAG,CAAA,CAAA;AAAA,OACrC,CAAA,CAAA;AAAA,KAEL,CAAA,CAAA;AACA,IAAA,OAAO,MAAML;AA1EjB,MAAA,IAAA,EAAA,CAAA;AA0EiBA,MAAAA,OAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMF,OAANE,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AAAAA,KAAAA,CAAAA;AAAAA,GACf;AACF,CAAC;;;;"}