{"version":3,"file":"date-picker.mjs","sources":["../../../../../../packages/components/date-picker/src/date-picker.tsx"],"sourcesContent":["import { defineComponent, provide, reactive, ref, toRef } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport advancedFormat from 'dayjs/plugin/advancedFormat'\nimport localeData from 'dayjs/plugin/localeData'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport weekYear from 'dayjs/plugin/weekYear'\nimport dayOfYear from 'dayjs/plugin/dayOfYear'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter'\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore'\nimport { useNamespace } from '@bigin/hooks'\nimport { ROOT_PICKER_INJECTION_KEY } from '@bigin/tokens'\nimport {\n  CommonPicker,\n  DEFAULT_FORMATS_DATE,\n  DEFAULT_FORMATS_DATEPICKER,\n  timePickerDefaultProps,\n} from '@bigin/components/time-picker'\n\nimport { datePickerProps } from './props/date-picker'\nimport { getPanel } from './panel-utils'\n\ndayjs.extend(localeData)\ndayjs.extend(advancedFormat)\ndayjs.extend(customParseFormat)\ndayjs.extend(weekOfYear)\ndayjs.extend(weekYear)\ndayjs.extend(dayOfYear)\ndayjs.extend(isSameOrAfter)\ndayjs.extend(isSameOrBefore)\n\nexport default defineComponent({\n  name: 'BDatePicker',\n  install: null,\n  props: {\n    // FIXME: move this to date-picker.ts\n    ...timePickerDefaultProps,\n    ...datePickerProps,\n  },\n  emits: ['update:modelValue'],\n  setup(props, { expose, emit, slots }) {\n    const ns = useNamespace('picker-panel')\n\n    provide('BPopperOptions', reactive(toRef(props, 'popperOptions')))\n    provide(ROOT_PICKER_INJECTION_KEY, {\n      slots,\n      pickerNs: ns,\n    })\n\n    const commonPicker = ref<InstanceType<typeof CommonPicker>>()\n    const refProps = {\n      focus: (focusStartInput = true) => {\n        commonPicker.value?.focus(focusStartInput)\n      },\n      handleOpen: () => {\n        commonPicker.value?.handleOpen()\n      },\n      handleClose: () => {\n        commonPicker.value?.handleClose()\n      },\n    }\n\n    expose(refProps)\n\n    const onModelValueUpdated = (val: any) => {\n      emit('update:modelValue', val)\n    }\n\n    return () => {\n      // since props always have all defined keys on it, {format, ...props} will always overwrite format\n      // pick props.format or provide default value here before spreading\n      const format =\n        props.format ??\n        (DEFAULT_FORMATS_DATEPICKER[props.type] || DEFAULT_FORMATS_DATE)\n\n      const Component = getPanel(props.type)\n\n      return (\n        <CommonPicker\n          {...props}\n          format={format}\n          type={props.type}\n          ref={commonPicker}\n          data-test-name={'date-picker'}\n          onUpdate:modelValue={onModelValueUpdated}\n        >\n          {{\n            default: (scopedProps: /**FIXME: remove any type */ any) => (\n              <Component {...scopedProps} />\n            ),\n            'range-separator': slots['range-separator'],\n          }}\n        </CommonPicker>\n      )\n    }\n  },\n})\n"],"names":["dayjs","extend","localeData","advancedFormat","customParseFormat","weekOfYear","weekYear","dayOfYear","isSameOrAfter","isSameOrBefore","defineComponent","name","install","props","timePickerDefaultProps","datePickerProps","emits","setup","expose","emit","slots","ns","useNamespace","provide","reactive","toRef","ROOT_PICKER_INJECTION_KEY","pickerNs","commonPicker","ref","refProps","focus","focusStartInput","value","handleOpen","handleClose","onModelValueUpdated","val","format","DEFAULT_FORMATS_DATEPICKER","type","DEFAULT_FORMATS_DATE","Component","getPanel","_createVNode","_mergeProps","default","scopedProps"],"mappings":"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"}