@kne/react-calendar 1.0.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/locale/zh-CN.js","../src/locale/en-US.js","../src/withLocale.js","../src/constants.js","../src/useStackedPanelLayout.js","../src/utils.js","../src/rules.js","../src/events.js","../src/formatCalendarLabels.js","../src/components/Header/NavIcon.js","../src/components/Header/constants.js","../src/components/Header/YearPickerPanel.js","../src/components/Header/MonthPickerPanel.js","../src/components/Header/index.js","../src/useStackedLayout.js","../src/components/DateCell/index.js","../src/components/EventItem/getEventTagLabel.js","../src/components/EventItem/index.js","../src/components/Panel/PanelTitle.js","../src/components/Panel/PanelScrollShadow.js","../src/components/Panel/usePanelScrollShadow.js","../src/components/Panel/ViewPanel.js","../src/useScheduleSelectionGesture.js","../src/components/SchedulePanel/DefaultFormInner.js","../src/components/SchedulePanel/SlotEvents.js","../src/components/SchedulePanel/SlotItem.js","../src/components/SchedulePanel/index.js","../src/ScheduleCalendar.js"],"sourcesContent":["const locale = {\n 'Header.today': '今天',\n 'Header.prevMonth': '上一月',\n 'Header.nextMonth': '下一月',\n 'Header.prevYearPage': '上一组年份',\n 'Header.nextYearPage': '下一组年份',\n 'Header.yearLabel': '{year}年',\n 'Header.monthLabel': '{monthName}',\n 'Header.monthPickerItem': '{monthName}',\n 'PanelTitle.dateLabel': '{year}年{monthName}{day}日',\n 'PanelTitle.eventCount': '共 {count} 个日程',\n 'ViewPanel.empty': '暂无日程',\n 'SchedulePanel.selectFreeSlot': '选择空闲时间段',\n 'SchedulePanel.newSchedule': '新增日程:{range}',\n 'SchedulePanel.cancel': '取消',\n 'SchedulePanel.save': '保存',\n 'SlotItem.disabled': '不可选',\n 'SlotItem.occupied': '已占用',\n 'DefaultFormInner.title': '标题',\n 'DefaultFormInner.titlePlaceholder': '请输入日程标题',\n 'DefaultFormInner.detail': '详情',\n 'DefaultFormInner.detailPlaceholder': '请输入日程详情',\n 'Calendar.month.1': '1月',\n 'Calendar.month.2': '2月',\n 'Calendar.month.3': '3月',\n 'Calendar.month.4': '4月',\n 'Calendar.month.5': '5月',\n 'Calendar.month.6': '6月',\n 'Calendar.month.7': '7月',\n 'Calendar.month.8': '8月',\n 'Calendar.month.9': '9月',\n 'Calendar.month.10': '10月',\n 'Calendar.month.11': '11月',\n 'Calendar.month.12': '12月'\n};\n\nexport default locale;\n","const locale = {\n 'Header.today': 'Today',\n 'Header.prevMonth': 'Previous month',\n 'Header.nextMonth': 'Next month',\n 'Header.prevYearPage': 'Previous years',\n 'Header.nextYearPage': 'Next years',\n 'Header.yearLabel': '{year}',\n 'Header.monthLabel': '{monthName}',\n 'Header.monthPickerItem': '{monthName}',\n 'PanelTitle.dateLabel': '{monthName} {day}, {year}',\n 'PanelTitle.eventCount': '{count} events',\n 'ViewPanel.empty': 'No events',\n 'SchedulePanel.selectFreeSlot': 'Select an available time slot',\n 'SchedulePanel.newSchedule': 'New event: {range}',\n 'SchedulePanel.cancel': 'Cancel',\n 'SchedulePanel.save': 'Save',\n 'SlotItem.disabled': 'Unavailable',\n 'SlotItem.occupied': 'Occupied',\n 'DefaultFormInner.title': 'Title',\n 'DefaultFormInner.titlePlaceholder': 'Enter event title',\n 'DefaultFormInner.detail': 'Details',\n 'DefaultFormInner.detailPlaceholder': 'Enter event details',\n 'Calendar.month.1': 'Jan',\n 'Calendar.month.2': 'Feb',\n 'Calendar.month.3': 'Mar',\n 'Calendar.month.4': 'Apr',\n 'Calendar.month.5': 'May',\n 'Calendar.month.6': 'Jun',\n 'Calendar.month.7': 'Jul',\n 'Calendar.month.8': 'Aug',\n 'Calendar.month.9': 'Sep',\n 'Calendar.month.10': 'Oct',\n 'Calendar.month.11': 'Nov',\n 'Calendar.month.12': 'Dec'\n};\n\nexport default locale;\n","import { createWithIntlProvider } from '@kne/react-intl';\nimport zhCN from './locale/zh-CN';\nimport enUS from './locale/en-US';\n\nconst withLocale = createWithIntlProvider({\n defaultLocale: 'zh-CN',\n messages: {\n 'zh-CN': zhCN,\n 'en-US': enUS\n },\n namespace: 'react-calendar'\n});\n\nexport default withLocale;\n","export const DATE_FORMAT = 'YYYY-MM-DD';\nexport const TIME_FORMAT = 'HH:mm';\n/** Stack panels vertically when container width is below this value (px). */\nexport const LAYOUT_STACK_BREAKPOINT = 560;\n/** Minimum panel viewport height in stacked layout (px), aligned with root min-height. */\nexport const LAYOUT_MIN_HEIGHT = 560;\n","import { useLayoutEffect, useState } from 'react';\nimport { LAYOUT_MIN_HEIGHT } from './constants';\n\nconst measureHeight = node => {\n if (!node) {\n return 0;\n }\n return Math.ceil(node.getBoundingClientRect().height);\n};\n\nexport const useStackedPanelLayout = (rootRef, calendarRef, stacked) => {\n const [layoutStyle, setLayoutStyle] = useState(undefined);\n\n useLayoutEffect(() => {\n if (!stacked) {\n setLayoutStyle(undefined);\n return undefined;\n }\n\n const root = rootRef.current;\n const calendar = calendarRef.current;\n if (!root || !calendar) {\n return undefined;\n }\n\n const update = () => {\n const calendarHeight = measureHeight(calendar);\n const panelViewportHeight = Math.max(calendarHeight, LAYOUT_MIN_HEIGHT);\n const totalHeight = calendarHeight + panelViewportHeight;\n setLayoutStyle({\n height: totalHeight,\n '--schedule-panel-top': `${calendarHeight}px`,\n '--schedule-panel-height': `${panelViewportHeight}px`\n });\n };\n\n update();\n\n if (typeof ResizeObserver === 'undefined') {\n window.addEventListener('resize', update);\n return () => window.removeEventListener('resize', update);\n }\n\n const observer = new ResizeObserver(update);\n observer.observe(calendar);\n observer.observe(root);\n return () => observer.disconnect();\n }, [calendarRef, rootRef, stacked]);\n\n return layoutStyle;\n};\n\nexport default useStackedPanelLayout;\n","import dayjs from 'dayjs';\nimport useControlValue from '@kne/use-control-value';\nimport { DATE_FORMAT, TIME_FORMAT } from './constants';\n\nexport const classNames = (...list) =>\n list\n .flatMap(item => {\n if (!item) {\n return [];\n }\n if (typeof item === 'string') {\n return [item];\n }\n return Object.keys(item).filter(key => item[key]);\n })\n .join(' ');\n\nexport const toDayjs = value => {\n if (!value) {\n return null;\n }\n const date = dayjs(value);\n return date.isValid() ? date : null;\n};\n\nexport const parseDayTime = (date, time) => {\n const day = toDayjs(date) || dayjs();\n const parsed = dayjs(`${day.format(DATE_FORMAT)} ${time}`, `${DATE_FORMAT} ${TIME_FORMAT}`);\n return parsed.isValid() ? parsed : day.startOf('day');\n};\n\nexport const formatRange = (start, end) => `${dayjs(start).format(TIME_FORMAT)} - ${dayjs(end).format(TIME_FORMAT)}`;\n\nexport const getDefaultFormValues = (defaultFormValues, ctx) => {\n if (typeof defaultFormValues === 'function') {\n return defaultFormValues(ctx);\n }\n return {\n title: '',\n detail: '',\n ...(defaultFormValues || {})\n };\n};\n\nexport const sortEventsByStart = events =>\n [...(events || [])].sort((a, b) => {\n const aStart = toDayjs(a.start)?.valueOf() ?? 0;\n const bStart = toDayjs(b.start)?.valueOf() ?? 0;\n return aStart - bStart;\n });\n\nexport const dedupeEventsById = events => {\n const map = new Map();\n (events || []).forEach(event => {\n map.set(event.id, event);\n });\n return [...map.values()];\n};\n\nexport const useControlledState = ({ value, defaultValue, onChange }) => {\n const props = {};\n if (typeof value !== 'undefined') {\n props.value = value;\n }\n if (typeof defaultValue !== 'undefined') {\n props.defaultValue = defaultValue;\n }\n if (onChange) {\n props.onChange = onChange;\n }\n return useControlValue(props);\n};\n","const getRuleDisabled = (result, defaultReason) => {\n if (!result) {\n return null;\n }\n if (typeof result === 'boolean') {\n return result ? { disabled: true, reason: defaultReason } : null;\n }\n if (result.disabled) {\n return { disabled: true, reason: result.reason || defaultReason };\n }\n return null;\n};\n\nexport const checkRule = ({ date, slot, mode, disabledDate, disabledDateTime, availableDateTime }) => {\n if (disabledDate?.(date.toDate())) {\n return { disabled: true };\n }\n const ctx = {\n date: date.toDate(),\n mode,\n ...(slot\n ? {\n slot: {\n start: slot.start.toDate(),\n end: slot.end.toDate()\n }\n }\n : {})\n };\n const disabledResult = getRuleDisabled(disabledDateTime?.(ctx));\n if (disabledResult) {\n return disabledResult;\n }\n if (availableDateTime && !availableDateTime(ctx)) {\n return { disabled: true };\n }\n return null;\n};\n","import dayjs from 'dayjs';\nimport { DATE_FORMAT, TIME_FORMAT } from './constants';\nimport { parseDayTime, toDayjs } from './utils';\nimport { checkRule } from './rules';\n\nexport const normalizeEvent = event => {\n const start = toDayjs(event.start || event.date);\n const end = toDayjs(event.end || event.start || event.date);\n return {\n ...event,\n start,\n end: end && start && !end.isAfter(start) ? start.add(1, 'minute') : end\n };\n};\n\nexport const groupEventsByDate = events => {\n return (events || []).reduce((result, event) => {\n const normalized = normalizeEvent(event);\n if (!normalized.start || !normalized.end) {\n return result;\n }\n const startOfDay = normalized.start.startOf('day');\n const endOfDay = normalized.end.startOf('day');\n let current = startOfDay;\n while (current.isBefore(endOfDay) || current.isSame(endOfDay, 'day')) {\n const key = current.format(DATE_FORMAT);\n result[key] = result[key] || [];\n result[key].push(normalized);\n current = current.add(1, 'day');\n }\n return result;\n }, {});\n};\n\nconst getOverlappingEvents = (slotStart, slotEnd, sortedEvents) => {\n const matched = [];\n for (const event of sortedEvents) {\n if (!event.end.isAfter(slotStart)) {\n continue;\n }\n if (!event.start.isBefore(slotEnd)) {\n break;\n }\n matched.push(event);\n }\n return matched;\n};\n\nexport const generateTimeSlots = ({ date, events, timeUnit = 30, dayStart = '09:00', dayEnd = '18:00', disabledDate, disabledDateTime, availableDateTime, mode = 'schedule' }) => {\n const selectedDate = toDayjs(date) || dayjs();\n const startAt = parseDayTime(selectedDate, dayStart);\n const endAt = parseDayTime(selectedDate, dayEnd);\n if (!startAt.isBefore(endAt)) {\n return [];\n }\n const normalizedEvents = (events || [])\n .map(normalizeEvent)\n .filter(event => event.start && event.end)\n .sort((a, b) => a.start.valueOf() - b.start.valueOf());\n const slots = [];\n let current = startAt;\n\n while (current.isBefore(endAt)) {\n const slotStart = current;\n const slotEnd = slotStart.add(timeUnit, 'minute');\n const matchedEvents = getOverlappingEvents(slotStart, slotEnd, normalizedEvents);\n const baseSlot = {\n key: `${slotStart.format(DATE_FORMAT)}-${slotStart.format(TIME_FORMAT)}`,\n date: slotStart.format(DATE_FORMAT),\n start: slotStart,\n end: slotEnd\n };\n const ruleResult = checkRule({\n date: selectedDate,\n slot: baseSlot,\n mode,\n disabledDate,\n disabledDateTime,\n availableDateTime\n });\n\n slots.push({\n ...baseSlot,\n start: slotStart.toDate(),\n end: slotEnd.toDate(),\n status: ruleResult ? 'disabled' : matchedEvents.length > 0 ? 'occupied' : 'free',\n disabledReason: ruleResult?.reason,\n events: matchedEvents\n });\n current = slotEnd;\n }\n return slots;\n};\n","import dayjs from 'dayjs';\nimport { toDayjs } from './utils';\n\nconst toDay = value => toDayjs(value) || dayjs();\n\nexport const getMonthName = (formatMessage, monthIndex) => formatMessage({ id: `Calendar.month.${monthIndex + 1}` });\n\nexport const getPanelDateLabel = (formatMessage, date) => {\n const d = toDay(date);\n const monthIndex = d.month();\n return formatMessage(\n { id: 'PanelTitle.dateLabel' },\n {\n year: d.year(),\n month: monthIndex + 1,\n day: d.date(),\n monthName: getMonthName(formatMessage, monthIndex)\n }\n );\n};\n\nexport const getHeaderMonthLabel = (formatMessage, date) => {\n const d = toDay(date);\n const monthIndex = d.month();\n return formatMessage(\n { id: 'Header.monthLabel' },\n {\n month: monthIndex + 1,\n monthName: getMonthName(formatMessage, monthIndex)\n }\n );\n};\n\nexport const getMonthPickerItemLabel = (formatMessage, value, monthIndex) =>\n formatMessage(\n { id: 'Header.monthPickerItem' },\n {\n month: monthIndex + 1,\n monthName: getMonthName(formatMessage, monthIndex)\n }\n );\n","import style from './style.module.scss';\n\nconst HeaderNavIcon = ({ direction, className }) => (\n <svg className={className || style['header-nav-icon']} viewBox=\"0 0 16 16\" aria-hidden focusable=\"false\">\n <path d={direction === 'prev' ? 'M10 4 L6 8 L10 12' : 'M6 4 L10 8 L6 12'} fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport default HeaderNavIcon;\n","export const YEAR_PAGE_SIZE = 12;\n\nexport const getYearPageStart = year => Math.floor(year / YEAR_PAGE_SIZE) * YEAR_PAGE_SIZE;\n","import { useMemo } from 'react';\nimport { useIntl } from '@kne/react-intl';\nimport { classNames } from '../../utils';\nimport HeaderNavIcon from './NavIcon';\nimport { YEAR_PAGE_SIZE } from './constants';\nimport style from './style.module.scss';\n\nconst PickerPanelNav = ({ label, onClick, children }) => (\n <button type=\"button\" className={style['picker-panel-nav']} aria-label={label} onClick={onClick}>\n {children}\n </button>\n);\n\nconst YearPickerPanel = ({ value, pageStart, onPageStartChange, onSelect }) => {\n const { formatMessage } = useIntl();\n const years = useMemo(() => Array.from({ length: YEAR_PAGE_SIZE }, (_, index) => pageStart + index), [pageStart]);\n return (\n <div className={style['picker-panel']}>\n <div className={style['picker-panel-header']}>\n <PickerPanelNav label={formatMessage({ id: 'Header.prevYearPage' })} onClick={() => onPageStartChange(pageStart - YEAR_PAGE_SIZE)}>\n <HeaderNavIcon direction=\"prev\" className={style['picker-panel-nav-icon']} />\n </PickerPanelNav>\n <div className={style['picker-panel-range']}>\n {pageStart}-{pageStart + YEAR_PAGE_SIZE - 1}\n </div>\n <PickerPanelNav label={formatMessage({ id: 'Header.nextYearPage' })} onClick={() => onPageStartChange(pageStart + YEAR_PAGE_SIZE)}>\n <HeaderNavIcon direction=\"next\" className={style['picker-panel-nav-icon']} />\n </PickerPanelNav>\n </div>\n <div className={style['picker-panel-grid']}>\n {years.map(year => (\n <button key={year} type=\"button\" className={classNames(style['picker-cell'], { [style['picker-cell-active']]: year === value.year() })} onClick={() => onSelect(year)}>\n {year}\n </button>\n ))}\n </div>\n </div>\n );\n};\n\nexport default YearPickerPanel;\n","import { useMemo } from 'react';\nimport { useIntl } from '@kne/react-intl';\nimport { getMonthPickerItemLabel } from '../../formatCalendarLabels';\nimport { classNames } from '../../utils';\nimport style from './style.module.scss';\n\nconst MonthPickerPanel = ({ value, onSelect }) => {\n const { formatMessage } = useIntl();\n const months = useMemo(() => Array.from({ length: 12 }, (_, index) => index), []);\n return (\n <div className={style['picker-panel']}>\n <div className={style['picker-panel-grid']}>\n {months.map(month => (\n <button key={month} type=\"button\" className={classNames(style['picker-cell'], { [style['picker-cell-active']]: month === value.month() })} onClick={() => onSelect(month)}>\n {getMonthPickerItemLabel(formatMessage, value, month)}\n </button>\n ))}\n </div>\n </div>\n );\n};\n\nexport default MonthPickerPanel;\n","import { useEffect, useState } from 'react';\nimport dayjs from 'dayjs';\nimport { Button, Popover, Space } from 'antd';\nimport { useIntl } from '@kne/react-intl';\nimport { getHeaderMonthLabel } from '../../formatCalendarLabels';\nimport { toDayjs } from '../../utils';\nimport HeaderNavIcon from './NavIcon';\nimport YearPickerPanel from './YearPickerPanel';\nimport MonthPickerPanel from './MonthPickerPanel';\nimport { getYearPageStart } from './constants';\nimport style from './style.module.scss';\n\nconst HeaderNavButton = ({ label, onClick, children }) => (\n <button type=\"button\" className={style['header-nav']} aria-label={label} onClick={onClick}>\n {children}\n </button>\n);\n\nconst Header = ({ current, showTodayButton, onCurrentChange, onSelectToday }) => {\n const { formatMessage } = useIntl();\n const date = toDayjs(current) || dayjs();\n const [yearOpen, setYearOpen] = useState(false);\n const [monthOpen, setMonthOpen] = useState(false);\n const [yearPageStart, setYearPageStart] = useState(() => getYearPageStart(date.year()));\n const currentYear = date.year();\n const yearText = formatMessage({ id: 'Header.yearLabel' }, { year: date.year() });\n const monthText = getHeaderMonthLabel(formatMessage, date);\n\n useEffect(() => {\n if (yearOpen) {\n setYearPageStart(getYearPageStart(currentYear));\n }\n }, [yearOpen, currentYear]);\n\n const handleYearSelect = year => {\n onCurrentChange(date.year(year), { source: 'picker' });\n setYearOpen(false);\n };\n\n const handleMonthSelect = month => {\n onCurrentChange(date.month(month), { source: 'picker' });\n setMonthOpen(false);\n };\n\n return (\n <div className={style['calendar-header']}>\n <div className={style['calendar-title']}>\n <Popover\n open={yearOpen}\n onOpenChange={open => {\n setYearOpen(open);\n if (open) {\n setMonthOpen(false);\n }\n }}\n trigger=\"click\"\n placement=\"bottomLeft\"\n rootClassName={style['header-picker-popover']}\n content={<YearPickerPanel value={date} pageStart={yearPageStart} onPageStartChange={setYearPageStart} onSelect={handleYearSelect} />}\n >\n <button type=\"button\" className={style['calendar-title-part']}>\n {yearText}\n </button>\n </Popover>\n <Popover\n open={monthOpen}\n onOpenChange={open => {\n setMonthOpen(open);\n if (open) {\n setYearOpen(false);\n }\n }}\n trigger=\"click\"\n placement=\"bottomLeft\"\n rootClassName={style['header-picker-popover']}\n content={<MonthPickerPanel value={date} onSelect={handleMonthSelect} />}\n >\n <button type=\"button\" className={style['calendar-title-part']}>\n {monthText}\n </button>\n </Popover>\n </div>\n <Space size={4} className={style['header-actions']}>\n {showTodayButton ? (\n <Button className={style['header-today']} type=\"text\" size=\"small\" onClick={onSelectToday}>\n {formatMessage({ id: 'Header.today' })}\n </Button>\n ) : null}\n <HeaderNavButton label={formatMessage({ id: 'Header.prevMonth' })} onClick={() => onCurrentChange(date.subtract(1, 'month'), { source: 'prevMonth' })}>\n <HeaderNavIcon direction=\"prev\" />\n </HeaderNavButton>\n <HeaderNavButton label={formatMessage({ id: 'Header.nextMonth' })} onClick={() => onCurrentChange(date.add(1, 'month'), { source: 'nextMonth' })}>\n <HeaderNavIcon direction=\"next\" />\n </HeaderNavButton>\n </Space>\n </div>\n );\n};\n\nexport default Header;\n","import { useEffect, useLayoutEffect, useState } from 'react';\n\nconst readWidth = node => {\n if (!node) {\n return 0;\n }\n return node.getBoundingClientRect().width;\n};\n\nexport const useStackedLayout = (ref, stackAt) => {\n const [stacked, setStacked] = useState(false);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node) {\n return;\n }\n setStacked(readWidth(node) < stackAt);\n }, [ref, stackAt]);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) {\n return undefined;\n }\n\n const update = () => {\n setStacked(readWidth(node) < stackAt);\n };\n\n update();\n\n if (typeof ResizeObserver === 'undefined') {\n window.addEventListener('resize', update);\n return () => window.removeEventListener('resize', update);\n }\n\n const observer = new ResizeObserver(() => update());\n observer.observe(node);\n return () => observer.disconnect();\n }, [ref, stackAt]);\n\n return stacked;\n};\n\nexport default useStackedLayout;\n","import { Badge } from 'antd';\nimport { classNames } from '../../utils';\nimport style from './style.module.scss';\n\nconst DateCell = ({ date, dayEvents, selected, currentMonth, disabled, badgeMaxCount, renderDateCell }) => {\n const count = dayEvents.length;\n const customCell = renderDateCell?.(date.toDate(), {\n events: dayEvents,\n selected,\n currentMonth\n });\n if (customCell) {\n return customCell;\n }\n return (\n <div\n className={classNames(style['date-cell'], {\n [style['date-selected']]: selected,\n [style['date-muted']]: !currentMonth && !selected,\n [style['date-disabled']]: disabled && !selected,\n [style['date-has-events']]: count > 0 && !selected\n })}\n >\n <div className={style['date-number']}>{date.date()}</div>\n {count ? <Badge count={count > badgeMaxCount ? `${badgeMaxCount}+` : count} size=\"small\" /> : null}\n </div>\n );\n};\n\nexport default DateCell;\n","const getEventTagLabel = event => {\n if (!event.raw || typeof event.raw !== 'object') {\n return null;\n }\n const { label, type } = event.raw;\n if (typeof label === 'string' && label) {\n return label;\n }\n if (typeof type === 'string' && type) {\n return type;\n }\n return null;\n};\n\nexport default getEventTagLabel;\n","import { List, Tag } from 'antd';\nimport { classNames, formatRange } from '../../utils';\nimport getEventTagLabel from './getEventTagLabel';\nimport style from './style.module.scss';\n\nconst EventItem = ({ event, date, mode, renderEventItem, onEventClick }) => {\n if (renderEventItem) {\n return renderEventItem(event, { date, mode, onEventClick });\n }\n const clickable = !event.disabled && (typeof event.onClick === 'function' || typeof onEventClick === 'function');\n const handleClick = () => {\n if (typeof event.onClick === 'function') {\n event.onClick(event, { date, mode });\n return;\n }\n onEventClick?.(event, { date, mode });\n };\n const tagLabel = getEventTagLabel(event);\n return (\n <List.Item className={style['event-list-item']}>\n <div\n className={classNames(style['event-item'], {\n [style['event-item-clickable']]: clickable,\n [style['event-item-disabled']]: event.disabled\n })}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n onClick={clickable ? handleClick : undefined}\n onKeyDown={\n clickable\n ? eventKey => {\n if (eventKey.key === 'Enter' || eventKey.key === ' ') {\n eventKey.preventDefault();\n handleClick();\n }\n }\n : undefined\n }\n >\n <div className={style['event-item-head']}>\n <div className={style['event-item-title']}>{event.title}</div>\n {tagLabel ? (\n <Tag className={style['event-item-tag']} color={event.color}>\n {tagLabel}\n </Tag>\n ) : null}\n </div>\n <div className={style['event-item-time']}>{formatRange(event.start, event.end)}</div>\n {event.detail ? <div className={style['event-item-detail']}>{event.detail}</div> : null}\n </div>\n </List.Item>\n );\n};\n\nexport default EventItem;\n","import { useIntl } from '@kne/react-intl';\nimport { getPanelDateLabel } from '../../formatCalendarLabels';\nimport style from './style.module.scss';\n\nconst PanelTitle = ({ date, subtitle, count }) => {\n const { formatMessage } = useIntl();\n const dateText = getPanelDateLabel(formatMessage, date);\n const countText = typeof count === 'number' ? formatMessage({ id: 'PanelTitle.eventCount' }, { count }) : null;\n return (\n <div className={style['panel-title']}>\n <span>{dateText}</span>\n {subtitle || countText ? <span>{subtitle || countText}</span> : null}\n </div>\n );\n};\n\nexport default PanelTitle;\n","import { classNames } from '../../utils';\nimport style from './style.module.scss';\n\nconst PanelScrollShadow = ({ visible }) => <div className={classNames(style['panel-scroll-shadow'], { [style['panel-scroll-shadow-visible']]: visible })} aria-hidden />;\n\nexport default PanelScrollShadow;\n","import { useCallback, useEffect, useState } from 'react';\nimport { classNames } from '../../utils';\nimport style from './style.module.scss';\n\nconst usePanelScrollShadow = (resetKey, scrollRef) => {\n const [scrolled, setScrolled] = useState(false);\n\n useEffect(() => {\n if (scrollRef?.current) {\n scrollRef.current.scrollTop = 0;\n }\n setScrolled(false);\n }, [resetKey, scrollRef]);\n\n const onScroll = useCallback(event => {\n setScrolled(event.currentTarget.scrollTop > 0);\n }, []);\n\n return { scrolled, onScroll };\n};\n\nexport default usePanelScrollShadow;\n","import { useMemo, useRef } from 'react';\nimport { Card, Empty, List, Spin } from 'antd';\nimport { useIntl } from '@kne/react-intl';\nimport { DATE_FORMAT } from '../../constants';\nimport { sortEventsByStart } from '../../utils';\nimport EventItem from '../EventItem';\nimport PanelTitle from './PanelTitle';\nimport PanelScrollShadow from './PanelScrollShadow';\nimport usePanelScrollShadow from './usePanelScrollShadow';\nimport style from './style.module.scss';\n\nconst ViewPanel = ({ date, events, loading, renderEventItem, renderPanelHeader, onEventClick }) => {\n const { formatMessage } = useIntl();\n const sortedEvents = useMemo(() => sortEventsByStart(events), [events]);\n const panelHeader = renderPanelHeader?.({ date: date.toDate(), mode: 'view', events: sortedEvents });\n const scrollRef = useRef(null);\n const { scrolled, onScroll } = usePanelScrollShadow(date.format(DATE_FORMAT), scrollRef);\n return (\n <Card bordered={false} title={panelHeader || <PanelTitle date={date} count={sortedEvents.length} />} className={style['panel-card']}>\n <Spin spinning={!!loading} classNames={{ root: style['panel-spin'], container: style['panel-spin-container'] }}>\n <div ref={scrollRef} className={style['panel-scroll-body']} onScroll={onScroll}>\n <PanelScrollShadow visible={scrolled} />\n <div className={style['panel-scroll-content']}>\n {sortedEvents.length ? (\n <List dataSource={sortedEvents} renderItem={event => <EventItem event={event} date={date.toDate()} mode=\"view\" renderEventItem={renderEventItem} onEventClick={onEventClick} />} />\n ) : (\n <Empty description={formatMessage({ id: 'ViewPanel.empty' })} />\n )}\n </div>\n </div>\n </Spin>\n </Card>\n );\n};\n\nexport default ViewPanel;\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nconst LONG_PRESS_DELAY = 400;\nconst SCROLL_CANCEL_THRESHOLD = 12;\nconst TAP_MOVE_THRESHOLD = 8;\n\nconst getPopoverKey = slot => (slot ? `form:${slot.key}` : null);\n\nconst getSlotIndexFromPoint = (container, clientX, clientY) => {\n const slotElements = container?.querySelectorAll?.('[data-slot-index]');\n if (!slotElements?.length) {\n return null;\n }\n\n let closestIndex = null;\n let closestDistance = Infinity;\n\n for (const candidate of slotElements) {\n const rect = candidate.getBoundingClientRect();\n const index = Number(candidate.getAttribute('data-slot-index'));\n if (Number.isNaN(index)) {\n continue;\n }\n\n if (clientY >= rect.top && clientY <= rect.bottom && clientX >= rect.left && clientX <= rect.right) {\n return index;\n }\n\n if (clientX < rect.left || clientX > rect.right) {\n continue;\n }\n\n const centerY = (rect.top + rect.bottom) / 2;\n const distance = Math.abs(clientY - centerY);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestIndex = index;\n }\n }\n\n return closestIndex;\n};\n\nconst clearDocumentTextSelection = () => {\n const selection = document.getSelection?.();\n if (selection && !selection.isCollapsed) {\n selection.removeAllRanges();\n }\n};\n\nconst useScheduleSelectionGesture = ({ slots, selectedSlots, setSelectedSlots, allowMultiSelect, onSlotRangeChange, onFreeSlotClick }) => {\n const [dragging, setDragging] = useState(false);\n const [activePopoverKey, setActivePopoverKey] = useState(null);\n const slotsRef = useRef(null);\n const draggingRef = useRef(false);\n const dragStartIndexRef = useRef(null);\n const longPressTimerRef = useRef(null);\n const touchStateRef = useRef(null);\n const slotsDataRef = useRef(slots);\n const selectedSlotsRef = useRef(selectedSlots);\n const allowMultiSelectRef = useRef(allowMultiSelect);\n const suppressTriggerUntilRef = useRef(0);\n const suppressMouseUntilRef = useRef(0);\n const scrollLockRef = useRef(null);\n const handlersRef = useRef({});\n\n slotsDataRef.current = slots;\n selectedSlotsRef.current = selectedSlots;\n allowMultiSelectRef.current = allowMultiSelect;\n\n const selectedKeys = useMemo(() => new Set(selectedSlots.map(slot => slot.key)), [selectedSlots]);\n const selectedAnchorKey = selectedSlots[selectedSlots.length - 1]?.key;\n const formPopoverKey = selectedAnchorKey ? `form:${selectedAnchorKey}` : null;\n\n const clearLongPress = useCallback(() => {\n if (longPressTimerRef.current) {\n window.clearTimeout(longPressTimerRef.current);\n longPressTimerRef.current = null;\n }\n }, []);\n\n const unlockContainerScroll = useCallback(() => {\n const container = slotsRef.current;\n if (!container || scrollLockRef.current == null) {\n return;\n }\n const scrollTop = scrollLockRef.current;\n container.style.overflow = '';\n container.style.touchAction = '';\n container.scrollTop = scrollTop;\n scrollLockRef.current = null;\n }, []);\n\n const lockContainerScroll = useCallback(() => {\n const container = slotsRef.current;\n if (!container || scrollLockRef.current != null) {\n return;\n }\n scrollLockRef.current = container.scrollTop;\n container.style.overflow = 'hidden';\n container.style.touchAction = 'none';\n }, []);\n\n const resetGestureState = useCallback(() => {\n clearLongPress();\n const container = slotsRef.current;\n const touchState = touchStateRef.current;\n if (container && touchState?.pointerId != null && container.hasPointerCapture?.(touchState.pointerId)) {\n try {\n container.releasePointerCapture(touchState.pointerId);\n } catch {\n // Ignore capture release errors on stale pointers.\n }\n }\n draggingRef.current = false;\n dragStartIndexRef.current = null;\n touchStateRef.current = null;\n container?.classList.remove('schedule-calendar-touch-dragging');\n unlockContainerScroll();\n setDragging(false);\n }, [clearLongPress, unlockContainerScroll]);\n\n const selectSlots = useCallback(\n nextSlots => {\n selectedSlotsRef.current = nextSlots;\n if (!nextSlots.length) {\n setActivePopoverKey(null);\n resetGestureState();\n }\n setSelectedSlots(nextSlots);\n onSlotRangeChange?.(nextSlots, { action: nextSlots.length ? 'select' : 'clear' });\n },\n [onSlotRangeChange, resetGestureState, setSelectedSlots]\n );\n\n const getSelectableRange = useCallback((startIndex, endIndex) => {\n const [start, end] = [Math.min(startIndex, endIndex), Math.max(startIndex, endIndex)];\n return slotsDataRef.current.slice(start, end + 1).filter(slot => slot.status === 'free');\n }, []);\n\n const showFormPopoverForSlots = useCallback(slotsList => {\n const anchorSlot = slotsList[slotsList.length - 1];\n if (anchorSlot) {\n setActivePopoverKey(getPopoverKey(anchorSlot));\n }\n }, []);\n\n const startSlotSelection = useCallback(\n (slot, index, { showPopover = true, lockScroll = false } = {}) => {\n clearDocumentTextSelection();\n setActivePopoverKey(getPopoverKey(slot));\n draggingRef.current = true;\n dragStartIndexRef.current = index;\n slotsRef.current?.classList.add('schedule-calendar-touch-dragging');\n if (lockScroll) {\n lockContainerScroll();\n }\n setDragging(true);\n selectSlots([slot]);\n if (!showPopover) {\n suppressTriggerUntilRef.current = Date.now() + 700;\n setActivePopoverKey(null);\n }\n onFreeSlotClick?.(slot);\n },\n [lockContainerScroll, onFreeSlotClick, selectSlots]\n );\n\n const finishSelection = useCallback(\n ({ fromTouch = false } = {}) => {\n const hadSelection = selectedSlotsRef.current.length > 0;\n resetGestureState();\n if (hadSelection) {\n if (fromTouch) {\n suppressTriggerUntilRef.current = Date.now() + 500;\n }\n showFormPopoverForSlots(selectedSlotsRef.current);\n }\n },\n [resetGestureState, showFormPopoverForSlots]\n );\n\n const updateSelectionRange = useCallback(\n index => {\n const startIndex = dragStartIndexRef.current;\n if (startIndex === null || !allowMultiSelectRef.current) {\n return;\n }\n const nextSlots = getSelectableRange(startIndex, index);\n selectSlots(nextSlots);\n },\n [getSelectableRange, selectSlots]\n );\n\n const shouldIgnoreMouseSelectionEvent = useCallback(() => {\n return !!touchStateRef.current || Date.now() < suppressMouseUntilRef.current;\n }, []);\n\n const handleMouseDown = useCallback(\n (event, slot, index) => {\n if (shouldIgnoreMouseSelectionEvent()) {\n return;\n }\n if (slot.status !== 'free') {\n return;\n }\n event.preventDefault();\n startSlotSelection(slot, index);\n },\n [shouldIgnoreMouseSelectionEvent, startSlotSelection]\n );\n\n const handleMouseEnter = useCallback(\n index => {\n if (shouldIgnoreMouseSelectionEvent() || !draggingRef.current) {\n return;\n }\n updateSelectionRange(index);\n },\n [shouldIgnoreMouseSelectionEvent, updateSelectionRange]\n );\n\n const handleMouseUp = useCallback(() => {\n if (shouldIgnoreMouseSelectionEvent()) {\n return;\n }\n finishSelection();\n }, [finishSelection, shouldIgnoreMouseSelectionEvent]);\n\n const handleMouseLeave = useCallback(() => {\n if (shouldIgnoreMouseSelectionEvent()) {\n return;\n }\n finishSelection();\n }, [finishSelection, shouldIgnoreMouseSelectionEvent]);\n\n const handlePopoverOpenChange = useCallback(\n (open, currentPopoverKey, { isForm = false } = {}) => {\n if (Date.now() < suppressTriggerUntilRef.current) {\n return;\n }\n if (!open && isForm) {\n selectSlots([]);\n return;\n }\n setActivePopoverKey(prevKey => {\n if (open) {\n return currentPopoverKey;\n }\n return prevKey === currentPopoverKey ? null : prevKey;\n });\n },\n [selectSlots]\n );\n\n handlersRef.current = {\n clearLongPress,\n finishSelection,\n onFreeSlotClick,\n resetGestureState,\n selectSlots,\n showFormPopoverForSlots,\n startSlotSelection,\n updateSelectionRange\n };\n\n useEffect(() => {\n const container = slotsRef.current;\n if (!container) {\n return undefined;\n }\n\n const releasePointerCapture = pointerId => {\n if (pointerId == null || !container.hasPointerCapture?.(pointerId)) {\n return;\n }\n try {\n container.releasePointerCapture(pointerId);\n } catch {\n // Ignore capture release errors on stale pointers.\n }\n };\n\n const clearPendingTouch = () => {\n handlersRef.current.clearLongPress();\n touchStateRef.current = null;\n };\n\n const isStillOnSameSlot = (touchState, clientX, clientY) => {\n const currentIndex = getSlotIndexFromPoint(container, clientX, clientY);\n return currentIndex === touchState.index;\n };\n\n const shouldCancelPendingGesture = (touchState, clientX, clientY) => {\n const moveX = Math.abs(clientX - touchState.x);\n const moveY = Math.abs(clientY - touchState.y);\n\n if (moveY > SCROLL_CANCEL_THRESHOLD) {\n return true;\n }\n\n if (!isStillOnSameSlot(touchState, clientX, clientY)) {\n return true;\n }\n\n if (!allowMultiSelectRef.current && (moveX > TAP_MOVE_THRESHOLD || moveY > TAP_MOVE_THRESHOLD)) {\n return true;\n }\n\n return false;\n };\n\n const activateLongPress = touchState => {\n if (!isStillOnSameSlot(touchState, touchState.lastX, touchState.lastY)) {\n return;\n }\n\n touchState.longPressed = true;\n touchState.active = true;\n clearDocumentTextSelection();\n\n try {\n container.setPointerCapture(touchState.pointerId);\n } catch {\n // Continue when capture is unavailable.\n }\n\n slotsRef.current?.classList.add('schedule-calendar-touch-dragging');\n handlersRef.current.startSlotSelection(touchState.slot, touchState.index, { showPopover: false, lockScroll: true });\n };\n\n const handlePointerDown = event => {\n if (event.pointerType === 'mouse' || event.isPrimary === false) {\n return;\n }\n\n const slotElement = event.target?.closest?.('[data-slot-index]');\n if (!slotElement || !container.contains(slotElement)) {\n return;\n }\n\n const index = Number(slotElement.getAttribute('data-slot-index'));\n const slot = slotsDataRef.current[index];\n if (Number.isNaN(index) || slot?.status !== 'free') {\n return;\n }\n\n handlersRef.current.resetGestureState();\n touchStateRef.current = {\n pointerId: event.pointerId,\n x: event.clientX,\n y: event.clientY,\n lastX: event.clientX,\n lastY: event.clientY,\n slot,\n index,\n moved: false,\n longPressed: false,\n active: false,\n selectionTriggered: false\n };\n\n if (!allowMultiSelectRef.current) {\n return;\n }\n\n longPressTimerRef.current = window.setTimeout(() => {\n const touchState = touchStateRef.current;\n if (!touchState || touchState.pointerId !== event.pointerId || touchState.moved) {\n return;\n }\n activateLongPress(touchState);\n longPressTimerRef.current = null;\n }, LONG_PRESS_DELAY);\n };\n\n const handlePointerMove = event => {\n const touchState = touchStateRef.current;\n if (!touchState || event.pointerId !== touchState.pointerId) {\n return;\n }\n\n touchState.lastX = event.clientX;\n touchState.lastY = event.clientY;\n\n if (!touchState.active) {\n if (shouldCancelPendingGesture(touchState, event.clientX, event.clientY)) {\n touchState.moved = true;\n clearPendingTouch();\n }\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n clearDocumentTextSelection();\n const index = getSlotIndexFromPoint(container, event.clientX, event.clientY);\n if (index !== null) {\n handlersRef.current.updateSelectionRange(index);\n }\n };\n\n const handlePointerUp = event => {\n const touchState = touchStateRef.current;\n if (!touchState || event.pointerId !== touchState.pointerId) {\n return;\n }\n\n releasePointerCapture(event.pointerId);\n suppressMouseUntilRef.current = Date.now() + 700;\n\n if (touchState.active) {\n event.preventDefault();\n touchState.selectionTriggered = true;\n const index = getSlotIndexFromPoint(container, event.clientX, event.clientY);\n if (index !== null) {\n handlersRef.current.updateSelectionRange(index);\n }\n suppressTriggerUntilRef.current = Date.now() + 500;\n handlersRef.current.finishSelection({ fromTouch: true });\n return;\n }\n\n handlersRef.current.clearLongPress();\n\n const quickTap =\n !touchState.moved &&\n !touchState.longPressed &&\n Math.abs(event.clientX - touchState.x) <= TAP_MOVE_THRESHOLD &&\n Math.abs(event.clientY - touchState.y) <= TAP_MOVE_THRESHOLD &&\n isStillOnSameSlot(touchState, event.clientX, event.clientY);\n\n const { slot } = touchState;\n touchStateRef.current = null;\n\n if (quickTap) {\n touchState.selectionTriggered = true;\n suppressTriggerUntilRef.current = Date.now() + 500;\n handlersRef.current.selectSlots([slot]);\n handlersRef.current.showFormPopoverForSlots([slot]);\n handlersRef.current.onFreeSlotClick?.(slot);\n return;\n }\n\n handlersRef.current.resetGestureState();\n };\n\n const handleContextMenu = event => {\n if (touchStateRef.current?.active || draggingRef.current) {\n event.preventDefault();\n }\n };\n\n const handleSelectStart = event => {\n if (!touchStateRef.current?.active && !draggingRef.current) {\n return;\n }\n event.preventDefault();\n };\n\n const handleTouchMove = event => {\n if (!draggingRef.current && !touchStateRef.current?.active) {\n return;\n }\n event.preventDefault();\n };\n\n const touchOptions = { passive: false, capture: true };\n container.addEventListener('pointerdown', handlePointerDown, { passive: true });\n container.addEventListener('pointermove', handlePointerMove, { passive: false });\n container.addEventListener('pointerup', handlePointerUp, { passive: false });\n container.addEventListener('pointercancel', handlePointerUp, { passive: false });\n container.addEventListener('touchmove', handleTouchMove, touchOptions);\n container.addEventListener('contextmenu', handleContextMenu);\n container.addEventListener('selectstart', handleSelectStart);\n\n return () => {\n releasePointerCapture(touchStateRef.current?.pointerId);\n handlersRef.current.clearLongPress();\n handlersRef.current.resetGestureState();\n longPressTimerRef.current = null;\n container.removeEventListener('touchmove', handleTouchMove, touchOptions);\n };\n }, []);\n\n return {\n activePopoverKey,\n dragging,\n formPopoverKey,\n selectedAnchorKey,\n selectedKeys,\n setActivePopoverKey,\n selectSlots,\n slotsRef,\n finishSelection,\n handleMouseDown,\n handleMouseEnter,\n handleMouseUp,\n handleMouseLeave,\n handlePopoverOpenChange\n };\n};\n\nexport default useScheduleSelectionGesture;\n","import FormInfo, { Input, TextArea } from '@kne/form-info';\nimport { useIntl } from '@kne/react-intl';\n\nconst DefaultFormInner = () => {\n const { formatMessage } = useIntl();\n return (\n <FormInfo\n column={1}\n list={[\n <Input name=\"title\" label={formatMessage({ id: 'DefaultFormInner.title' })} rule=\"REQ\" placeholder={formatMessage({ id: 'DefaultFormInner.titlePlaceholder' })} block />,\n <TextArea name=\"detail\" label={formatMessage({ id: 'DefaultFormInner.detail' })} placeholder={formatMessage({ id: 'DefaultFormInner.detailPlaceholder' })} block />\n ]}\n />\n );\n};\n\nexport default DefaultFormInner;\n","import { List } from 'antd';\nimport EventItem from '../EventItem';\nimport style from './style.module.scss';\n\nconst SlotEvents = ({ slot, date, onEventClick }) => (\n <div className={style['slot-popover-content']}>\n <List size=\"small\" dataSource={slot.events} renderItem={event => <EventItem event={event} date={date} mode=\"schedule\" onEventClick={onEventClick} />} />\n </div>\n);\n\nexport default SlotEvents;\n","import { Popover, Tag, Tooltip } from 'antd';\nimport { useIntl } from '@kne/react-intl';\nimport { classNames, formatRange } from '../../utils';\nimport SlotEvents from './SlotEvents';\nimport style from './style.module.scss';\n\nconst SlotItem = ({ slot, date, selected, formPopover, popoverOpen, onPopoverOpenChange, onContextMenu, onMouseDown, onPointerDown, onMouseEnter, onMouseUp, onClick, onEventClick, renderTimeSlot, renderOccupiedSlot }) => {\n const { formatMessage } = useIntl();\n const content = renderTimeSlot?.(slot, { selected });\n if (content) {\n const customNode = (\n <div data-slot-index={slot.index} data-slot-status={slot.status} onContextMenu={onContextMenu} onMouseDown={onMouseDown} onPointerDown={onPointerDown} onMouseEnter={onMouseEnter} onMouseUp={onMouseUp} onClick={onClick}>\n {content}\n </div>\n );\n if (formPopover) {\n return (\n <Popover rootClassName={style['schedule-popover']} open={popoverOpen} onOpenChange={onPopoverOpenChange} content={formPopover} trigger=\"click\" placement=\"bottom\" autoAdjustOverflow>\n {customNode}\n </Popover>\n );\n }\n return customNode;\n }\n\n const wrapWithPopover = node => {\n if (formPopover) {\n return (\n <Popover rootClassName={style['schedule-popover']} open={popoverOpen} onOpenChange={onPopoverOpenChange} content={formPopover} trigger=\"click\" placement=\"bottom\" autoAdjustOverflow>\n {node}\n </Popover>\n );\n }\n if (slot.status === 'occupied') {\n return (\n <Popover\n rootClassName={style['schedule-popover']}\n open={popoverOpen}\n onOpenChange={onPopoverOpenChange}\n content={<SlotEvents slot={slot} date={date} onEventClick={onEventClick} />}\n trigger=\"click\"\n placement=\"bottom\"\n autoAdjustOverflow\n >\n {node}\n </Popover>\n );\n }\n if (slot.disabledReason) {\n return <Tooltip title={slot.disabledReason}>{node}</Tooltip>;\n }\n return node;\n };\n\n const slotClassName = classNames(style['slot-item'], style[`slot-${slot.status}`], {\n [style['slot-selected']]: selected\n });\n const slotChildren = (\n <>\n <span className={style['slot-dot']} />\n <span className={style['slot-time']}>{formatRange(slot.start, slot.end)}</span>\n {slot.status === 'disabled' ? <Tag className={style['slot-tag']}>{formatMessage({ id: 'SlotItem.disabled' })}</Tag> : null}\n {slot.status === 'occupied' ? (\n <Tag className={style['slot-tag']} color=\"red\">\n {formatMessage({ id: 'SlotItem.occupied' })}\n </Tag>\n ) : null}\n {slot.status === 'occupied' && renderOccupiedSlot ? renderOccupiedSlot(slot, { events: slot.events }) : null}\n {slot.status === 'occupied' && !renderOccupiedSlot ? <span className={style['slot-title']}>{slot.events.map(event => event.title).join('、')}</span> : null}\n </>\n );\n const slotHandlers = {\n onContextMenu,\n onMouseDown,\n onPointerDown,\n onMouseEnter,\n onMouseUp,\n onClick\n };\n\n const inner =\n slot.status === 'disabled' ? (\n <button\n type=\"button\"\n className={slotClassName}\n data-slot-index={slot.index}\n data-slot-status={slot.status}\n disabled\n onContextMenu={onContextMenu}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n onMouseEnter={onMouseEnter}\n onMouseUp={onMouseUp}\n onClick={onClick}\n >\n {slotChildren}\n </button>\n ) : (\n <div role=\"button\" tabIndex={0} className={slotClassName} data-slot-index={slot.index} data-slot-status={slot.status} {...slotHandlers}>\n {slotChildren}\n </div>\n );\n\n return wrapWithPopover(inner);\n};\n\nexport default SlotItem;\n","import { useMemo } from 'react';\nimport { Button, Card, Spin } from 'antd';\nimport { Form, SubmitButton } from '@kne/form-info';\nimport { useIntl } from '@kne/react-intl';\nimport { DATE_FORMAT } from '../../constants';\nimport useScheduleSelectionGesture from '../../useScheduleSelectionGesture';\nimport { classNames, dedupeEventsById, formatRange, getDefaultFormValues, sortEventsByStart } from '../../utils';\nimport PanelTitle from '../Panel/PanelTitle';\nimport PanelScrollShadow from '../Panel/PanelScrollShadow';\nimport usePanelScrollShadow from '../Panel/usePanelScrollShadow';\nimport panelStyle from '../Panel/style.module.scss';\nimport DefaultFormInner from './DefaultFormInner';\nimport SlotItem from './SlotItem';\nimport style from './style.module.scss';\n\nconst SchedulePanel = ({\n date,\n slots,\n loading,\n allowMultiSelect,\n selectedSlots,\n setSelectedSlots,\n onSlotRangeChange,\n onFreeSlotClick,\n onCreate,\n formInner,\n formProps,\n defaultFormValues,\n renderTimeSlot,\n renderOccupiedSlot,\n renderPanelHeader,\n onEventClick\n}) => {\n const { formatMessage } = useIntl();\n const events = useMemo(() => sortEventsByStart(dedupeEventsById(slots.flatMap(slot => slot.events || []))), [slots]);\n const panelHeader = renderPanelHeader?.({ date: date.toDate(), mode: 'schedule', events });\n const { activePopoverKey, dragging, formPopoverKey, selectedAnchorKey, selectedKeys, selectSlots, slotsRef, handleMouseDown, handleMouseEnter, handleMouseUp, handleMouseLeave, handlePopoverOpenChange } = useScheduleSelectionGesture({\n slots,\n selectedSlots,\n setSelectedSlots,\n allowMultiSelect,\n onSlotRangeChange,\n onFreeSlotClick\n });\n\n const { scrolled, onScroll } = usePanelScrollShadow(date.format(DATE_FORMAT), slotsRef);\n const formContext = {\n date: date.toDate(),\n slots: selectedSlots\n };\n const formPopover =\n selectedSlots.length && !dragging ? (\n <div className={style['form-popover']}>\n <div className={style['form-popover-title']}>{formatMessage({ id: 'SchedulePanel.newSchedule' }, { range: formatRange(selectedSlots[0].start, selectedSlots[selectedSlots.length - 1].end) })}</div>\n <Form\n {...formProps}\n data={getDefaultFormValues(defaultFormValues, formContext)}\n onSubmit={async values => {\n try {\n await onCreate?.(values, formContext);\n selectSlots([]);\n } catch {\n // Keep the form open when creation fails.\n }\n }}\n >\n {formInner || <DefaultFormInner />}\n <div className={style['form-actions']}>\n <Button onClick={() => selectSlots([])}>{formatMessage({ id: 'SchedulePanel.cancel' })}</Button>\n <SubmitButton>{formatMessage({ id: 'SchedulePanel.save' })}</SubmitButton>\n </div>\n </Form>\n </div>\n ) : null;\n\n return (\n <Card bordered={false} title={panelHeader || <PanelTitle date={date} subtitle={formatMessage({ id: 'SchedulePanel.selectFreeSlot' })} />} className={panelStyle['panel-card']}>\n <Spin spinning={!!loading} classNames={{ root: panelStyle['panel-spin'], container: panelStyle['panel-spin-container'] }}>\n <div ref={slotsRef} className={classNames(style['slots'], { [style['slots-dragging']]: dragging })} onScroll={onScroll} onMouseUp={handleMouseUp} onMouseLeave={handleMouseLeave}>\n <PanelScrollShadow visible={scrolled} />\n <div className={style['slots-content']}>\n {slots.map((slot, index) => {\n const slotWithIndex = { ...slot, index };\n const occupiedPopoverKey = `occupied:${slot.key}`;\n const currentPopoverKey = slot.key === selectedAnchorKey && formPopover ? formPopoverKey : slot.status === 'occupied' ? occupiedPopoverKey : null;\n return (\n <SlotItem\n key={slot.key}\n slot={slotWithIndex}\n date={date.toDate()}\n selected={selectedKeys.has(slot.key)}\n formPopover={slot.key === selectedAnchorKey ? formPopover : null}\n popoverOpen={!!currentPopoverKey && activePopoverKey === currentPopoverKey}\n onPopoverOpenChange={open => handlePopoverOpenChange(open, currentPopoverKey, { isForm: currentPopoverKey === formPopoverKey })}\n renderTimeSlot={renderTimeSlot}\n renderOccupiedSlot={renderOccupiedSlot}\n onEventClick={onEventClick}\n onContextMenu={event => {\n if (slot.status === 'free') {\n event.preventDefault();\n }\n }}\n onMouseDown={event => handleMouseDown(event, slot, index)}\n onMouseEnter={() => handleMouseEnter(index)}\n onMouseUp={handleMouseUp}\n onClick={undefined}\n />\n );\n })}\n </div>\n </div>\n </Spin>\n </Card>\n );\n};\n\nexport default SchedulePanel;\n","import { useCallback, useMemo, useRef, useState } from 'react';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport useControlValue from '@kne/use-control-value';\nimport { Calendar } from 'antd';\nimport withLocale from './withLocale';\nimport { DATE_FORMAT, LAYOUT_STACK_BREAKPOINT } from './constants';\nimport useStackedPanelLayout from './useStackedPanelLayout';\nimport { groupEventsByDate, generateTimeSlots } from './events';\nimport { checkRule } from './rules';\nimport { classNames, toDayjs, useControlledState } from './utils';\nimport Header from './components/Header';\nimport useStackedLayout from './useStackedLayout';\nimport DateCell from './components/DateCell';\nimport ViewPanel from './components/Panel/ViewPanel';\nimport SchedulePanel from './components/SchedulePanel';\nimport style from './style.module.scss';\n\ndayjs.extend(customParseFormat);\n\nconst buildMonthRuleCache = ({ currentDate, mode, disabledDate, disabledDateTime, availableDateTime }) => {\n const cache = new Map();\n const monthStart = currentDate.startOf('month');\n const monthEnd = currentDate.endOf('month');\n let cursor = monthStart;\n while (cursor.isBefore(monthEnd) || cursor.isSame(monthEnd, 'day')) {\n cache.set(\n cursor.format(DATE_FORMAT),\n checkRule({\n date: cursor,\n mode,\n disabledDate,\n disabledDateTime,\n availableDateTime\n })\n );\n cursor = cursor.add(1, 'day');\n }\n return cache;\n};\n\nconst ScheduleCalendarInner = props => {\n const {\n mode = 'view',\n events = [],\n loading,\n disabledDate,\n disabledDateTime,\n availableDateTime,\n badgeMaxCount = 9,\n timeUnit = 30,\n dayStart = '09:00',\n dayEnd = '18:00',\n allowMultiSelect = mode === 'schedule',\n renderDateCell,\n renderEventItem,\n renderTimeSlot,\n renderOccupiedSlot,\n renderPanelHeader,\n formInner,\n formProps,\n defaultFormValues,\n onDateChange,\n onEventClick,\n onFreeSlotClick,\n onSlotRangeChange,\n onCreate,\n className,\n style: propsStyle,\n stackAt = LAYOUT_STACK_BREAKPOINT,\n calendarProps,\n panelProps\n } = props;\n const rootRef = useRef(null);\n const calendarRef = useRef(null);\n const stacked = useStackedLayout(rootRef, stackAt);\n const stackedLayoutStyle = useStackedPanelLayout(rootRef, calendarRef, stacked);\n const [value, setValue] = useControlValue(props);\n const selectedDate = useMemo(() => toDayjs(value) || dayjs(), [value]);\n const [current, setCurrent] = useControlledState({\n value: props.current,\n defaultValue: props.defaultCurrent || selectedDate,\n onChange: props.onCurrentChange\n });\n const currentDate = useMemo(() => toDayjs(current) || selectedDate, [current, selectedDate]);\n const [selectedSlots, setSelectedSlots] = useState([]);\n const eventGroup = useMemo(() => groupEventsByDate(events), [events]);\n const selectedEvents = useMemo(() => eventGroup[selectedDate.format(DATE_FORMAT)] || [], [eventGroup, selectedDate]);\n const ruleContext = useMemo(\n () => ({\n mode,\n disabledDate,\n disabledDateTime,\n availableDateTime\n }),\n [availableDateTime, disabledDate, disabledDateTime, mode]\n );\n const monthRuleCache = useMemo(\n () =>\n buildMonthRuleCache({\n currentDate,\n ...ruleContext\n }),\n [currentDate, ruleContext]\n );\n const getDateRule = useCallback(\n date => {\n const cached = monthRuleCache.get(date.format(DATE_FORMAT));\n if (cached !== undefined) {\n return cached;\n }\n return checkRule({\n date,\n ...ruleContext\n });\n },\n [monthRuleCache, ruleContext]\n );\n const slots = useMemo(\n () =>\n generateTimeSlots({\n date: selectedDate,\n events: selectedEvents,\n timeUnit,\n dayStart,\n dayEnd,\n disabledDate,\n disabledDateTime,\n availableDateTime,\n mode\n }),\n [availableDateTime, dayEnd, dayStart, disabledDate, disabledDateTime, mode, selectedDate, selectedEvents, timeUnit]\n );\n\n const handleSelectDate = (date, info) => {\n const nextDate = date.startOf('day').toDate();\n setValue(nextDate, info);\n onDateChange?.(nextDate, info);\n setSelectedSlots([]);\n };\n\n const handleCurrentChange = (date, info) => {\n setCurrent(date.startOf('month').toDate(), info);\n };\n\n const handleGoToday = () => {\n const today = dayjs().startOf('day');\n if (getDateRule(today)) {\n return;\n }\n handleSelectDate(today, { source: 'today' });\n handleCurrentChange(today, { source: 'today' });\n };\n\n const fullCellRender = date => {\n const key = date.format(DATE_FORMAT);\n const dayEvents = eventGroup[key] || [];\n const disabled = !!getDateRule(date);\n return <DateCell date={date} dayEvents={dayEvents} selected={date.isSame(selectedDate, 'day')} currentMonth={date.isSame(currentDate, 'month')} disabled={disabled} badgeMaxCount={badgeMaxCount} renderDateCell={renderDateCell} />;\n };\n\n return (\n <div className={style['schedule-calendar-shell']} style={propsStyle}>\n <div ref={rootRef} className={classNames(style['schedule-calendar'], stacked && style['schedule-calendar-stacked'], className)} data-schedule-layout={stacked ? 'stacked' : 'row'} style={stacked ? stackedLayoutStyle : undefined}>\n <div ref={calendarRef} className={style['calendar-side']}>\n <Calendar\n {...calendarProps}\n fullscreen={false}\n value={currentDate}\n headerRender={() => {\n const today = dayjs().startOf('day');\n const todayDisabled = !!getDateRule(today);\n return <Header current={currentDate} showTodayButton={!todayDisabled && (!selectedDate.isSame(today, 'day') || !currentDate.isSame(today, 'month'))} onCurrentChange={handleCurrentChange} onSelectToday={handleGoToday} />;\n }}\n fullCellRender={fullCellRender}\n disabledDate={date => !!getDateRule(date)}\n onSelect={date => {\n if (getDateRule(date)) {\n return;\n }\n handleSelectDate(date, { source: 'date' });\n }}\n onPanelChange={date => handleCurrentChange(date, { source: 'picker' })}\n />\n </div>\n <div className={style['panel-side']} {...panelProps}>\n {mode === 'schedule' ? (\n <SchedulePanel\n date={selectedDate}\n slots={slots}\n loading={loading}\n allowMultiSelect={allowMultiSelect}\n selectedSlots={selectedSlots}\n setSelectedSlots={setSelectedSlots}\n onSlotRangeChange={onSlotRangeChange}\n onFreeSlotClick={onFreeSlotClick}\n onCreate={onCreate}\n formInner={formInner}\n formProps={formProps}\n defaultFormValues={defaultFormValues}\n renderTimeSlot={renderTimeSlot}\n renderOccupiedSlot={renderOccupiedSlot}\n renderPanelHeader={renderPanelHeader}\n onEventClick={onEventClick}\n />\n ) : (\n <ViewPanel date={selectedDate} events={selectedEvents} loading={loading} renderEventItem={renderEventItem} renderPanelHeader={renderPanelHeader} onEventClick={onEventClick} />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport const ScheduleCalendar = withLocale(ScheduleCalendarInner);\n\nexport default ScheduleCalendar;\n"],"names":["locale","withLocale","createWithIntlProvider","defaultLocale","messages","zhCN","enUS","namespace","DATE_FORMAT","TIME_FORMAT","LAYOUT_STACK_BREAKPOINT","LAYOUT_MIN_HEIGHT","measureHeight","node","Math","ceil","getBoundingClientRect","height","useStackedPanelLayout","rootRef","calendarRef","stacked","layoutStyle","setLayoutStyle","useState","undefined","useLayoutEffect","root","current","calendar","update","calendarHeight","panelViewportHeight","max","totalHeight","ResizeObserver","window","addEventListener","removeEventListener","observer","observe","disconnect","classNames","list","flatMap","item","Object","keys","filter","key","join","toDayjs","value","date","dayjs","isValid","parseDayTime","time","day","parsed","format","startOf","formatRange","start","end","getDefaultFormValues","defaultFormValues","ctx","_extends","title","detail","sortEventsByStart","events","sort","a","b","_toDayjs$valueOf","_toDayjs","_toDayjs$valueOf2","_toDayjs2","aStart","valueOf","bStart","dedupeEventsById","map","Map","forEach","event","set","id","values","useControlledState","defaultValue","onChange","props","useControlValue","getRuleDisabled","result","defaultReason","disabled","reason","checkRule","slot","mode","disabledDate","disabledDateTime","availableDateTime","toDate","disabledResult","normalizeEvent","isAfter","add","groupEventsByDate","reduce","normalized","startOfDay","endOfDay","isBefore","isSame","push","getOverlappingEvents","slotStart","slotEnd","sortedEvents","matched","generateTimeSlots","timeUnit","dayStart","dayEnd","selectedDate","startAt","endAt","normalizedEvents","slots","matchedEvents","baseSlot","ruleResult","status","length","disabledReason","toDay","getMonthName","formatMessage","monthIndex","getPanelDateLabel","d","month","year","monthName","getHeaderMonthLabel","getMonthPickerItemLabel","HeaderNavIcon","direction","className","_jsx","style","viewBox","focusable","children","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","YEAR_PAGE_SIZE","getYearPageStart","floor","PickerPanelNav","label","onClick","type","YearPickerPanel","pageStart","onPageStartChange","onSelect","useIntl","years","useMemo","Array","from","_","index","_jsxs","MonthPickerPanel","months","HeaderNavButton","Header","showTodayButton","onCurrentChange","onSelectToday","yearOpen","setYearOpen","monthOpen","setMonthOpen","yearPageStart","setYearPageStart","currentYear","yearText","monthText","useEffect","handleYearSelect","source","handleMonthSelect","Popover","open","onOpenChange","trigger","placement","rootClassName","content","Space","size","Button","subtract","readWidth","width","useStackedLayout","ref","stackAt","setStacked","DateCell","dayEvents","selected","currentMonth","badgeMaxCount","renderDateCell","count","customCell","Badge","getEventTagLabel","raw","EventItem","renderEventItem","onEventClick","clickable","handleClick","tagLabel","List","Item","role","tabIndex","onKeyDown","eventKey","preventDefault","Tag","color","PanelTitle","subtitle","dateText","countText","PanelScrollShadow","visible","usePanelScrollShadow","resetKey","scrollRef","scrolled","setScrolled","scrollTop","onScroll","useCallback","currentTarget","ViewPanel","loading","renderPanelHeader","panelHeader","useRef","Card","bordered","Spin","spinning","container","dataSource","renderItem","Empty","description","LONG_PRESS_DELAY","SCROLL_CANCEL_THRESHOLD","TAP_MOVE_THRESHOLD","getPopoverKey","getSlotIndexFromPoint","clientX","clientY","slotElements","querySelectorAll","closestIndex","closestDistance","Infinity","candidate","rect","Number","getAttribute","isNaN","top","bottom","left","right","centerY","distance","abs","clearDocumentTextSelection","selection","document","getSelection","isCollapsed","removeAllRanges","useScheduleSelectionGesture","selectedSlots","setSelectedSlots","allowMultiSelect","onSlotRangeChange","onFreeSlotClick","_selectedSlots","dragging","setDragging","activePopoverKey","setActivePopoverKey","slotsRef","draggingRef","dragStartIndexRef","longPressTimerRef","touchStateRef","slotsDataRef","selectedSlotsRef","allowMultiSelectRef","suppressTriggerUntilRef","suppressMouseUntilRef","scrollLockRef","handlersRef","selectedKeys","Set","selectedAnchorKey","formPopoverKey","clearLongPress","clearTimeout","unlockContainerScroll","overflow","touchAction","lockContainerScroll","resetGestureState","touchState","pointerId","hasPointerCapture","releasePointerCapture","_unused","classList","remove","selectSlots","nextSlots","action","getSelectableRange","startIndex","endIndex","min","slice","showFormPopoverForSlots","slotsList","anchorSlot","startSlotSelection","showPopover","lockScroll","_slotsRef$current","Date","now","finishSelection","fromTouch","hadSelection","updateSelectionRange","shouldIgnoreMouseSelectionEvent","handleMouseDown","handleMouseEnter","handleMouseUp","handleMouseLeave","handlePopoverOpenChange","currentPopoverKey","isForm","prevKey","_unused2","clearPendingTouch","isStillOnSameSlot","currentIndex","shouldCancelPendingGesture","moveX","x","moveY","y","activateLongPress","_slotsRef$current2","lastX","lastY","longPressed","active","setPointerCapture","_unused3","handlePointerDown","_event$target","pointerType","isPrimary","slotElement","target","closest","contains","moved","selectionTriggered","setTimeout","handlePointerMove","stopPropagation","handlePointerUp","quickTap","handleContextMenu","_touchStateRef$curren","handleSelectStart","_touchStateRef$curren2","handleTouchMove","_touchStateRef$curren3","touchOptions","passive","capture","_touchStateRef$curren4","DefaultFormInner","FormInfo","column","Input","name","rule","placeholder","block","TextArea","SlotEvents","SlotItem","formPopover","popoverOpen","onPopoverOpenChange","onContextMenu","onMouseDown","onPointerDown","onMouseEnter","onMouseUp","renderTimeSlot","renderOccupiedSlot","customNode","autoAdjustOverflow","wrapWithPopover","Tooltip","slotClassName","slotChildren","_Fragment","slotHandlers","inner","SchedulePanel","onCreate","formInner","formProps","formContext","range","Form","data","onSubmit","SubmitButton","panelStyle","onMouseLeave","slotWithIndex","occupiedPopoverKey","has","extend","customParseFormat","buildMonthRuleCache","currentDate","cache","monthStart","monthEnd","endOf","cursor","ScheduleCalendarInner","onDateChange","propsStyle","calendarProps","panelProps","stackedLayoutStyle","setValue","setCurrent","defaultCurrent","eventGroup","selectedEvents","ruleContext","monthRuleCache","getDateRule","cached","get","handleSelectDate","info","nextDate","handleCurrentChange","handleGoToday","today","fullCellRender","Calendar","fullscreen","headerRender","todayDisabled","onPanelChange","ScheduleCalendar"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/locale/zh-CN.js","../src/locale/en-US.js","../src/withLocale.js","../src/constants.js","../src/useStackedPanelLayout.js","../src/utils.js","../src/rules.js","../src/events.js","../src/formatCalendarLabels.js","../src/components/Header/NavIcon.js","../src/components/Header/constants.js","../src/components/Header/YearPickerPanel.js","../src/components/Header/MonthPickerPanel.js","../src/components/Header/index.js","../src/useStackedLayout.js","../src/components/DateCell/index.js","../src/components/EventItem/getEventTagLabel.js","../src/components/EventItem/index.js","../src/components/Panel/PanelTitle.js","../src/components/Panel/PanelScrollShadow.js","../src/components/Panel/usePanelScrollShadow.js","../src/components/Panel/ViewPanel.js","../src/timeline.js","../src/timeWindow.js","../src/components/TimeWindow/index.js","../src/components/SchedulePanel/DefaultFormInner.js","../src/components/SchedulePanel/EventDetail.js","../src/components/SchedulePanel/Timeline.js","../src/components/SchedulePanel/index.js","../src/ScheduleCalendar.js"],"sourcesContent":["const locale = {\n 'Header.today': '今天',\n 'Header.prevMonth': '上一月',\n 'Header.nextMonth': '下一月',\n 'Header.prevYearPage': '上一组年份',\n 'Header.nextYearPage': '下一组年份',\n 'Header.yearLabel': '{year}年',\n 'Header.monthLabel': '{monthName}',\n 'Header.monthPickerItem': '{monthName}',\n 'PanelTitle.dateLabel': '{year}年{monthName}{day}日',\n 'PanelTitle.eventCount': '共 {count} 个日程',\n 'ViewPanel.empty': '暂无日程',\n 'SchedulePanel.selectFreeSlot': '点击或拖拽空白处选择时间',\n 'SchedulePanel.cancel': '取消',\n 'SchedulePanel.save': '保存',\n 'SchedulePanel.newScheduleTitle': '新增日程',\n 'SchedulePanel.conflict': '与 {count} 个日程时间冲突',\n 'DefaultFormInner.title': '标题',\n 'DefaultFormInner.titlePlaceholder': '请输入日程标题',\n 'DefaultFormInner.detail': '详情',\n 'DefaultFormInner.detailPlaceholder': '请输入日程详情',\n 'TimeWindow.hours': '{count} 小时',\n 'TimeWindow.minutes': '{count} 分钟',\n 'TimeWindow.editable': '允许编辑',\n 'TimeWindow.locked': '已锁定',\n 'Calendar.month.1': '1月',\n 'Calendar.month.2': '2月',\n 'Calendar.month.3': '3月',\n 'Calendar.month.4': '4月',\n 'Calendar.month.5': '5月',\n 'Calendar.month.6': '6月',\n 'Calendar.month.7': '7月',\n 'Calendar.month.8': '8月',\n 'Calendar.month.9': '9月',\n 'Calendar.month.10': '10月',\n 'Calendar.month.11': '11月',\n 'Calendar.month.12': '12月'\n};\n\nexport default locale;\n","const locale = {\n 'Header.today': 'Today',\n 'Header.prevMonth': 'Previous month',\n 'Header.nextMonth': 'Next month',\n 'Header.prevYearPage': 'Previous years',\n 'Header.nextYearPage': 'Next years',\n 'Header.yearLabel': '{year}',\n 'Header.monthLabel': '{monthName}',\n 'Header.monthPickerItem': '{monthName}',\n 'PanelTitle.dateLabel': '{monthName} {day}, {year}',\n 'PanelTitle.eventCount': '{count} events',\n 'ViewPanel.empty': 'No events',\n 'SchedulePanel.selectFreeSlot': 'Click or drag on free time',\n 'SchedulePanel.cancel': 'Cancel',\n 'SchedulePanel.save': 'Save',\n 'SchedulePanel.newScheduleTitle': 'New event',\n 'SchedulePanel.conflict': 'Overlaps {count} event(s)',\n 'DefaultFormInner.title': 'Title',\n 'DefaultFormInner.titlePlaceholder': 'Enter event title',\n 'DefaultFormInner.detail': 'Details',\n 'DefaultFormInner.detailPlaceholder': 'Enter event details',\n 'TimeWindow.hours': '{count} h',\n 'TimeWindow.minutes': '{count} min',\n 'TimeWindow.editable': 'Editable',\n 'TimeWindow.locked': 'Locked',\n 'Calendar.month.1': 'Jan',\n 'Calendar.month.2': 'Feb',\n 'Calendar.month.3': 'Mar',\n 'Calendar.month.4': 'Apr',\n 'Calendar.month.5': 'May',\n 'Calendar.month.6': 'Jun',\n 'Calendar.month.7': 'Jul',\n 'Calendar.month.8': 'Aug',\n 'Calendar.month.9': 'Sep',\n 'Calendar.month.10': 'Oct',\n 'Calendar.month.11': 'Nov',\n 'Calendar.month.12': 'Dec'\n};\n\nexport default locale;\n","import { createWithIntlProvider } from '@kne/react-intl';\nimport zhCN from './locale/zh-CN';\nimport enUS from './locale/en-US';\n\nconst withLocale = createWithIntlProvider({\n defaultLocale: 'zh-CN',\n messages: {\n 'zh-CN': zhCN,\n 'en-US': enUS\n },\n namespace: 'react-calendar'\n});\n\nexport default withLocale;\n","export const DATE_FORMAT = 'YYYY-MM-DD';\nexport const TIME_FORMAT = 'HH:mm';\n/** Stack panels vertically when container width is below this value (px). */\nexport const LAYOUT_STACK_BREAKPOINT = 560;\n/** Minimum panel viewport height in stacked layout (px), aligned with root min-height. */\nexport const LAYOUT_MIN_HEIGHT = 560;\n","import { useLayoutEffect, useState } from 'react';\nimport { LAYOUT_MIN_HEIGHT } from './constants';\n\nconst measureHeight = node => {\n if (!node) {\n return 0;\n }\n return Math.ceil(node.getBoundingClientRect().height);\n};\n\nexport const useStackedPanelLayout = (rootRef, calendarRef, stacked) => {\n const [layoutStyle, setLayoutStyle] = useState(undefined);\n\n useLayoutEffect(() => {\n if (!stacked) {\n setLayoutStyle(undefined);\n return undefined;\n }\n\n const root = rootRef.current;\n const calendar = calendarRef.current;\n if (!root || !calendar) {\n return undefined;\n }\n\n const update = () => {\n const calendarHeight = measureHeight(calendar);\n const panelViewportHeight = Math.max(calendarHeight, LAYOUT_MIN_HEIGHT);\n const totalHeight = calendarHeight + panelViewportHeight;\n setLayoutStyle({\n height: totalHeight,\n '--schedule-panel-top': `${calendarHeight}px`,\n '--schedule-panel-height': `${panelViewportHeight}px`\n });\n };\n\n update();\n\n if (typeof ResizeObserver === 'undefined') {\n window.addEventListener('resize', update);\n return () => window.removeEventListener('resize', update);\n }\n\n const observer = new ResizeObserver(update);\n observer.observe(calendar);\n observer.observe(root);\n return () => observer.disconnect();\n }, [calendarRef, rootRef, stacked]);\n\n return layoutStyle;\n};\n\nexport default useStackedPanelLayout;\n","import dayjs from 'dayjs';\nimport useControlValue from '@kne/use-control-value';\nimport { DATE_FORMAT, TIME_FORMAT } from './constants';\n\nexport const classNames = (...list) =>\n list\n .flatMap(item => {\n if (!item) {\n return [];\n }\n if (typeof item === 'string') {\n return [item];\n }\n return Object.keys(item).filter(key => item[key]);\n })\n .join(' ');\n\nexport const toDayjs = value => {\n if (!value) {\n return null;\n }\n const date = dayjs(value);\n return date.isValid() ? date : null;\n};\n\nexport const parseDayTime = (date, time) => {\n const day = toDayjs(date) || dayjs();\n const parsed = dayjs(`${day.format(DATE_FORMAT)} ${time}`, `${DATE_FORMAT} ${TIME_FORMAT}`);\n return parsed.isValid() ? parsed : day.startOf('day');\n};\n\nexport const formatRange = (start, end) => `${dayjs(start).format(TIME_FORMAT)} - ${dayjs(end).format(TIME_FORMAT)}`;\n\nexport const getDefaultFormValues = (defaultFormValues, ctx) => {\n if (typeof defaultFormValues === 'function') {\n return defaultFormValues(ctx);\n }\n return {\n title: '',\n detail: '',\n ...(defaultFormValues || {})\n };\n};\n\nexport const sortEventsByStart = events =>\n [...(events || [])].sort((a, b) => {\n const aStart = toDayjs(a.start)?.valueOf() ?? 0;\n const bStart = toDayjs(b.start)?.valueOf() ?? 0;\n return aStart - bStart;\n });\n\nexport const dedupeEventsById = events => {\n const map = new Map();\n (events || []).forEach(event => {\n map.set(event.id, event);\n });\n return [...map.values()];\n};\n\nexport const useControlledState = ({ value, defaultValue, onChange }) => {\n const props = {};\n if (typeof value !== 'undefined') {\n props.value = value;\n }\n if (typeof defaultValue !== 'undefined') {\n props.defaultValue = defaultValue;\n }\n if (onChange) {\n props.onChange = onChange;\n }\n return useControlValue(props);\n};\n","const getRuleDisabled = (result, defaultReason) => {\n if (!result) {\n return null;\n }\n if (typeof result === 'boolean') {\n return result ? { disabled: true, reason: defaultReason } : null;\n }\n if (result.disabled) {\n return { disabled: true, reason: result.reason || defaultReason };\n }\n return null;\n};\n\nexport const checkRule = ({ date, slot, mode, disabledDate, disabledDateTime, availableDateTime }) => {\n if (disabledDate?.(date.toDate())) {\n return { disabled: true };\n }\n const ctx = {\n date: date.toDate(),\n mode,\n ...(slot\n ? {\n slot: {\n start: slot.start.toDate(),\n end: slot.end.toDate()\n }\n }\n : {})\n };\n const disabledResult = getRuleDisabled(disabledDateTime?.(ctx));\n if (disabledResult) {\n return disabledResult;\n }\n if (availableDateTime && !availableDateTime(ctx)) {\n return { disabled: true };\n }\n return null;\n};\n","import dayjs from 'dayjs';\nimport { DATE_FORMAT, TIME_FORMAT } from './constants';\nimport { parseDayTime, toDayjs } from './utils';\nimport { checkRule } from './rules';\n\nexport const normalizeEvent = event => {\n const start = toDayjs(event.start || event.date);\n const end = toDayjs(event.end || event.start || event.date);\n return {\n ...event,\n start,\n end: end && start && !end.isAfter(start) ? start.add(1, 'minute') : end\n };\n};\n\nexport const groupEventsByDate = events => {\n return (events || []).reduce((result, event) => {\n const normalized = normalizeEvent(event);\n if (!normalized.start || !normalized.end) {\n return result;\n }\n const startOfDay = normalized.start.startOf('day');\n const endOfDay = normalized.end.startOf('day');\n let current = startOfDay;\n while (current.isBefore(endOfDay) || current.isSame(endOfDay, 'day')) {\n const key = current.format(DATE_FORMAT);\n result[key] = result[key] || [];\n result[key].push(normalized);\n current = current.add(1, 'day');\n }\n return result;\n }, {});\n};\n\nconst getOverlappingEvents = (slotStart, slotEnd, sortedEvents) => {\n const matched = [];\n for (const event of sortedEvents) {\n if (!event.end.isAfter(slotStart)) {\n continue;\n }\n if (!event.start.isBefore(slotEnd)) {\n break;\n }\n matched.push(event);\n }\n return matched;\n};\n\nexport const generateTimeSlots = ({ date, events, timeUnit = 30, dayStart = '09:00', dayEnd = '18:00', disabledDate, disabledDateTime, availableDateTime, mode = 'schedule' }) => {\n const selectedDate = toDayjs(date) || dayjs();\n const startAt = parseDayTime(selectedDate, dayStart);\n const endAt = parseDayTime(selectedDate, dayEnd);\n if (!startAt.isBefore(endAt)) {\n return [];\n }\n const normalizedEvents = (events || [])\n .map(normalizeEvent)\n .filter(event => event.start && event.end)\n .sort((a, b) => a.start.valueOf() - b.start.valueOf());\n const slots = [];\n let current = startAt;\n\n while (current.isBefore(endAt)) {\n const slotStart = current;\n const slotEnd = slotStart.add(timeUnit, 'minute');\n const matchedEvents = getOverlappingEvents(slotStart, slotEnd, normalizedEvents);\n const baseSlot = {\n key: `${slotStart.format(DATE_FORMAT)}-${slotStart.format(TIME_FORMAT)}`,\n date: slotStart.format(DATE_FORMAT),\n start: slotStart,\n end: slotEnd\n };\n const ruleResult = checkRule({\n date: selectedDate,\n slot: baseSlot,\n mode,\n disabledDate,\n disabledDateTime,\n availableDateTime\n });\n\n slots.push({\n ...baseSlot,\n start: slotStart.toDate(),\n end: slotEnd.toDate(),\n status: ruleResult ? 'disabled' : matchedEvents.length > 0 ? 'occupied' : 'free',\n disabledReason: ruleResult?.reason,\n events: matchedEvents\n });\n current = slotEnd;\n }\n return slots;\n};\n","import dayjs from 'dayjs';\nimport { toDayjs } from './utils';\n\nconst toDay = value => toDayjs(value) || dayjs();\n\nexport const getMonthName = (formatMessage, monthIndex) => formatMessage({ id: `Calendar.month.${monthIndex + 1}` });\n\nexport const getPanelDateLabel = (formatMessage, date) => {\n const d = toDay(date);\n const monthIndex = d.month();\n return formatMessage(\n { id: 'PanelTitle.dateLabel' },\n {\n year: d.year(),\n month: monthIndex + 1,\n day: d.date(),\n monthName: getMonthName(formatMessage, monthIndex)\n }\n );\n};\n\nexport const getHeaderMonthLabel = (formatMessage, date) => {\n const d = toDay(date);\n const monthIndex = d.month();\n return formatMessage(\n { id: 'Header.monthLabel' },\n {\n month: monthIndex + 1,\n monthName: getMonthName(formatMessage, monthIndex)\n }\n );\n};\n\nexport const getMonthPickerItemLabel = (formatMessage, value, monthIndex) =>\n formatMessage(\n { id: 'Header.monthPickerItem' },\n {\n month: monthIndex + 1,\n monthName: getMonthName(formatMessage, monthIndex)\n }\n );\n","import style from './style.module.scss';\n\nconst HeaderNavIcon = ({ direction, className }) => (\n <svg className={className || style['header-nav-icon']} viewBox=\"0 0 16 16\" aria-hidden focusable=\"false\">\n <path d={direction === 'prev' ? 'M10 4 L6 8 L10 12' : 'M6 4 L10 8 L6 12'} fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport default HeaderNavIcon;\n","export const YEAR_PAGE_SIZE = 12;\n\nexport const getYearPageStart = year => Math.floor(year / YEAR_PAGE_SIZE) * YEAR_PAGE_SIZE;\n","import { useMemo } from 'react';\nimport { useIntl } from '@kne/react-intl';\nimport { classNames } from '../../utils';\nimport HeaderNavIcon from './NavIcon';\nimport { YEAR_PAGE_SIZE } from './constants';\nimport style from './style.module.scss';\n\nconst PickerPanelNav = ({ label, onClick, children }) => (\n <button type=\"button\" className={style['picker-panel-nav']} aria-label={label} onClick={onClick}>\n {children}\n </button>\n);\n\nconst YearPickerPanel = ({ value, pageStart, onPageStartChange, onSelect }) => {\n const { formatMessage } = useIntl();\n const years = useMemo(() => Array.from({ length: YEAR_PAGE_SIZE }, (_, index) => pageStart + index), [pageStart]);\n return (\n <div className={style['picker-panel']}>\n <div className={style['picker-panel-header']}>\n <PickerPanelNav label={formatMessage({ id: 'Header.prevYearPage' })} onClick={() => onPageStartChange(pageStart - YEAR_PAGE_SIZE)}>\n <HeaderNavIcon direction=\"prev\" className={style['picker-panel-nav-icon']} />\n </PickerPanelNav>\n <div className={style['picker-panel-range']}>\n {pageStart}-{pageStart + YEAR_PAGE_SIZE - 1}\n </div>\n <PickerPanelNav label={formatMessage({ id: 'Header.nextYearPage' })} onClick={() => onPageStartChange(pageStart + YEAR_PAGE_SIZE)}>\n <HeaderNavIcon direction=\"next\" className={style['picker-panel-nav-icon']} />\n </PickerPanelNav>\n </div>\n <div className={style['picker-panel-grid']}>\n {years.map(year => (\n <button key={year} type=\"button\" className={classNames(style['picker-cell'], { [style['picker-cell-active']]: year === value.year() })} onClick={() => onSelect(year)}>\n {year}\n </button>\n ))}\n </div>\n </div>\n );\n};\n\nexport default YearPickerPanel;\n","import { useMemo } from 'react';\nimport { useIntl } from '@kne/react-intl';\nimport { getMonthPickerItemLabel } from '../../formatCalendarLabels';\nimport { classNames } from '../../utils';\nimport style from './style.module.scss';\n\nconst MonthPickerPanel = ({ value, onSelect }) => {\n const { formatMessage } = useIntl();\n const months = useMemo(() => Array.from({ length: 12 }, (_, index) => index), []);\n return (\n <div className={style['picker-panel']}>\n <div className={style['picker-panel-grid']}>\n {months.map(month => (\n <button key={month} type=\"button\" className={classNames(style['picker-cell'], { [style['picker-cell-active']]: month === value.month() })} onClick={() => onSelect(month)}>\n {getMonthPickerItemLabel(formatMessage, value, month)}\n </button>\n ))}\n </div>\n </div>\n );\n};\n\nexport default MonthPickerPanel;\n","import { useEffect, useState } from 'react';\nimport dayjs from 'dayjs';\nimport { Button, Popover, Space } from 'antd';\nimport { useIntl } from '@kne/react-intl';\nimport { getHeaderMonthLabel } from '../../formatCalendarLabels';\nimport { toDayjs } from '../../utils';\nimport HeaderNavIcon from './NavIcon';\nimport YearPickerPanel from './YearPickerPanel';\nimport MonthPickerPanel from './MonthPickerPanel';\nimport { getYearPageStart } from './constants';\nimport style from './style.module.scss';\n\nconst HeaderNavButton = ({ label, onClick, children }) => (\n <button type=\"button\" className={style['header-nav']} aria-label={label} onClick={onClick}>\n {children}\n </button>\n);\n\nconst Header = ({ current, showTodayButton, onCurrentChange, onSelectToday }) => {\n const { formatMessage } = useIntl();\n const date = toDayjs(current) || dayjs();\n const [yearOpen, setYearOpen] = useState(false);\n const [monthOpen, setMonthOpen] = useState(false);\n const [yearPageStart, setYearPageStart] = useState(() => getYearPageStart(date.year()));\n const currentYear = date.year();\n const yearText = formatMessage({ id: 'Header.yearLabel' }, { year: date.year() });\n const monthText = getHeaderMonthLabel(formatMessage, date);\n\n useEffect(() => {\n if (yearOpen) {\n setYearPageStart(getYearPageStart(currentYear));\n }\n }, [yearOpen, currentYear]);\n\n const handleYearSelect = year => {\n onCurrentChange(date.year(year), { source: 'picker' });\n setYearOpen(false);\n };\n\n const handleMonthSelect = month => {\n onCurrentChange(date.month(month), { source: 'picker' });\n setMonthOpen(false);\n };\n\n return (\n <div className={style['calendar-header']}>\n <div className={style['calendar-title']}>\n <Popover\n open={yearOpen}\n onOpenChange={open => {\n setYearOpen(open);\n if (open) {\n setMonthOpen(false);\n }\n }}\n trigger=\"click\"\n placement=\"bottomLeft\"\n rootClassName={style['header-picker-popover']}\n content={<YearPickerPanel value={date} pageStart={yearPageStart} onPageStartChange={setYearPageStart} onSelect={handleYearSelect} />}\n >\n <button type=\"button\" className={style['calendar-title-part']}>\n {yearText}\n </button>\n </Popover>\n <Popover\n open={monthOpen}\n onOpenChange={open => {\n setMonthOpen(open);\n if (open) {\n setYearOpen(false);\n }\n }}\n trigger=\"click\"\n placement=\"bottomLeft\"\n rootClassName={style['header-picker-popover']}\n content={<MonthPickerPanel value={date} onSelect={handleMonthSelect} />}\n >\n <button type=\"button\" className={style['calendar-title-part']}>\n {monthText}\n </button>\n </Popover>\n </div>\n <Space size={4} className={style['header-actions']}>\n {showTodayButton ? (\n <Button className={style['header-today']} type=\"text\" size=\"small\" onClick={onSelectToday}>\n {formatMessage({ id: 'Header.today' })}\n </Button>\n ) : null}\n <HeaderNavButton label={formatMessage({ id: 'Header.prevMonth' })} onClick={() => onCurrentChange(date.subtract(1, 'month'), { source: 'prevMonth' })}>\n <HeaderNavIcon direction=\"prev\" />\n </HeaderNavButton>\n <HeaderNavButton label={formatMessage({ id: 'Header.nextMonth' })} onClick={() => onCurrentChange(date.add(1, 'month'), { source: 'nextMonth' })}>\n <HeaderNavIcon direction=\"next\" />\n </HeaderNavButton>\n </Space>\n </div>\n );\n};\n\nexport default Header;\n","import { useEffect, useLayoutEffect, useState } from 'react';\n\nconst readWidth = node => {\n if (!node) {\n return 0;\n }\n return node.getBoundingClientRect().width;\n};\n\nexport const useStackedLayout = (ref, stackAt) => {\n const [stacked, setStacked] = useState(false);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node) {\n return;\n }\n setStacked(readWidth(node) < stackAt);\n }, [ref, stackAt]);\n\n useEffect(() => {\n const node = ref.current;\n if (!node) {\n return undefined;\n }\n\n const update = () => {\n setStacked(readWidth(node) < stackAt);\n };\n\n update();\n\n if (typeof ResizeObserver === 'undefined') {\n window.addEventListener('resize', update);\n return () => window.removeEventListener('resize', update);\n }\n\n const observer = new ResizeObserver(() => update());\n observer.observe(node);\n return () => observer.disconnect();\n }, [ref, stackAt]);\n\n return stacked;\n};\n\nexport default useStackedLayout;\n","import { Badge } from 'antd';\nimport { classNames } from '../../utils';\nimport style from './style.module.scss';\n\nconst DateCell = ({ date, dayEvents, selected, currentMonth, disabled, badgeMaxCount, renderDateCell }) => {\n const count = dayEvents.length;\n const customCell = renderDateCell?.(date.toDate(), {\n events: dayEvents,\n selected,\n currentMonth\n });\n if (customCell) {\n return customCell;\n }\n return (\n <div\n className={classNames(style['date-cell'], {\n [style['date-selected']]: selected,\n [style['date-muted']]: !currentMonth && !selected,\n [style['date-disabled']]: disabled && !selected,\n [style['date-has-events']]: count > 0 && !selected\n })}\n >\n <div className={style['date-number']}>{date.date()}</div>\n {count ? <Badge count={count > badgeMaxCount ? `${badgeMaxCount}+` : count} size=\"small\" /> : null}\n </div>\n );\n};\n\nexport default DateCell;\n","const getEventTagLabel = event => {\n if (!event.raw || typeof event.raw !== 'object') {\n return null;\n }\n const { label, type } = event.raw;\n if (typeof label === 'string' && label) {\n return label;\n }\n if (typeof type === 'string' && type) {\n return type;\n }\n return null;\n};\n\nexport default getEventTagLabel;\n","import { List, Tag } from 'antd';\nimport { classNames, formatRange } from '../../utils';\nimport getEventTagLabel from './getEventTagLabel';\nimport style from './style.module.scss';\n\nconst EventItem = ({ event, date, mode, renderEventItem, onEventClick }) => {\n if (renderEventItem) {\n return renderEventItem(event, { date, mode, onEventClick });\n }\n const clickable = !event.disabled && (typeof event.onClick === 'function' || typeof onEventClick === 'function');\n const handleClick = () => {\n if (typeof event.onClick === 'function') {\n event.onClick(event, { date, mode });\n return;\n }\n onEventClick?.(event, { date, mode });\n };\n const tagLabel = getEventTagLabel(event);\n return (\n <List.Item className={style['event-list-item']}>\n <div\n className={classNames(style['event-item'], {\n [style['event-item-clickable']]: clickable,\n [style['event-item-disabled']]: event.disabled\n })}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n onClick={clickable ? handleClick : undefined}\n onKeyDown={\n clickable\n ? eventKey => {\n if (eventKey.key === 'Enter' || eventKey.key === ' ') {\n eventKey.preventDefault();\n handleClick();\n }\n }\n : undefined\n }\n >\n <div className={style['event-item-head']}>\n <div className={style['event-item-title']}>{event.title}</div>\n {tagLabel ? (\n <Tag className={style['event-item-tag']} color={event.color}>\n {tagLabel}\n </Tag>\n ) : null}\n </div>\n <div className={style['event-item-time']}>{formatRange(event.start, event.end)}</div>\n {event.detail ? <div className={style['event-item-detail']}>{event.detail}</div> : null}\n </div>\n </List.Item>\n );\n};\n\nexport default EventItem;\n","import { useIntl } from '@kne/react-intl';\nimport { getPanelDateLabel } from '../../formatCalendarLabels';\nimport style from './style.module.scss';\n\nconst PanelTitle = ({ date, subtitle, count }) => {\n const { formatMessage } = useIntl();\n const dateText = getPanelDateLabel(formatMessage, date);\n const countText = typeof count === 'number' ? formatMessage({ id: 'PanelTitle.eventCount' }, { count }) : null;\n return (\n <div className={style['panel-title']}>\n <span>{dateText}</span>\n {subtitle || countText ? <span>{subtitle || countText}</span> : null}\n </div>\n );\n};\n\nexport default PanelTitle;\n","import { classNames } from '../../utils';\nimport style from './style.module.scss';\n\nconst PanelScrollShadow = ({ visible }) => <div className={classNames(style['panel-scroll-shadow'], { [style['panel-scroll-shadow-visible']]: visible })} aria-hidden />;\n\nexport default PanelScrollShadow;\n","import { useCallback, useEffect, useState } from 'react';\nimport { classNames } from '../../utils';\nimport style from './style.module.scss';\n\nconst usePanelScrollShadow = (resetKey, scrollRef) => {\n const [scrolled, setScrolled] = useState(false);\n\n useEffect(() => {\n if (scrollRef?.current) {\n scrollRef.current.scrollTop = 0;\n }\n setScrolled(false);\n }, [resetKey, scrollRef]);\n\n const onScroll = useCallback(event => {\n setScrolled(event.currentTarget.scrollTop > 0);\n }, []);\n\n return { scrolled, onScroll };\n};\n\nexport default usePanelScrollShadow;\n","import { useMemo, useRef } from 'react';\nimport { Card, Empty, List, Spin } from 'antd';\nimport { useIntl } from '@kne/react-intl';\nimport { DATE_FORMAT } from '../../constants';\nimport { classNames, sortEventsByStart } from '../../utils';\nimport EventItem from '../EventItem';\nimport PanelTitle from './PanelTitle';\nimport PanelScrollShadow from './PanelScrollShadow';\nimport usePanelScrollShadow from './usePanelScrollShadow';\nimport style from './style.module.scss';\n\nconst ViewPanel = ({ date, events, loading, renderEventItem, renderPanelHeader, onEventClick, scrollable = true }) => {\n const { formatMessage } = useIntl();\n const sortedEvents = useMemo(() => sortEventsByStart(events), [events]);\n const panelHeader = renderPanelHeader?.({ date: date.toDate(), mode: 'view', events: sortedEvents });\n const scrollRef = useRef(null);\n const { scrolled, onScroll } = usePanelScrollShadow(date.format(DATE_FORMAT), scrollRef);\n return (\n <Card bordered={false} title={panelHeader || <PanelTitle date={date} count={sortedEvents.length} />} className={classNames(style['panel-card'], !scrollable && style['panel-card-expanded'])}>\n <Spin spinning={!!loading} classNames={{ root: style['panel-spin'], container: style['panel-spin-container'] }}>\n <div ref={scrollRef} className={classNames(style['panel-scroll-body'], !scrollable && style['panel-scroll-body-expanded'])} onScroll={scrollable ? onScroll : undefined}>\n {scrollable ? <PanelScrollShadow visible={scrolled} /> : null}\n <div className={style['panel-scroll-content']}>\n {sortedEvents.length ? (\n <List dataSource={sortedEvents} renderItem={event => <EventItem event={event} date={date.toDate()} mode=\"view\" renderEventItem={renderEventItem} onEventClick={onEventClick} />} />\n ) : (\n <Empty description={formatMessage({ id: 'ViewPanel.empty' })} />\n )}\n </div>\n </div>\n </Spin>\n </Card>\n );\n};\n\nexport default ViewPanel;\n","import dayjs from 'dayjs';\n\nexport const MINUTE_MS = 60 * 1000;\n\nconst toMs = value => {\n if (value === null || typeof value === 'undefined') {\n return NaN;\n }\n if (typeof value === 'number') {\n return value;\n }\n const date = dayjs(value);\n return date.isValid() ? date.valueOf() : NaN;\n};\n\nexport const snapToStep = (ms, { originMs, stepMs, mode = 'round' }) => {\n const fn = mode === 'floor' ? Math.floor : mode === 'ceil' ? Math.ceil : Math.round;\n return originMs + fn((ms - originMs) / stepMs) * stepMs;\n};\n\nconst clamp = (value, min, max) => Math.min(Math.max(value, min), max);\n\n/**\n * Clip events to the day window and lay overlapping ones out side by side.\n * Returns `{ event, startMs, endMs, column, columns }` sorted by start.\n */\nexport const layoutTimelineEvents = (events, { startMs, endMs }) => {\n const items = (events || [])\n .map(event => {\n const s = Math.max(toMs(event.start), startMs);\n const e = Math.min(toMs(event.end), endMs);\n return { event, startMs: s, endMs: e };\n })\n .filter(item => Number.isFinite(item.startMs) && Number.isFinite(item.endMs) && item.endMs > item.startMs)\n .sort((a, b) => a.startMs - b.startMs || b.endMs - a.endMs);\n\n let cluster = [];\n let clusterEnd = -Infinity;\n let columnEnds = [];\n const flush = () => {\n cluster.forEach(item => {\n item.columns = columnEnds.length;\n });\n cluster = [];\n columnEnds = [];\n };\n items.forEach(item => {\n if (item.startMs >= clusterEnd) {\n flush();\n clusterEnd = -Infinity;\n }\n let column = columnEnds.findIndex(end => end <= item.startMs);\n if (column === -1) {\n column = columnEnds.length;\n columnEnds.push(item.endMs);\n } else {\n columnEnds[column] = item.endMs;\n }\n item.column = column;\n cluster.push(item);\n clusterEnd = Math.max(clusterEnd, item.endMs);\n });\n flush();\n return items;\n};\n\n/** Merge consecutive disabled slots (same reason) into ranges. */\nexport const mergeDisabledSlots = slots => {\n const ranges = [];\n (slots || []).forEach(slot => {\n if (slot.status !== 'disabled') {\n return;\n }\n const startMs = toMs(slot.start);\n const endMs = toMs(slot.end);\n const last = ranges[ranges.length - 1];\n if (last && last.endMs === startMs && last.reason === slot.disabledReason) {\n last.endMs = endMs;\n return;\n }\n ranges.push({ startMs, endMs, reason: slot.disabledReason });\n });\n return ranges;\n};\n\nexport const toBlockers = ranges =>\n (ranges || [])\n .map(range => ({ startMs: toMs(range.startMs ?? range.start), endMs: toMs(range.endMs ?? range.end) }))\n .filter(range => Number.isFinite(range.startMs) && Number.isFinite(range.endMs) && range.endMs > range.startMs)\n .sort((a, b) => a.startMs - b.startMs);\n\n/**\n * The free gap around `ms` between blockers, bounded by the day window.\n * Returns null when `ms` falls inside a blocker.\n */\nexport const getFreeGap = (ms, blockers, { startMs, endMs }) => {\n let gapStart = startMs;\n let gapEnd = endMs;\n for (const blocker of blockers || []) {\n if (blocker.startMs <= ms && ms < blocker.endMs) {\n return null;\n }\n if (blocker.endMs <= ms) {\n gapStart = Math.max(gapStart, blocker.endMs);\n } else if (blocker.startMs > ms) {\n gapEnd = Math.min(gapEnd, blocker.startMs);\n }\n }\n if (ms < startMs || ms >= endMs || gapEnd <= gapStart) {\n return null;\n }\n return { startMs: gapStart, endMs: gapEnd };\n};\n\n/** Range created by pressing at `anchorMs` and dragging to `pointerMs`, kept inside `gap`. */\nexport const createSelectionRange = ({ anchorMs, pointerMs, gap, originMs, stepMs }) => {\n const anchorStart = clamp(snapToStep(anchorMs, { originMs, stepMs, mode: 'floor' }), gap.startMs, gap.endMs);\n const anchorEnd = Math.min(anchorStart + stepMs, gap.endMs);\n const pointer = clamp(pointerMs, gap.startMs, gap.endMs);\n if (pointer >= anchorStart) {\n const end = clamp(snapToStep(pointer, { originMs, stepMs, mode: 'ceil' }), anchorEnd, gap.endMs);\n return { startMs: anchorStart, endMs: end };\n }\n const start = clamp(snapToStep(pointer, { originMs, stepMs, mode: 'floor' }), gap.startMs, anchorStart);\n return { startMs: start, endMs: anchorEnd };\n};\n\n/** Default range for a single click: one `unitMs` block that contains the pointer, fitted into `gap`. */\nexport const clickSelectionRange = ({ pointerMs, gap, originMs, unitMs }) => {\n const duration = Math.min(unitMs, gap.endMs - gap.startMs);\n const start = clamp(snapToStep(pointerMs, { originMs, stepMs: unitMs, mode: 'floor' }), gap.startMs, gap.endMs - duration);\n return { startMs: start, endMs: start + duration };\n};\n\nexport const moveSelectionRange = ({ range, deltaMs, gap, originMs, stepMs }) => {\n const duration = range.endMs - range.startMs;\n const start = clamp(snapToStep(range.startMs + deltaMs, { originMs, stepMs }), gap.startMs, gap.endMs - duration);\n return { startMs: start, endMs: start + duration };\n};\n\nexport const resizeSelectionRange = ({ range, edge, pointerMs, gap, originMs, stepMs, minMs = stepMs }) => {\n const snapped = snapToStep(pointerMs, { originMs, stepMs });\n if (edge === 'start') {\n const start = clamp(snapped, gap.startMs, range.endMs - minMs);\n return { startMs: start, endMs: range.endMs };\n }\n const end = clamp(snapped, range.startMs + minMs, gap.endMs);\n return { startMs: range.startMs, endMs: end };\n};\n\nexport const findOverlappingEvents = (range, events) => {\n if (!range) {\n return [];\n }\n return (events || []).filter(event => toMs(event.start) < range.endMs && toMs(event.end) > range.startMs);\n};\n\nexport const findOverlappingSlots = (range, slots) => {\n if (!range) {\n return [];\n }\n return (slots || []).filter(slot => toMs(slot.start) < range.endMs && toMs(slot.end) > range.startMs);\n};\n","import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\ndayjs.extend(customParseFormat);\n\nexport const DEFAULT_DURATION = 60;\nexport const DEFAULT_STEP = 1;\nexport const DEFAULT_DEBOUNCE_WAIT = 300;\nexport const DEFAULT_SEPARATOR = ' ~ ';\nexport const DEFAULT_FORMAT = ['YYYY-MM-DD HH:mm', 'HH:mm'];\nexport const DEFAULT_MIN_VISIBLE_SPAN = 360;\n\nconst MINUTE_MS = 60 * 1000;\nconst HOUR_MS = 60 * MINUTE_MS;\nconst PARSE_FORMATS = ['YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm', 'YYYY-MM-DD'];\n\nexport const parseDateLike = value => {\n if (value == null || value === '') {\n return null;\n }\n if (dayjs.isDayjs(value)) {\n return value.isValid() ? value : null;\n }\n const direct = dayjs(value);\n if (direct.isValid()) {\n return direct;\n }\n if (typeof value === 'string') {\n const parsed = dayjs(value, PARSE_FORMATS, true);\n return parsed.isValid() ? parsed : null;\n }\n return null;\n};\n\nconst isEmptyBound = value => value == null || value === '';\n\nconst defaultDayRange = now => {\n const day = (parseDateLike(now) || dayjs()).startOf('day');\n return [day, day.add(1, 'day')];\n};\n\n/**\n * `null` 或 `[null, null]` 表示不限制;单侧为空表示该侧不限制;`undefined` 为当天全天。\n */\nexport const resolveRange = (range, now = dayjs()) => {\n if (range === null) {\n return [null, null];\n }\n if (!Array.isArray(range)) {\n return defaultDayRange(now);\n }\n const start = isEmptyBound(range[0]) ? null : parseDateLike(range[0]);\n const end = isEmptyBound(range[1]) ? null : parseDateLike(range[1]);\n const startInvalid = !isEmptyBound(range[0]) && !start;\n const endInvalid = !isEmptyBound(range[1]) && !end;\n if (startInvalid || endInvalid || (start && end && !end.isAfter(start))) {\n return defaultDayRange(now);\n }\n return [start, end];\n};\n\nexport const resolveDuration = (duration, rangeStart, rangeEnd) => {\n const requested = Number(duration) > 0 ? Number(duration) : DEFAULT_DURATION;\n if (!rangeStart || !rangeEnd) {\n return requested;\n }\n const rangeMinutes = rangeEnd.diff(rangeStart, 'minute');\n if (rangeMinutes > 0 && requested > rangeMinutes) {\n return rangeMinutes;\n }\n return requested;\n};\n\nexport const resolveStep = step => (Number(step) > 0 ? Number(step) : DEFAULT_STEP);\n\nexport const resolveVisibleSpan = ({ visibleSpan, duration, baseDuration = duration, rangeStart, rangeEnd }) => {\n const minimum = duration * 1.5;\n let span = Number(visibleSpan) > 0 ? Number(visibleSpan) : Math.max(baseDuration * 6, DEFAULT_MIN_VISIBLE_SPAN);\n if (rangeStart && rangeEnd && !(Number(visibleSpan) > 0)) {\n span = Math.min(span, rangeEnd.diff(rangeStart, 'minute'));\n }\n return Math.max(span, minimum);\n};\n\nconst snapMs = (ms, stepMs, mode = 'round') => {\n const anchor = dayjs(ms).startOf('day').valueOf();\n const units = (ms - anchor) / stepMs;\n const snapped = mode === 'floor' ? Math.floor(units) : mode === 'ceil' ? Math.ceil(units) : Math.round(units);\n return anchor + snapped * stepMs;\n};\n\nexport const clampWindowStart = (startInput, { rangeStart, rangeEnd, duration, step, snap = true, now }) => {\n const durationMs = duration * MINUTE_MS;\n const minMs = rangeStart ? rangeStart.valueOf() : -Infinity;\n const maxMs = rangeEnd ? rangeEnd.valueOf() - durationMs : Infinity;\n if (maxMs <= minMs) {\n return dayjs(minMs);\n }\n const fallback = rangeStart || parseDateLike(now) || dayjs();\n const start = parseDateLike(startInput) || fallback;\n const stepMs = step * MINUTE_MS;\n let target = snap ? snapMs(start.valueOf(), stepMs) : start.valueOf();\n if (target > maxMs) {\n target = snap ? snapMs(maxMs, stepMs, 'floor') : maxMs;\n }\n if (target < minMs) {\n target = snap ? snapMs(minMs, stepMs, 'ceil') : minMs;\n }\n return dayjs(Math.min(Math.max(target, minMs), maxMs));\n};\n\nexport const createTimeWindow = ({ start, duration, range, step, now, snap = true } = {}) => {\n const [rangeStart, rangeEnd] = resolveRange(range, now);\n const resolvedDuration = resolveDuration(duration, rangeStart, rangeEnd);\n const resolvedStep = resolveStep(step);\n const windowStart = clampWindowStart(start == null ? null : start, {\n rangeStart,\n rangeEnd,\n duration: resolvedDuration,\n step: resolvedStep,\n snap,\n now\n });\n return {\n start: windowStart,\n end: windowStart.add(resolvedDuration, 'minute'),\n rangeStart,\n rangeEnd,\n duration: resolvedDuration,\n step: resolvedStep\n };\n};\n\n/**\n * 拖动窗口一侧边界:另一侧保持不动,拖动侧按 step 吸附,并受最短 / 最长时长与范围约束。\n */\nexport const resizeTimeWindow = ({ edge, pointerMs, startMs, endMs, step, rangeStart, rangeEnd, minDuration, maxDuration }) => {\n const stepMs = resolveStep(step) * MINUTE_MS;\n const minMs = (Number(minDuration) > 0 ? Number(minDuration) : resolveStep(step)) * MINUTE_MS;\n const maxMs = Number(maxDuration) > 0 ? Number(maxDuration) * MINUTE_MS : Infinity;\n const rangeStartMs = rangeStart ? dayjs(rangeStart).valueOf() : -Infinity;\n const rangeEndMs = rangeEnd ? dayjs(rangeEnd).valueOf() : Infinity;\n if (edge === 'start') {\n let next = snapMs(pointerMs, stepMs);\n next = Math.min(next, endMs - minMs);\n next = Math.max(next, endMs - maxMs, rangeStartMs);\n return { startMs: next, duration: (endMs - next) / MINUTE_MS };\n }\n let next = snapMs(pointerMs, stepMs);\n next = Math.max(next, startMs + minMs);\n next = Math.min(next, startMs + maxMs, rangeEndMs);\n return { startMs, duration: (next - startMs) / MINUTE_MS };\n};\n\nexport const toWindowValue = window => [window.start.toDate(), window.end.toDate()];\n\nexport const getViewport = ({ startMs, duration }, visibleSpanMinutes) => {\n const spanMs = visibleSpanMinutes * MINUTE_MS;\n const centerMs = startMs + (duration * MINUTE_MS) / 2;\n return { startMs: centerMs - spanMs / 2, endMs: centerMs + spanMs / 2, spanMs };\n};\n\nexport const wheelDeltaToPx = ({ delta, deltaMode = 0, trackWidth }) => {\n if (deltaMode === 1) {\n return delta * 16;\n }\n if (deltaMode === 2) {\n return delta * (trackWidth > 0 ? trackWidth : 1);\n }\n return delta;\n};\n\n/**\n * 把滚轮像素累加为整步数:步数与刻度尺比例一致,单次离散滚动至少移动一步。\n */\nexport const consumeWheelSteps = ({ accumulatedPx, deltaPx, pxPerStep, discrete }) => {\n const sameDirection = accumulatedPx === 0 || Math.sign(accumulatedPx) === Math.sign(deltaPx);\n const total = (sameDirection ? accumulatedPx : 0) + deltaPx;\n const perStep = pxPerStep > 0 ? pxPerStep : 1;\n let steps = Math.trunc(total / perStep) || 0;\n let rest = total - steps * perStep;\n if (steps === 0 && discrete && deltaPx !== 0) {\n steps = Math.sign(deltaPx);\n rest = 0;\n }\n return { steps, accumulatedPx: rest };\n};\n\nexport const DEFAULT_INERTIA_TIME_CONSTANT = 325;\nconst VELOCITY_WINDOW_MS = 120;\n\n/**\n * `true` 为默认强度 1,数字为强度倍数,`false` / `0` 关闭。返回滑行衰减时间常数(ms),0 表示关闭。\n */\nexport const resolveInertia = inertia => {\n if (inertia === false || inertia == null) {\n return inertia == null ? DEFAULT_INERTIA_TIME_CONSTANT : 0;\n }\n if (inertia === true) {\n return DEFAULT_INERTIA_TIME_CONSTANT;\n }\n const strength = Number(inertia);\n return strength > 0 ? DEFAULT_INERTIA_TIME_CONSTANT * strength : 0;\n};\n\n/**\n * samples: [{ t, ms }],按时间顺序;返回最近一段内每毫秒移动的时间量。\n */\nexport const estimateVelocity = (samples, now) => {\n if (!samples || samples.length < 2) {\n return 0;\n }\n const latest = samples[samples.length - 1];\n const reference = now == null ? latest.t : now;\n if (reference - latest.t > VELOCITY_WINDOW_MS / 2) {\n return 0;\n }\n const recent = samples.filter(sample => latest.t - sample.t <= VELOCITY_WINDOW_MS);\n if (recent.length < 2) {\n return 0;\n }\n const first = recent[0];\n const elapsed = latest.t - first.t;\n return elapsed > 0 ? (latest.ms - first.ms) / elapsed : 0;\n};\n\nexport const timeAtClientX = ({ clientX, rectLeft, rectWidth, rangeStartMs, rangeEndMs, grabOffsetMs = 0 }) => {\n const span = Math.max(rangeEndMs - rangeStartMs, 1);\n const width = rectWidth > 0 ? rectWidth : 1;\n const ratio = Math.min(Math.max((clientX - rectLeft) / width, 0), 1);\n return rangeStartMs + ratio * span - grabOffsetMs;\n};\n\nexport const formatTimeWindowParts = ({ start, end, format = DEFAULT_FORMAT }) => {\n const startDate = parseDateLike(start);\n const endDate = parseDateLike(end);\n if (!startDate || !endDate || typeof format === 'function') {\n return null;\n }\n const formats = Array.isArray(format) ? format : [format, format];\n const startText = startDate.format(formats[0] || DEFAULT_FORMAT[0]);\n let endFormat = formats[1] || formats[0] || DEFAULT_FORMAT[1];\n const endAtMidnight = endDate.valueOf() === endDate.startOf('day').valueOf();\n if (format === DEFAULT_FORMAT && !endAtMidnight && !endDate.isSame(startDate, 'day')) {\n endFormat = 'MM-DD HH:mm';\n }\n return [startText, endDate.format(endFormat)];\n};\n\nexport const formatTimeWindow = ({ start, end, format = DEFAULT_FORMAT, separator = DEFAULT_SEPARATOR }) => {\n if (typeof format === 'function') {\n const startDate = parseDateLike(start);\n const endDate = parseDateLike(end);\n return startDate && endDate ? format(startDate.toDate(), endDate.toDate()) : '';\n }\n const parts = formatTimeWindowParts({ start, end, format });\n return parts ? `${parts[0]}${separator}${parts[1]}` : '';\n};\n\nconst LABEL_INTERVALS = [1, 2, 3, 4, 6, 8, 12, 24];\n\nconst pickLabelEvery = (pxPerHour, minLabelPx) => {\n if (!(pxPerHour > 0)) {\n return 3;\n }\n return LABEL_INTERVALS.find(every => pxPerHour * every >= minLabelPx) || 24;\n};\n\nconst TICK_MINUTES = [1, 2, 5, 10, 15, 30, 60];\nconst MIN_TICK_GAP_PX = 7;\n\nconst pickTickMinutes = (pxPerHour, labelEvery) => {\n const fit = TICK_MINUTES.find(minutes => (pxPerHour * minutes) / 60 >= MIN_TICK_GAP_PX);\n return fit || labelEvery * 60;\n};\n\n/**\n * 只生成当前视窗 [viewStart, viewEnd] 内的刻度;`outOfRange` 标出超出可选范围的刻度。\n */\nexport const buildScaleTicks = (viewStart, viewEnd, { trackWidth, rangeStart, rangeEnd, minLabelPx = 52 } = {}) => {\n const viewStartMs = dayjs(viewStart).valueOf();\n const viewEndMs = dayjs(viewEnd).valueOf();\n const span = viewEndMs - viewStartMs;\n if (span <= 0) {\n return [];\n }\n const pxPerHour = trackWidth > 0 ? (trackWidth * HOUR_MS) / span : 0;\n const labelEvery = trackWidth > 0 ? pickLabelEvery(pxPerHour, minLabelPx) : span / HOUR_MS <= 6 ? 1 : 3;\n const tickMinutes = trackWidth > 0 ? pickTickMinutes(pxPerHour, labelEvery) : 60;\n const tickMs = tickMinutes * MINUTE_MS;\n const rangeStartMs = rangeStart ? dayjs(rangeStart).valueOf() : -Infinity;\n const rangeEndMs = rangeEnd ? dayjs(rangeEnd).valueOf() : Infinity;\n const ticks = [];\n let cursorMs = snapMs(viewStartMs, tickMs, 'ceil');\n while (cursorMs <= viewEndMs) {\n const cursor = dayjs(cursorMs);\n const major = cursor.minute() === 0;\n const midnight = major && cursor.hour() === 0;\n const minute = cursor.minute();\n const level = midnight ? 'day' : major ? 'hour' : minute === 30 ? 'half' : minute % 15 === 0 && tickMinutes < 15 ? 'quarter' : 'minute';\n ticks.push({\n key: cursorMs,\n ratio: (cursorMs - viewStartMs) / span,\n major,\n level,\n label: midnight ? cursor.format('MM-DD') : cursor.format('HH:mm'),\n showLabel: major && cursor.hour() % labelEvery === 0,\n outOfRange: cursorMs < rangeStartMs || cursorMs > rangeEndMs\n });\n cursorMs = snapMs(cursorMs + tickMs, tickMs);\n }\n return ticks;\n};\n\nexport const formatDurationParts = minutes => {\n const total = Math.max(Math.round(minutes), 0);\n return { hours: Math.floor(total / 60), minutes: total % 60 };\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useIntl } from '@kne/react-intl';\nimport withLocale from '../../withLocale';\nimport { classNames } from '../../utils';\nimport {\n DEFAULT_DEBOUNCE_WAIT,\n DEFAULT_DURATION,\n DEFAULT_FORMAT,\n DEFAULT_SEPARATOR,\n buildScaleTicks,\n consumeWheelSteps,\n createTimeWindow,\n estimateVelocity,\n formatDurationParts,\n formatTimeWindow,\n formatTimeWindowParts,\n getViewport,\n parseDateLike,\n resizeTimeWindow,\n resolveInertia,\n resolveVisibleSpan,\n timeAtClientX,\n toWindowValue,\n wheelDeltaToPx\n} from '../../timeWindow';\nimport style from './style.module.scss';\n\nconst GRIP_MIN_WIDTH = 28;\nconst CLICK_MOVE_TOLERANCE = 4;\nconst DISCRETE_WHEEL_DELTA = 50;\nconst VISUAL_EASE_MS = 70;\nconst WHEEL_IDLE_MS = 140;\nconst WHEEL_NOTCH_EASE_MS = 90;\nconst WHEEL_INERTIA_SCALE = 0.6;\n\nconst sameInstant = (left, right) => {\n const leftDate = parseDateLike(left);\n const rightDate = parseDateLike(right);\n if (!leftDate || !rightDate) {\n return false;\n }\n return Math.abs(leftDate.valueOf() - rightDate.valueOf()) < 1000;\n};\n\nconst readWindowStart = value => {\n if (!Array.isArray(value)) {\n return null;\n }\n return parseDateLike(value[0]);\n};\n\nconst isDiscreteWheel = (event, deltaPx) => {\n if (event.deltaMode !== 0) {\n return true;\n }\n const legacy = event.wheelDeltaY || event.wheelDeltaX;\n if (legacy && Math.abs(legacy) % 120 === 0) {\n return true;\n }\n return Math.abs(deltaPx) >= DISCRETE_WHEEL_DELTA;\n};\n\nconst useElementWidth = ref => {\n const [width, setWidth] = useState(0);\n useEffect(() => {\n const node = ref.current;\n if (!node) {\n return undefined;\n }\n setWidth(node.getBoundingClientRect().width);\n if (typeof ResizeObserver === 'undefined') {\n return undefined;\n }\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n if (entry) {\n setWidth(entry.contentRect.width);\n }\n });\n observer.observe(node);\n return () => observer.disconnect();\n }, [ref]);\n return width;\n};\n\nconst TimeWindowInner = ({\n value,\n defaultValue,\n onChange,\n duration,\n range,\n step,\n visibleSpan,\n debounceWait = DEFAULT_DEBOUNCE_WAIT,\n format = DEFAULT_FORMAT,\n separator = DEFAULT_SEPARATOR,\n showDuration = true,\n size = 'default',\n inertia = true,\n resizable = true,\n wheelEffect = true,\n lockable = false,\n locked,\n defaultLocked = false,\n onLockedChange,\n minDuration,\n maxDuration,\n className,\n style: styleProp\n}) => {\n const { formatMessage } = useIntl();\n const isControlled = typeof value !== 'undefined';\n const [innerValue, setInnerValue] = useState(() => {\n if (Array.isArray(defaultValue) && readWindowStart(defaultValue)) {\n return defaultValue;\n }\n return toWindowValue(createTimeWindow({ duration, range, step }));\n });\n const [draftStart, setDraftStart] = useState(null);\n const [draftDuration, setDraftDuration] = useState(null);\n const [dragging, setDragging] = useState(false);\n const [innerLocked, setInnerLocked] = useState(defaultLocked);\n const lockedControlled = typeof locked === 'boolean';\n const isLocked = lockable && (lockedControlled ? locked : innerLocked);\n const [resizeView, setResizeView] = useState(null);\n const resizeRef = useRef(null);\n const resizeEdge = resizeView ? resizeView.edge : null;\n const rootRef = useRef(null);\n const trackRef = useRef(null);\n const dragRef = useRef(null);\n const wheelAccumRef = useRef(0);\n const interactingRef = useRef(false);\n const timerRef = useRef(null);\n const pendingRef = useRef(null);\n const onChangeRef = useRef(onChange);\n const onLockedChangeRef = useRef(onLockedChange);\n const isLockedRef = useRef(isLocked);\n onLockedChangeRef.current = onLockedChange;\n isLockedRef.current = isLocked;\n const trackWidth = useElementWidth(trackRef);\n\n const committedValue = isControlled ? value : innerValue;\n const committedStart = readWindowStart(committedValue);\n const committedMs = committedStart ? committedStart.valueOf() : null;\n const anchorDay = committedStart ? committedStart.startOf('day').valueOf() : undefined;\n const draftMs = draftStart ? draftStart.valueOf() : null;\n const committedEnd = Array.isArray(committedValue) ? parseDateLike(committedValue[1]) : null;\n const committedEndMs = committedEnd ? committedEnd.valueOf() : null;\n const committedDuration = committedStart && committedEnd && committedEnd.isAfter(committedStart) ? committedEnd.diff(committedStart, 'minute', true) : null;\n const activeDuration = draftDuration != null ? draftDuration : committedDuration != null ? committedDuration : duration;\n\n const initialDurationRef = useRef(committedDuration || DEFAULT_DURATION);\n const optionsRef = useRef(null);\n onChangeRef.current = onChange;\n optionsRef.current = { duration: activeDuration, range, step, now: anchorDay };\n\n const baseWindow = useMemo(() => {\n const start = draftMs == null ? committedMs : draftMs;\n return createTimeWindow({ start, duration: activeDuration, range, step, now: anchorDay });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [anchorDay, committedMs, draftMs, activeDuration, step, JSON.stringify(range === undefined ? 'default' : range)]);\n\n const visibleSpanMinutes = resolveVisibleSpan({\n visibleSpan,\n duration: baseWindow.duration,\n baseDuration: Number(duration) > 0 ? Number(duration) : initialDurationRef.current,\n rangeStart: baseWindow.rangeStart,\n rangeEnd: baseWindow.rangeEnd\n });\n const baseStartMs = baseWindow.start.valueOf();\n const rangeStartMs = baseWindow.rangeStart ? baseWindow.rangeStart.valueOf() : null;\n const rangeEndMs = baseWindow.rangeEnd ? baseWindow.rangeEnd.valueOf() : null;\n const durationMs = baseWindow.duration * 60 * 1000;\n\n const [visualMs, setVisualMs] = useState(null);\n const visualRef = useRef(null);\n const visualTargetRef = useRef(null);\n const frameRef = useRef(null);\n const lastFrameRef = useRef(0);\n const wheelActiveRef = useRef(false);\n const wheelIdleRef = useRef(null);\n const easeRef = useRef(VISUAL_EASE_MS);\n const glidingRef = useRef(false);\n const wheelBaseRef = useRef(null);\n const wheelSamplesRef = useRef([]);\n const wheelDirectionRef = useRef(0);\n const inertiaTau = resolveInertia(inertia);\n const inertiaRef = useRef(inertiaTau);\n inertiaRef.current = inertiaTau;\n\n const clampVisual = ms => {\n let next = ms;\n if (rangeEndMs != null) {\n next = Math.min(next, rangeEndMs - durationMs);\n }\n if (rangeStartMs != null) {\n next = Math.max(next, rangeStartMs);\n }\n return next;\n };\n const clampVisualRef = useRef(clampVisual);\n clampVisualRef.current = clampVisual;\n\n const runFrame = time => {\n const target = visualTargetRef.current;\n const current = visualRef.current == null ? target : visualRef.current;\n const dt = lastFrameRef.current ? Math.min(time - lastFrameRef.current, 64) : 16;\n lastFrameRef.current = time;\n const diff = target - current;\n const settled = Math.abs(diff) < 1000;\n const next = settled ? target : current + diff * (1 - Math.exp(-dt / easeRef.current));\n visualRef.current = next;\n setVisualMs(next);\n if (glidingRef.current) {\n moveToRef.current(next);\n }\n if (settled) {\n frameRef.current = null;\n lastFrameRef.current = 0;\n easeRef.current = VISUAL_EASE_MS;\n glidingRef.current = false;\n return;\n }\n frameRef.current = requestAnimationFrame(runFrame);\n };\n\n const stopGlide = () => {\n if (!glidingRef.current) {\n return false;\n }\n glidingRef.current = false;\n wheelBaseRef.current = null;\n wheelSamplesRef.current = [];\n wheelDirectionRef.current = 0;\n easeRef.current = VISUAL_EASE_MS;\n if (frameRef.current) {\n cancelAnimationFrame(frameRef.current);\n frameRef.current = null;\n lastFrameRef.current = 0;\n }\n visualTargetRef.current = visualRef.current;\n return true;\n };\n\n const glideTo = (ms, easeMs = inertiaTau) => {\n const snapped = createTimeWindow({ start: ms, ...optionsRef.current }).start.valueOf();\n glidingRef.current = true;\n easeRef.current = easeMs;\n setVisualTarget(snapped);\n };\n\n const setVisualTarget = (ms, { immediate = false } = {}) => {\n const target = clampVisualRef.current(ms);\n visualTargetRef.current = target;\n if (immediate || typeof requestAnimationFrame === 'undefined') {\n if (frameRef.current) {\n cancelAnimationFrame(frameRef.current);\n frameRef.current = null;\n lastFrameRef.current = 0;\n }\n visualRef.current = target;\n setVisualMs(target);\n return;\n }\n if (!frameRef.current) {\n frameRef.current = requestAnimationFrame(runFrame);\n }\n };\n const setVisualTargetRef = useRef(setVisualTarget);\n setVisualTargetRef.current = setVisualTarget;\n const glideToRef = useRef(glideTo);\n glideToRef.current = glideTo;\n const stopGlideRef = useRef(stopGlide);\n stopGlideRef.current = stopGlide;\n\n useEffect(\n () => () => {\n if (frameRef.current) {\n cancelAnimationFrame(frameRef.current);\n }\n clearTimeout(wheelIdleRef.current);\n },\n []\n );\n\n useEffect(() => {\n if (dragRef.current || resizeRef.current || wheelActiveRef.current || glidingRef.current) {\n return;\n }\n if (visualRef.current == null) {\n visualRef.current = baseStartMs;\n visualTargetRef.current = baseStartMs;\n return;\n }\n setVisualTargetRef.current(baseStartMs);\n }, [baseStartMs]);\n\n const displayStartMs = resizeView || visualMs == null ? baseStartMs : visualMs;\n const viewport = resizeView || getViewport({ startMs: displayStartMs, duration: baseWindow.duration }, visibleSpanMinutes);\n\n const viewRef = useRef(null);\n const baseWindowRef = useRef(baseWindow);\n baseWindowRef.current = baseWindow;\n viewRef.current = viewport;\n\n const ticks = useMemo(\n () =>\n buildScaleTicks(viewport.startMs, viewport.endMs, {\n trackWidth,\n rangeStart: rangeStartMs,\n rangeEnd: rangeEndMs\n }),\n [viewport.startMs, viewport.endMs, trackWidth, rangeStartMs, rangeEndMs]\n );\n\n const toPercent = ms => ((ms - viewport.startMs) / viewport.spanMs) * 100;\n const width = (durationMs / viewport.spanMs) * 100;\n const left = toPercent(displayStartMs);\n const windowPx = (width / 100) * trackWidth;\n const leftShade = rangeStartMs != null ? Math.min(Math.max(toPercent(rangeStartMs), 0), 100) : 0;\n const rightShade = rangeEndMs != null ? Math.min(Math.max(100 - toPercent(rangeEndMs), 0), 100) : 0;\n\n const label = useMemo(() => {\n if (typeof format === 'function') {\n return format(baseWindow.start.toDate(), baseWindow.end.toDate());\n }\n const [startText, endText] = formatTimeWindowParts({ start: baseWindow.start, end: baseWindow.end, format });\n return (\n <>\n <span>{startText}</span>\n <span className={style.separator}>{separator}</span>\n <span>{endText}</span>\n </>\n );\n }, [baseWindow.end, baseWindow.start, format, separator]);\n\n const ariaValueText = formatTimeWindow({\n start: baseWindow.start,\n end: baseWindow.end,\n format: typeof format === 'function' ? DEFAULT_FORMAT : format,\n separator: typeof separator === 'string' ? separator : DEFAULT_SEPARATOR\n });\n\n const durationText = useMemo(() => {\n const { hours, minutes } = formatDurationParts(baseWindow.duration);\n const parts = [];\n if (hours) {\n parts.push(formatMessage({ id: 'TimeWindow.hours' }, { count: hours }));\n }\n if (minutes || !hours) {\n parts.push(formatMessage({ id: 'TimeWindow.minutes' }, { count: minutes }));\n }\n return parts.join(' ');\n }, [baseWindow.duration, formatMessage]);\n\n const clearTimer = () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n\n useEffect(() => clearTimer, []);\n\n useEffect(() => {\n if (interactingRef.current || draftMs == null) {\n return;\n }\n const pending = Array.isArray(pendingRef.current) ? pendingRef.current : null;\n if (pending && sameInstant(committedMs, pending[0]) && sameInstant(committedEndMs, pending[1])) {\n pendingRef.current = null;\n setDraftStart(null);\n setDraftDuration(null);\n }\n }, [committedMs, committedEndMs, draftMs]);\n\n const publish = nextWindow => {\n const nextValue = toWindowValue(nextWindow);\n baseWindowRef.current = nextWindow;\n pendingRef.current = nextValue;\n setDraftStart(nextWindow.start);\n setDraftDuration(nextWindow.duration);\n clearTimer();\n timerRef.current = setTimeout(() => {\n timerRef.current = null;\n if (!isControlled) {\n setInnerValue(nextValue);\n }\n if (onChangeRef.current) {\n onChangeRef.current(nextValue);\n }\n }, debounceWait);\n };\n\n const moveTo = startInput => {\n const current = baseWindowRef.current;\n const nextWindow = createTimeWindow({\n start: startInput,\n ...optionsRef.current\n });\n if (nextWindow.start.valueOf() === current.start.valueOf()) {\n return;\n }\n publish(nextWindow);\n };\n const moveToRef = useRef(moveTo);\n moveToRef.current = moveTo;\n\n const durationPropRef = useRef(duration);\n useEffect(() => {\n if (durationPropRef.current === duration) {\n return;\n }\n durationPropRef.current = duration;\n publish(createTimeWindow({ ...optionsRef.current, start: baseWindowRef.current.start, duration }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [duration]);\n\n const pointerTimeAt = (clientX, view) => {\n const rect = trackRef.current ? trackRef.current.getBoundingClientRect() : { left: 0, width: 1 };\n return timeAtClientX({\n clientX,\n rectLeft: rect.left,\n rectWidth: rect.width,\n rangeStartMs: view.startMs,\n rangeEndMs: view.endMs\n });\n };\n\n const startResize = (event, edge) => {\n const view = viewRef.current;\n const current = baseWindowRef.current;\n const edgeMs = edge === 'start' ? current.start.valueOf() : current.end.valueOf();\n resizeRef.current = {\n pointerId: event.pointerId,\n edge,\n view,\n grabOffsetMs: pointerTimeAt(event.clientX, view) - edgeMs\n };\n interactingRef.current = true;\n setResizeView({ ...view, edge });\n try {\n event.currentTarget.setPointerCapture(event.pointerId);\n } catch (error) {\n // pointer may already be released\n }\n };\n\n const moveResize = event => {\n const resize = resizeRef.current;\n const current = baseWindowRef.current;\n const next = resizeTimeWindow({\n edge: resize.edge,\n pointerMs: pointerTimeAt(event.clientX, resize.view) - resize.grabOffsetMs,\n startMs: current.start.valueOf(),\n endMs: current.end.valueOf(),\n step: current.step,\n rangeStart: current.rangeStart,\n rangeEnd: current.rangeEnd,\n minDuration,\n maxDuration\n });\n if (next.startMs === current.start.valueOf() && next.duration === current.duration) {\n return;\n }\n publish(createTimeWindow({ ...optionsRef.current, start: next.startMs, duration: next.duration }));\n };\n\n const endResize = () => {\n const resize = resizeRef.current;\n resizeRef.current = null;\n interactingRef.current = false;\n const current = baseWindowRef.current;\n const centerMs = resize.view.startMs + resize.view.spanMs / 2;\n const frozenStart = centerMs - (current.duration * 60 * 1000) / 2;\n visualRef.current = frozenStart;\n setVisualMs(frozenStart);\n setResizeView(null);\n setVisualTargetRef.current(current.start.valueOf());\n };\n\n const onPointerDown = event => {\n if (event.button != null && event.button !== 0) {\n return;\n }\n const braked = stopGlideRef.current();\n const edgeNode = resizable && event.target && event.target.closest ? event.target.closest('[data-edge]') : null;\n if (edgeNode) {\n startResize(event, edgeNode.getAttribute('data-edge'));\n return;\n }\n dragRef.current = {\n pointerId: event.pointerId,\n startX: event.clientX,\n originMs: visualRef.current == null ? baseWindowRef.current.start.valueOf() : visualRef.current,\n moved: false,\n braked,\n samples: []\n };\n interactingRef.current = true;\n try {\n event.currentTarget.setPointerCapture(event.pointerId);\n } catch (error) {\n // pointer may already be released\n }\n };\n\n const onPointerMove = event => {\n if (resizeRef.current) {\n if (resizeRef.current.pointerId === event.pointerId) {\n moveResize(event);\n }\n return;\n }\n const drag = dragRef.current;\n if (!drag || drag.pointerId !== event.pointerId) {\n return;\n }\n const dx = event.clientX - drag.startX;\n if (!drag.moved && Math.abs(dx) < CLICK_MOVE_TOLERANCE) {\n return;\n }\n if (!drag.moved) {\n drag.moved = true;\n setDragging(true);\n }\n const rect = trackRef.current ? trackRef.current.getBoundingClientRect() : { width: 1 };\n const deltaMs = (dx / (rect.width || 1)) * viewRef.current.spanMs;\n const rawMs = drag.originMs - deltaMs;\n drag.samples.push({ t: event.timeStamp, ms: rawMs });\n if (drag.samples.length > 12) {\n drag.samples.shift();\n }\n moveToRef.current(rawMs);\n setVisualTargetRef.current(rawMs, { immediate: true });\n };\n\n const endDrag = event => {\n if (resizeRef.current) {\n if (!event || resizeRef.current.pointerId === event.pointerId) {\n endResize();\n }\n return;\n }\n const drag = dragRef.current;\n if (!drag || (event && drag.pointerId !== event.pointerId)) {\n return;\n }\n dragRef.current = null;\n interactingRef.current = false;\n setDragging(false);\n if (drag.moved) {\n const velocity = inertiaRef.current && event ? estimateVelocity(drag.samples, event.timeStamp) : 0;\n const projection = velocity * inertiaRef.current;\n if (Math.abs(projection) >= baseWindowRef.current.step * 60 * 1000) {\n glideToRef.current(visualRef.current + projection);\n } else {\n setVisualTargetRef.current(baseWindowRef.current.start.valueOf());\n }\n }\n if (!drag.moved && drag.braked) {\n moveToRef.current(drag.originMs);\n setVisualTargetRef.current(baseWindowRef.current.start.valueOf());\n return;\n }\n if (!drag.moved && event && event.type === 'pointerup') {\n const rect = trackRef.current ? trackRef.current.getBoundingClientRect() : { left: 0, width: 1 };\n const view = viewRef.current;\n const clickedMs = timeAtClientX({\n clientX: event.clientX,\n rectLeft: rect.left,\n rectWidth: rect.width,\n rangeStartMs: view.startMs,\n rangeEndMs: view.endMs\n });\n const current = baseWindowRef.current;\n moveToRef.current(clickedMs - (current.duration * 60 * 1000) / 2);\n }\n };\n\n const onKeyDown = event => {\n stopGlideRef.current();\n const current = baseWindowRef.current;\n const stepMinutes = current.step;\n const moves = {\n ArrowLeft: -stepMinutes,\n ArrowDown: -stepMinutes,\n ArrowRight: stepMinutes,\n ArrowUp: stepMinutes,\n PageDown: -current.duration,\n PageUp: current.duration\n };\n if (event.key === 'Home' && current.rangeStart) {\n event.preventDefault();\n moveToRef.current(current.rangeStart);\n return;\n }\n if (event.key === 'End' && current.rangeEnd) {\n event.preventDefault();\n moveToRef.current(current.rangeEnd);\n return;\n }\n if (!(event.key in moves)) {\n return;\n }\n event.preventDefault();\n const minutes = event.shiftKey ? Math.sign(moves[event.key]) * Math.max(60, stepMinutes) : moves[event.key];\n moveToRef.current(current.start.add(minutes, 'minute'));\n };\n\n useEffect(() => {\n const node = rootRef.current;\n if (!node) {\n return undefined;\n }\n const onWheel = event => {\n if (isLockedRef.current) {\n return;\n }\n const dominant = Math.abs(event.deltaX) > Math.abs(event.deltaY) ? event.deltaX : event.deltaY;\n if (!dominant) {\n return;\n }\n event.preventDefault();\n const current = baseWindowRef.current;\n const rectWidth = trackRef.current ? trackRef.current.getBoundingClientRect().width : node.clientWidth;\n const deltaPx = wheelDeltaToPx({ delta: dominant, deltaMode: event.deltaMode, trackWidth: rectWidth });\n const stepMs = current.step * 60 * 1000;\n const pxPerStep = (rectWidth * stepMs) / viewRef.current.spanMs;\n const discrete = isDiscreteWheel(event, deltaPx);\n const { steps, accumulatedPx } = consumeWheelSteps({\n accumulatedPx: wheelAccumRef.current,\n deltaPx,\n pxPerStep,\n discrete\n });\n wheelAccumRef.current = accumulatedPx;\n wheelActiveRef.current = true;\n clearTimeout(wheelIdleRef.current);\n wheelIdleRef.current = setTimeout(() => {\n wheelActiveRef.current = false;\n wheelAccumRef.current = 0;\n wheelBaseRef.current = null;\n wheelSamplesRef.current = [];\n wheelDirectionRef.current = 0;\n if (!glidingRef.current) {\n setVisualTargetRef.current(baseWindowRef.current.start.valueOf());\n }\n }, WHEEL_IDLE_MS);\n\n if (discrete && inertiaRef.current) {\n if (!steps) {\n return;\n }\n const samples = wheelSamplesRef.current;\n if (wheelDirectionRef.current !== Math.sign(steps)) {\n samples.length = 0;\n wheelBaseRef.current = null;\n wheelDirectionRef.current = Math.sign(steps);\n }\n const from = wheelBaseRef.current == null ? current.start.valueOf() : wheelBaseRef.current;\n const base = createTimeWindow({ start: from + steps * stepMs, ...optionsRef.current }).start.valueOf();\n wheelBaseRef.current = base;\n samples.push({ t: event.timeStamp, ms: base });\n if (samples.length > 8) {\n samples.shift();\n }\n const projection = estimateVelocity(samples, event.timeStamp) * inertiaRef.current * WHEEL_INERTIA_SCALE;\n let target = base + projection;\n const lastTarget = visualTargetRef.current;\n if (samples.length > 1 && lastTarget != null && (target - lastTarget) * wheelDirectionRef.current < 0) {\n target = lastTarget;\n }\n glideToRef.current(target, projection ? inertiaRef.current : WHEEL_NOTCH_EASE_MS);\n return;\n }\n\n if (steps) {\n moveToRef.current(current.start.valueOf() + steps * stepMs);\n }\n const residualMs = pxPerStep > 0 ? (accumulatedPx / pxPerStep) * stepMs : 0;\n setVisualTargetRef.current(baseWindowRef.current.start.valueOf() + residualMs);\n };\n node.addEventListener('wheel', onWheel, { passive: false });\n return () => node.removeEventListener('wheel', onWheel);\n }, []);\n\n const toggleLocked = () => {\n const next = !isLockedRef.current;\n if (next) {\n stopGlideRef.current();\n }\n if (!lockedControlled) {\n setInnerLocked(next);\n }\n if (onLockedChangeRef.current) {\n onLockedChangeRef.current(next);\n }\n };\n\n const labelTicks = ticks.filter(tick => tick.showLabel);\n const ariaBounds = {};\n if (rangeStartMs != null) {\n ariaBounds['aria-valuemin'] = rangeStartMs;\n }\n if (rangeEndMs != null) {\n ariaBounds['aria-valuemax'] = rangeEndMs - durationMs;\n }\n\n return (\n <div\n ref={rootRef}\n className={classNames(style.root, style[`root-${size}`], className, {\n [style['root-dragging']]: dragging,\n [style['root-resizing']]: !!resizeView,\n [style['root-locked']]: isLocked\n })}\n style={styleProp}\n >\n <div className={style.header}>\n <div className={style.label}>{label}</div>\n <div className={style.actions}>\n {lockable ? (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={!isLocked}\n aria-label={formatMessage({ id: isLocked ? 'TimeWindow.locked' : 'TimeWindow.editable' })}\n className={classNames(style.switch, { [style['switch-on']]: !isLocked })}\n onClick={toggleLocked}\n >\n <i />\n </button>\n ) : null}\n {showDuration ? <span className={style.duration}>{durationText}</span> : null}\n </div>\n </div>\n {isLocked ? null : (\n <div className={style.scale}>\n <div\n ref={trackRef}\n className={classNames(style.track, { [style['track-wheel']]: wheelEffect })}\n role=\"slider\"\n tabIndex={0}\n {...ariaBounds}\n aria-valuenow={baseWindow.start.valueOf()}\n aria-valuetext={ariaValueText}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n >\n {leftShade > 0 ? <span className={classNames(style.shade, style['shade-start'])} style={{ width: `${leftShade}%` }} /> : null}\n {rightShade > 0 ? <span className={classNames(style.shade, style['shade-end'])} style={{ width: `${rightShade}%` }} /> : null}\n <div className={style.ticks}>\n {ticks.map(tick => (\n <span\n key={tick.key}\n className={classNames(style.tick, style[`tick-${tick.level}`], {\n [style['tick-out']]: tick.outOfRange\n })}\n style={{ left: `${tick.ratio * 100}%` }}\n />\n ))}\n </div>\n {wheelEffect ? <span className={style.cylinder} aria-hidden=\"true\" /> : null}\n <span\n className={classNames(style.window, {\n [style['window-compact']]: windowPx < GRIP_MIN_WIDTH,\n [style['window-resizable']]: resizable,\n [style['window-fixed']]: !resizable\n })}\n style={{ left: `${left}%`, width: `${width}%` }}\n >\n {resizable ? (\n <>\n <span data-edge=\"start\" aria-hidden=\"true\" className={classNames(style.edge, style['edge-start'], { [style['edge-active']]: resizeEdge === 'start' })} />\n <span data-edge=\"end\" aria-hidden=\"true\" className={classNames(style.edge, style['edge-end'], { [style['edge-active']]: resizeEdge === 'end' })} />\n </>\n ) : null}\n </span>\n </div>\n <div className={style.labels}>\n {labelTicks.map(tick => (\n <span\n key={tick.key}\n className={classNames(style['tick-label'], style[`tick-label-${tick.level}`], {\n [style['tick-out']]: tick.outOfRange\n })}\n style={{ left: `${tick.ratio * 100}%` }}\n >\n {tick.label}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nconst TimeWindow = withLocale(TimeWindowInner);\n\nexport default TimeWindow;\n","import FormInfo, { Input, TextArea } from '@kne/form-info';\nimport { useIntl } from '@kne/react-intl';\n\nconst DefaultFormInner = () => {\n const { formatMessage } = useIntl();\n return (\n <FormInfo\n column={1}\n list={[\n <Input name=\"title\" label={formatMessage({ id: 'DefaultFormInner.title' })} rule=\"REQ\" placeholder={formatMessage({ id: 'DefaultFormInner.titlePlaceholder' })} block />,\n <TextArea name=\"detail\" label={formatMessage({ id: 'DefaultFormInner.detail' })} placeholder={formatMessage({ id: 'DefaultFormInner.detailPlaceholder' })} block />\n ]}\n />\n );\n};\n\nexport default DefaultFormInner;\n","import { Tag } from 'antd';\nimport { classNames, formatRange } from '../../utils';\nimport getEventTagLabel from '../EventItem/getEventTagLabel';\nimport style from './style.module.scss';\n\nconst EventDetail = ({ event, date, onEventClick }) => {\n const clickable = !event.disabled && (typeof event.onClick === 'function' || typeof onEventClick === 'function');\n const handleClick = () => {\n if (typeof event.onClick === 'function') {\n event.onClick(event, { date, mode: 'schedule' });\n return;\n }\n onEventClick?.(event, { date, mode: 'schedule' });\n };\n const tagLabel = getEventTagLabel(event);\n return (\n <div\n className={classNames(style['event-detail'], { [style['event-detail-clickable']]: clickable, [style['event-detail-disabled']]: event.disabled })}\n style={event.color ? { '--timeline-event-color': event.color } : undefined}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n onClick={clickable ? handleClick : undefined}\n onKeyDown={\n clickable\n ? keyEvent => {\n if (keyEvent.key === 'Enter' || keyEvent.key === ' ') {\n keyEvent.preventDefault();\n handleClick();\n }\n }\n : undefined\n }\n >\n <span className={style['event-detail-bar']} />\n <div className={style['event-detail-body']}>\n <div className={style['event-detail-title']}>{event.title}</div>\n <div className={style['event-detail-time']}>{formatRange(event.start, event.end)}</div>\n {event.detail ? <div className={style['event-detail-text']}>{event.detail}</div> : null}\n {tagLabel ? (\n <Tag className={style['event-detail-tag']} color={event.color}>\n {tagLabel}\n </Tag>\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default EventDetail;\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport dayjs from 'dayjs';\nimport { Popover, Tooltip } from 'antd';\nimport { TIME_FORMAT } from '../../constants';\nimport { MINUTE_MS, clickSelectionRange, createSelectionRange, getFreeGap, moveSelectionRange, resizeSelectionRange, snapToStep } from '../../timeline';\nimport { classNames, formatRange } from '../../utils';\nimport EventDetail from './EventDetail';\nimport style from './style.module.scss';\n\nconst DRAG_THRESHOLD_PX = 4;\nconst TOUCH_SLOP_PX = 8;\nconst LONG_PRESS_MS = 350;\n\nconst Timeline = ({\n date,\n day,\n hourHeight,\n timeUnit,\n timeStep,\n eventItems,\n disabledRanges,\n blockers,\n conflicts,\n allowMultiSelect,\n selection,\n dragging,\n formPopover,\n popoverOpen,\n popoverPlacement,\n popoverAnchor,\n onPopoverOpenChange,\n onSelectionDrag,\n onSelectionCommit,\n onFreeSlotClick,\n onEventClick,\n renderEventBlock,\n renderOccupiedSlot,\n interactionRef,\n isMobile\n}) => {\n const gridRef = useRef(null);\n const gestureRef = useRef(null);\n const suppressClickRef = useRef(false);\n const touchCommitRef = useRef(0);\n const [hover, setHover] = useState(null);\n const [activeEventKey, setActiveEventKey] = useState(null);\n const pxPerMs = hourHeight / (60 * MINUTE_MS);\n const height = (day.endMs - day.startMs) * pxPerMs;\n const unitMs = timeUnit * MINUTE_MS;\n const stepMs = timeStep * MINUTE_MS;\n\n const latest = useRef({});\n latest.current = { day, blockers, unitMs, stepMs, allowMultiSelect, selection, onSelectionDrag, onSelectionCommit, onFreeSlotClick, pxPerMs };\n\n const toY = ms => (ms - day.startMs) * pxPerMs;\n\n const lines = useMemo(() => {\n const list = [];\n for (let ms = day.startMs; ms <= day.endMs; ms += unitMs) {\n list.push({ ms, hour: dayjs(ms).minute() === 0 });\n }\n return list;\n }, [day.endMs, day.startMs, unitMs]);\n\n const labels = useMemo(() => {\n const list = [];\n let cursor = dayjs(day.startMs);\n if (cursor.minute() !== 0) {\n list.push(day.startMs);\n cursor = cursor.add(1, 'hour').startOf('hour');\n }\n for (; cursor.valueOf() <= day.endMs; cursor = cursor.add(1, 'hour')) {\n list.push(cursor.valueOf());\n }\n if (list[list.length - 1] !== day.endMs) {\n list.push(day.endMs);\n }\n return list;\n }, [day.endMs, day.startMs]);\n\n const [now, setNow] = useState(() => Date.now());\n useEffect(() => {\n const timer = setInterval(() => setNow(Date.now()), 60 * 1000);\n return () => clearInterval(timer);\n }, []);\n const showNow = now >= day.startMs && now <= day.endMs;\n\n const msAtClientY = clientY => {\n const rect = gridRef.current.getBoundingClientRect();\n const { day: currentDay, pxPerMs: currentPx } = latest.current;\n return Math.min(Math.max(currentDay.startMs + (clientY - rect.top) / currentPx, currentDay.startMs), currentDay.endMs - 1);\n };\n\n const finishGesture = () => {\n const gesture = gestureRef.current;\n if (!gesture) {\n return;\n }\n clearTimeout(gesture.timer);\n window.removeEventListener('pointermove', gesture.onMove);\n window.removeEventListener('pointerup', gesture.onUp);\n window.removeEventListener('pointercancel', gesture.onCancel);\n gestureRef.current = null;\n };\n\n useEffect(() => finishGesture, []);\n\n useEffect(() => {\n const grid = gridRef.current;\n if (!grid) {\n return undefined;\n }\n const preventScroll = event => {\n if (gestureRef.current?.active) {\n event.preventDefault();\n }\n };\n const preventGhostClick = event => {\n if (Date.now() - touchCommitRef.current < 300) {\n event.preventDefault();\n }\n };\n grid.addEventListener('touchmove', preventScroll, { passive: false });\n grid.addEventListener('touchend', preventGhostClick, { passive: false });\n return () => {\n grid.removeEventListener('touchmove', preventScroll);\n grid.removeEventListener('touchend', preventGhostClick);\n };\n }, []);\n\n const handlePointerDown = event => {\n if (!gridRef.current?.contains(event.target)) {\n return;\n }\n if (interactionRef) {\n interactionRef.current = Date.now();\n }\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return;\n }\n const { day: currentDay, blockers: currentBlockers, selection: currentSelection, allowMultiSelect: multi } = latest.current;\n const edgeNode = event.target.closest('[data-selection-edge]');\n const onSelection = event.target.closest('[data-timeline-selection]');\n const eventNode = event.target.closest('[data-timeline-event]');\n const pointerMs = msAtClientY(event.clientY);\n let gesture;\n if (edgeNode && currentSelection && multi) {\n gesture = { type: 'resize', edge: edgeNode.dataset.selectionEdge, active: true };\n } else if (onSelection && currentSelection) {\n gesture = { type: 'move', active: true };\n } else {\n const gap = getFreeGap(pointerMs, currentBlockers, currentDay);\n if (!gap) {\n return;\n }\n gesture = { type: 'create', gap, active: event.pointerType === 'mouse', onEvent: !!eventNode };\n }\n if (gesture.type !== 'create') {\n const ownGap = getFreeGap(currentSelection.startMs, currentBlockers, currentDay) || currentDay;\n gesture.gap = ownGap;\n gesture.range0 = currentSelection;\n event.preventDefault();\n }\n Object.assign(gesture, {\n pointerId: event.pointerId,\n pointerType: event.pointerType,\n startX: event.clientX,\n startY: event.clientY,\n startMs: pointerMs,\n moved: false\n });\n setHover(null);\n\n gesture.onMove = moveEvent => {\n if (moveEvent.pointerId !== gesture.pointerId) {\n return;\n }\n const dx = moveEvent.clientX - gesture.startX;\n const dy = moveEvent.clientY - gesture.startY;\n if (!gesture.active) {\n if (Math.hypot(dx, dy) > TOUCH_SLOP_PX) {\n finishGesture();\n }\n return;\n }\n if (!gesture.moved && Math.abs(dy) < DRAG_THRESHOLD_PX) {\n return;\n }\n const { stepMs: step, day: d, allowMultiSelect: canResize } = latest.current;\n const ms = msAtClientY(moveEvent.clientY);\n let next;\n if (gesture.type === 'create') {\n if (!canResize) {\n return;\n }\n next = createSelectionRange({ anchorMs: gesture.startMs, pointerMs: ms, gap: gesture.gap, originMs: d.startMs, stepMs: step });\n } else if (gesture.type === 'move') {\n next = moveSelectionRange({ range: gesture.range0, deltaMs: ms - gesture.startMs, gap: gesture.gap, originMs: d.startMs, stepMs: step });\n } else {\n next = resizeSelectionRange({ range: gesture.range0, edge: gesture.edge, pointerMs: ms, gap: gesture.gap, originMs: d.startMs, stepMs: step });\n }\n gesture.moved = true;\n gesture.range = next;\n latest.current.onSelectionDrag(next);\n };\n\n gesture.onUp = upEvent => {\n if (upEvent.pointerId !== gesture.pointerId) {\n return;\n }\n finishGesture();\n if (gesture.pointerType !== 'mouse') {\n touchCommitRef.current = Date.now();\n }\n const { unitMs: unit, day: d, onSelectionCommit: commit, onFreeSlotClick: onFreeClick } = latest.current;\n if (gesture.moved) {\n suppressClickRef.current = true;\n setTimeout(() => {\n suppressClickRef.current = false;\n }, 0);\n commit(gesture.range);\n return;\n }\n if (gesture.type !== 'create') {\n commit(gesture.range0);\n return;\n }\n if (gesture.onEvent) {\n return;\n }\n const range = clickSelectionRange({ pointerMs: gesture.startMs, gap: gesture.gap, originMs: d.startMs, unitMs: unit });\n const slotStart = snapToStep(gesture.startMs, { originMs: d.startMs, stepMs: unit, mode: 'floor' });\n onFreeClick?.({ start: new Date(slotStart), end: new Date(Math.min(slotStart + unit, d.endMs)) });\n commit(range);\n };\n\n gesture.onCancel = cancelEvent => {\n if (cancelEvent.pointerId !== gesture.pointerId) {\n return;\n }\n const wasMoved = gesture.moved;\n finishGesture();\n if (wasMoved) {\n latest.current.onSelectionCommit(gesture.range);\n }\n };\n\n if (!gesture.active) {\n gesture.timer = setTimeout(() => {\n gesture.active = true;\n navigator.vibrate?.(10);\n const { day: d, unitMs: unit } = latest.current;\n const range = clickSelectionRange({ pointerMs: gesture.startMs, gap: gesture.gap, originMs: d.startMs, unitMs: unit });\n gesture.moved = true;\n gesture.range = range;\n gesture.startMs = range.startMs;\n latest.current.onSelectionDrag(range);\n }, LONG_PRESS_MS);\n }\n\n finishGesture();\n gestureRef.current = gesture;\n window.addEventListener('pointermove', gesture.onMove);\n window.addEventListener('pointerup', gesture.onUp);\n window.addEventListener('pointercancel', gesture.onCancel);\n };\n\n const handleHover = event => {\n if (event.pointerType !== 'mouse' || gestureRef.current || !gridRef.current?.contains(event.target)) {\n return;\n }\n if (event.target.closest('[data-timeline-selection]')) {\n setHover(null);\n return;\n }\n const ms = msAtClientY(event.clientY);\n const gap = getFreeGap(ms, blockers, day);\n if (!gap) {\n setHover(null);\n return;\n }\n const range = clickSelectionRange({ pointerMs: ms, gap, originMs: day.startMs, unitMs });\n setHover(current => (current && current.startMs === range.startMs && current.endMs === range.endMs ? current : range));\n };\n\n const renderEventContent = item => {\n const { event } = item;\n if (renderEventBlock) {\n return renderEventBlock(event, { start: new Date(item.startMs), end: new Date(item.endMs) });\n }\n if (renderOccupiedSlot) {\n return renderOccupiedSlot({ start: new Date(item.startMs), end: new Date(item.endMs), status: 'occupied', events: [event] }, { events: [event] });\n }\n return (\n <>\n <div className={style['timeline-event-title']}>{event.title}</div>\n <div className={style['timeline-event-time']}>{formatRange(event.start, event.end)}</div>\n </>\n );\n };\n\n const selectionBlock = selection ? (\n <div\n data-timeline-selection=\"\"\n className={classNames(style['timeline-selection'], {\n [style['timeline-selection-dragging']]: dragging,\n [style['timeline-selection-conflict']]: conflicts.length > 0,\n [style['timeline-selection-compact']]: (selection.endMs - selection.startMs) * pxPerMs < 34\n })}\n style={{ top: toY(selection.startMs), height: Math.max((selection.endMs - selection.startMs) * pxPerMs, 6) }}\n >\n {allowMultiSelect ? <span data-selection-edge=\"start\" className={classNames(style['timeline-selection-edge'], style['timeline-selection-edge-start'])} /> : null}\n <div className={style['timeline-selection-label']}>\n <span>{formatRange(selection.startMs, selection.endMs)}</span>\n {conflicts.length ? <span className={style['timeline-selection-badge']}>{conflicts.length}</span> : null}\n </div>\n {allowMultiSelect ? <span data-selection-edge=\"end\" className={classNames(style['timeline-selection-edge'], style['timeline-selection-edge-end'])} /> : null}\n </div>\n ) : null;\n\n return (\n <div className={style['timeline']} style={{ height }}>\n <div className={style['timeline-axis']} aria-hidden>\n {labels.map(ms => (\n <span key={ms} className={style['timeline-axis-label']} style={{ top: toY(ms) }}>\n {dayjs(ms).format(TIME_FORMAT)}\n </span>\n ))}\n </div>\n <div\n ref={gridRef}\n className={classNames(style['timeline-grid'], { [style['timeline-grid-dragging']]: dragging })}\n onPointerDown={handlePointerDown}\n onPointerMove={handleHover}\n onPointerLeave={() => setHover(null)}\n onContextMenu={event => {\n if (gridRef.current?.contains(event.target)) {\n event.preventDefault();\n }\n }}\n onClickCapture={event => {\n if (suppressClickRef.current && gridRef.current?.contains(event.target)) {\n suppressClickRef.current = false;\n event.stopPropagation();\n }\n }}\n >\n {lines.map(line => (\n <span key={line.ms} className={classNames(style['timeline-line'], { [style['timeline-line-hour']]: line.hour })} style={{ top: toY(line.ms) }} />\n ))}\n {disabledRanges.map(range => {\n const block = (\n <div key={range.startMs} className={style['timeline-disabled']} style={{ top: toY(range.startMs), height: (range.endMs - range.startMs) * pxPerMs }}>\n {range.reason && (range.endMs - range.startMs) * pxPerMs >= 22 ? <span className={style['timeline-disabled-reason']}>{range.reason}</span> : null}\n </div>\n );\n return range.reason ? (\n <Tooltip key={range.startMs} title={range.reason}>\n {block}\n </Tooltip>\n ) : (\n block\n );\n })}\n {eventItems.map(item => {\n const key = `${item.event.id}-${item.startMs}`;\n const blockHeight = (item.endMs - item.startMs) * pxPerMs;\n return (\n <Popover\n key={key}\n arrow={false}\n trigger=\"click\"\n placement={isMobile ? 'bottom' : 'left'}\n rootClassName={style['schedule-popover']}\n open={activeEventKey === key}\n onOpenChange={open => setActiveEventKey(open ? key : null)}\n content={<EventDetail event={item.event} date={date} onEventClick={onEventClick} />}\n >\n <div\n data-timeline-event=\"\"\n className={classNames(style['timeline-event'], {\n [style['timeline-event-disabled']]: item.event.disabled,\n [style['timeline-event-compact']]: blockHeight < 34\n })}\n style={{\n top: toY(item.startMs),\n height: Math.max(blockHeight - 2, 4),\n left: `calc(${(item.column / item.columns) * 100}% + 2px)`,\n width: `calc(${100 / item.columns}% - 4px)`,\n ...(item.event.color ? { '--timeline-event-color': item.event.color } : null)\n }}\n >\n {renderEventContent(item)}\n </div>\n </Popover>\n );\n })}\n {hover && !selection ? (\n <div className={style['timeline-ghost']} style={{ top: toY(hover.startMs), height: (hover.endMs - hover.startMs) * pxPerMs }}>\n + {dayjs(hover.startMs).format(TIME_FORMAT)}\n </div>\n ) : null}\n {showNow ? <span className={style['timeline-now']} style={{ top: toY(now) }} /> : null}\n {selectionBlock}\n {formPopover && popoverAnchor ? (\n <Popover arrow={false} trigger=\"click\" placement={popoverPlacement} rootClassName={style['schedule-popover']} open={popoverOpen && !dragging} onOpenChange={onPopoverOpenChange} content={formPopover} destroyOnHidden>\n <span aria-hidden className={style['timeline-popover-anchor']} style={{ top: toY(popoverAnchor.startMs), height: (popoverAnchor.endMs - popoverAnchor.startMs) * pxPerMs }} />\n </Popover>\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default Timeline;\n","import { useMemo, useRef, useState } from 'react';\nimport { Alert, Button, Card, Drawer, Spin } from 'antd';\nimport { Form, SubmitButton } from '@kne/form-info';\nimport { useIntl } from '@kne/react-intl';\nimport { useIsMobile } from '@kne/responsive-utils';\nimport { DATE_FORMAT } from '../../constants';\nimport { findOverlappingEvents, findOverlappingSlots, getFreeGap, layoutTimelineEvents, mergeDisabledSlots, toBlockers } from '../../timeline';\nimport { classNames, getDefaultFormValues, parseDayTime, sortEventsByStart } from '../../utils';\nimport PanelTitle from '../Panel/PanelTitle';\nimport PanelScrollShadow from '../Panel/PanelScrollShadow';\nimport usePanelScrollShadow from '../Panel/usePanelScrollShadow';\nimport panelStyle from '../Panel/style.module.scss';\nimport TimeWindow from '../TimeWindow';\nimport DefaultFormInner from './DefaultFormInner';\nimport Timeline from './Timeline';\nimport style from './style.module.scss';\n\nconst SchedulePanel = ({\n date,\n slots,\n events: dayEvents,\n dayStart,\n dayEnd,\n timeUnit,\n timeStep,\n hourHeight,\n allowConflict,\n loading,\n allowMultiSelect,\n onSlotRangeChange,\n onFreeSlotClick,\n onCreate,\n formInner,\n formProps,\n defaultFormValues,\n renderEventBlock,\n renderOccupiedSlot,\n renderPanelHeader,\n onEventClick\n}) => {\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n const scrollRef = useRef(null);\n const interactionRef = useRef(0);\n const openedAtRef = useRef(0);\n const [selection, setSelection] = useState(null);\n const [dragging, setDragging] = useState(false);\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [popoverPlacement, setPopoverPlacement] = useState('left');\n const [popoverAnchor, setPopoverAnchor] = useState(null);\n\n const day = useMemo(() => ({ startMs: parseDayTime(date, dayStart).valueOf(), endMs: parseDayTime(date, dayEnd).valueOf() }), [date, dayEnd, dayStart]);\n const events = useMemo(() => sortEventsByStart(dayEvents || []), [dayEvents]);\n const eventItems = useMemo(() => layoutTimelineEvents(events, day), [day, events]);\n const disabledRanges = useMemo(() => mergeDisabledSlots(slots), [slots]);\n const blockers = useMemo(() => toBlockers(allowConflict ? disabledRanges : [...disabledRanges, ...eventItems]), [allowConflict, disabledRanges, eventItems]);\n const conflicts = useMemo(\n () =>\n findOverlappingEvents(\n selection,\n eventItems.map(item => item.event)\n ),\n [eventItems, selection]\n );\n const gap = (selection && getFreeGap(selection.startMs, blockers, day)) || day;\n const windowRange = useMemo(() => [new Date(gap.startMs), new Date(gap.endMs)], [gap.startMs, gap.endMs]);\n\n const panelHeader = renderPanelHeader?.({ date: date.toDate(), mode: 'schedule', events });\n const { scrolled, onScroll } = usePanelScrollShadow(date.format(DATE_FORMAT), scrollRef);\n\n const getFormContext = range => ({\n date: date.toDate(),\n start: range ? new Date(range.startMs) : null,\n end: range ? new Date(range.endMs) : null,\n slots: findOverlappingSlots(range, slots),\n conflicts: findOverlappingEvents(\n range,\n eventItems.map(item => item.event)\n )\n });\n\n const emitRange = range => {\n if (range) {\n onSlotRangeChange?.(findOverlappingSlots(range, slots), { action: 'select', start: new Date(range.startMs), end: new Date(range.endMs) });\n } else {\n onSlotRangeChange?.([], { action: 'clear' });\n }\n };\n\n const clearSelection = () => {\n setPopoverOpen(false);\n setPopoverAnchor(null);\n setDragging(false);\n if (selection) {\n setSelection(null);\n emitRange(null);\n }\n };\n\n const commitSelection = range => {\n setDragging(false);\n if (!range) {\n return;\n }\n if (!popoverOpen) {\n const stacked = !!scrollRef.current?.closest('[data-schedule-layout=\"stacked\"]');\n setPopoverPlacement(stacked ? 'bottom' : 'left');\n setPopoverAnchor(range);\n }\n setSelection(range);\n openedAtRef.current = Date.now();\n setPopoverOpen(true);\n emitRange(range);\n };\n\n const formContext = getFormContext(selection);\n const formPopover = selection ? (\n <div className={classNames(style['form-popover'], { [style['form-sheet-content']]: isMobile })}>\n <div className={style['form-popover-title']}>{formatMessage({ id: 'SchedulePanel.newScheduleTitle' })}</div>\n <TimeWindow\n className={style['form-time-window']}\n size={isMobile ? 'default' : 'small'}\n value={[new Date(selection.startMs), new Date(selection.endMs)]}\n range={windowRange}\n step={timeStep}\n minDuration={timeStep}\n resizable={allowMultiSelect}\n debounceWait={120}\n format=\"HH:mm\"\n separator=\" - \"\n onChange={value => {\n if (!value) {\n return;\n }\n const range = { startMs: value[0].getTime(), endMs: value[1].getTime() };\n setSelection(range);\n emitRange(range);\n }}\n />\n {conflicts.length ? (\n <Alert className={style['form-conflict']} type=\"warning\" showIcon title={`${formatMessage({ id: 'SchedulePanel.conflict' }, { count: conflicts.length })}:${conflicts.map(event => event.title).join('、')}`} />\n ) : null}\n <Form\n {...formProps}\n {...(isMobile ? { size: 'large' } : null)}\n data={getDefaultFormValues(defaultFormValues, formContext)}\n onSubmit={async values => {\n try {\n await onCreate?.(values, getFormContext(selection));\n clearSelection();\n } catch {\n // Keep the form open when creation fails.\n }\n }}\n >\n {formInner || <DefaultFormInner />}\n <div className={style['form-actions']}>\n <Button onClick={clearSelection}>{formatMessage({ id: 'SchedulePanel.cancel' })}</Button>\n <SubmitButton>{formatMessage({ id: 'SchedulePanel.save' })}</SubmitButton>\n </div>\n </Form>\n </div>\n ) : null;\n\n return (\n <Card bordered={false} title={panelHeader || <PanelTitle date={date} subtitle={formatMessage({ id: 'SchedulePanel.selectFreeSlot' })} />} className={panelStyle['panel-card']}>\n <Spin spinning={!!loading} classNames={{ root: panelStyle['panel-spin'], container: panelStyle['panel-spin-container'] }}>\n <div ref={scrollRef} className={style['slots']} onScroll={onScroll}>\n <PanelScrollShadow visible={scrolled} />\n <Timeline\n date={date.toDate()}\n day={day}\n hourHeight={hourHeight}\n timeUnit={timeUnit}\n timeStep={timeStep}\n eventItems={eventItems}\n disabledRanges={disabledRanges}\n blockers={blockers}\n conflicts={conflicts}\n allowMultiSelect={allowMultiSelect}\n selection={selection}\n dragging={dragging}\n formPopover={isMobile ? null : formPopover}\n isMobile={isMobile}\n popoverOpen={popoverOpen}\n popoverPlacement={popoverPlacement}\n popoverAnchor={popoverAnchor}\n interactionRef={interactionRef}\n onPopoverOpenChange={open => {\n if (open) {\n setPopoverOpen(true);\n return;\n }\n if (Date.now() - interactionRef.current < 400) {\n return;\n }\n clearSelection();\n }}\n onSelectionDrag={range => {\n setDragging(true);\n setSelection(range);\n }}\n onSelectionCommit={commitSelection}\n onFreeSlotClick={slot => onFreeSlotClick?.({ ...slot, key: `${date.format(DATE_FORMAT)}-${slot.start.getTime()}`, date: date.format(DATE_FORMAT), status: 'free', events: [] })}\n onEventClick={onEventClick}\n renderEventBlock={renderEventBlock}\n renderOccupiedSlot={renderOccupiedSlot}\n />\n </div>\n </Spin>\n {isMobile ? (\n <Drawer\n placement=\"bottom\"\n size=\"auto\"\n closable={false}\n rootClassName={style['form-sheet']}\n open={!!selection && popoverOpen && !dragging}\n onClose={() => {\n if (Date.now() - openedAtRef.current < 500) {\n return;\n }\n clearSelection();\n }}\n destroyOnHidden\n >\n {formPopover}\n </Drawer>\n ) : null}\n </Card>\n );\n};\n\nexport default SchedulePanel;\n","import { useCallback, useMemo, useRef } from 'react';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport useControlValue from '@kne/use-control-value';\nimport { Calendar } from 'antd';\nimport withLocale from './withLocale';\nimport { DATE_FORMAT, LAYOUT_STACK_BREAKPOINT } from './constants';\nimport useStackedPanelLayout from './useStackedPanelLayout';\nimport { groupEventsByDate, generateTimeSlots } from './events';\nimport { checkRule } from './rules';\nimport { classNames, toDayjs, useControlledState } from './utils';\nimport Header from './components/Header';\nimport useStackedLayout from './useStackedLayout';\nimport DateCell from './components/DateCell';\nimport ViewPanel from './components/Panel/ViewPanel';\nimport SchedulePanel from './components/SchedulePanel';\nimport style from './style.module.scss';\n\ndayjs.extend(customParseFormat);\n\nconst buildMonthRuleCache = ({ currentDate, mode, disabledDate, disabledDateTime, availableDateTime }) => {\n const cache = new Map();\n const monthStart = currentDate.startOf('month');\n const monthEnd = currentDate.endOf('month');\n let cursor = monthStart;\n while (cursor.isBefore(monthEnd) || cursor.isSame(monthEnd, 'day')) {\n cache.set(\n cursor.format(DATE_FORMAT),\n checkRule({\n date: cursor,\n mode,\n disabledDate,\n disabledDateTime,\n availableDateTime\n })\n );\n cursor = cursor.add(1, 'day');\n }\n return cache;\n};\n\nconst ScheduleCalendarInner = props => {\n const {\n mode = 'view',\n events = [],\n loading,\n disabledDate,\n disabledDateTime,\n availableDateTime,\n badgeMaxCount = 9,\n timeUnit = 30,\n dayStart = '09:00',\n dayEnd = '18:00',\n timeStep = 5,\n hourHeight = 56,\n allowConflict = false,\n allowMultiSelect = mode === 'schedule',\n renderDateCell,\n renderEventItem,\n renderEventBlock,\n renderOccupiedSlot,\n renderPanelHeader,\n formInner,\n formProps,\n defaultFormValues,\n onDateChange,\n onEventClick,\n onFreeSlotClick,\n onSlotRangeChange,\n onCreate,\n className,\n style: propsStyle,\n stackAt = LAYOUT_STACK_BREAKPOINT,\n eventListScrollable = true,\n calendarProps,\n panelProps\n } = props;\n const rootRef = useRef(null);\n const calendarRef = useRef(null);\n const stacked = useStackedLayout(rootRef, stackAt);\n const eventListExpanded = mode === 'view' && !eventListScrollable;\n const stackedLayoutStyle = useStackedPanelLayout(rootRef, calendarRef, stacked && !eventListExpanded);\n const [value, setValue] = useControlValue(props);\n const selectedDate = useMemo(() => toDayjs(value) || dayjs(), [value]);\n const [current, setCurrent] = useControlledState({\n value: props.current,\n defaultValue: props.defaultCurrent || selectedDate,\n onChange: props.onCurrentChange\n });\n const currentDate = useMemo(() => toDayjs(current) || selectedDate, [current, selectedDate]);\n const eventGroup = useMemo(() => groupEventsByDate(events), [events]);\n const selectedEvents = useMemo(() => eventGroup[selectedDate.format(DATE_FORMAT)] || [], [eventGroup, selectedDate]);\n const ruleContext = useMemo(\n () => ({\n mode,\n disabledDate,\n disabledDateTime,\n availableDateTime\n }),\n [availableDateTime, disabledDate, disabledDateTime, mode]\n );\n const monthRuleCache = useMemo(\n () =>\n buildMonthRuleCache({\n currentDate,\n ...ruleContext\n }),\n [currentDate, ruleContext]\n );\n const getDateRule = useCallback(\n date => {\n const cached = monthRuleCache.get(date.format(DATE_FORMAT));\n if (cached !== undefined) {\n return cached;\n }\n return checkRule({\n date,\n ...ruleContext\n });\n },\n [monthRuleCache, ruleContext]\n );\n const slots = useMemo(\n () =>\n generateTimeSlots({\n date: selectedDate,\n events: selectedEvents,\n timeUnit,\n dayStart,\n dayEnd,\n disabledDate,\n disabledDateTime,\n availableDateTime,\n mode\n }),\n [availableDateTime, dayEnd, dayStart, disabledDate, disabledDateTime, mode, selectedDate, selectedEvents, timeUnit]\n );\n\n const handleSelectDate = (date, info) => {\n const nextDate = date.startOf('day').toDate();\n setValue(nextDate, info);\n onDateChange?.(nextDate, info);\n };\n\n const handleCurrentChange = (date, info) => {\n setCurrent(date.startOf('month').toDate(), info);\n };\n\n const handleGoToday = () => {\n const today = dayjs().startOf('day');\n if (getDateRule(today)) {\n return;\n }\n handleSelectDate(today, { source: 'today' });\n handleCurrentChange(today, { source: 'today' });\n };\n\n const fullCellRender = date => {\n const key = date.format(DATE_FORMAT);\n const dayEvents = eventGroup[key] || [];\n const disabled = !!getDateRule(date);\n return <DateCell date={date} dayEvents={dayEvents} selected={date.isSame(selectedDate, 'day')} currentMonth={date.isSame(currentDate, 'month')} disabled={disabled} badgeMaxCount={badgeMaxCount} renderDateCell={renderDateCell} />;\n };\n\n return (\n <div className={style['schedule-calendar-shell']} style={propsStyle}>\n <div\n ref={rootRef}\n className={classNames(style['schedule-calendar'], stacked && style['schedule-calendar-stacked'], eventListExpanded && style['schedule-calendar-event-list-expanded'], className)}\n data-schedule-layout={stacked ? 'stacked' : 'row'}\n style={stacked && !eventListExpanded ? stackedLayoutStyle : undefined}\n >\n <div ref={calendarRef} className={style['calendar-side']}>\n <Calendar\n {...calendarProps}\n fullscreen={false}\n value={currentDate}\n headerRender={() => {\n const today = dayjs().startOf('day');\n const todayDisabled = !!getDateRule(today);\n return <Header current={currentDate} showTodayButton={!todayDisabled && (!selectedDate.isSame(today, 'day') || !currentDate.isSame(today, 'month'))} onCurrentChange={handleCurrentChange} onSelectToday={handleGoToday} />;\n }}\n fullCellRender={fullCellRender}\n disabledDate={date => !!getDateRule(date)}\n onSelect={date => {\n if (getDateRule(date)) {\n return;\n }\n handleSelectDate(date, { source: 'date' });\n }}\n onPanelChange={date => handleCurrentChange(date, { source: 'picker' })}\n />\n </div>\n <div className={style['panel-side']} {...panelProps}>\n {mode === 'schedule' ? (\n <SchedulePanel\n key={selectedDate.format(DATE_FORMAT)}\n date={selectedDate}\n slots={slots}\n events={selectedEvents}\n dayStart={dayStart}\n dayEnd={dayEnd}\n timeUnit={timeUnit}\n timeStep={timeStep}\n hourHeight={hourHeight}\n allowConflict={allowConflict}\n loading={loading}\n allowMultiSelect={allowMultiSelect}\n onSlotRangeChange={onSlotRangeChange}\n onFreeSlotClick={onFreeSlotClick}\n onCreate={onCreate}\n formInner={formInner}\n formProps={formProps}\n defaultFormValues={defaultFormValues}\n renderEventBlock={renderEventBlock}\n renderOccupiedSlot={renderOccupiedSlot}\n renderPanelHeader={renderPanelHeader}\n onEventClick={onEventClick}\n />\n ) : (\n <ViewPanel date={selectedDate} events={selectedEvents} loading={loading} renderEventItem={renderEventItem} renderPanelHeader={renderPanelHeader} onEventClick={onEventClick} scrollable={eventListScrollable} />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport const ScheduleCalendar = withLocale(ScheduleCalendarInner);\n\nexport default ScheduleCalendar;\n"],"names":["locale","withLocale","createWithIntlProvider","defaultLocale","messages","zhCN","enUS","namespace","DATE_FORMAT","TIME_FORMAT","LAYOUT_STACK_BREAKPOINT","LAYOUT_MIN_HEIGHT","measureHeight","node","Math","ceil","getBoundingClientRect","height","useStackedPanelLayout","rootRef","calendarRef","stacked","layoutStyle","setLayoutStyle","useState","undefined","useLayoutEffect","root","current","calendar","update","calendarHeight","panelViewportHeight","max","totalHeight","ResizeObserver","window","addEventListener","removeEventListener","observer","observe","disconnect","classNames","list","flatMap","item","Object","keys","filter","key","join","toDayjs","value","date","dayjs","isValid","parseDayTime","time","day","parsed","format","startOf","formatRange","start","end","getDefaultFormValues","defaultFormValues","ctx","_extends","title","detail","sortEventsByStart","events","sort","a","b","_toDayjs$valueOf","_toDayjs","_toDayjs$valueOf2","_toDayjs2","aStart","valueOf","bStart","dedupeEventsById","map","Map","forEach","event","set","id","values","useControlledState","defaultValue","onChange","props","useControlValue","getRuleDisabled","result","defaultReason","disabled","reason","checkRule","slot","mode","disabledDate","disabledDateTime","availableDateTime","toDate","disabledResult","normalizeEvent","isAfter","add","groupEventsByDate","reduce","normalized","startOfDay","endOfDay","isBefore","isSame","push","getOverlappingEvents","slotStart","slotEnd","sortedEvents","matched","generateTimeSlots","timeUnit","dayStart","dayEnd","selectedDate","startAt","endAt","normalizedEvents","slots","matchedEvents","baseSlot","ruleResult","status","length","disabledReason","toDay","getMonthName","formatMessage","monthIndex","getPanelDateLabel","d","month","year","monthName","getHeaderMonthLabel","getMonthPickerItemLabel","HeaderNavIcon","direction","className","_jsx","style","viewBox","focusable","children","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","YEAR_PAGE_SIZE","getYearPageStart","floor","PickerPanelNav","label","onClick","type","YearPickerPanel","pageStart","onPageStartChange","onSelect","useIntl","years","useMemo","Array","from","_","index","_jsxs","MonthPickerPanel","months","HeaderNavButton","Header","showTodayButton","onCurrentChange","onSelectToday","yearOpen","setYearOpen","monthOpen","setMonthOpen","yearPageStart","setYearPageStart","currentYear","yearText","monthText","useEffect","handleYearSelect","source","handleMonthSelect","Popover","open","onOpenChange","trigger","placement","rootClassName","content","Space","size","Button","subtract","readWidth","width","useStackedLayout","ref","stackAt","setStacked","DateCell","dayEvents","selected","currentMonth","badgeMaxCount","renderDateCell","count","customCell","Badge","getEventTagLabel","raw","EventItem","renderEventItem","onEventClick","clickable","handleClick","tagLabel","List","Item","role","tabIndex","onKeyDown","eventKey","preventDefault","Tag","color","PanelTitle","subtitle","dateText","countText","PanelScrollShadow","visible","usePanelScrollShadow","resetKey","scrollRef","scrolled","setScrolled","scrollTop","onScroll","useCallback","currentTarget","ViewPanel","loading","renderPanelHeader","scrollable","panelHeader","useRef","Card","bordered","Spin","spinning","container","dataSource","renderItem","Empty","description","MINUTE_MS","toMs","NaN","snapToStep","ms","originMs","stepMs","fn","round","clamp","min","layoutTimelineEvents","startMs","endMs","items","s","e","Number","isFinite","cluster","clusterEnd","Infinity","columnEnds","flush","columns","column","findIndex","mergeDisabledSlots","ranges","last","toBlockers","range","_range$startMs","_range$endMs","getFreeGap","blockers","gapStart","gapEnd","blocker","createSelectionRange","anchorMs","pointerMs","gap","anchorStart","anchorEnd","pointer","clickSelectionRange","unitMs","duration","moveSelectionRange","deltaMs","resizeSelectionRange","edge","minMs","snapped","findOverlappingEvents","findOverlappingSlots","extend","customParseFormat","DEFAULT_DURATION","DEFAULT_STEP","DEFAULT_DEBOUNCE_WAIT","DEFAULT_SEPARATOR","DEFAULT_FORMAT","DEFAULT_MIN_VISIBLE_SPAN","HOUR_MS","PARSE_FORMATS","parseDateLike","isDayjs","direct","isEmptyBound","defaultDayRange","now","resolveRange","isArray","startInvalid","endInvalid","resolveDuration","rangeStart","rangeEnd","requested","rangeMinutes","diff","resolveStep","step","resolveVisibleSpan","visibleSpan","baseDuration","minimum","span","snapMs","anchor","units","clampWindowStart","startInput","snap","durationMs","maxMs","fallback","target","createTimeWindow","resolvedDuration","resolvedStep","windowStart","resizeTimeWindow","minDuration","maxDuration","rangeStartMs","rangeEndMs","next","toWindowValue","getViewport","visibleSpanMinutes","spanMs","centerMs","wheelDeltaToPx","delta","deltaMode","trackWidth","consumeWheelSteps","accumulatedPx","deltaPx","pxPerStep","discrete","sameDirection","sign","total","perStep","steps","trunc","rest","DEFAULT_INERTIA_TIME_CONSTANT","VELOCITY_WINDOW_MS","resolveInertia","inertia","strength","estimateVelocity","samples","latest","reference","t","recent","sample","first","elapsed","timeAtClientX","clientX","rectLeft","rectWidth","grabOffsetMs","ratio","formatTimeWindowParts","startDate","endDate","formats","startText","endFormat","endAtMidnight","formatTimeWindow","separator","parts","LABEL_INTERVALS","pickLabelEvery","pxPerHour","minLabelPx","find","every","TICK_MINUTES","MIN_TICK_GAP_PX","pickTickMinutes","labelEvery","fit","minutes","buildScaleTicks","viewStart","viewEnd","viewStartMs","viewEndMs","tickMinutes","tickMs","ticks","cursorMs","cursor","major","minute","midnight","hour","level","showLabel","outOfRange","formatDurationParts","hours","GRIP_MIN_WIDTH","CLICK_MOVE_TOLERANCE","DISCRETE_WHEEL_DELTA","VISUAL_EASE_MS","WHEEL_IDLE_MS","WHEEL_NOTCH_EASE_MS","WHEEL_INERTIA_SCALE","sameInstant","left","right","leftDate","rightDate","abs","readWindowStart","isDiscreteWheel","legacy","wheelDeltaY","wheelDeltaX","useElementWidth","setWidth","entries","entry","contentRect","TimeWindowInner","debounceWait","showDuration","resizable","wheelEffect","lockable","locked","defaultLocked","onLockedChange","styleProp","isControlled","innerValue","setInnerValue","draftStart","setDraftStart","draftDuration","setDraftDuration","dragging","setDragging","innerLocked","setInnerLocked","lockedControlled","isLocked","resizeView","setResizeView","resizeRef","resizeEdge","trackRef","dragRef","wheelAccumRef","interactingRef","timerRef","pendingRef","onChangeRef","onLockedChangeRef","isLockedRef","committedValue","committedStart","committedMs","anchorDay","draftMs","committedEnd","committedEndMs","committedDuration","activeDuration","initialDurationRef","optionsRef","baseWindow","JSON","stringify","baseStartMs","visualMs","setVisualMs","visualRef","visualTargetRef","frameRef","lastFrameRef","wheelActiveRef","wheelIdleRef","easeRef","glidingRef","wheelBaseRef","wheelSamplesRef","wheelDirectionRef","inertiaTau","inertiaRef","clampVisual","clampVisualRef","runFrame","dt","settled","exp","moveToRef","requestAnimationFrame","stopGlide","cancelAnimationFrame","glideTo","easeMs","setVisualTarget","immediate","setVisualTargetRef","glideToRef","stopGlideRef","clearTimeout","displayStartMs","viewport","viewRef","baseWindowRef","toPercent","windowPx","leftShade","rightShade","endText","_Fragment","ariaValueText","durationText","clearTimer","pending","publish","nextWindow","nextValue","setTimeout","moveTo","durationPropRef","pointerTimeAt","view","rect","startResize","edgeMs","pointerId","setPointerCapture","error","moveResize","resize","endResize","frozenStart","onPointerDown","button","braked","edgeNode","closest","getAttribute","startX","moved","onPointerMove","drag","dx","rawMs","timeStamp","shift","endDrag","velocity","projection","clickedMs","stepMinutes","moves","ArrowLeft","ArrowDown","ArrowRight","ArrowUp","PageDown","PageUp","shiftKey","onWheel","dominant","deltaX","deltaY","clientWidth","base","lastTarget","residualMs","passive","toggleLocked","labelTicks","tick","ariaBounds","header","actions","switch","scale","track","onPointerUp","onPointerCancel","shade","cylinder","labels","TimeWindow","DefaultFormInner","FormInfo","Input","name","rule","placeholder","block","TextArea","EventDetail","keyEvent","DRAG_THRESHOLD_PX","TOUCH_SLOP_PX","LONG_PRESS_MS","Timeline","hourHeight","timeStep","eventItems","disabledRanges","conflicts","allowMultiSelect","selection","formPopover","popoverOpen","popoverPlacement","popoverAnchor","onPopoverOpenChange","onSelectionDrag","onSelectionCommit","onFreeSlotClick","renderEventBlock","renderOccupiedSlot","interactionRef","isMobile","gridRef","gestureRef","suppressClickRef","touchCommitRef","hover","setHover","activeEventKey","setActiveEventKey","pxPerMs","toY","lines","setNow","Date","timer","setInterval","clearInterval","showNow","msAtClientY","clientY","currentDay","currentPx","top","finishGesture","gesture","onMove","onUp","onCancel","grid","preventScroll","_gestureRef$current","active","preventGhostClick","handlePointerDown","_gridRef$current","contains","pointerType","currentBlockers","currentSelection","multi","onSelection","eventNode","dataset","selectionEdge","onEvent","ownGap","range0","assign","startY","moveEvent","dy","hypot","canResize","upEvent","unit","commit","onFreeClick","cancelEvent","wasMoved","navigator","vibrate","handleHover","_gridRef$current2","renderEventContent","selectionBlock","onPointerLeave","onContextMenu","_gridRef$current3","onClickCapture","_gridRef$current4","stopPropagation","line","Tooltip","blockHeight","arrow","destroyOnHidden","SchedulePanel","allowConflict","onSlotRangeChange","onCreate","formInner","formProps","useIsMobile","openedAtRef","setSelection","setPopoverOpen","setPopoverPlacement","setPopoverAnchor","windowRange","getFormContext","emitRange","action","clearSelection","commitSelection","_scrollRef$current","formContext","getTime","Alert","showIcon","Form","data","onSubmit","_unused","SubmitButton","panelStyle","Drawer","closable","onClose","buildMonthRuleCache","currentDate","cache","monthStart","monthEnd","endOf","ScheduleCalendarInner","onDateChange","propsStyle","eventListScrollable","calendarProps","panelProps","eventListExpanded","stackedLayoutStyle","setValue","setCurrent","defaultCurrent","eventGroup","selectedEvents","ruleContext","monthRuleCache","getDateRule","cached","get","handleSelectDate","info","nextDate","handleCurrentChange","handleGoToday","today","fullCellRender","Calendar","fullscreen","headerRender","todayDisabled","onPanelChange","ScheduleCalendar"],"mappings":"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"}