UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 37.8 kB
{"version":3,"file":"panel-date-range.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-date-range.vue"],"sourcesContent":["<template>\n <div\n class=\"el-picker-panel el-date-range-picker\"\n :class=\"[\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n 'has-time': showTime,\n },\n ]\"\n >\n <div class=\"el-picker-panel__body-wrapper\">\n <slot name=\"sidebar\" class=\"el-picker-panel__sidebar\"></slot>\n <div v-if=\"hasShortcuts\" class=\"el-picker-panel__sidebar\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n class=\"el-picker-panel__shortcut\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div class=\"el-picker-panel__body\">\n <div v-if=\"showTime\" class=\"el-date-range-picker__time-header\">\n <span class=\"el-date-range-picker__editors-wrap\">\n <span class=\"el-date-range-picker__time-picker-wrap\">\n <el-input\n size=\"small\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.startDate')\"\n class=\"el-date-range-picker__editor\"\n :model-value=\"minVisibleDate\"\n @input=\"(val) => handleDateInput(val, 'min')\"\n @change=\"(val) => handleDateChange(val, 'min')\"\n />\n </span>\n <span\n v-clickoutside=\"handleMinTimeClose\"\n class=\"el-date-range-picker__time-picker-wrap\"\n >\n <el-input\n size=\"small\"\n class=\"el-date-range-picker__editor\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.startTime')\"\n :model-value=\"minVisibleTime\"\n @focus=\"minTimePickerVisible = true\"\n @input=\"(val) => handleTimeInput(val, 'min')\"\n @change=\"(val) => handleTimeChange(val, 'min')\"\n />\n <time-pick-panel\n :visible=\"minTimePickerVisible\"\n :format=\"timeFormat\"\n datetime-role=\"start\"\n :time-arrow-control=\"arrowControl\"\n :parsed-value=\"leftDate\"\n @pick=\"handleMinTimePick\"\n />\n </span>\n </span>\n <span>\n <el-icon><arrow-right /></el-icon>\n </span>\n <span class=\"el-date-range-picker__editors-wrap is-right\">\n <span class=\"el-date-range-picker__time-picker-wrap\">\n <el-input\n size=\"small\"\n class=\"el-date-range-picker__editor\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.endDate')\"\n :model-value=\"maxVisibleDate\"\n :readonly=\"!minDate\"\n @input=\"(val) => handleDateInput(val, 'max')\"\n @change=\"(val) => handleDateChange(val, 'max')\"\n />\n </span>\n <span\n v-clickoutside=\"handleMaxTimeClose\"\n class=\"el-date-range-picker__time-picker-wrap\"\n >\n <el-input\n size=\"small\"\n class=\"el-date-range-picker__editor\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.endTime')\"\n :model-value=\"maxVisibleTime\"\n :readonly=\"!minDate\"\n @focus=\"minDate && (maxTimePickerVisible = true)\"\n @input=\"(val) => handleTimeInput(val, 'max')\"\n @change=\"(val) => handleTimeChange(val, 'max')\"\n />\n <time-pick-panel\n datetime-role=\"end\"\n :visible=\"maxTimePickerVisible\"\n :format=\"timeFormat\"\n :time-arrow-control=\"arrowControl\"\n :parsed-value=\"rightDate\"\n @pick=\"handleMaxTimePick\"\n />\n </span>\n </span>\n </div>\n <div\n class=\"el-picker-panel__content el-date-range-picker__content is-left\"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"leftPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn arrow-left\"\n @click=\"leftPrevMonth\"\n >\n <el-icon><arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"leftNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableMonthArrow\"\n :class=\"{ 'is-disabled': !enableMonthArrow }\"\n class=\"el-picker-panel__icon-btn arrow-right\"\n @click=\"leftNextMonth\"\n >\n <el-icon><arrow-right /></el-icon>\n </button>\n <div>{{ leftLabel }}</div>\n </div>\n <date-table\n selection-mode=\"range\"\n :date=\"leftDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n :cell-class-name=\"cellClassName\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n <div\n class=\"el-picker-panel__content el-date-range-picker__content is-right\"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"rightPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableMonthArrow\"\n :class=\"{ 'is-disabled': !enableMonthArrow }\"\n class=\"el-picker-panel__icon-btn arrow-left\"\n @click=\"rightPrevMonth\"\n >\n <el-icon><arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"rightNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn arrow-right\"\n @click=\"rightNextMonth\"\n >\n <el-icon><arrow-right /></el-icon>\n </button>\n <div>{{ rightLabel }}</div>\n </div>\n <date-table\n selection-mode=\"range\"\n :date=\"rightDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n :cell-class-name=\"cellClassName\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n </div>\n </div>\n <div v-if=\"showTime\" class=\"el-picker-panel__footer\">\n <el-button\n v-if=\"clearable\"\n size=\"small\"\n type=\"text\"\n class=\"el-picker-panel__link-btn\"\n @click=\"handleClear\"\n >\n {{ t('el.datepicker.clear') }}\n </el-button>\n <el-button\n plain\n size=\"small\"\n class=\"el-picker-panel__link-btn\"\n :disabled=\"btnDisabled\"\n @click=\"handleConfirm(false)\"\n >\n {{ t('el.datepicker.confirm') }}\n </el-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, watch, toRef } from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@element-plus/components/button'\nimport { ClickOutside } from '@element-plus/directives'\nimport { useLocale } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport {\n extractDateFormat,\n extractTimeFormat,\n TimePickPanel,\n} from '@element-plus/components/time-picker'\nimport ElIcon from '@element-plus/components/icon'\nimport { isValidDatePickType } from '@element-plus/utils'\nimport {\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n} from '@element-plus/icons-vue'\nimport DateTable from './basic-date-table.vue'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { IDatePickerType } from '../date-picker.type'\n\nexport default defineComponent({\n directives: { clickoutside: ClickOutside },\n\n components: {\n TimePickPanel,\n DateTable,\n ElInput,\n ElButton,\n ElIcon,\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n },\n\n props: {\n unlinkPanels: Boolean,\n parsedValue: {\n type: Array as PropType<Dayjs[]>,\n },\n type: {\n type: String as PropType<IDatePickerType>,\n required: true,\n validator: isValidDatePickType,\n },\n },\n\n emits: ['pick', 'set-picker-option', 'calendar-change', 'panel-change'],\n\n setup(props, ctx) {\n const { t, lang } = useLocale()\n const leftDate = ref(dayjs().locale(lang.value))\n const rightDate = ref(dayjs().locale(lang.value).add(1, 'month'))\n const minDate = ref(null)\n const maxDate = ref(null)\n const dateUserInput = ref({\n min: null,\n max: null,\n })\n\n const timeUserInput = ref({\n min: null,\n max: null,\n })\n\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t('el.datepicker.year')} ${t(\n `el.datepicker.month${leftDate.value.month() + 1}`\n )}`\n })\n\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t('el.datepicker.year')} ${t(\n `el.datepicker.month${rightDate.value.month() + 1}`\n )}`\n })\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n\n const leftMonth = computed(() => {\n return leftDate.value.month()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year()\n })\n\n const rightMonth = computed(() => {\n return rightDate.value.month()\n })\n\n const hasShortcuts = computed(() => !!shortcuts.length)\n\n const minVisibleDate = computed(() => {\n if (dateUserInput.value.min !== null) return dateUserInput.value.min\n if (minDate.value) return minDate.value.format(dateFormat.value)\n return ''\n })\n\n const maxVisibleDate = computed(() => {\n if (dateUserInput.value.max !== null) return dateUserInput.value.max\n if (maxDate.value || minDate.value)\n return (maxDate.value || minDate.value).format(dateFormat.value)\n return ''\n })\n\n const minVisibleTime = computed(() => {\n if (timeUserInput.value.min !== null) return timeUserInput.value.min\n if (minDate.value) return minDate.value.format(timeFormat.value)\n return ''\n })\n\n const maxVisibleTime = computed(() => {\n if (timeUserInput.value.max !== null) return timeUserInput.value.max\n if (maxDate.value || minDate.value)\n return (maxDate.value || minDate.value).format(timeFormat.value)\n return ''\n })\n\n const timeFormat = computed(() => {\n return extractTimeFormat(format)\n })\n\n const dateFormat = computed(() => {\n return extractDateFormat(format)\n })\n\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, 'year')\n if (!props.unlinkPanels) {\n rightDate.value = leftDate.value.add(1, 'month')\n }\n handlePanelChange('year')\n }\n\n const leftPrevMonth = () => {\n leftDate.value = leftDate.value.subtract(1, 'month')\n if (!props.unlinkPanels) {\n rightDate.value = leftDate.value.add(1, 'month')\n }\n handlePanelChange('month')\n }\n\n const rightNextYear = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'year')\n rightDate.value = leftDate.value.add(1, 'month')\n } else {\n rightDate.value = rightDate.value.add(1, 'year')\n }\n handlePanelChange('year')\n }\n\n const rightNextMonth = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'month')\n rightDate.value = leftDate.value.add(1, 'month')\n } else {\n rightDate.value = rightDate.value.add(1, 'month')\n }\n handlePanelChange('month')\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, 'year')\n handlePanelChange('year')\n }\n\n const leftNextMonth = () => {\n leftDate.value = leftDate.value.add(1, 'month')\n handlePanelChange('month')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, 'year')\n handlePanelChange('year')\n }\n\n const rightPrevMonth = () => {\n rightDate.value = rightDate.value.subtract(1, 'month')\n handlePanelChange('month')\n }\n\n const handlePanelChange = (mode: 'month' | 'year') => {\n ctx.emit(\n 'panel-change',\n [leftDate.value.toDate(), rightDate.value.toDate()],\n mode\n )\n }\n\n const enableMonthArrow = computed(() => {\n const nextMonth = (leftMonth.value + 1) % 12\n const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0\n return (\n props.unlinkPanels &&\n new Date(leftYear.value + yearOffset, nextMonth) <\n new Date(rightYear.value, rightMonth.value)\n )\n })\n\n const enableYearArrow = computed(() => {\n return (\n props.unlinkPanels &&\n rightYear.value * 12 +\n rightMonth.value -\n (leftYear.value * 12 + leftMonth.value + 1) >=\n 12\n )\n })\n\n const isValidValue = (value) => {\n return (\n Array.isArray(value) &&\n value[0] &&\n value[1] &&\n value[0].valueOf() <= value[1].valueOf()\n )\n }\n\n const rangeState = ref({\n endDate: null,\n selecting: false,\n })\n\n const btnDisabled = computed(() => {\n return !(\n minDate.value &&\n maxDate.value &&\n !rangeState.value.selecting &&\n isValidValue([minDate.value, maxDate.value])\n )\n })\n\n const handleChangeRange = (val) => {\n rangeState.value = val\n }\n\n const onSelect = (selecting) => {\n rangeState.value.selecting = selecting\n if (!selecting) {\n rangeState.value.endDate = null\n }\n }\n\n const showTime = computed(\n () => props.type === 'datetime' || props.type === 'datetimerange'\n )\n\n const handleConfirm = (visible = false) => {\n if (isValidValue([minDate.value, maxDate.value])) {\n ctx.emit('pick', [minDate.value, maxDate.value], visible)\n }\n }\n\n const formatEmit = (emitDayjs: Dayjs, index?) => {\n if (!emitDayjs) return\n if (defaultTime) {\n const defaultTimeD = dayjs(defaultTime[index] || defaultTime).locale(\n lang.value\n )\n return defaultTimeD\n .year(emitDayjs.year())\n .month(emitDayjs.month())\n .date(emitDayjs.date())\n }\n return emitDayjs\n }\n\n const handleRangePick = (val, close = true) => {\n const min_ = val.minDate\n const max_ = val.maxDate\n const minDate_ = formatEmit(min_, 0)\n const maxDate_ = formatEmit(max_, 1)\n\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return\n }\n ctx.emit('calendar-change', [min_.toDate(), max_ && max_.toDate()])\n maxDate.value = maxDate_\n minDate.value = minDate_\n\n if (!close || showTime.value) return\n handleConfirm()\n }\n\n const handleShortcutClick = (shortcut) => {\n const shortcutValues =\n typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value\n if (shortcutValues) {\n ctx.emit('pick', [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value),\n ])\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick(ctx)\n }\n }\n\n const minTimePickerVisible = ref(false)\n const maxTimePickerVisible = ref(false)\n\n const handleMinTimeClose = () => {\n minTimePickerVisible.value = false\n }\n\n const handleMaxTimeClose = () => {\n maxTimePickerVisible.value = false\n }\n\n const handleDateInput = (value, type) => {\n dateUserInput.value[type] = value\n const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value)\n\n if (parsedValueD.isValid()) {\n if (disabledDate && disabledDate(parsedValueD.toDate())) {\n return\n }\n if (type === 'min') {\n leftDate.value = parsedValueD\n minDate.value = (minDate.value || leftDate.value)\n .year(parsedValueD.year())\n .month(parsedValueD.month())\n .date(parsedValueD.date())\n if (!props.unlinkPanels) {\n rightDate.value = parsedValueD.add(1, 'month')\n maxDate.value = minDate.value.add(1, 'month')\n }\n } else {\n rightDate.value = parsedValueD\n maxDate.value = (maxDate.value || rightDate.value)\n .year(parsedValueD.year())\n .month(parsedValueD.month())\n .date(parsedValueD.date())\n if (!props.unlinkPanels) {\n leftDate.value = parsedValueD.subtract(1, 'month')\n minDate.value = maxDate.value.subtract(1, 'month')\n }\n }\n }\n }\n\n const handleDateChange = (_, type) => {\n dateUserInput.value[type] = null\n }\n\n const handleTimeInput = (value, type) => {\n timeUserInput.value[type] = value\n const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value)\n\n if (parsedValueD.isValid()) {\n if (type === 'min') {\n minTimePickerVisible.value = true\n minDate.value = (minDate.value || leftDate.value)\n .hour(parsedValueD.hour())\n .minute(parsedValueD.minute())\n .second(parsedValueD.second())\n if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n maxDate.value = minDate.value\n }\n } else {\n maxTimePickerVisible.value = true\n maxDate.value = (maxDate.value || rightDate.value)\n .hour(parsedValueD.hour())\n .minute(parsedValueD.minute())\n .second(parsedValueD.second())\n rightDate.value = maxDate.value\n if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n minDate.value = maxDate.value\n }\n }\n }\n }\n\n const handleTimeChange = (value, type) => {\n timeUserInput.value[type] = null\n if (type === 'min') {\n leftDate.value = minDate.value\n minTimePickerVisible.value = false\n } else {\n rightDate.value = maxDate.value\n maxTimePickerVisible.value = false\n }\n }\n\n const handleMinTimePick = (value, visible, first) => {\n if (timeUserInput.value.min) return\n if (value) {\n leftDate.value = value\n minDate.value = (minDate.value || leftDate.value)\n .hour(value.hour())\n .minute(value.minute())\n .second(value.second())\n }\n\n if (!first) {\n minTimePickerVisible.value = visible\n }\n\n if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n maxDate.value = minDate.value\n rightDate.value = value\n }\n }\n\n const handleMaxTimePick = (value, visible, first) => {\n if (timeUserInput.value.max) return\n if (value) {\n rightDate.value = value\n maxDate.value = (maxDate.value || rightDate.value)\n .hour(value.hour())\n .minute(value.minute())\n .second(value.second())\n }\n\n if (!first) {\n maxTimePickerVisible.value = visible\n }\n\n if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n minDate.value = maxDate.value\n }\n }\n\n const handleClear = () => {\n leftDate.value = getDefaultValue()[0]\n rightDate.value = leftDate.value.add(1, 'month')\n ctx.emit('pick', null)\n }\n\n const formatToString = (value: Dayjs | Dayjs[]) => {\n return Array.isArray(value)\n ? value.map((_) => _.format(format))\n : value.format(format)\n }\n\n const parseUserInput = (value: Dayjs | Dayjs[]) => {\n return Array.isArray(value)\n ? value.map((_) => dayjs(_, format).locale(lang.value))\n : dayjs(value, format).locale(lang.value)\n }\n\n const getDefaultValue = () => {\n let start: Dayjs\n if (Array.isArray(defaultValue.value)) {\n const left = dayjs(defaultValue.value[0])\n let right = dayjs(defaultValue.value[1])\n if (!props.unlinkPanels) {\n right = left.add(1, 'month')\n }\n return [left, right]\n } else if (defaultValue.value) {\n start = dayjs(defaultValue.value)\n } else {\n start = dayjs()\n }\n\n start = start.locale(lang.value)\n return [start, start.add(1, 'month')]\n }\n\n ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n ctx.emit('set-picker-option', ['handleClear', handleClear])\n\n const pickerBase = inject('EP_PICKER_BASE') as any\n const {\n shortcuts,\n disabledDate,\n cellClassName,\n format,\n defaultTime,\n arrowControl,\n clearable,\n } = pickerBase.props\n const defaultValue = toRef(pickerBase.props, 'defaultValue')\n\n watch(\n () => defaultValue.value,\n (val) => {\n if (val) {\n const defaultArr = getDefaultValue()\n minDate.value = null\n maxDate.value = null\n leftDate.value = defaultArr[0]\n rightDate.value = defaultArr[1]\n }\n },\n { immediate: true }\n )\n\n watch(\n () => props.parsedValue,\n (newVal) => {\n if (newVal && newVal.length === 2) {\n minDate.value = newVal[0]\n maxDate.value = newVal[1]\n leftDate.value = minDate.value\n if (props.unlinkPanels && maxDate.value) {\n const minDateYear = minDate.value.year()\n const minDateMonth = minDate.value.month()\n const maxDateYear = maxDate.value.year()\n const maxDateMonth = maxDate.value.month()\n rightDate.value =\n minDateYear === maxDateYear && minDateMonth === maxDateMonth\n ? maxDate.value.add(1, 'month')\n : maxDate.value\n } else {\n rightDate.value = leftDate.value.add(1, 'month')\n if (maxDate.value) {\n rightDate.value = rightDate.value\n .hour(maxDate.value.hour())\n .minute(maxDate.value.minute())\n .second(maxDate.value.second())\n }\n }\n } else {\n const defaultArr = getDefaultValue()\n minDate.value = null\n maxDate.value = null\n leftDate.value = defaultArr[0]\n rightDate.value = defaultArr[1]\n }\n },\n { immediate: true }\n )\n\n return {\n shortcuts,\n disabledDate,\n cellClassName,\n minTimePickerVisible,\n maxTimePickerVisible,\n handleMinTimeClose,\n handleMaxTimeClose,\n handleShortcutClick,\n rangeState,\n minDate,\n maxDate,\n handleRangePick,\n onSelect,\n handleChangeRange,\n btnDisabled,\n enableYearArrow,\n enableMonthArrow,\n rightPrevMonth,\n rightPrevYear,\n rightNextMonth,\n rightNextYear,\n leftPrevMonth,\n leftPrevYear,\n leftNextMonth,\n leftNextYear,\n hasShortcuts,\n leftLabel,\n rightLabel,\n leftDate,\n rightDate,\n showTime,\n t,\n minVisibleDate,\n maxVisibleDate,\n minVisibleTime,\n maxVisibleTime,\n arrowControl,\n handleDateInput,\n handleDateChange,\n handleTimeInput,\n handleTimeChange,\n handleMinTimePick,\n handleMaxTimePick,\n handleClear,\n handleConfirm,\n timeFormat,\n clearable,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_Fragment","_createElementBlock","_createCommentVNode","_withCtx","_normalizeClass"],"mappings":"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"}