{"version":3,"file":"RangeContext.cjs","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","defineComponent","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,WAAAA,CAAQJ,iBAAiBG,KAAK,CAAA,CAAA;AAChC,CAAA;AAEO,SAASE,cAAiB,GAAA;AAC/B,EAAA,OAAOC,WAAON,eAAiB,EAAA;AAAA,IAC7BO,aAAaC,OAAI,EAAA;AAAA,IACjBC,kBAAkBD,OAAI,EAAA;AAAA,IACtBE,SAASF,OAAI,EAAA;AAAA,IACbG,eAAeH,OAAI,EAAA;AAAA,GACpB,CAAA,CAAA;AACH,CAAA;AAEO,MAAMI,uCAAuCC,mBAAA,CAAA;AAAA,EAClDC,YAAc,EAAA;AAAA,IAAEC,IAAM,EAAA,CAAA;AAAA,GAAE;AAAA,EACxBC,IAAM,EAAA,sBAAA;AAAA,EACNC,YAAc,EAAA,KAAA;AAAA,EACdd,KAAO,EAAA;AAAA,IACLe,KAAO,EAAA;AAAA,MACLC,IAAMC,EAAAA,MAAAA;AAAAA,MACNC,OAAAA,EAASA,OAAO,EAAC,CAAA;AAAA,KACnB;AAAA,GACF;AAAA,EACAC,MAAMnB,KAAO,EAAA;AAAA,IAAEoB,KAAAA;AAAAA,GAAS,EAAA;AACtB,IAAA,MAAML,KAA2B,GAAA;AAAA,MAC/BX,WAAaC,EAAAA,OAAAA,CAAIL,KAAMe,CAAAA,KAAAA,CAAMX,WAAW,CAAA;AAAA,MACxCE,gBAAkBD,EAAAA,OAAAA,CAAIL,KAAMe,CAAAA,KAAAA,CAAMT,gBAAgB,CAAA;AAAA,MAClDC,OAASF,EAAAA,OAAAA,CAAIL,KAAMe,CAAAA,KAAAA,CAAMR,OAAO,CAAA;AAAA,MAChCC,aAAeH,EAAAA,OAAAA,CAAIL,KAAMe,CAAAA,KAAAA,CAAMP,aAAa,CAAA;AAAA,KAC9C,CAAA;AACAT,IAAAA,eAAAA,CAAgBgB,KAAK,CAAA,CAAA;AACrBM,IAAAA,SAAAA,CAAAA;AACAC,IACEA,SAAA,CAAA,MAAMtB,KAAMe,CAAAA,KAAAA,EACZ,MAAM;AACJE,MAAAA,MAAAA,CAAOM,IAAKvB,CAAAA,KAAAA,CAAMe,KAAK,CAAA,CAAES,QAASC,CAAQ,GAAA,KAAA;AACxC,QAAA,IAAIV,MAAMU,GAAG,CAAA;AACXV,UAAAA,KAAAA,CAAMU,GAAG,CAAA,CAAEV,KAAQf,GAAAA,KAAAA,CAAMe,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;;;;;;;"}